This post is also available in: English (英語)
概要
2023年3月のUnit 42 Wiresharkのクイズは2023年3月6日に報告されたGozi(ISFB/Ursnif)のアクティビティにもとづくシナリオを作りました。本クイズに答えることで、パケット解析の経験を積み、Goziの感染後トラフィックの特定を体験できます。
本稿はクイズの解答編です。本クイズは、Active Directory(AD)環境で疑わしいネットワーク アクティビティの調査やネットワーク トラフィックのパケット キャプチャ(pcap)の確認を行っておられるセキュリティ専門家を読者として想定していますが、どなたでもご参加いただけます。Wiresharkにある程度なじみがあり、基本的なネットワーク トラフィックの概念を理解している読者のみなさんにとって、もっとも効果的な内容となっています。
問題を先にご覧になりたいかたはこちらの問題編をご覧ください。
パロアルトネットワークスのお客様は、WildFireや高度な脅威防御などのクラウド型セキュリティサービスを有効にした次世代ファイアウォールとCortex XDRによりGoziをはじめとするマルウェアからの保護を受けています。
関連するUnit 42のトピック | Gozi, ISFB, pcap, Ursnif, Wireshark, Wireshark Tutorial |
シナリオ / 前提条件 / 教材
この感染は2023年3月6日に報告されたGozi(ISFB/Ursnif)のアクティビティにもとづいています。今月のWiresharkクイズのpcapは、ある企業ネットワークを模したActive Directory環境で取得した実際のトラフィックを含んでいます。このpcapに含まれるローカル エリア ネットワーク (LAN) の詳細は以下の通りです。
- LANセグメントの範囲: 172.16.1[.]0/24 (172.16.1[.]1から172.16.1[.]255)
- ドメイン: pcapworkshop[.]net
- ドメイン コントローラーのIPアドレス: 172.16.1[.]16
- ドメイン コントローラーのホスト名: PCAPWORKSHOP-DC
- LANセグメントのゲートウェイ: 172.16.1[.]1
- LANセグメントのブロードキャスト アドレス: 172.16.1[.]255
今月のクイズの調査にはWiresharkが必要です。本稿では最近のバージョンのWireSharkを使っていますが古くても3.x以降の利用をお勧めします。
本稿はネットワーク トラフィックに関する基礎的な知識をお持ちの方を読者として想定しています。なお、Webトラフィックを分析しやすいよう、Wiresharkの表示設定をあらかじめカスタマイズしておくことをお勧めします。その方法については、こちらのチュートリアルやビデオの一覧でご確認ください。毎度のことですが、Windowsベースの悪意のあるトラフィックの分析には、BSD、Linux、macOSなど、Windows以外の環境の利用をお勧めします。
問題のpcapはこちらのGitHubリポジトリから入手してください。ZIPアーカイブをダウンロードしたらpcapを展開してください。展開用パスワードは「infected」です。
問題
今月のGoziによる感染のWiresharkクイズは、こちらの2023年3月分のWiresharkクイズで説明した以下の質問に答えるというものでした。
- 感染したWindowsクライアントのIPアドレス、ホスト名、Windowsユーザーアカウント名
- 感染したWindowsホストからダウンロードされたZipアーカイブのURLとSHA-256ハッシュ
- 今回のGozi感染による指標とUnit 42が報告した2023年3月6日のGozi感染による指標との間に何か顕著な違いはあるか
解答
今月のWiresharkクイズの解答は以下の通りです。
- 感染したWindowsクライアントのIPアドレス: 172.16.1[.]137
- 感染したWindowsクライアントのホスト名: DESKTOP-3GJL3PV
- 感染したWindowsクライアントのユーザーアカウント名: sherita.kolb
- ZipアーカイブのURL: hxxp://unapromo[.]com/mise/Cliente.zip
- ZipアーカイブのSHA-256ハッシュ: 33db5b2a2cc592fd10c65ba38396e4c7574ad78e786d78e8a3acdc93a90c3209
- 初期Zipアーカイブのダウンロード時のURLとファイルが違う。そのほかにはこのGozi感染と以前報告されたGozi感染との間に目立った指標上の違いはない
Pcap解析: 被害者の詳細
ここではこちらのチュートリアルやワークショップのビデオに従ってWiresharkをカスタマイズしていることを前提に解析します。
まずは被害者の詳細を特定しましょう。
今回のpcapに登場するクライアントの内部非ルーティングIPアドレスは172.16.1[.]137です。これを確認するには、Wiresharkチュートリアル ブログ(『Wireshark によるパケット解析講座2: 脅威インテリジェンス調査に役立つフィルタリング設定』)で解説した「basic」のフィルターを使用するか、Wiresharkの[Filter (フィルタ)]ツールバーに以下を入力してください。
(http.request or tls.handshake.type eq 1) and !(ssdp)
[Packet List (パケット一覧)]ペインに表示される結果から接続元IP (Source IP)アドレスが172.16.1[.]137であることがわかります(図1)。
![図1はWiresharkのスクリーンショットです。ここではWebトラフィックをフィルタリングした後の接続元IPアドレスの列(Src)と接続元MACアドレスをハイライト表示しています。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/03/word-image-127375-2.jpeg)
通常はNetwork Basic Input/Output System (NetBIOS)、Name Service (NBNS)のトラフィックから被害者のホスト名を特定するのが手っ取り早いでしょう。そのためには、次のWiresharkフィルターを使用します。
nbns
Windows 10ないしWindows 11コンピューターではデフォルトのホスト名が15文字の文字列です。このデフォルト名はDESKTOP-で始まり、その後ろに7文字のASCII文字で構成される英数字の文字列が続きます。nbnsフィルターを使うと、[Packet List (パケット一覧)]ペインと[Packet Details (パケット詳細)]ペインでDESKTOP-3GJL3PVを見つけられます(図2)。
![画像2はWiresharkのスクリーンショットで、NBNSトラフィック内のWindowsホスト名の特定のしかた(緑色でハイライト表示)を説明しています。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/03/word-image-127375-3.jpeg)
ユーザー ログイン時に生成されるKerberos認証トラフィックがpcapに含まれていれば、そこからWindowsユーザーアカウント名がわかることがあります。kerberos.CNameStringでフィルタリングして、[Packet List (パケット一覧)]ペインで結果を一番下までスクロールし、[Packet List (パケット一覧)]ペインの最終行あたりのいずれか1行を選択します。[Packet Details (パケット詳細)]ペイン内でKerberosの行を展開していきます。図3にしたがってsherita.kolbという値を持つCNameStringが見つかるまで値を展開してください。
![画像3は、Wiresharkのスクリーンショットで、Kerberosトラフィックの中から被害者のWindowユーザー アカウント名を見つける方法を示しています。CNameString、検索バー、その他の詳細をハイライト表示しています。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/03/word-image-127375-4.jpeg)
『Wireshark によるパケット解析講座 3: ホストとユーザーを特定する』で説明したとおり、CNameStringの値を選んで右クリックし、コンテキスト メニューの[Apply as Column (列として適用)]を実行すると、Wiresharkの表示にCNameString列を表示させることができます。CNameStringを列として適用した結果を上の図3に示します。
Pcapの解析: 初期Zipアーカイブ
今回のGozi感染の攻撃チェーンは悪意のあるZIPアーカイブから始まります。そのURLは次のWiresharkフィルターを適用すると見つかります。
http.request.uri contains ".zip"
このフィルターでunapromo[.]com宛の/mise/Cliente.zipを要求するHTTP GETリクエストが見つかるはずです(下の図4参照)。
![画像4は、TCPストリーム追跡オプションを選択後、URLを探すメニュー パスを示したWiresharkのスクリーンショットです。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/03/word-image-127375-5.jpeg)
Wiresharkの[File (ファイル)]メニューから[Export Objects (オブジェクトをエクスポート)]、[HTTP]の順にクリックして、pcapからCliente.zipをエクスポートします(図5参照)。
![画像6は、Linuxのターミナルで、ファイルの種類とSHA-256ハッシュを確認する方法を示したスクリーンショットです。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/03/word-image-127375-7.jpeg)
Cliente.zipのSHA-256ハッシュは33db5b2a2cc592fd10c65ba38396e4c7574ad78e786d78e8a3acdc93a90c3209です。このZipアーカイブには、インターネット ショートカットが含まれています。インターネット ショートカットは.urlというファイル拡張子を持つテキストベース ファイルです。ターミナル ウィンドウでunzipコマンドを使ってCliente.zipからインターネット ショートカットを抽出し、lessで中身を見られます(図7、図8)。
![画像7は、lessコマンドでzipファイルの中身を展開するようすを示したLinuxターミナルの画面です。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/03/word-image-127375-8.jpeg)
![画像8は、インターネット ショートカット ファイルの中身を抽出するようすを示したLinuxターミナルのスクリーンショットです。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/03/word-image-127375-9.jpeg)
URLはhttpやhttpsで始まることが多いですが、抽出したインターネット ショートカットはhttpやhttpsではなくfileで始まるURLが含まれています(図8)。このfileで始まるURLは、445/tcp経由のSMB (Server Message Block)プロトコルのトラフィックを生成します。Windowsホストの場合、このURLコンテンツにはWindows ファイル エクスプローラーでアクセスできます(図9)。
![画像9は、ファイル エクスプローラーのスクリーンショットで、インターネット ショートカットの内容がserver.exeであることを示しています。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/03/word-image-127375-10.jpeg)
今月のpcapには、抽出したインターネット ショートカットが生成したserver.exeに対するSMBトラフィックが含まれています。次は、pcapからserver.exeを抽出できるかどうかやってみましょう。
Pcapの解析: SMB経由のファイル転送
私たちは2019年7月にpcapからオブジェクトをエクスポートするWiresharkチュートリアルを公開しました。このチュートリアルで、[File (ファイル)]メニューから[Export Objects (オブジェクトをエクスポート)]、[SMB]の順にクリックして、SMB トラフィックからオブジェクトをエクスポートしています。今回のpcapの46.8.19[.]32\mise\server.exeに対してこれを試してみてください(図10)。
Pcapの解析: Gozi感染後のトラフィック
Goziの感染後トラフィックはエンコードされたデータで構成されていて、その通信にはたいてい80/tcpと平文のHTTP GETリクエストとHTTP POSTリクエストが使われます。この特定の事例でGoziのC2(コマンド&コントロール)サーバーはドメインではなくIPアドレスを使っていました。
Wiresharkでhttp.requestをフィルタリングすれば、Goziの感染後トラフィックについてさらに詳しく知ることができます(図12)。
![画像12はWiresharkのスクリーンショットです。HTTPトラフィックをフィルタリングしてGoziのC2アクティビティを確認しやすくする方法を示しています。http.requestというフィルターを緑色でハイライト表示しています。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/03/word-image-127375-13.jpeg)
GoziのトラフィックはHTTP GETリクエストとHTTP POSTリクエストから構成されます。これらのリクエストには長いURLが指定されていて、URLにはBase64でエンコードされたテキストのほかにスラッシュ(/)やアンダースコア(_)が含まれています。C2サーバーとやりとりされるデータはエンコードないし暗号化されています。図13はGoziのC2トラフィックの初期HTTP GETリクエストの例です。
![画像13はWiresharkのスクリーンショットで、初期トラフィックを表しています。赤の矢印でハイライトされている部分は、Base64でエンコードされた長いURLのテキストです。矢印でハイライトされているのは"Host"ヘッダーに示された、あるIPにホストされているサーバーです。ウィンドウの下の方にべつの矢印でハイライトされているのはエンコードされたデータです。](https://unit42.paloaltonetworks.jp/wp-content/uploads/2023/03/word-image-127375-14-ja.png)
Goziはモジュールやプラグインを使ってさまざまな機能を実行します。たとえばWebブラウザーのキャッシュから被害者のパスワードを盗んだりします。これらのモジュールはエンコードないし暗号化されたバイナリとして送信されますが、これには比較的短いURLが使われ、その末尾は.rarで終わります。下に例をいくつかあげます。
- GET /stilak32.rar
- GET /stilak64.rar
- GET /cook32.rar
- GET /cook64.rar
これらの.rarで終わるURLとC2サーバーからのHTTPレスポンス ヘッダーから、返されたファイルが「Content-Type:application/x-rar-compressed」となっていることがわかります。ただしこれらのファイルは.rarアーカイブではなく、エンコードないし暗号化されたバイナリです。
GoziのC2 URLの全IPアドレスは以下のIoCセクションに記載します。
これらのURLは以前にUnit 42アカウントからツイートされたGozi亜種のものと同じパターンを踏襲しています。また、今月のWiresharkクイズに出てくるGoziのC2のIPアドレスはいずれも当該ツイートの技術情報で提供されたものです。初期感染ベクトルであるZipアーカイブのURLとファイル ハッシュだけが唯一目立った違いといえます。
結論
本稿は「Unit 42 Wiresharkクイズ 2023年3月」の解答編です。pcapからのトラフィックを確認し、Goziの感染にもとづいて問題編で出されたクイズに回答しました。
自社IT環境では完全なパケットキャプチャが手に入らないことも多いでしょう。このためセキュリティ専門家がネットワークトラフィックのレビュー経験を積めないこともあります。そうした場合は本稿のようなWiresharkクイズのトレーニング教材が役に立つでしょう。Pcapの解析は悪意のあるアクティビティへの理解を深めるのに役立つスキルです。
答えを掲載していない問題編のブログもあわせてご確認ください。
パロアルトネットワークスのお客様は、WildFireや高度な脅威防御などのクラウド型セキュリティサービスを有効にした次世代ファイアウォールとCortex XDRによりGoziやそれに類するマルウェアからの保護を受けています。
侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、こちらの問い合わせフォームからご連絡いただくか、infojapan@paloaltonetworks.comまで電子メールにてご連絡いただくか、下記の電話番号までお問い合わせください(ご相談は弊社製品のお客様には限定されません)。
- 北米フリーダイヤル: 866.486.4842 (866.4.UNIT42)
- 欧州: +31.20.299.3130
- アジア太平洋: +65.6983.8730
- 日本: +81.50.1790.0200
IoC
pcapに含まれるマルウェアのSHA-256ハッシュ:
- 33db5b2a2cc592fd10c65ba38396e4c7574ad78e786d78e8a3acdc93a90c3209 Cliente.zip
- 340a759b1c1cdc22f6fac84044d072475e1630fbb7f47d96c4e18413de34d570 Cliente.url
pcapに含まれるGoziのC2トラフィック:
- hxxp://unapromo[.]com/mise/Cliente.zip
- hxxp://62.173.140[.]103/drew/[long base64 string with backslashes and underscores].jlk
- hxxp://62.173.138[.]138/drew/[long base64 string with backslashes and underscores].gif
- hxxp://62.173.138[.]138/drew/[long base64 string with backslashes and underscores].bmp
- hxxp://62.173.149[.]243/stilak32.rar
- hxxp://62.173.149[.]243/stilak64.rar
- hxxp://62.173.149[.]243/cook32.rar
- hxxp://62.173.149[.]243/cook64.rar
- hxxp://62.173.140[.]94/drew/[long base64 string with backslashes and underscores].gif
- hxxp://31.41.44[.]60/drew/[long base64 string with backslashes and underscores].gif
- hxxp://46.8.19[.]233/drew/[long base64 string with backslashes and underscores].gif
- hxxp://5.44.45[.]201/drew/[long base64 string with backslashes and underscores].gif
- hxxp://89.116[.]236.41/drew/[long base64 string with backslashes and underscores].gif
- hxxp://62.173.140[.]76/drew/[long base64 string with backslashes and underscores].gif
- hxxp://31.41.44[.]49/drew/[long base64 string with backslashes and underscores].gif
- hxxp://46.8.19[.]86/drew/[long base64 string with backslashes and underscores].gif
追加リソース
- Wiresharkチュートリアル: Wiresharkワークショップビデオシリーズを公開 – パロアルトネットワークス Unit 42
- Unit 42 Wiresharkクイズ 2023年1月: 問題編 – パロアルトネットワークス Unit 42
- Unit 42 Wiresharkクイズ 2023年1月: 解答編 – パロアルトネットワークス Unit 42
- Unit 42 Wiresharkクイズ 2023年2月: 問題編 – パロアルトネットワークス Unit 42
- Unit 42 Wiresharkクイズ 2023年2月: 解答編 – パロアルトネットワークス Unit 42
- Unit 42のGitHub投稿 – イタリアを標的にするマルスパムからのGozi (ISFB/Ursnif)のIoC
- Unit 42によるツイート(2023年3月9日) – イタリアを標的にするマルスパム、Gozi (ISFB/Ursnif)感染につながる