このブログは、N高等学校を卒業して、かぷかぷ笑っている株式会社Armorisのアルバイトkuramubon_8810が書いています。
あるもりすぶろぐの内容は個人の意見です。
やっていくこと
今回は前回のpcap分析編 その1 ~Wiresharkの使い方~に続いて問題を解く際に行うと良い準備や、実際に問題をどのような手順で解いていくかなど、問題への取り組み方やヒントを解説していきます。
ブログ内で使用するもの
問題とツールは前回と同様に下記サイトのものとWiresharkを使用して解説していきます。
解く際に行うと良い事前準備
色付けを使用してどのような通信が行われているか確認
- 前回説明をした色付けを活用していきます。
- 赤枠で囲った部分を見てみると、TCPやHTTPでのやり取りが多いことが確認できます。
アラートがあれば確認
パケットには通信に関する情報がすべて記載されているため、膨大な情報量になります。そこで、目的の情報を得るためにアラートを確認すると良い場合があります。
今回はアラートの中から問題を解くのに必要な情報がないかを確認していきます。
解き方のヒント
一問目
問題文: What is the PUBLIC IP of the infected host? (Hint: One of the alerts says what the malware used to figure this out.)
「感染したホストのPUBLIC IPはなんですか?(ヒント: アラートの一つに、マルウェアがこの情報を把握するために使用した内容が記載されています)」
- まずは問題文のヒントを参考にアラートを確認します。
- アラートを確認するとEvent MessageにExturnal IPと書いてあるアラートがあります。(画像内赤枠)
- Exturnalとは外部のという意味なので、問題のPublic IPに何か関係がある可能性が高いと考えられます。
- 実際にExternal IPと書いてあるアラートを確認すると"myip.opendns.com in DNS lookup" と書かれています。
- 送信先アドレスが208.67.222.222となっておりOpenDNSと一致します。(画像内青枠)
- DNSでのやり取りかつ208.67.222.222とのやり取りのみを表示して確認します。
dns && ip.addr == 208.67.222.222
- Wikipediaを確認するとグローバルIPの問い合わせに関して、「このほか、myip.opendns.comに対してAやAAAAレコードを問い合わせると、発信元のグローバルIPアドレスを返答する機能がある」と記載されています。
- 実際にパケットを確認してみると、myip.opendns.comに対してAやAAAAで問い合わせているものがいくつかあることがわかります。(画像内赤枠)
- 一問目の回答はこれらのパケットに対するレスポンスを確認すると問題の解答につながります。
二問目
問題文: What is the language of the infected host set to?
感染したホストの言語は何に設定されていますか?
- まずは一問目と同様にアラートを確認しますが、回答に関係がありそうなアラートは確認できません。
- 次にパケットを詳しく見ていきます。
- 今回注目するのはHTTP HeadersのAccept-Languageというものです。
- HTTPでやり取りをする際、サーバーに送るデータには様々なものがあり、その中にはユーザーがどのような言語を使用しているかといった情報も含まれています。
- そこでまずHTTPでのやり取りのみを絞り込みます。
http
- この中でクライアントからサーバーへのパケットはGETリクエストとして送られていることがわかります。
- 前回説明をしたPacketDetailsペインからパケットに関する詳細な情報を確認するとAccept-Languageの項目が含まれています。
三問目
問題文: What is the name of the malware?
マルウェアの名前はなんですか?
- まずはアラートを確認します。
- 一見すると問題に関係のある情報は無いように見えますが、Event Messageに"TROJAN"と記載されているアラートが確認できます。(画像内赤枠)
- TROJANとはトロイの木馬のことで、トロイの木馬というのは聞いたことがある人も多いと思います。
- 画像の下から2つ目にあるアラートには"Zeus Panda Banker"や"Ursnif"といった名前が書いてあり、"Malcious SSL Certificate Detected"(悪意のあるSSL証明書を見つけた)となっています。
- これらの名前についてGoogleなどで検索し、情報を集めることで問題の解答につながります。
四問目
問題文: The malware tried, and failed, to download a file ending with .avi from what host?
マルウェアは.aviで終わるファイルをダウンロードしようとしましたが、失敗しました。失敗したのはどのホストですか?
ここで確認したIPアドレスへアクセスすることは危険です
- まずはアラートを確認しますが、問題に関係ありそうな情報は確認できません。
- 次にパケットを確認します。
- pcapファイルを色付けして確認したところ、DNS、TCP、HTTP、NBNSでのやり取りが行われていることが確認できます。
- 通信が行われているプロトコルからダウンロードに失敗した原因として考えられるものは、HTTPのステータスコードが400番台、500番台の場合、TCPのコネクションが確立できていない可能性などが考えられます。
- HTTPステータスコードとは、HTTPリクエストがどのように完了されたかを示すものです。
MDNリファレンス
- HTTPステータスコードとは、HTTPリクエストがどのように完了されたかを示すものです。
- そこで、ステータスコードと、TCPのエラーで絞り込みます。
http.response.code >= 400、tcp.analysis.flags
- これらのパケットを返してきた送信元のIPアドレスを確認すると解答につながります。
五問目
問題文: What host did the malware succeed in downloading the .avi file from?
マルウェアはどのホストから.aviファイルのダウンロードに成功しましたか?
ここでエクスポートできるファイルを開いたり実行したりすることはとても危険です。
ダウンロードの成否に関わらず、ホストに対してアクセスを試みたりすることも危険です。
- まずはアラートを確認しますが、四問目と同様にダウンロードに関係ありそうな情報は確認できません。
- 次にパケットを確認すると4問目と同様に、DNS、TCP、HTTP、NBNSでのやり取りが行われていることが確認できます。
- ここで前回紹介したエクスポート機能を使ってHTTPでのオブジェクトをエクスポートします。
- エクスポートできるファイルの一覧を表示します。
- この中から.aviファイルを選択するとダウンロードした際のパケットが表示されます。
- それぞれ.aviファイルをダウンロードした際のパケットを確認すると、常に成功しているわけではなく、"404 Not Found"が返ってきた上でダウンロードされているパケットがあります。
- これらはGoogleのエラーページのhtmlが.aviとしてダウンロードされているもののため問題には関係がありません。
- 実際にファイルの拡張子をhtmlに変えてブラウザで開くとGoogleのエラーページが確認できます。
- ダウンロードに成功しているパケットを探し、ホスト名(画像内赤枠)を確認すると解答につながります。
終わりに
pcap分析は様々なところに散りばめてあるヒントを拾い集め、調べながら答えを導き出していく過程が、謎解きやパズルのようでとても楽しいです。
まだまだ自分もpcap分析駆け出し(?)ではありますが、もっと様々なパケットを見て、分析していきたいと思います。
この記事を見て、pcap分析を少しでも面白そうと感じていただけたのであれば、ぜひ一度挑戦してみてください。