はじめに
Hack The Box Academy のIntermediate Network Traffic Analysis Overviewを受講し、改めて「Wiresharkで攻撃の兆候をどのように可視化できるか」を学びました。
業務での活用はもちろん、試験対策(特に SANS GX-IA などパケット解析が含まれる上位試験)を見据えて、 今回の学びを整理して記事化しました。
自分のスキルセットと学習コンテンツ
前提となる、私自身の現在のスキルレベルは以下の通りです。
-
Wiresharkは 基礎的な使い方ができる レベル
(パケットのキャプチャ、基本的なディスプレイフィルタ、ストリーム追跡など) -
SANS GCIA (GIAC Certified Intrusion Analyst) 取得済み
→ トラフィック解析の基礎は学習済みだが、細かいフィルタの使いこなしは課題ありWiresharkの完全初心者向けではありませんので、使い方の基礎などは本記事では省きます
今回新しく学んだ例
例1: 特定アクセスポイントのDeauthenticationパケットの絞り込み
以下のようなフィルタで特定のアクセスポイントに対するDeauthenticationフレームだけを抽出できる。
(wlan.bssid == xx:xx:xx:xx:xx:xx) and (wlan.fc.type == 00) and (wlan.fc.type_subtype == 12)
-
wlan.bssid == xx:xx:xx:xx:xx:xx
→ 特定のBSSID(アクセスポイントのMACアドレス)に関連する通信だけを絞り込むことができる。
→ 無線LAN環境で複数のAPがある場合、対象のAPを限定できる。 -
wlan.fc.type == 00
→ IEEE 802.11フレームの 「管理フレーム (Management frame)」 に絞り込める。
→ 00以外では、01(制御フレーム)、02(データフレーム)などがある。 -
wlan.fc.type_subtype == 12
→ 管理フレームの中でも 「Deauthentication」 に絞り込むことができる。
例2: Deauthentication Attackの検知(Reason Code 7)
Wi-Fi環境では、攻撃者が Deauthenticationフレーム を偽装してクライアントを切断させる攻撃(DoS)が行われることがある。
その際に多くの攻撃ツールが利用するのがReason Code 7である。
以下のフィルタで、特定のAPに関連する「Reason Code 7のDeauthenticationフレーム」だけを抽出できる。
(wlan.bssid == xx:xx:xx:xx:xx:xx) and (wlan.fc.type == 00) and (wlan.fc.type_subtype == 12) and (wlan.fixed.reason_code == 7)
-
wlan.fc.type == 00
-
wlan.fc.type_subtype == 12
→例1にて説明 -
wlan.fixed.reason_code == 7
→ 不正アクセスツールでよく利用されるコード「7」のみに限定。
例3: ICMP Tunnelingの検知
攻撃者がファイアウォールやアクセス制御を回避するために利用する手口のひとつが Tunnelingであり、本来の用途とは異なるプロトコルにデータを載せて外部へ持ち出すもので、SSHやHTTP/HTTPS、DNSなどが使われる。
その中でも ICMP Tunneling は、ping
などで利用されるICMPのリクエスト/リプライに任意のデータを埋め込み、 通常の疎通確認に紛れて通信を行う手法である。
以下の方法でICMP Tunnelingが行われているか?を確認できる。
-
通常のICMPと比べてデータ長が異常に大きい
- 正常なICMP Echo Requestはデータ長が 48 bytes 程度。
- 不正な場合は数万バイト(例: 38000 bytes)のように異常に大きいことがある。
-
ICMPのデータ領域に意味のある文字列が含まれている
- 平文のユーザー名やパスワードが埋め込まれるケース。
- Base64などでエンコードして隠すこともある。
-
Wiresharkでの基本フィルタ
-
icmp
→ ICMPリクエスト/リプライに限定して表示できる。 - 異常に大きなデータ長のパケットをチェックし、Hexビューで内容を確認すると兆候を捉えやすい。
-
例4: SSL Renegotiation Attackの検知
SSL/TLSのハンドシェイクには、セッション中に再度ハンドシェイクを行う Renegotiation という仕組みがある。
攻撃者はこれを悪用して、サーバー資源を消費させたり、弱い暗号スイートを強制させるといった攻撃を行う。
以下のフィルタで、SSL/TLSのHandshakeメッセージだけを抽出できる。
ssl.record.content_type == 22
-
ssl.record.content_type == 22
→ Content Type 22 はハンドシェイクメッセージを意味する。
→ このフィルタでClient HelloやKey Exchangeなど、ハンドシェイク関連のやり取りに限定できる。
攻撃の兆候
-
複数のClient Helloが短時間に繰り返されている
→ 正常な接続では1回のみのはずが、繰り返し観測されるのは攻撃の兆候。 -
ハンドシェイク完了後にClient Helloが出現する
→ パケットロスなどで似た挙動が出ることもあるが、Handshake後に出るのは不自然。
攻撃者の狙い
- DoS(Denial of Service): サーバーに過剰なリソース消費を強制する。
- 暗号スイートのダウングレード: 弱い暗号スイートを利用させる
まとめ
今回整理したのは、Hack The Box Academy の中級編コンテンツから学んだ一部のみです。
特に無線LAN周りはまだ知らないことが多く、フィルタの使い方ひとつとっても新しい発見がありました。
Wiresharkはパケットを見るツールとして知っていたつもりでしたが、攻撃の兆候を可視化するための強力な武器 になると改めて実感しました。
今後も新しいフィルタや観点を学び次第、追記していきたいと思います。