Wireshark によるパケット解析講座 4: Pcapからのオブジェクトのエクスポート

By

Category: Unit 42

Tags: , , ,

This post is also available in: English (英語)

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

本チュートリアルでは、pcapからさまざまな種類のオブジェクトをエクスポートするに当たってのヒントを解説します。ネットワーク トラフィックの基礎について、読者が理解していることが前提となります。ネットワーク トラフィックのこれらのpcapを使って、Wiresharkによるオブジェクトの抽出を練習します。このチュートリアルで以前解説した通り、Wiresharkの列表示が既にカスタマイズされていることも前提となります。

警告: これらのpcapのほとんどにはWindowsマルウェアが含まれ、本チュートリアルではこれらの悪意あるファイルを調べることになります。これらのファイルはWindowsマルウェアであることから、本チュートリアルはMacBookやLinuxホストのような非Windows環境で行うことが推奨されます。Linuxを実行する仮想マシン(VM)も使用できます。

本チュートリアルは、以下の内容を扱います。

  • HTTPトラフィックからのオブジェクトのエクスポート
  • SMBトラフィックからのオブジェクトのエクスポート
  • SMTPトラフィックからの電子メールのエクスポート
  • FTPトラフィックからのファイルのエクスポート

HTTPトラフィックからのオブジェクトのエクスポート

本チュートリアルで用いる最初のpcap「extracting-objects-from-pcap-example-01.pcap」は、こちらから入手できます。Wiresharkでpcapを開き、図1の通り、http.requestでフィルタリングします。

図1: 本チュートリアルの最初のpcapをWiresharkでフィルタリング
図1: 本チュートリアルの最初のpcapをWiresharkでフィルタリング

http.requestでフィルタリングを行った後、smart-fax[.]comへの2つのGETリクエストを見つけます。最初のリクエストの末尾は.docで、最初のリクエストによってMicrosoft Wordドキュメントが返されたことを意味します。2つめのリクエストの末尾は.exeで、2つめのリクエストによってWindows実行ファイルが返されたことを意味します。HTTP GETリクエストは以下の通りです。

  • smart-fax[.]com – GET /Documents/Invoice&MSO-Request.doc
  • smart-fax[.]com – GET /knr.exe

これらのオブジェクトは、次のメニュー パスを使うことで、HTTPオブジェクト リストからエクスポートできます: 「File (ファイル)」–>「Export Objects (オブジェクトのエクスポート)」–>「HTTP… 」図2に、Wiresharkでのメニュー パスを示します。

図2: WiresharkでHTTPオブジェクトをエクスポート
図2: WiresharkでHTTPオブジェクトをエクスポート

このメニュー パスから、図3の「Export HTTP object list (エクスポートするHTTPオブジェクトのリスト)」ウィンドウが表示されます。ホスト名にsmart-fax[.]comが含まれている最初の行を選択し、図3の手順で保存します。ホスト名にsmart-fax[.]comが含まれている2つめの行を選択し、図4の手順で保存します。

図3: HTTPオブジェクト リストから不審なWordドキュメントを保存
図3: HTTPオブジェクト リストから不審なWordドキュメントを保存
図4: HTTPオブジェクト リストから不審なWindows実行ファイルを保存
図4: HTTPオブジェクト リストから不審なWindows実行ファイルを保存

なお、HTTPオブジェクト リストの「Content Type (コンテンツ タイプ)」は、サーバーがHTTPレスポンス ヘッダーでファイルをどのように特定したかを示します。Windows実行ファイルは、検出を回避するために、故意に別の種類のファイルとして命名されている場合があります。幸い、本チュートリアルの最初のpcapは、非常に簡単な例です。

それでも、これらのファイルの内容が見かけ通りであるか確認する必要はあります。MacBookまたはLinux環境では、ターミナル ウィンドウやコマンド ライン インターフェイス(CLI)で、以下のコマンドを用いることができます。

  • file [ファイル名]
  • shasum -a 256 [ファイル名]

fileコマンドは、ファイルの種類を返します。shasumコマンドは、ファイルのハッシュ(この場合はSHA256)を返します。図5に、DebianベースのLinuxホスト上のCLIでこれらのコマンドを使った場合の画面を示します。

図5: pcapからエクスポートされた2つのオブジェクトのファイル タイプとハッシュを特定
図5: pcapからエクスポートされた2つのオブジェクトのファイル タイプとハッシュを特定

図5のコマンドとその結果は以下の通りです。

上記の情報により、不審なWordドキュメントが実際にMicrosoft Wordドキュメントであることが確認できます。また、不審なWindows実行ファイルも、実際にWindows実行ファイルであることが確認できます。SHA256ハッシュをVirusTotalでチェックすれば、これらのファイルがマルウェアとして検出されるかが判明します。またSHA256ハッシュをGoogleで検索すれば、さらなる情報を見つけられる可能性もあります。

Windows実行ファイルや他のマルウェア ファイルのほか、Webページも抽出できます。本チュートリアルで用いる2つめのpcap「extracting-objects-from-pcap-example-02.pcap」(こちらから入手可能)には、偽のPayPalログイン ページにログイン認証情報を入力しようとしている誰かのトラフィックが含まれます。

フィッシング サイトからのネットワーク トラフィックをレビューするときには、フィッシングWebページの見た目を確認したい場合もあるでしょう。図6のエクスポートするHTTPオブジェクトのメニューを介して、元のHTMLページを抽出できます。次に、図7の通り、分離された環境のWebブラウザを使って表示させることができます。

図6: 2つめのpcapから偽のPayPalログイン ページをエクスポート
図6: 2つめのpcapから偽のPayPalログイン ページをエクスポート
図7: エクスポートされた偽のPayPalログイン ページをWebブラウザで表示
図7: エクスポートされた偽のPayPalログイン ページをWebブラウザで表示

SMBトラフィックからのオブジェクトのエクスポート

マイクロソフトのServer Message Block (SMB)プロトコルを使用し、Active Directory (AD)ベースのネットワーク全体に広がろうとするマルウェアも存在します。「Trickbot」として知られるバンキング トロジャンは、早いものでは2017年7月に、ワーム モジュールを追加しました。EternalBlueをベースとしたエクスプロイトを使うことで、SMBのネットワーク全体に広がりました。今日でも、このTrickbotワーム モジュールの兆候を見つける取り組みは続いています。

次のpcapとして、SMBを使って感染済みクライアント(10.6.26.110)からドメイン コントローラ(10.6.26.6)に広がろうとしたTrickbot感染を取り上げます。このpcap「extracting-objects-from-pcap-example-03.pcap」は、こちらから入手できます。pcapをWiresharkで開きます。図8の通り、「File (ファイル)」–>「Export Objects (オブジェクトのエクスポート)」–>「SMB…」のメニュー パスを利用します。

図8: エクスポートするSMBオブジェクトのリストにアクセス
図8: エクスポートするSMBオブジェクトのリストにアクセス

以上により、エクスポートするSMBオブジェクトのリストが表示されます。下記の図9の通り、このリストには、pcapからエクスポート可能なSMBオブジェクトが列挙されています。

図9: エクスポートするSMBオブジェクトのリスト
図9: エクスポートするSMBオブジェクトのリスト

リストの真ん中あたりに、ホスト名が「\\10.6.26.6\C$」のエントリが2つあるのが見えます。それぞれのファイル名のフィールドをよく見てみると、これらはいずれもWindows実行ファイルであることがわかります。詳しくは表1をご覧ください。

パケット数 ホスト名 コンテンツ タイプ サイズ ファイル名
7058 \\10.6.26.6\C$ FILE (712704/712704) W [100.0%] 712 kB \WINDOWS\d0p2nc6ka3f_fixhohlycj4ovqfcy_smchzo_ub83urjpphrwahjwhv_o5c0fvf6.exe
7936 \\10.6.26.6\C$ FILE (115712/115712) W [100.0%] 115 kB \WINDOWS\oiku9bu68cxqenfmcsos2aek6t07_guuisgxhllixv8dx2eemqddnhyh46l8n_di.exe

表1: エクスポートするSMBオブジェクトのリストから得られた、2つのWindows実行ファイルに関するデータ

これらのファイルの適切なコピーをエクスポートするには、「Content Type (コンテンツ タイプ)」の数字が[100.00%]でなければいけません。数字が100%を下回っている場合は、ネットワーク トラフィックにおいて何らかのデータ損失が発生し、結果的にファイルが破損したり、不完全なコピーになったりしていることを意味します。これらのpcapからのTrickbot関連ファイルは、表2の通り、SHA256ハッシュです。

SHA256ハッシュ ファイル サイズ
59896ae5f3edcb999243c7bfdc0b17eb7fe28f3a66259d797386ea470c010040 712 kB
cf99990bee6c378cbf56239b3cc88276eec348d82740f84e9d5c343751f82560 115 kB

表2: SHA256ハッシュのWindows実行ファイル

SMTPトラフィックからの電子メールのエクスポート

感染したWindowsホストをスパムボットに変えるように設計されているマルウェアも存在します。これらのスパムボットは、毎分数百件ものスパム メッセージや悪意ある電子メールを送信します。暗号化されていないSMTPを使って送られるメッセージもあり、これらのメッセージは感染トラフィックのpcapからエクスポートできます。

この一例が、次のpcap、extracting-objects-from-pcap-example-04.pcapからのものです(こちらから入手可能)。このpcapでは、感染したWindowsクライアントがセクストーション(性的脅迫)スパムを送信しています。Wiresharkでpcapを開き、smtp.data.fragmentでフィルター処理すると、図10に示すように、50個の件名の例が表示されます。これは、単一の感染したWindowsホストからの5秒間のネットワーク トラフィックで発生しました。

図10.Wiresharkにおける電子メールの送信者と件名のフィルター処理
図10.Wiresharkにおける電子メールの送信者と件名のフィルター処理

図11に示す通り、これらのメッセージはメニューパス「File (ファイル)」–>「Export Objects (オブジェクトのエクスポート)」–>「IMF…」を使用してエクスポートすることができます。IMFはInternet Message Formatの略で、.emlファイル拡張子が付加された名前で保存されます。

図11.Wiresharkにおけるpcapからの電子メールのエクスポート
図11.Wiresharkにおけるpcapからの電子メールのエクスポート

図12に示すように、セクストーション スパム メッセージはすべて、IMFオブジェクト リストに.emlファイル拡張子が付加されて一覧されます。

図12.IMFオブジェクト リスト内のスパム メッセージのリスト
図12.IMFオブジェクト リスト内のスパム メッセージのリスト

それらをエクスポートした後、これらの.emlファイルはThunderbirdなどの電子メール クライアントで表示して確認したり、図13に示すように、テキスト エディターで調べたりすることができます。 

図13.テキスト エディターを使用した、pcapからエクスポートされた.emlファイルの表示
図13.テキスト エディターを使用した、pcapからエクスポートされた.emlファイルの表示

FTPトラフィックからのファイルのエクスポート

一部のマルウェア ファミリーはマルウェアの感染にFTPを使用します。次のpcapには、FTPサーバーから取得されたマルウェア実行可能ファイルと、それに続いて、同じFTPサーバーに返送された感染したWindowsホストからの情報が含まれています。

次のpcapはextracting-objects-from-pcap-example-05.pcapで、こちらから入手可能です。Wiresharkでpcapを開き、ftp.request.commandでフィルター処理すると、図14に示すように、FTPコマンドを確認できます。ユーザー名(USER)とパスワード(PASS)、さらに、次の5つのWindows実行可能ファイルを取得するためのリクエスト(RETR)が続いていることがわかります: q.exew.exee.exer.exet.exe。さらに、約18秒ごとに、同じFTPサーバーにhtmlベースのログ ファイルを保存するためのリクエスト(STOR)が続きます。

図14.WiresharkにおけるFTPリクエストのフィルター処理
図14.WiresharkにおけるFTPリクエストのフィルター処理

現在、取得され送信されたファイルについて概念がわかっているため、図15に示すように、ftp-dataでフィルター処理することで、FTPデータ チャネルからトラフィックを確認することができます。

図15.WiresharkにおけるFTPデータ トラフィックのフィルタリング
図15.WiresharkにおけるFTPデータ トラフィックのフィルタリング

Wiresharkの「Export Objects (オブジェクトのエクスポート)」機能を使用して、これらのオブジェクトをエクスポートすることはできません。ただし、それぞれについて、データ チャネルからTCPストリームをたどる(フォローする)ことはできます。末尾が(SIZE q.exe)の任意の行を左クリックして、TCPセグメントの1つを選択します。その後、右クリックして、メニューを展開し、図16に示すように、メニューパス「Follow (フォロー)」–>「TCP stream (TCPストリーム)」を選択します。

図16.q.exeのFTPデータ チャネルのTCPストリームをフォロー
図16.q.exeのFTPデータ チャネルのTCPストリームをフォロー

これによって、FTPデータ チャネルを経由するq.exeのTCPストリームが表示されます。ウィンドウの下部近くには、「Show and save data as (データを表示して、次の形式で保存)」とラベル付けされたボタン型のメニューがあります。図17に示すように、デフォルトはASCII形式です。図18に示すように、メニューをクリックし、「Raw (ロー)」を選択します。

図17.q.exeのTCPストリーム ウィンドウ「Show and save data as (データを表示して、次の形式で保存)」ボタン型メニューに注意。
図17.q.exeのTCPストリーム ウィンドウ「Show and save data as (データを表示して、次の形式で保存)」ボタン型メニューに注意。
図18.「Show and save data as (データを表示して、次の形式で保存)」メニューから「Raw (ロー)」を選択
図18.「Show and save data as (データを表示して、次の形式で保存)」メニューから「Raw (ロー)」を選択

これで、図19に示すように、ウィンドウにはASCIIの代わりに16進数文字が表示されます。また、図19に示すように、ウィンドウ下部近くの「Save as…(名前を付けて保存)」ボタンを使用して、これをロー バイナリとして保存できます。

図19.TCPストリームからのデータをロー バイナリとして保存
図19.TCPストリームからのデータをロー バイナリとして保存

ファイルをq.exeとして保存します。Linuxまたは類似のCLI環境では、以下に示すように、これがWindows実行可能ファイルであり、SHA256ハッシュを取得していることを確認してください。

$ file q.exe

q.exe:PE32 executable (GUI) Intel 80386, for MS Windows

$ shasum -a 256 q.exe

ca34b0926cdc3242bbfad1c4a0b42cc2750d90db9a272d92cfb6cb7034d2a3bd q.exe

SHA256ハッシュは、VirusTotalでマルウェアとして高い検出率を示しています。pcap内の他の.exeファイルについても同じプロセスに従います。

  • ftp-dataでフィルター処理する
  • 「Info (情報)」列に使用中のファイル名があるTCPセグメントのTCPストリームをフォローする
  • 「Show and save data as (データを表示して、次の形式で保存)」を「Raw (ロー)」に変更する
  • 「Save as…(名前を付けて保存)」ボタンを使用してファイルを保存する
  • 保存されたファイルが実際にWindows実行可能ファイルであることを確認する

これによって、表3に示すような、以下のファイルが取得されます。

SHA256ハッシュ ファイル名
32e1b3732cd779af1bf7730d0ec8a7a87a084319f6a0870dc7362a15ddbd3199 e.exe
ca34b0926cdc3242bbfad1c4a0b42cc2750d90db9a272d92cfb6cb7034d2a3bd q.exe
4ebd58007ee933a0a8348aee2922904a7110b7fb6a316b1c7fb2c6677e613884 r.exe
10ce4b79180a2ddd924fdc95951d968191af2ee3b7dfc96dd6a5714dbeae613a t.exe
08eb941447078ef2c6ad8d91bb2f52256c09657ecd3d5344023edccf7291e9fc w.exe

表3.FTPトラフィックからの実行可能ファイル

感染したWindowsホストからFTPサーバーに返送されたHTMLファイルをエクスポートする場合は、より正確に検索する必要があります。なぜでしょうか?毎回、同じファイル名が使用されるからです。ftp.request.commandでフィルター処理して、終わりまでスクロールします。図20に示すように、窃取したデータをFTPサーバーにHTMLファイルとして保存(STOR)するために、同じファイル名が使用されたことがわかります。

図20.窃取した情報をFTPサーバーへ返送するために使用された同じファイル名
図20.窃取した情報をFTPサーバーへ返送するために使用された同じファイル名

FTPデータ チャネル経由で送信された関連付けられたファイルを確認するには、図21に示すように、「ftp-data.command contains .html (.htmlを含むftp-data.command)」フィルターを使用します。

図21.FTPデータ チャネルを経由し、ファイル名に.htmlが含まれるファイルのフィルタリング
図21.FTPデータ チャネルを経由し、ファイル名に.htmlが含まれるファイルのフィルタリング

図21では、ファイルがFTPサーバーに保存(STOR)されるたびに、宛先ポートが変わっています。1回目はTCPポート52202、2回目はTCPポート57791、さらに3回目はTCPポート55045です。4回目は57203で、5回目は61099です。

以前と同じプロセスを使用します。ここでは、ファイル名に着目する代わりに、TCPポートに注目します。ポート52202を使用しているいずれかのTCPセグメントのTCPストリームをフォローします。TCPストリーム ウィンドウで、「Show and save data as (データを表示して、次の形式で保存)」を「Raw (ロー)」に変更します。その後、ファイルを保存します。TCPポート57791経由のHTMLファイルに対して同じことを実行します。

5つすべてのHTMLファイルに対してこれを実行すると、それらがまったく同じファイルであることがわかります。これらのテキストベースのHTMLファイルには、マルウェアによって検出されたパスワードを含め、感染したWindowsホストに関するデータが含まれています。まとめ

Wiresharkで、このチュートリアルで概説した方法を使用して、pcapからさまざまなオブジェクトを抽出できます。これは、ネットワーク トラフィックからのアイテムを調べる必要がある場合に、非常に役立つことがあります。

Wiresharkをより有用に活用する方法については、以前のチュートリアルを参照してください。