This post is also available in: English (英語)
概要
セキュリティ専門家はマルウェアが生成したネットワーク トラフィックをキャプチャーしたパケット (pcap) を確認するため、よく Wireshark と呼ばれるツールを使います。この種のアクティビティを効率よく確認するさいは、インストールした Wireshark をカスタマイズすることをお勧めします。
前回のチュートリアルでは Wireshark のパケット一覧部の列の表示をカスタマイズしました。本チュートリアルでは、感染 Windows ホストからの悪意のあるネットワーク トラフィックの pcap を確認するのに役立つ表示フィルター式を紹介します。
本稿は Wireshark のチュートリアル シリーズの連載第2回です。本シリーズでは、悪意のあるネットワーク トラフィックの調査に役立つカスタマイズ オプションを紹介します。本シリーズは 2019 年 1 月の初公開以来 2023 年も更新を続けてきました。
本チュートリアルの pcap には Windows ベースのマルウェアが生成したトラフィックを含みます。パロアルトネットワークスのお客様は、WildFire や Advanced Threat Prevention などのクラウド配信型セキュリティサービスを有効にした次世代ファイアウォール (NGFW) と Cortex XDR によりこれらの脅威からの保護を受けています。
関連する Unit 42 のトピック | pcap, Wireshark, Wireshark Tutorial |
要件および補足資料
本チュートリアルにとりかかる前に、前回の Wireshark チュートリアルの内容を確認しておいてください。また、Wireshark の最新バージョン (最低でもバージョン 3.6.2 かそれ以降) を準備しておいてください。本チュートリアルでは、Wireshark バージョン 4.0.7 を使い、前回のチュートリアルでカスタマイズした列表示を使います。繰り返しになりますが、お使いの環境で利用可能な Wireshark の最新バージョンを使うことをお勧めします。
本稿はネットワーク トラフィックに関する基礎的な知識をお持ちの方を読者として想定しています。たとえば TCP 接続のさいに行われる 3-way ハンドシェイクなどは知っていることが前提となっています。本チュートリアルの pcap には Windows 環境での感染から取得した悪意のあるコンテンツが含まれていることが多いので、pcap の確認には BSD 系や macOS 環境など Windows 以外の環境の使用をお勧めします。
本チュートリアルで使う 5 つの pcap ファイルは、こちらの GitHub リポジトリーにホストしたパスワード付き ZIP アーカイブに格納してあります。ここから Wireshark-tutorial-filter-expressions-5-pcaps.zip という名前の ZIP ファイルをダウンロードしてください。ZIP ファイル展開用のパスワードは「infected」です (図 1)。
ZIP を展開すると、本チュートリアル用の次の 5 つの pcap ファイルを取得できます。
- Wireshark-tutorial-filter-expressions-1-of-5.pcap
- Wireshark-tutorial-filter-expressions-2-of-5.pcap
- Wireshark-tutorial-filter-expressions-3-of-5.pcap
- Wireshark-tutorial-filter-expressions-4-of-5.pcap
- Wireshark-tutorial-filter-expressions-5-of-5.pcap
はじめる前に、デフォルトの設定プロファイルではなく、前回作成した個人用 Wireshark 設定プロファイルを使用していることを確認しておきましょう。
設定プロファイルを確認する
このチュートリアルでは、Wireshark のフィルター式をフィルター ボタンとして保存します。前回のチュートリアルの列の変更のように、フィルター ボタンも現在使用中の Wireshark 設定プロファイルに保存されます。前回のチュートリアルでは、個人用の設定プロファイル名を「Customized (カスタマイズ済み)」としていました。
個人用の設定プロファイルを使っていることを確認するには、一番下に表示されているステータス バーの右端を確認してください (図 2)。ここに現在の設定プロファイル名が表示されています。このほか、[Edit (編集)] メニューの [Configuration Profiles (設定プロファイル)] を選択して確認することもできます。両方のやりかたを以下の図 2 に示しました。前回のチュートリアルでカスタマイズしたプロファイル名が表示されていることを確認してください。
個人用の設定プロファイルが使われていることが確認できたら、Wireshark の表示フィルタについて見ていきましょう。
Wireshark の表示フィルター
デフォルト設定の Wireshark の場合、[表示フィルタ] ツールバーはパケット一覧部のすぐ上に表示されています。ここに pcap の Ethernet フレームや IP パケット、TCP セグメントの見えかたを絞り込む (フィルター) する式を入力します。[表示フィルタ] ツールバーに式を入力すると、Wireshark は入力された式にもとづいて候補のリストを表示します (図 3)。
[表示フィルタ] ツールバーが赤で表示されているかぎり、入力されている式は受け入れられません。図 3 の [表示フィルタ] ツールバーが (式の入力が途中であることから) 赤で表示されていることに注目してください。
Wireshark で Wireshark-tutorial-filter-expressions-1-of-5.pcap という名前の最初の pcap を開いてください。「http.request」と [表示フィルタ] ツールバーに入力し、Enter キーを押します。 [表示フィルタ] ツールバーが緑色で表示された場合、その式は受け入れられたことになり、図 4 に示すように正しく動作するはずです。
[表示フィルタ] ツールバーが黄色になっている場合、その式は受け入れられますが、意図したとおりに動作しない可能性があることを意味します。古いバージョンの Wireshark だと、黄色の [表示フィルタ] ツールバーが表示される機会が多くなります。たとえば、図 5 は Wireshark のバージョン 3.6.2 を使ってフィルター式「dns && ip.addr || http.request」を表示したところです。この式だと [表示フィルタ] ツールバーは黄色で表示され、ステータス バーの下部に推奨される解決策が表示されます。
図 5 を確認すると、パケット一覧部に HTTP リクエストの行が 1 行も表示されていません。ところが、バージョン 4.0.7 の Wireshark で同じ pcap を開き、同じフィルター式を指定した場合、式は緑色で表示され、図 6 に示すように HTTP リクエストの行を表示します。
これは Wireshark のバージョン 3.x と 4.x の違いの 1 つを示しています。こういうこともあるので、繰り返しにはなりますが、お使いのシステムで利用可能な Wireshark の最新バージョンを使うようにしてください。
Wireshark の表示フィルターではブール式を使い、値を指定して連鎖させることができます。以下の表 1 は、Wireshark のフィルター式で使われる一般的なブール演算子のリストです。
論理演算の意味 | 演算子 | 演算子の別の書きかた |
Equals | == | eq |
Not | ! | not |
And | && | and |
Or | || | or |
表1. Wireshark の表示フィルター式で使われるブール演算子とその機能
Wireshark の表示フィルター式の適当な例を以下にあげます。
- ip.addr eq 10.8.15[.]1 and dns.qry.name.len > 36
- http.request && ip.addr == 10.8.15[.]101
- http.request || http.response
- dns.qry.name contains microsoft or icmp
Web トラフィックのフィルタリング
前回の Wireshark チュートリアルでは、Web トラフィックに次のフィルターを使いました。
http.request or tls.handshake.type eq 1
「http.request」という式からは HTTP リクエスト内の URL が得られます。そして「tls.handshake.type eq 1」からは HTTPS または SSL/TLS のトラフィックで使われているドメイン名を得られます。
Windows ホストが生成する Web トラフィックの場合、このフィルタリング結果に 1900/udp 上の HTTP リクエストが含まれています。この HTTP トラフィックは Simple Service Discovery Protocol (SSDP) のものです。SSDP はプラグ & プレイ デバイスの検出に使われるもので通常の Web トラフィックには関連していません。そこで、フィルター式を次のように変更すれば、結果から SSDP トラフィックを除外できます。
(http.request or tls.handshake.type eq 1) and !(ssdp)
上記のフィルター式のカッコは Wireshark バージョン 4.x であれば不要ですが、古いバージョンの Wireshark とフィルター式の互換性を確保するためにカッコをつけておくことをお勧めします。最初の pcap の Wireshark-tutorial-filter-expressions-1-of-5.pcap にこのフィルター式を指定してください。結果は図 7 のようになります。
図 7 に示すトラフィックを確認すると、Loki Bot マルウェア に関連する複数行の平文 HTTP POST リクエストが表示されます。その宛先 URL は hxxp://194.55.224[.]9/liuz/five/fre.php で、これは 2023 年 8 月に Threatfox に報告されたものです。
このトラフィックを調べるには、194.55.224[.]9 宛のトラフィックのいずれかの行を左クリックしてフレームを選択してから、右クリックしてコンテキスト メニューを表示します。そしてコンテキスト メニューから [Follow (追跡)] を選んでから [TCP Stream (TCP ストリーム)] ないし [HTTP Stream (HTTP ストリーム)] を選びます (図 8)。
これにより新しいウィンドウが表示され、平文 HTTP トラフィックのコンテンツを ASCII 文字で表した内容を確認できるようになります。Loki Bot のコマンド & コントロール (C2) トラフィックについて理解を深めるには、ご自身で内容を確認してみてください。
Wireshark で 2 番目の pcap Wireshark-tutorial-filter-expressions-2-of-5.pcap を開きます。これは標準的な IcedID (Bokbot) の亜種の感染から生じたトラフィックです。これには vrondafarih[.]com への HTTP トラフィックと、magiketchinn[.]com と magizanqomo[.]com への HTTPS トラフィックが含まれています。これらは 3 つとも 2023 年 7 月に IcedID に関連するドメインであることが確認されています。
図 9 は、2 つ目の pcap に Wireshark の基本的な Web フィルターを使って、これらの IcedID 関連ドメインを表示したものです。
フィルター ボタンの作成
複雑なフィルター式を毎回 Wireshark の [表示フィルタ] ツールバーに入力するのは面倒です。さいわい、入力した式は、フィルター ボタンとして保存することができます。
Wireshark の [表示フィルタ] ツールバーの右側には、フィルター ボタンを追加するための [+] ボタンがあります。図 7、8、9 で示した基本的な Web フィルターが適用された状態であることを確認してください。それが確認できたら、図10 に示すように、この [+] ボタンをクリックします。
[+] をクリックすると [表示フィルタ] ツールバーのすぐ下に一時的なパネルが表示されます (図 10)。このパネルには [Label (ラベル)]、[Filter (フィルタ)]、[Comment (コメント)] の 3 つのフィールドがあります。[Filter (フィルタ)] フィールドには、[表示フィルタ] ツールバーに入力された式があらかじめ入った状態になっています。このフィルターは基本的な Web 用フィルターなので、[Label (ラベル)] フィールドに「basic」と入力して [OK] をクリックしてください(図 11)。
これで、図12 に示すように、Wireshark の [表示フィルタ] ツールバーの右側に 「basic」というボタンが作成されたはずです。Wireshark のフィルター ボタンには境界線が描かれないので一見ラベルのように見えますが、これでボタンとして機能します。[basic] Web フィルターを使いたいときは、このボタンをクリックするだけです。
このチュートリアルでは、以下の表 2 に示すフィルター ボタンを作成します。
ボタン ラベル | フィルター式 |
basic | basic (http.request or tls.handshake.type eq 1) and !(ssdp) |
basic+ | basic (http.request or tls.handshake.type eq 1 or (tcp.flags.syn eq 1 and tcp.flags.ack eq 0)) and !(ssdp) |
basic+dns | basic (http.request or tls.handshake.type eq 1 or (tcp.flags.syn eq 1 and tcp.flags.ack eq 0) or dns) and !(ssdp) |
表2. 悪意のある Web トラフィックをより詳細に調査するためのフィルター ボタン
Wireshark で不審なトラフィックを調べるさいは、少しずつ対象を絞り込んでいく必要があります。[basic] の Web フィルターでまずはざっくりフィルタリングしてから、[basic+] フィルターで Web 以外のトラフィックもチェックしましょう。
表 2 の [basic+] フィルターの式は、[basic] フィルターと同じ式の後ろに、ACK フラグが立っておらず SYN フラグが立っている TCP セグメントを含めるための 「or (tcp.flags.syn eq 1 and tcp.flags.ack eq 0) 」を追加してあります。これにより、TCP ストリームの開始を示す TCP SYN セグメントが表示されます。このフィルターを使うと pcap にある Web 以外のトラフィックを見つけられます。
[basic+] フィルターでは失敗した TCP 接続試行も表示します。対象の IP アドレスにもよりますが、TCP の接続試行が繰り返し失敗している場合、これはその pcap をキャプチャーした時点で相手 C2 サーバーがオフラインであったことを示している可能性があります。
[basic+] フィルターを確認したら、[basic+dns] フィルターを確認して、なにか目につく DNS のアクティビティがないかを確認する必要があります。
表 2 の [basic+dns] フィルターの式は、[basic+] フィルターと同じ式に「or dns」が追加されています。このフィルターは pcap に含まれる DNS クエリーを表示するものです。これは Web 以外のトラフィックと関連するドメイン名を特定するのに使えて便利です。
さらに、pcap をキャプチャーした時点でマルウェア サンプルの C2 サーバーがオフラインであれば、このフィルターを使って、失敗した接続試行に関連する C2 ドメインを確認できます。最後に、このフィルターによって DNSトンネリングのサンプルが見つかることがあります。
以下の図 13 と図 14 を参考にして [basic+] フィルターと [basic+dns] フィルターを追加してください。フィルター ボタンを追加すると、Wireshark の [表示フィルタ] ツールバーの右側にボタンが 3 つ表示されます (図 15)。
新しいフィルター ボタンを 3 つ準備したので、べつの種類の悪質なトラフィックを調べてみることにしましょう。
Web 以外のトラフィックのフィルタリング
3 つ目の pcap、Wireshark-tutorial-filter-expressions-3-of-5.pcap を Wireshark で開きます。この pcap には、Ave Maria RAT (Warzone RAT としても知られている) と呼ばれるリモート アクセス ツール (RAT) マルウェアが生成した感染後のトラフィックが含まれています。
[basic] Web フィルターを使っても、トラフィックには目をひくものがありません。しかし、[basic+dns] Web フィルターを使った結果をスクロールすると、状況がはっきりしてきます。以下の図 16 に示すように、87.121.221[.]212 に解決されるadaisreal.ddns[.]net 宛の DNS クエリーが見つかります。それに続けてこの IP アドレス宛の SYN フラグが立った TCP セグメントが 7888/tcp 上に見つかります。
これは一例に過ぎませんが、RAT をはじめ、さまざまなマルウェアがこれと似たような Web 以外のトラフィックを生成します。今回作った [basic+dns] フィルターは、Web 以外のトラフィックで行われる悪意のあるアクティビティを探す方法を提供してくれます。
FTP トラフィックのフィルタリング
感染トラフィックによっては Wireshark が容易にデコードできる汎用プロトコルを使っている場合があります。4 つめの pcap、Wireshark-tutorial-filter-expressions-4-of-5.pcap には、FTP トラフィックを生成するマルウェア実行ファイルによる感染後のアクティビティが含まれています。今回作った [basic+dns] フィルターを適用すると、valvulasthermovalve[.]cl への DNS クエリーにつづく 21/tcp 上のトラフィックと、別の TCP ポートを使うトラフィックを表示できます (図 17)。
図 17 では、この FTP のアクティビティ直前に api.ipify[.]org への HTTPS トラフィックも確認できます。このドメインじたいは本質的に悪意があるものではありませんが、マルウェアは感染ホストの IP アドレス確認のために、しばしばこのサービスを利用します。
今回作った [basic+dns] フィルターも平文 FTP トラフィックを見つける役に立ちますが、FTP を検索するのにはべつのフィルター式が適しています。平文 FTP トラフィックを検索する 2 つの基本的な Wireshark フィルターを表 3 に示します。
フィルター式 | 説明 |
ftp | 制御用チャンネル (21/tcp) における FTP アクティビティ |
ftp-data | データ用チャンネル (エフェメラル TCP ポート) における FTP アクティビティ |
表3 Wireshark の基本的な FTP 検索
平文の FTP アクティビティを確認する汎用フィルター式は次のとおりです。
ftp.request.command or (ftp-data and tcp.seq eq 1)
上記の式を Wireshark の [表示フィルタ] ツールバーに入力して Enterを押してください。結果は図 18 のスクリーンショットと同じような内容になるでしょう。
図 18 には、侵害された FTP サイトのユーザー名とパスワードのほか、この FTP サーバーに HTML ファイルを送っている STOR コマンドが表示されています。これは、盗まれたデータが感染した Windows ホストから漏出したことを意味しています。TCP ストリームを追跡すれば、FTP コマンドを確認して、盗まれたデータを調べられます。必要なら、このフィルター式をフィルター ボタンとして保存し、今後の調査に使うとよいでしょう。
電子メールトラフィック (Spambot) のフィルタリング
マルウェアは悪意のあるトラフィックに FTP 以外の汎用プロトコルを使うことがあります。Spambot マルウェアは、感染させたホストを電子メール メッセージを送りつづけるスパムボットに変えるよう設計されています。さまざまなメールサーバーへの大量の DNS リクエストに続き、TCP ポート 25、465、587、および SMTP トラフィックとはあまり関係のないポートでの SMTP トラフィックの発生がこのアクティビティの特徴です。
5 つめの pcap、Wireshark-tutorial-filter-expressions-5-of-5.pcap には、感染後の Spambot のトラフィックが含まれています。この pcap を開いて Wireshark の [表示フィルタ] ツールバーに以下の式を入力してください。
smtp or dns
結果は図 19 のようになるはずです。
フィルタリングした結果をスクロールしてください。右端の [Info] 列に、さまざまなメール サーバーのドメイン宛の DNS クエリーと、さまざまな SMTP コマンドが見つかるはずです。
次に、[表示フィルタ] ツールバーに次のフィルターを入力します。
smtp.req.command
以下の図 20 に示す結果は、感染ホストが比較的短時間内にメール サーバーの複数の異なる IP アドレスに接続したことを示しています。これらの SMTP リクエストのほとんどが、STARTTLS コマンドを使っている点に注目してください。このコマンドは、最初の SMTP 接続の後、暗号化されたトンネルを確立するものです。電子メールのトラフィックはほとんどが暗号化されていて、Spambot のアクティビティもほとんどが暗号化されています。
ただし、Spambot のトラフィックのなかには、電子メール メッセージが平文になっていて内容を確認できるものもあります。これらのメッセージを検索するには、Wireshark の [表示フィルタ] ツールバーに次の式を入力します。
smtp.data.fragment
この結果、以下の図 21 に示すようにパケット一覧部には 7 行が表示されます。これらのメッセージの TCP ストリームを追跡すれば、これらのメッセージをさらに調査できます。
詳細なものではないですが、これらは Spambot のトラフィック調査に役立つ最も一般的なフィルター式です。
結論
pcap の内容を理解する上で Wireshark の表示フィルター式は必須です。パケット一覧部の列表示を最適化し、これらのフィルター式を組み合わせて使えば、セキュリティ専門家が不審なネットワーク アクティビティを調査するのにとても便利です。
本シリーズの次回のチュートリアルでは、不審なネットワーク トラフィックで感染したホストやユーザーを特定する方法を取り上げます。
本チュートリアルの pcap には Windows ベースのマルウェアが生成したトラフィックを含んでいます。パロアルトネットワークスのお客様は、WildFire、Advanced Threat Prevention、Advanced URL Filtering などのクラウド配信型セキュリティサービスを有効にした次世代ファイアウォール (NGFW) と Cortex XDR によりこれらの脅威からの保護を受けています。
侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、こちらの問い合わせフォームからご連絡いただくか、infojapan@paloaltonetworks.com まで電子メールにてご連絡いただくか、下記の電話番号までお問い合わせください(ご相談は弊社製品のお客様には限定されません)。
- 北米フリーダイヤル:866.486.4842 (866.4.UNIT42)
- EMEA: +31.20.299.3130
- APAC: +65.6983.8730
- 日本: (+81) 50-1790-0200
パロアルトネットワークスは、ファイル サンプルや IoC (侵害指標) をふくむ調査結果を Cyber Threat Alliance (CTA: サイバー脅威アライアンス) のメンバーと共有しました。CTA のメンバーはこのインテリジェンスを使って、お客様に保護を迅速に提供し、悪意のあるサイバー攻撃者を体系的に阻害することができます。詳細は Cyber Threat Alliance にてご確認ください。
IoC (侵害指標)
以下は今回のチュートリアルで使った pcap に含まれている悪意のあるアクティビティのインジケーター (侵害指標) です。
URL | hxxp://194.55.224[.]9/liuz/five/fre.php |
説明 | 2023 年 8 月 15 日時点で確認されたLoki Bot の C2 の URL |
2023 年 7 月 27 日に確認された IcedID C2 ドメイン |
|
URL | 87.121.221[.]212:7888 - tcp://adaisreal.ddns[.]net:7888/ |
説明 | 2023 年 6 月 5 日時点で記録された Ave Maria RAT (Warzone RAT) の C2 |
SHA256ハッシュ値 | adfa401cdfaac06df0e529bc9d54b74cea9a28d4266a49edafa5b8e04e3b3594 |
ファイル サイズ | 604,672 バイト |
ファイル名 | 不明 |
ファイルの説明 | Windows 実行可能ファイル (EXE) でデータ漏洩に FTP を使用するインフォスティーラー |
URL | 190.107.177[.]239:21 - fxp://valvulasthermovalve[.]cl/ |
説明 | 2023 年 6 月 7 日の時点で、正規のサイトの FTP サーバーがデータの漏出に使われ、上記マルウェア サンプルでも使われていることが確認されている |
SHA256ハッシュ値 | f24259e65a935722c36ab36f6e4429a1d0f04c0ac3600e4286cc717acc5b03d7 |
ファイル サイズ | 134,140 バイト |
ファイル名 | Details-3922941.one |
ファイルの説明 | 2023 年 3 月 16 日の Emotet 感染における平文 Spambot メールの添付ファイル (OneNote ファイル) |
追加リソース
-
- Wireshark によるパケット解析講座 1: Wiresharkの表示列をカスタマイズする – パロアルトネットワークス Unit 42
- Wireshark によるパケット解析講座 3: ホストとユーザーを特定する – パロアルトネットワークス Unit 42
- Wireshark によるパケット解析講座 4: Pcapからのオブジェクトのエクスポート – パロアルトネットワークス Unit 42
- Wireshark によるパケット解析講座 8:HTTPSトラフィックの復号 – パロアルトネットワークス Unit 42
- Wireshark チュートリアル: Wireshark ワークショップビデオシリーズを公開 – パロアルトネットワークス Unit 42
- Wireshark によるパケット解析講座および WireShark クイズの全リスト – パロアルトネットワークス Unit 42