Arkimeでパケット分析に入門してみる
シリーズ紹介
この記事は、自宅で運用するハニーポットシリーズ#5 です。
#4ではラズパイでのT-Pot構築について解説しています。
Arkimeってなに
Arkimeはパケットキャプチャ&分析 OSSです。ElasticSearchにインデックス化して保存したパケットをWEBインターフェースで確認できます。
Arkimeを入れてみたので、初めに触った感触として書いておきます。
引用・参考
Arkimeに関して日本語記事が少なく、以下の記事を参考にさせていただきました。
Arkimeの基本操作
Arkimeには大分類として以下の機能があります。
- Sessions クエリでパケットを解析します。それぞれのパケットの内容を確認したり、ダウンロードすることも可能です。
- SPIView プロトコルごとに通信を絞り込めます。また、クエリでは絞り込みづらいIPアドレスや通信の特徴も降順で表示されます。
- SPIGraph さまざまなグラフを作成して、グラフ同士を比較できます。
- Connections 通信先とどれだけの通信を行なっているか、どのノードがどこに通信をしているか確認できます。
- Hunt 構造化されたElasticSearchへの検索だけでなく、キャプチャしたデータに対しての検索も可能みたいです。(設定を書き換えて、利用可能にする必要があります。)
- History どのユーザがどのAPIを利用したかのログが閲覧できます。クエリの復元も可能です。
- Settings 各種UIの設定が可能です。アラートの設定も可能です。
-
Users ユーザの追加、パスワードのリセットが可能です。
クエリを使って分析してみる
それぞれ簡易的なシナリオを考えてやってみます。
SSHのブルートフォース攻撃を分析する
Sessionsタブを開いて、以下のクエリを入力します。
ip.dst == { My honeypot IP } && port.dst == 22
自分の場合は二つの大きな波がありますね。ここを選択してみます。
ノイズがあることがわかります。srcIP/Countryなどで並び替えて、怪しげなIPをip.srcとして追加して絞り込みます。
ip.dst == { My honeypot IP } && port.dst == 22 && ip.src == { Attacker IP }
ノイズが消えました。
packetsやStart-Time,Stop-Timeを利用して、攻撃が成功したセッションを特定することもある程度は可能そうです。
SMBに対する攻撃を分析する
ip.dst == { My honeypot IP } && ip.protocol == tcp && port.dst == 445
SSHに対するリクエストに比べて、リクエスト数が多いことがわかります。SSHは2000件程度がMAXでしたがSambaに対する攻撃は6000件程度がMAXなようです。
転送量に注目してみてみると、一つだけ転送量が多い通信があります。Protocolを見ると、445番ポートに対するTCPリクエストにはprotocolがSMBであるものと、ないものがあるようです。
packetsに注目すると、1,3,5のものがあることがわかります。ChatGPTと相談したところ、1はスキャン、3はTCPハンドシェイク(SYN → SYN/ACK → ACK)なのでは?という仮説が立ちました。
TCP Flagsについてみてみると、packetsが3のものはSYN/ACK,ACK,FINになっている一方、packetsが5のものはPSHが2になっています。また、packetsが5のものにはPayloadが記録されています。
Payloadを含むもので絞り込んでみます。分析結果をDatabytes/Bytesで降順に並び替えてみます。
ip.dst == { My honeypot IP }&& ip.protocol == tcp && port.dst == 445 && payload.dst == EXISTS!
転送量が明らかに多い通信を特定できました。
おわりに
今回は、ハニーポットの通信をArkimeで分析してみました。初めてなので、簡単な絞り込みでした。
また、具体的なペイロードやクエリはPCAPを直接解析しなければならないため、各種サービスのログを保存しておき、照らし合わせることも必要だと感じました。
Discussion