• JP
  • magnifying glass search icon to open search field
  • お問い合わせ
  • リソースセンター
  • サポートを受ける
  • 現在、攻撃を受けていますか?
Palo Alto Networks logo
  • 製品
  • ソリューション
  • サービス
  • 業種
  • パートナー
  • パロアルトネットワークスをお勧めする理由
  • 会社案内
  • その他
  • JP
    Language
  • お問い合わせ
  • リソースセンター
  • サポートを受ける
  • 現在、攻撃を受けていますか?
  • スタート ガイド

Wireshark によるパケット解析講座 2

脅威インテリジェンス調査に役立つフィルタリング設定

Brad Duncan 1 21, 2019 at 10:15 午前

本ブログは米国で2019年01月11日に公開されたUnit 42ブログ「Using Wireshark - Display Filter Expressions - Unit42」の日本語翻訳です。

 

Tutorial Splash Image

パロアルトネットワークスUnit 42の脅威インテリジェンスアナリストとして、私は日々Wiresharkを使用して、マルウェアのサンプルが生成するネットワークトラフィックのパケットキャプチャ(pcap)をレビューしています。

Wiresharkの使用に関する以前のブログで説明したとおり、効率よく作業するために Wiresharkの列表示をカスタマイズして使用しています。

 

本稿でもアナリストの皆さんにとってWiresharkがより使いやすいものになるようなヒントをお教えします。今回は、感染したWindowsホストからの悪意のあるネットワークトラフィックのpcapを確認するときに役立つと思われるフィルタ設定について説明します。

チュートリアルで利用するpcapはこちらから入手してください。

 

なお本チュートリアルでは、Wiresharkを効果的に使用する上での前提となるネットワークトラフィックの基本について、皆さんがすでに理解していることを前提としています。また、マルウェア感染がおこる仕組みについての基本的な理解も前提としています。

本稿は、悪意のあるネットワークトラフィックを分析する方法の包括的なチュートリアルではなく、Wiresharkの表示フィルタについてのヒントとこつをいくつか示すことを目的としています。この点についてはご了承ください。

 

今回のチュートリアルでは、以下について説明します。

  • 感染トラフィックの痕跡
  • Wiresharkの表示フィルタ
  • フィルタの保存
  • Web経由の感染トラフィック用フィルタ
  • 他の種類の感染トラフィック用フィルタ

 

感染トラフィックの痕跡

このチュートリアルでは、「悪意のあるスパム(マルスパム)やWebトラフィックなどが大量に配信したWindowsを対象とする商用マルウェアからの感染トラフィック」をサンプルとして使用します。こうした感染では、Windowsホストがマルウェア(通常はWindows実行可能ファイル)に感染するまでに、さまざまな経路を通ることが考えられます。

 

こうしてさまざまな経路を通った感染トラフィックの痕跡は「IOC(侵害の痕跡)」と呼ばれます。セキュリティの専門家は、感染時にマルウェアが生成するネットワークトラフィックからこうした「感染の痕跡」情報を抽出し、見つかったURL、ドメイン名、IPアドレス、プロトコル、ポートなどの感染トラフィックの痕跡を文書に記録していきます。

Wiresharkの表示フィルタを適切に使用すると、これらの痕跡を素早く見つけることができます。

Wiresharkの表示フィルタ

本稿で説明する「Wiresharkの表示フィルタ」とは、[Packet List] ペインの上にある[Filter]ツールバーに入力するフィルタの内容を指しています。ここには、Wiresharkがpcapファイルから読み出して表示するフレーム、IPパケット、TCPセグメントをフィルタリング(絞り込み表示)するための式を入力します。

Figure 01

図1.Wiresharkの表示フィルタの場所([Filter]ツールバー)

 

表示フィルタにテキストを入力すると、Wiresharkは、入力したテキストに基づいて候補のリストを表示します。表示フィルタの背景色が赤いとき、入力した式はまだそのままでは利用できない状態です。この色が緑に変われば、入力内容は式として利用でき、正しく動作します。表示フィルタの背景色が黄色の場合、式は受け入れられていても、おそらく意図したとおりには動作しません。

図2.入力内容に基づいて候補を表示するWiresharkの表示フィルタ

 

図3.Wiresharkの表示フィルタに式が受け入れられて、意図どおり動作している例

 

図4.Wiresharkの表示フィルタに式が受け入れられても、意図どおり動作していない例

 

Wiresharkの表示フィルタには、ブール式を利用できます。つまり、複数の式を指定して連結できます。一般に使用される式を次に示します。

  • 等号: ==またはeq
  • 論理積: &&またはand
  • 論理和: ||(2本の縦線)またはor

ブール式を利用した式のサンプルを次に示します。

  • ip.addr eq 192.168.10.195 and ip.addr == 192.168.10.1 
  • http.request && ip.addr == 192.168.10.195
  • http.request || http.response
  • dns.qry.name contains microsoft or dns.qry.name contains windows

ある値の除外を指定をしたい場合フィルタ式に「!=」は使用しません。たとえば「IPアドレス192.168.10.1を含まないすべてのトラフィックを指定する」場合のフィルタ式は「!(ip.addr eq 192.168.10.1)」です。「ip.addr != 192.168.10.1」と指定すると正しく動作しません。

 

Web経由の感染トラフィック用フィルタ

前回のWiresharkの前のチュートリアルでも説明したように、pcapでWebトラフィックをすばやく確認する方法として、私は次のフィルタ式をよく利用します。

http.request or ssl.handshake.type == 1

「http.request」はHTTPリクエストのURLを検出し、「ssl.handshake.type == 1」はHTTPSまたはSSL/TLSトラフィックで使用されているドメイン名を検出します。

前回のチュートリアルで使った pcap サンプル(traffic-for-wireshark-column-setup.pcap)には、2018年8月に「college.usatoday[.]com」からユーザーがURLを表示したときに生成されたWebトラフィックが含まれています。またpcapの内容からユーザーはWindows 10コンピュータでMicrosoftのEdge Webブラウザを使用していることが確認できます。「http.request or ssl.handshake.type == 1」でフィルタリングすれば、このWebトラフィックのイベントのフローが表示されました。

前回のチュートリアルをやっていないかたは、サンプルファイルtraffic-for-wireshark-column-setup.pcapを開いて試してみてください。

図5.前回のチュートリアルで使用したpcapのWebトラフィックをフィルタリングした例

 

今回のチュートリアルの1つめのサンプル Using-Wireshark-diplay-filters-Emotet-with-IcedID.pcap には、Windows 7ホスト上で生成したトラフィックのパケット キャプチャ ファイルが含まれています。その中には、感染トラフィックとは無関係な通常通信で生成されるUDPポート1900番(1900/udp)経由のHTTPリクエストもあります。

1900/udp経由のHTTPトラフィックはSSDP(Simple Service Discovery Protocol)が生成しているもので、SSDPはプラグ アンド プレイ デバイス検出に使用されているプロトコルです。

この1900/udpの通信はいわゆる一般的なwebトラフィックとは関連しないものなので、表示されてほしくありません。そこで、前回のチュートリアルで指定した「http.request or ssl.handshake.type ==1」だけでなく、次の複合フィルタ式でこの不要なHTTPリクエストを除外することにしましょう。

Using-Wireshark-diplay-filters-Emotet-with-IcedID.pcap をWiresharkで開き、[Filter]ツールバーに次の式を入力してください。

(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)

なお、次のフィルタ式でも同じ結果を得ることができます。

(http.request or ssl.handshake.type == 1) and !(ssdp)

このようにSSDPによる活動をフィルタリングして除外することで、感染Windows 7ホストのpcapに含まれる感染に関連したトラフィックをより確認しやすくなります。

図6は今開いたUsing-Wireshark-diplay-filters-Emotet-with-IcedID.pcapからのもので、Windows 7ホストでの2018年12月3日のEmotetの活動とIcedIDの感染トラフィックを示しています。

この図では、SSDPリクエストを含むWebトラフィックがフィルタリングして表示されています。

図6.WiresharkでEmotetとIcedIDの感染活動を含むWebトラフィックを確認する際SSDPトラフィックを除外していない

図7は、同じpcapでSSDPリクエストを除外してWebトラフィックをフィルタリングした場合を示しています。これにより、感染活動をより明確に表示できます。

図7.WiresharkでSSDPトラフィックを除外した上でEmotetとIcedIDの感染活動を含むWebトラフィックを確認した

 

図7から、感染トラフィックの痕跡の一部を確認できますが、ここには表示されていない痕跡もあります。場合によっては、感染したホストが、オフラインのサーバーやTCP接続を拒否するサーバーに接続を試みていた可能性もあるのです。こうした接続試行の様子は、フィルタに「tcp.flags eq 0x0002」を追加してTCP SYNセグメントを含めれば表示することができます。

ではファイルUsing-Wireshark-diplay-filters-Emotet-with-IcedID.pcapに、今度は次のフィルタを適用してみましょう。

(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)

検索対象にTCP SYNセグメントを含めると、図8に示すように、TCPポート8443番(8443/tcp)経由でIPアドレス217.164.2[.]133に接続しようとする感染ホストの様子が明らかになります。

Figure 08

図8.フィルタにTCP SYNセグメントを含めることで、感染ホストによる他のサーバーへの接続試行失敗が明らかになったところ

 

他の種類の感染トラフィック用フィルタ

場合によっては、感染後のトラフィックがwebベースではないトラフィックを使い、コマンド アンド コントロール(C2)サーバーに接続しようとすることがあります。これらのC2サーバーは IPアドレスを使って直接ホスティングされる場合と、ドメイン名をもつサーバーにホスティングされる場合があります。たとえばNanocoreリモート アクセス ツール(RAT)由来のC2トラフィックなどのように、感染後の活動がHTTPでもなければHTTPS/SSL/TLSトラフィックでもないものがあります。

 

このため、C2サーバーが利用するドメインがトラフィック内でアクティブになっているかどうかをpcapで確認することを目的に、DNS活動もフィルタに追加することがよくあります。これを追加すると以下のフィルタ式になります。

(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)

では、Wiresharkで新しいサンプルファイルUsing-Wireshark-diplay-filters-Nanocore-RAT.pcapを開き、上記の式でフィルタリングをしてください。

図9は、上記のフィルタ式を使用してpcapを確認したところです。ここから、脆弱なWindowsホストに感染するため、www.mercedes-club-bg[.]comからNanocore RAT実行可能ファイルがダウンロードされていることがわかります。この最初のダウンロードに続き、185.163.45[.]48に名前解決されるfranex.sytes[.]net、95.213.251[.]165に名前解決されるfranexserve.duckdns[.]orgに対してTCP接続が試みられています。図10は、DNSクエリとTCPトラフィックの相関関係を示しています。

図9. DNSクエリを含めることで、追加ドメインへのTCP接続の試行が明らかになる

 

図10. DNSトラフィックとTCPの活動の関連付け

 

一部の感染トラフィックは、Wiresharkによって容易にデコードできる、一般的なプロトコルを使用しています。図11はサンプルファイルUsing-Wireshark-diplay-filters-FTP-malware.pcapをWiresharkで開いたところで、このマルウェア実行可能ファイルが原因で発生する感染後のFTPトラフィックを示しています。

DNSトラフィックやTCP SYNフラグもチェックする標準的なWebトラフィック検索用フィルタを指定すれば、ftp.totallyanonymous[.]comに対するDNSクエリの後に、TCPポート21およびその他のTCPポートを経由したトラフィックも見つかります。

Figure 11

図11.FTPトラフィックを生成するマルウェアの活動

 

FTPトラフィックの場合、表示フィルタにftpと指定することができます(図12参照)。このpcapをftpでフィルタリングすると、感染したWindowsホストがtotallyanonymous.comでFTPアカウントにログインし、fc32.exeおよびo32.exeという名前のファイルを取得していることがわかります。

図13に示すように、後のFTPトラフィックまでスクロールしていくと、ほぼ毎分FTPサーバーに送信される6R7MELYD6という名前のファイルが見つかります。さらに調べると、6R7MELYD6には、感染したWindowsホストから窃取したパスワード データが含まれていることがわかります。

Figure 12

図12.TCPポート21経由のFTP制御チャネルを確認するときにftpをフィルタとして使用、感染ホストから取得したファイル名を見つける

 

図13.TCPポート21経由のFTP制御チャネルは6R7MELYD6という名前のファイルとしてFTPサーバーに格納された情報も示している

 

マルウェアは、悪意のあるトラフィックとしてFTP以外の一般的なプロトコルも使用することがあります。

スパムボット マルウェアは、毎分数十件から数百件の電子メール メッセージを送信することを目的としたスパムボットに感染ホストを変えてしまいます。特徴として、いくつかのDNSリクエストがさまざまな電子メール サーバーに送られた後、25/tcp、465/tcp、587/tcp、または電子メール トラフィックに関連するそれ以外のTCPポートでSMTPトラフィックが発生します。

このフィルタ式を再度試してみましょう。

今度は、サンプルファイルUsing-Wireshark-diplay-filters-spambot.pcapを開いて、次のフィルタ式を適用してみてください。

(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)

スパムボット トラフィックを確認すると、メール サーバーに対するDNSクエリと、前述した、SMTP関連ポートに対するTCPトラフィックが見つかります。

図14.Wiresharkでスパムボット トラフィックをフィルタすると、さまざまなメール サーバーへのDNSクエリと、SMTPトラフィックに関連した465/tcpおよび587/tcpへのTCP SYNパケットが明らかになる

 

smtpをフィルタ式として使用してみましょう。ここからいくつかのことがわかります。まず、STARTTLSを見つけても、おそらくは暗号化されたSMTPトラフィックなので電子メール データを確認することはできません。

図15.スパムボット トラフィックを確認するときの、WiresharkでのSMTPトラフィックのフィルタリング

 

ここ数年、スパムボットの電子メール トラフィックは、ほとんどが暗号化されたSMTPです。ですが、以下のような電子メールの一般的な見出しで文字列を検索すると、暗号化されていないSMTPトラフィックも見つかることがあります。

  • smtp contains “From: "
  • smtp contains “Message-ID: "
  • smtp contains “Subject: "

Wiresharkの表示フィルタでは大文字と小文字が区別されることに注意してください。私は、暗号化されていないSMTP通信でスパムボット トラフィックを検索するとき、よく「smtp contains “From: “」をフィルタ式として使用します。Using-Wireshark-diplay-filters-spambot.pcapを開いた状態で、このフィルタ式を入力してみてください。図16に示したパケットが見つかるでしょう。

図16.暗号化されていないSMTPトラフィックで電子メールの見出しを検索するためのWiresharkでのフィルタリング

 

図16に示すようなSMTPトラフィックのフィルタリングしたら、表示されたフレームのいずれかを選択してTCPストリームを追跡して内容を確認してみましょう。

表示されているフレームのいずれかひとつを選択して右クリックし、表示されたコンテキストメニューで[追跡]、[TCP ストリーム]の順にクリックします。これでそのフレームに関連するSMTP通信の内容が表示されるので、スパムボットから送信された電子メールの1つ(たとえばこの図17の例ではericrene.malherbe@wanadoo[.]fr)が見つかります。

図17.スパムボットに感染したホストからの暗号化されていないSMTPトラフィックを示すTCPストリーム

 

フィルタの保存

フィルタ式のなかには毎回入力するのが非常に面倒なものもあります。それらはフィルタ ボタンとして保存しておくことができます。Wiresharkのフィルタ バーの右側には、フィルタ ボタンを追加するための[+]ボタンがあります。

図18.Wiresharkでフィルタ式ボタンとしてフィルタ式を保存

 

[+]をクリックして、フィルタ式をフィルタ ボタンとして保存します。以下のフィールドが表示されます。

  • Label(ラベル)
  • Filter(フィルタ)
  • Comment(コメント)

「Comment(コメント)」の記入は任意です。また、[Filter(フィルタ)]には、Wiresharkの[Filter]タスクバーに現在入力されている内容がデフォルトで設定されます。「Label (ラベル)」に入力したら、[OK]をクリックします(図19参照)。

図19.フィルタ ラベルの入力後にOKボタンをクリック。

 

前記の画像では、(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)というフィルタについて「basic」と入力し、基本フィルタとして保存しました。図20では、「basic」というラベルのフィルタ ボタンが、+記号の右側に表示されています。

図20.フィルタ バーの右端にある「basic」フィルタ ボタン。

 

Wiresharkにおける標準的なフィルタ設定として、私は以下のフィルタ ボタンを作成しています。

  • basic (http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)
  • basic+ (http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)
  • basic+DNS (http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)

図21私がWiresharkで通常使用しているフィルタ ボタン

 

まとめ

このチュートリアルでは、以下について説明しました。

  • 感染トラフィックの痕跡
  • Wiresharkの表示フィルタ
  • Web経由の感染トラフィック用フィルタ
  • 他の種類の感染トラフィック用フィルタ
  • フィルタの保存

 

Wireshark表示フィルタを適切に使用することで、セキュリティの専門家は不審なネットワーク トラフィックをより効率的に調査することができます。このチュートリアルで使用したpcapは、こちらにあります。

 

ニュース

Wireshark によるパケット解析講座 1

Wireshark は無料で利用できるプロトコル アナライザです。 Wireshark を使うとネットワーク トラフィックをキャプチャしたり、キャプチャしたパケットを表示させることができます。そこでパロアルトネットワークスの脅威インテリジェンス調査チーム Unit42 に所属するアナリストが、Wireshark を使ってマルウェア検体が生成したトラフィックをレビューするさいに利用している便利な使いかたをご紹介していきます。
January 17, 2019

ニュース

Wireshark によるパケット解析講座 3

前回までではWiresharkの列表示のカスタマイズ方法と表示フィルタの式について見ていきました。本稿ではトラフィックから感染ないし侵害を受けたホスト名やユーザーを特定する方法について説明します。
March 31, 2019

ニュース

DNSトンネリング: 攻撃者はDNSをどう悪用するのか

悪意のある攻撃者は、ドメインネームサービス(DNS)をコマンド&コントロール(C2)用通信チャネルとして悪用してきました。またこのプロトコルはこのほかに、データを漏出させる目的でも悪用されてきました。DNS の悪用はC2に「ハートビート」接続のために通信するという用途からさらに広がっており、攻撃者はここ数年、悪意のあるデータやペイロードをDNS経由で被害者のシステムに侵入させる用途にもDNSを使っています。本稿では、DNSを悪用したデータ侵入・漏出の種類、方法、使用方法を紹介し、その防御メカニズムへの指針を示します。
March 18, 2019

データシート

PA-400シリーズ

パロアルトネットワークスの機械学習を活用したNGFW「PA-400 Series (PA-460、PA-450、PA-440)」なら、分散した大企業の支社、小売店、中規模企業にも次世代ファイアウォール機能を導入できます。
August 3, 2022

ニュース

Wireshark によるパケット解析講座 4

セキュリティ専門家は、不審なアクティビティのパケット キャプチャ(pcap)をレビューする際、より詳しく調べるために、オブジェクトをpcapからエクスポートしなければならない場合があります。
July 12, 2019

ニュース

Cortex XDRの紹介

パロアルトネットワークスは、セキュリティの最先端を行く3つのイノベーションを発表しました。これらのイノベーションによって、セキュリティ業界の変革に挑もうとしています。まず1つ目は、ディテクション(検知)・調査・レスポンスSaaSアプリケーションCortex XDRです。これは、高度な攻撃をディテクションして阻止するだけでなく、将来のサイバー攻撃に備えて防御機能を絶えず進化させ、セキュリティ運用をサポートするSaaS型のアプリケーションです。
April 14, 2019

最新ニュース、イベント情報、脅威アラートを配信

このフォームを送信すると、お客様は弊社の利用規約とプライバシー ポリシーに同意したものとみなされます。

black youtube icon black twitter icon black facebook icon black linkedin icon
  • USA (ENGLISH)
  • AUSTRALIA (ENGLISH)
  • BRAZIL (PORTUGUÉS)
  • CANADA (ENGLISH)
  • CHINA (简体中文)
  • FRANCE (FRANÇAIS)
  • GERMANY (DEUTSCH)
  • INDIA (ENGLISH)
  • ITALY (ITALIANO)
  • JAPAN (日本語)
  • KOREA (한국어)
  • LATIN AMERICA (ESPAÑOL)
  • MEXICO (ESPAÑOL)
  • SINGAPORE (ENGLISH)
  • SPAIN (ESPAÑOL)
  • TAIWAN (繁體中文)
  • UK (ENGLISH)

人気のあるリソース

  • 会社概要
  • イベント センター
  • イベント
  • リソースセンター
  • プレスリリース
  • Unit42 ブログ
  • 投資家の皆様へ
  • ブログ
  • Japan Live Community
  • Tech Docs
  • キャリア
  • お問い合わせ
  • サイトマップ

法定通知

  • プライバシー
  • 個人情報保護基本方針
  • 利用規約
  • トラスト センター
  • ドキュメント
  • 一般事業主行動計画

アカウント

  • 購読の管理
  • パートナーログイン
  • パートナーになる
脆弱性の報告

Copyright © 2023 Palo Alto Networks. All rights reserved