本ブログは米国で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は、こちらにあります。


 

パロアルトネットワークス管理者ガイド日本語版

このガイドで、パロアルトネットワークスのファイアウォールのWeb管理画面の使用方法を説明します。対象は設置、運用管理、メンテナンスを行うシステム管理者向けです。 ※このページで提供する管理者ガイドが最新版でない可能性があります。最新版に関しては、製品をご購入された販売代理店にご相談ください。  
  • 5
  • 19166

PA-3200 Series スペックシート

パロアルトネットワークス® PA-3200 Series の次世代ファイアウォールは、PA-3260、PA-3250、およびPA-3220 で構成されています。これらのモデルはすべて高速の インターネット ゲートウェイでの導入を目的としたものです。PA-3200 Seriesはネットワーキング、セキュリティ、脅威防御および管理のための専用処理およびメモリ を使用して、暗号化トラフィックを含むすべてのトラフィックを保護します。
  • 0
  • 4787

2018年のサイバー脅威の振り返りと2019年の予測

パロアルトネットワークス脅威インテリジェンスチームUnit 42の調査結果やパロアルトネットワークスのセキュリティソリューションをもとに、国内外のサイバー脅威について振り返りつつ、2019年にはどのようなサイバー脅威に対して注意を払うべきか解説します。
  • 1
  • 1219

PA-800 Series

主なセキュリティ機能: すべてのアプリケーションをすべてのポートで常時識別 • 使用されているポートや暗号化(SSLまたはSSH)、セキュリティの回避技術に関わらず、アプリケーションを識別します。 • 許可、拒否、スケジュール、スキャン、帯域制御の適用などのセキュリティ ポリシー決定の要素として、ポートではなくアプリケーションを使用します。 • 不明なアプリケーションを、ポリシー制御、脅威のフォレンジック、またはApp-ID™アプリケーション識別テクノロジの開発が行えるよう分類します。
  • 1
  • 12235

PA-3000 Series スペックシート

PA-3000シリーズの主な機能、パフォーマンスと容量、および仕様。
  • 1
  • 9831