This post is also available in: English (英語)
概要
問題編のブログ「Unit 42 Wireshark クイズ 2023年4月: 問題編 − IcedIDの特定」では2023年4月に発生したIcedID感染のパケット キャプチャー(pcap)を提示しました。本稿はクイズの解答編です。IcedIDはBokbotとも呼ばれるWindowsベースのマルウェアで、広く定着が見られ、ランサムウェアへつながる場合があります。このpcapをレビューすることでこのIcedID感染トラフィックを分析する機会を得られます。
問題を先にご覧になりたいかたは別ブログの問題編をご覧ください。
パロアルトネットワークスのお客様は、WildFire、Advanced Threat Prevention、Advanced URL Filteringなどのクラウド型セキュリティサービスを有効にした次世代ファイアウォールとCortex XDRにより、IcedIDをはじめとするマルウェアから保護されています。
関連するUnit 42のトピック | pcap, Wireshark, Wireshark Tutorial, IcedID, BokBot |
シナリオ / 前提条件 / 教材
本クイズのトラフィックは2023年4月にActive Directory(AD)環境で発生しました。この感染は2023年3月にUnit 42がツイートした過去のIcedIDのアクティビティと類似のものです。このpcapのローカル エリア ネットワーク (LAN) の詳細は以下の通りです。
- LANセグメントの範囲: 10.4.19[.]0/24 (10.4.19[.]1 〜 10.4.19[.]255)
- ドメイン: boogienights[.]live
- ドメイン コントローラーのIPアドレス: 10.4.19[.]19
- ドメイン コントローラーのホスト名: WIN-GP4JHCK2JMV
- LANセグメントのゲートウェイ: 10.4.19[.]1
- LANセグメントのブロードキャスト アドレス: 10.4.19[.]255
このクイズにはWiresharkが必要です。Wiresharkは最新バージョンの利用をお勧めします。以前のWiresharkバージョンより機能・性能ともに上がり、不具合も修正されています。
なお、Webトラフィックを分析しやすいよう、Wiresharkの表示設定をあらかじめカスタマイズしておくことをお勧めします。その方法については、こちらのチュートリアルやビデオの一覧でご確認ください。毎度のことですが、Windowsベースの悪意のあるトラフィックの分析には、BSD、Linux、macOSなど、Windows以外の環境の利用をお勧めします。
問題のpcapはこちらのGithubリポジトリから入手できます。2023年4月のZIP アーカイブをダウンロードしてpcapを展開してください。展開用パスワードは「infected」です。
クイズの問題
今月のIcedID感染クイズはこちらの問題編の別ブログで説明した以下の質問に答えるというものでした。
- 感染が始まった日時はいつですか(UTCで回答)。
- 感染したWindowsクライアントのIPアドレスは何ですか。
- 感染したWindowsクライアントのMACアドレスは何ですか。
- 感染したWindowsクライアントのホスト名は何ですか。
- 感染したWindowsホストのユーザー アカウント名は何ですか。
- なんらかのフォローアップ マルウェアによるアクティビティは見られましたか。
解答
このpcapのAD環境には3台のWindowsクライアントが含まれていました。ただしIcedIDに感染していたのは1台のみでした。
このWiresharkのクイズの答えは以下の通りです。
- この感染で悪意のあるトラフィックが始まった日時: 2023-04-19 15:31 UTC
- 感染したWindowsクライアントのIPアドレス: 10.4.19[.]136
- 感染したWindowsクライアントのMACアドレス: 14:58:d0:2e:c5:ae
- 感染したWindowsクライアントのホスト名: DESKTOP-SFF9LJF
- 感染したWindowsクライアントのユーザーアカウント名: csilva
- フォローアップアクティビティ: BackConnectのトラフィック
Pcap解析: IcedIDのイベント チェーン
IcedIDのネットワーク トラフィックを理解するには、IcedID感染で見られるイベント チェーンを理解する必要があります。このイベント チェーンを表すフローチャートを図1に示します。
ほとんどのIcedID感染では、ある標準的亜種が使われます。これらの感染では通常、インストーラーとして機能するEXEまたはDLLが使われます。このインストーラーは平文のHTTP GETリクエストを生成し、gzip圧縮されたバイナリーを取得します。このバイナリーはIcedIDの感染持続のためのマルウェアへと変換されます。
新たに作成された感染持続用のIcedIDは、HTTPSトラフィックを生成し、コマンド&コントロール(C2)サーバーと通信します。このC2アクティビティはBackConnectのトラフィック、Cobalt Strike、仮想ネットワーク コンピューティング(VNC)などのアクティビティへとつながる可能性があります。
感染ホストが価値の高い環境にあれば、IcedID感染はランサムウェアへつながる可能性が高いでしょう。
Pcap解析: 感染ベクトル
チュートリアルでカスタマイズ済みのWireshark環境で「basic」Webフィルターを適用し、何か目を引くものはないか確認します。パケット一覧部に表示された結果をレビューします。対応するドメインのない80/tcp経由の平文HTTPトラフィックが特定のIPアドレス宛に直接送信されていないか探してください。これはさまざまなマルウェア感染のイベント チェーンでよく見られる特徴です。
15:31:08 UTCに10.4.19[.]136のホストがhxxp://80.77.25[.]175/main.phpに対してHTTP GETリクエストを生成しています(図2)。
図3にしたがってこの行を選び、右クリックで表示されるコンテキスト メニューから[Follow (追跡)]、[TCP Stream (TCPストリーム)] の順にクリックしてください。選んだHTTP GETリクエストのTCPストリームが追跡されて図4の「tcp.stream eq 32」のウィンドウが表示されます。
図4はEdg/112.0.1722.48で終わるUser-Agent文字列を含むHTTPリクエストヘッダーを示したものです。この文字列はMicrosoft Edgeブラウザーがこのトラフィックを生成した可能性を示唆するものですが、マルウェアの生成するWebトラフィックはほかのUser-Agent文字列に偽装できますし、一部のブラウザー拡張機能にもこの機能があるので、これが実際にMicrosoft Edgeだったと断定はできません。
図4のHTTPレスポンス ヘッダーのステータス コードは302で、トラフィックを以下のURLにリダイレクトしています。
hxxps://firebasestorage.googleapis[.]com/v0/b/serene-cathode-377701.appspot.com/o/XSjwp6O0pq%2FScan_Inv.zip?alt=media&token=a716bdce-1373-44ed-ae89-fdabafa31c61
このFirebase StorageのURLはVirusTotal上の少なくとも7社のセキュリティベンダーから「悪意があるもの」と報告されており、URLhausでもIcedIDにタグ付けされています。さいわいGoogleはこのURLをオフラインにしたのでアクティビティは停止しています。
さらに検索を絞り込むため、以下図5を参照して、「basic」のWebフィルターに続けてクライアントのIPアドレス10.4.19[.]136を追加してください。この結果、hxxp://80.77.25[.]175/main.php宛の最初のURLへのトラフィックの発生後まもなく、firebasestorage.googleapis[.]com宛のHTTPSトラフィックが続いていることがわかります。
Wiresharkのパケット一覧部から「fire」で始まる文字列を含む1つめのフレームを選んで右クリックし、コンテキストメニューから[Follow (追跡)]、[TCP Stream (TCPストリーム)]の順にクリックして、TCPストリームを追跡してください。このTCPストリームからは、サーバーからWindowsホストへ送信された273kBのデータを確認できます(図6)。ここからこのWindowsホストになんらかのファイルが送信された可能性が示唆されます。
このFirebase StorageのURLはURLhausではIcedIDとしてタグ付けされていますが、これは1つのIcedIDインストーラー配信手段を示しているに過ぎません。このpcapにもとづくと、被害者がFirebase StorageのURLにつながるリンクを開き、そのURLがIcedIDのインストーラー ファイルを配信したことがわかります。
このFirebase StorageのURLのURLhausのエントリーからは、このURLが以前ホストしていたZIPアーカイブを確認できます(図7)。
このZIPアーカイブはMalwareBazaarに提出されています。このアーカイブはASCII文字列1235でパスワード保護されており、Scan_Inv.exeという名前のファイルが含まれています。このWindowsの実行ファイルはIcedIDのインストーラーです。
Pcap解析: IcedIDのトラフィック
IcedIDのローダーはまず、あるドメインに対して80/tcp経由でGET /とだけ指定した平文のHTTP GETリクエストを生成し、これ以降のURLは指定しません。このリクエストにより、被害者のホストには、インストーラーが持続感染用のマルウェアを作成するのに使うgzipバイナリーが返されます。
pcap内にあるこのgzipバイナリーを見つけるには、図5で説明したように「basic」のWebフィルターを適用した後に続けて被害者のIPアドレスを指定します。15:35:39 UTCのskigimeetroc[.]com宛のHTTP GETリクエストまでパケット一覧部をスクロール ダウンし、このパケットを選んでこれまでのようにTCPストリームを追跡してください(図8)。
以下はpcapで「tcp.stream eq 53」を表示したものです(図9)。IcedIDインストーラーが生成するトラフィックのHTTPリクエスト ヘッダーには、User-Agent文字列がありません。図9のリクエスト ヘッダー内で送信されているクッキーに注目してください。
cookieの行は以下の内容になっています。
Cookie: __gads=422998217:1:1808:131; _gid=A0CA96894E9D; _u=4445534B544F502D534646394C4A46:6373696C7661:46353431423635424230383346354633; __io=21_1181811818_1193560798_2439418475; _ga=1.591597.1635208534.1022; _gat=10.0.22621.64
このIcedIDインストーラーが生成したHTTP GETリクエストのcookieパラメーターは以下の通りです。
- __gads=: IcedIDのキャンペーン識別子と感染ホストからの情報
- _gid=: 感染ホストのMACアドレスから算出した値
- _u=: 被害者のホスト名、Windowsユーザーアカウント名のほか、特定されていないなんらかの値を16進数値で表したASCIIテキスト
- __io=: 感染ホストのセキュリティ識別子(SID)からのドメイン識別子
- _ga=: 感染ホストのCPUにもとづく情報
- _gat=: Windowsのバージョン。たとえば10.0.22621.64は64ビット版Windows 11バージョン22H2の識別子で10.0.19045.64は64ビット版Windows 10バージョン22H2の識別子
これらのcookieパラメーターは、IcedID感染に特有のものです。何の値かわからなくても、このトラフィックがIcedIDであることは特定できます。ただし_u=パラメーターからは被害者のホスト名とWindowsのユーザーアカウント名が確認できるので、この情報は調査でとくに役立ちます。これらの16進数値は、以下の図10に示すとおり、ホスト名がDESKTOP-SFF9LJF、Windowsのユーザー アカウント名がcsilvaにそれぞれ変換されます。
gzipバイナリーを取得後、IcedIDインストーラーは持続感染用のIcedIDマルウェアを作成し、それに感染を引き継がせます。その後、感染WindowsホストはIcedIDのC2サーバーへのHTTPSトラフィックを生成しはじめます。
これらのC2サーバーは、IcedIDのインストーラーがアクセスした最初のドメインとは異なるドメイン名とIPアドレスを使います。IcedIDによるHTTPSのC2トラフィックはインストーラーがgzipバイナリーを取得してから1、2分以内に始まり、このアクティビティはランダムなアルファベット名を持つ少なくとも2つのドメインを使います。
今回のpcapからは、15:35:39 UTCに記録されたskigimeetroc[.]comへの接続の後、感染ホストから2つのドメインへのHTTPSトラフィックを開始したことがわかります。これらのHTTPS C2サーバーは、104.168.53[.]18にあるaskamoshopsi[.]comと217.199.121[.]56にあるskansnekssky[.]comです。
これらのサーバーを見つけるには、図5で説明した被害者のIPアドレスと同じ「basic」のWebフィルターを使います。15:36:41 UTCから始まるHTTPSトラフィックからこれらのドメインを確認できます(図11)。
askamoshopsi[.]com、skansnekssky[.]comのC2サーバーはどちらもHTTPSトラフィックに自己署名証明書を使っています。自己署名証明書が使われているHTTPSトラフィックを最新のWebブラウザーで表示すると、潜在的セキュリティリスクに関する警告が生成されます。
自己署名証明書を使っているWebサイトに対してWebブラウザーが警告を表示するのは、これらの証明書がCA (認証局)に検証されていないためです。犯罪者らは既存の企業になりすました自己署名証明書を生成したり、証明書の発行者に一般的な値を使うことがあります。有効な証明書がなければ、WebブラウザーはあるWebサイトがそこで主張されているとおりのサイトなのかどうか確認できません。
図12はaskamoshopsi[.]comのサーバーをFirefox Webブラウザーで表示しようとしたさいの表示内容です。この警告からユーザーはサーバーの自己署名証明書を表示することができます。
上記の図12に示すように、この証明書は発行者の組織名に「Internet Widgits Pty Ltd」、州・県名に「Some-State」といった値が使用されています。IcedID C2サーバーで使用する自己署名証明書の値は、以下の図13、図14で示したように、XubuntuでOpenSSLを使用して証明書を作成したときのデフォルト値と同じです。
「Internet Widgits Pty Ltd」はHTTPSトラフィックにおける自己署名証明書のデフォルト値なので、マルウェアのC2トラフィックでときおり目にします。マルウェア感染を疑って調査しているときにこの値が見つかったのならさらに詳しく調べる必要があります。以下のWiresharkフィルターを使えば、任意のpcapにこの値が存在するかどうかを簡単に調べられます。
x509sat.uTF8String eq "Internet Widgits Pty Ltd"
このフィルタリング結果から、IcedIDのC2サーバーに使われているIPアドレスは、askamoshopsi[.]comがホストされている104.168.53[.]18、そしてskansnekssky[.]comがホストされている217.199.121[.]56と同じものであることが確認できます。図15に示すようにパケット一覧部でいずれかのフレームを選んでパケット詳細部を展開すると、同じ証明書発行者データが表示されます。
この証明書データはIcedIDに固有のものではありません。自己署名証明書にこれと同じ値を使うようすは、Bumblebeeのようなほかのマルウェア ファミリーのHTTPS C2トラフィックでも確認されています。
Pcap解析: BackConnectのトラフィック
IcedIDへの感染が検出されなかった場合、続いてフォローアップ アクティビティが発生します。たとえば、BackConnectトラフィックのようなアクティビティが見られます。
過去数ヶ月間、IcedIDによるBackConnectトラフィックは8080/tcpで発生していたことから検出は容易でした。ただし早ければ2023年4月11日時点ではIcedIDのBackConnectアクティビティは443/tcpに変更され、検出しづらくなっています。
2023年4月11日にUnit 42がツイートしたIcedIDのBackConnectアクティビティでは、IPアドレス193.149.176[.]100と、443/tcpが使われていました。以下の図16のように、WiresharkでそのIPアドレスをフィルタリングし、tcp.flags eq 0x0002 (TCP SYN フラグのみがセットされている)と組み合わせてください。3つのストリームの開始部が表示されます。
1つめのtcpストリーム(tcp.stream eq 950)を選んで、これまでと同じ手順でTCPストリームを追跡してください。図17に示すように、このストリームからはエンコードないし暗号化されたTCPトラフィックを確認できます。
表示フィルター ツールバーの右端の下向き▼をクリックしてフィルタリング履歴を表示し、「TCP SYN フラグのみをセット(tcp.flags eq 0x0002)した193.149.176[.]100のTCPストリーム」を確認するために使ったWiresharkフィルター(図16)をもう一度適用します。今回は、2つめのTCPストリーム(tcp.stream eq 951)を追跡してください。これにより、図18に示すように、エンコードないし暗号化されたデータと、その後ろにつづくboogienights[.]liveのドメイン コントローラー配下のすべてのホストを列挙するコマンドを確認できます。
このコマンドに対するレスポンスは、被害者のAD環境を列挙して、ドメインにログインしている3台のクライアントを表示しています。
- DESKTOP-JAL4D68
- DESKTOP-RETP4BU
- DESKTOP-SFF9LJF
表示フィルター ツールバーの右端の下向き▼をクリックしてフィルタリング履歴を表示し、「TCP SYN フラグのみをセット(tcp.flags eq 0x0002)した193.149.176[.]100のTCPストリーム」を確認するために使ったWiresharkフィルター(図16)をもう一度適用します。今回は、3つめのTCPストリーム(tcp.stream eq 953)を追跡してください。以下の図19に示したように、このストリームは被害者のクライアント上のディスク ドライブを列挙し、それらドライブ上の各ディレクトリーの一覧を提供します。
C:\ドライブは被害者のシステム ドライブです。Z:\はサーバーの共有ディレクトリーからマップされたドライブのようですが、ここにはファイルが含まれていません。
以前のIcedID感染からは、この脅威がBackConnectトラフィックを使ってCobalt Strikeをロード・実行する場合があることが明らかになっています。Unit 42はそうした事例の1つを2023年3月24日にツイートしています。ただしこのpcapにCobalt Strikeのインジケーター(痕跡)は含まれていません。
以前のIcedID感染からは、この脅威がBackConnectのトラフィックに使われたものと同じIPアドレスでVNCトラフィックを生成する場合があることも明らかになっています。そうした例は2023年3月24日の同じIcedID感染で確認されています。
Pcap解析: 被害者の詳細
これまで確認してきた悪意のあるトラフィックに共通する内部IPアドレスは10.4.19[.]136です。つまりこれが被害者のIPアドレスです。この被害者のWindowsユーザー アカウント名を見つけるには、このIPアドレスとkerberos.CNameStringでフィルタリングします(図20参照)。
LDAP (Lightweight Directory Access Protocol)がユーザーのフルネームも提供してくれる場合があります。これには次のWiresharkフィルターを使用します。
ldap.AttributeDescription == "givenName"
この結果、パケット一覧部には4つのフレームが表示されるはずです。いずれか1つを選択し、ユーザーのフルネーム「Cornelius Silva」が見つかるまでパケット詳細部を展開してください。以下の図21のようになります。
Wiresharkで被害者のホスト名を見つける一番簡単な方法は、以下の図22に示すように、被害者のIPアドレスとip contains "DESKTOP-"の検索を組み合わせることかもしれません。パケット表示部に結果として表示されたうちの何行かには、10.4.19[.]136の感染Windowsホストから送信されたHost Announcement DESKTOP-SFF9LJFが表示されています。
被害者のMACアドレスを見つけるには、以下の図23に示したように、パケット詳細部ウィンドウに表示されている被害者のIPアドレス(10.4.19.136)をもつフレームをどれか1つ選び、ホストのMACアドレスを相関させるとよいでしょう。
結論
本稿では2023年4月に発生したIcedID感染を取り上げ、Unit 42 Wireshark クイズとして分析と解答を行いました。IcedIDはランサムウェアの感染ベクターの1つであることがわかっているのでその特定と防止は重要です。
自社IT環境では完全なパケットキャプチャが手に入らないことも多いでしょう。このためセキュリティ専門家がIcedIDそのほかのマルウェア トラフィックのレビュー経験を積めないこともあります。そうした場合は本稿のようなWiresharkクイズのトレーニング教材が役に立つでしょう。Pcapの解析は悪意のあるアクティビティへの理解を深めるのに役立つスキルです。
答えを掲載していない問題編のブログもあわせてご確認ください。
パロアルトネットワークスのお客様は、WildFire、Advanced Threat Prevention、Advanced URL Filteringなどのクラウド型セキュリティサービスを有効にした次世代ファイアウォールとCortex XDRにより、IcedIDをはじめとするマルウェアから保護されています。
侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、こちらのフォームからご連絡いただくか、infojapan@paloaltonetworks.comまでメールにてご連絡いただくか、下記の電話番号までお問い合わせください(ご相談は弊社製品のお客様には限定されません)。
- 北米フリーダイヤル: 866.486.4842 (866.4.UNIT42)
- 欧州: +31.20.299.3130
- アジア太平洋: +65.6983.8730
- 日本: +81.50.1790.0200
パロアルトネットワークスはファイル サンプルや侵害の兆候などをふくむこれらの調査結果をCyber Threat Alliance (CTA) のメンバーと共有しました。CTA のメンバーはこのインテリジェンスを使って、お客様に保護を迅速に提供し、悪意のあるサイバー攻撃者を体系的に阻害できます。詳細についてはCyber Threat Allianceにてご確認ください。
IoC
IcedID感染に関連するpcap内のトラフィック
- hxxp://80.77.24[.]175/main.php
- hxxps://firebasestorage.googleapis[.]com/v0/b/serene-cathode-377701.appspot.com/o/XSjwp6O0pq%2FScan_Inv.zip?alt=media&token=a716bdce-1373-44ed-ae89-fdabafa31c61
- 192.153.57[.]223:80 - hxxp://skigimeetroc[.]com/
- 104.168.53[.]18:443 - askamoshopsi[.]com - HTTPSトラフィック
- 217.199.121[.]56:443 - skansnekssky[.]com - HTTPSトラフィック
- 193.149.176[.]100:443 - BackConnectのトラフィック
今回のIcedID感染トラフィックに関連するファイル
- SHA256ハッシュ: fc96c893a462660e2342febab2ad125ce1ec9a90fdf7473040b3aeb814ba7901
- ファイル サイズ: 262,343バイト
- ファイル名: Scan_Inv.zip
- ファイルの説明: Firebase StorageのURLにホストされている、パスワード保護されたZIPアーカイブ
- 展開用パスワード: 1235
- MalwareBazaarデータベース サンプル
- SHA256ハッシュ: bd24b6344dcde0c84726e620818cb5795c472d9def04b259bf9bff1538e5a759
- ファイル サイズ: 333,408バイト
- ファイル名: Scan_Inv.exe
- ファイルの説明: IcedIDインストーラーのWindows実行ファイル
- MalwareBazaarデータベース サンプル
追加リソース
- 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 Wireshark クイズ 2023年3月: 問題編 − Goziを追え – パロアルトネットワークス Unit 42
- Unit 42 Wireshark クイズ 2023年3月: 解答編 − Goziを追え – パロアルトネットワークス Unit 42
- Unit 42のツイート(2023-01-01) – IcedID感染からCobalt Strikeへ
- Unit 42のツイート(2023-02-08) – IcedID感染からCobalt Strikeへ
- Unit 42のツイート(2023-02-13) – 偽のソフトウェア ページからIcedIDへ
- Unit 42のツイート(2023-02-24) – IcedIDからBackConnectトラフィック経由でCobalt Strikeへ
- Unit 42のツイート(2023-03-24) – IcedIDからBackConnectトラフィック経由でCobalt Strikeへ
- Unit 42のツイート(2023-04-11) – IcedIDからのBackConnectトラフィックがTCPポートを変更
- Fork in the Ice: The New Era of IcedID – Proofpoint
- IcedID BackConnect Protocol – Netresec
- Inside the IcedID BackConnect Protocol – Team Cymru
- Threat Analysis Report: All Paths Lead to Cobalt Strike - IcedID, Emotet at Qbot – Cybereason
- IcedID & Qakbot’s VNC Backdoors: Dark Cat, Anubis & Keyhole – NVISO Labs
- Malicious ISO File Leads to Domain Wide Ransomware - The DFIR Report