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

概要

本稿はUnit 42 Wiresharkクイズ 2023年2月の解答編です。本稿の情報は、Active Directory(AD)環境で疑わしいネットワーク アクティビティの調査やネットワーク トラフィックのパケット キャプチャ(pcap)の確認を業務で行っておられるセキュリティ専門家を読者として想定していますが、どなたでもご確認いただけます。Wiresharkにある程度なじみがあり、基本的なネットワーク トラフィックの概念を理解している読者のみなさんにとって、もっとも効果的な内容となっています。

問題を先にご覧になりたいかたはこちらの問題編をご覧ください。

関連するUnit 42のトピック pcap, Qakbot, Qbot, spambot VNC, Wireshark, Wireshark Tutorial

シナリオ / 前提条件 / 教材

今月のWiresharkクイズのpcapはあるActive Directory環境から取得したもので、企業ネットワークをシミューレトした環境から取得した実トラフィックが含まれています。このpcapに含まれるローカル エリア ネットワーク (LAN) の詳細は以下の通りです。

  • LANセグメントの範囲: 10.0.0[.]0/24 (10.0.0[.]0 から 10.0.0[.]255)
  • ドメイン: work4us[.]org
  • ドメイン コントローラーのIPアドレス: 10.0.0[.]6
  • ドメイン コントローラーのホスト名: WORK4US-DC
  • LANセグメントのゲートウェイ: 10.0.0[.]1
  • LANセグメントのブロードキャスト アドレス: 10.0.0[.]255

今月のクイズの調査にはWiresharkが必要です。本稿では最近のバージョンのWireSharkを使っていますが古くても3.x以降の利用をお勧めします。

本稿はネットワーク トラフィックに関する基礎的な知識をお持ちの方を読者として想定しています。なお、Webトラフィックを分析しやすいよう、Wiresharkの表示設定をあらかじめカスタマイズしておくことをお勧めします。その方法については、こちらのチュートリアルやビデオの一覧でご確認ください。毎度のことですが、Windowsベースの悪意のあるトラフィックの分析には、BSD、Linux、macOSなど、Windows以外の環境の利用をお勧めします。

問題のpcapはこちらのGitHubリポジトリから入手してください。ZIPアーカイブをダウンロードしたらpcapを展開してください。展開用パスワードは「infected」です。

問題

今月のWiresharkクイズは参加者にアクティビティに関するインシデント レポートの作成を求めるものでした。問題編は2023年2月のこちらの投稿から確認できます。このインシデント レポートは以下の3つのセクションを含んでいる必要があります。

  • 概要: 簡潔明瞭に何が発生したかを述べる(いつ・誰が・何をしたか)
  • 被害者の詳細: 被害者のIPアドレス、MACアドレス、Windowsホスト名、Windowsユーザー アカウント名
  • IoC(侵害の痕跡): 感染と関係しているIPアドレス、ポート番号、ドメイン、URL感染によるファイルをpcapから抽出できる場合はそのSHA256ハッシュ

解答

このインシデント レポートは以下のWrite-upのような内容になるはずです。

概要:

2023-02-03 17:04 UTC、Damon Bauer使用のWindowsホストがQuakbot(Qbot)マルウェアに感染。同Qakbot感染はドメイン コントローラーへ伝播した可能性あり。

被害者の詳細:

  • IPアドレス: 10.0.0[.]149
  • MACアドレス: 00:21:5d:9e:42:fb
  • ホスト名: DESKTOP-E7FHJS4
  • Windowsユーザー アカウント名: damon.bauer

IoC:

悪意のあるネットワーク トラフィック

  • ポート番号 80 - hxxp://128.254.207[.]55/86607.dat
  • 102.156.32[.]143:443 - HTTPS/SSL/TLSトラフィック
  • 208.187.122[.]74:443 - HTTPS/SSL/TLSトラフィック
  • 5.75.205[.]43:443 - HTTPS/SSL/TLSトラフィック
  • 23.111.114[.]52:65400 - TCPトラフィック
  • 78.31.67[.]7:443 - TCPトラフィック(VNCアクティビティ)
  • さまざまなIPアドレス(25/tcpおよび465/tcp) - さまざまな電子メールドメインのサーバーへのSMTPトラフィック
  • 感染WindowsホストからのARPスキャン
  • 感染Windowsホストとドメイン コントローラーとのSMB経由でのファイル転送

マルウェア:

  • SHA256ハッシュ: 713207d9d9875ec88d2f3a53377bf8c2d620147a4199eb183c13a7e957056432
  • ファイル サイズ: 1,761,280バイト
  • ファイルの場所: hxxp://128.254.207[.]55/86607.dat
  • ファイルの説明: 悪意のある32ビットDLLファイル(Qakbot)
  • 実行方法: rundll32.exe [filename],Wind
  • サンプル: MalwareBazaarで入手可能

Pcap解析: 被害者の詳細

ここではこちらのチュートリアルやワークショップのビデオに従ってWiresharkをカスタマイズしていることを前提に解析します。

まずは被害者の詳細を特定しましょう。

今回のpcapに共通して登場する内部の非ルーティングIPアドレスは10.0.0[.]149です。これを確認するには、Wiresharkチュートリアルブログ(『Wireshark によるパケット解析講座 2: 脅威インテリジェンス調査に役立つフィルタリング設定』)で解説した「basic」のフィルターを使用するか、Wiresharkの[Filter (フィルタ)]ツールバーに以下を入力してください。

(http.request or tls.handshake.type eq 1) and !(ssdp)

[Packet List (パケット一覧)]ペインに表示される結果から接続元IP (Source IP)アドレスが10.0.0[.]149であることがわかります。またフレームの詳細を示す[Packet Details (パケット詳細)]ペイン (詳細ウィンドウ)から、このIPアドレスに対応するMACアドレス(Source MAC address)が00:21:5d:9e:42:fbであることがわかります(図1)。

図1はWiresharkのスクリーンショットです。ここではwebトラフィックをフィルタリングした後の接続元IPアドレスの列(Src)と接続元MACアドレスをハイライト表示しています。
図1. Webトラフィックをフィルタリングして被害者のIPアドレス、MACアドレスを特定したところ

このほか、Network Basic Input/Output System (NetBIOS)、Name Service (NBNS)、Server Message Block (SMB)のトラフィックから、被害者のWindowsホスト名がわかることがあります。そこでWiresharkの[Filter (フィルタ)]ツールバーに以下を入力します。

nbns or smb or smb2

Windows 10ないしWindows 11コンピューターではデフォルトのホスト名が15文字の文字列です。このデフォルト名はDESKTOP-で始まり、その後ろに7文字のASCII文字で構成される英数字の文字列が続きます。今回の場合、[Packet List (パケット一覧)]ペインと[Packet Details (パケット詳細)]ペインでWindowsホスト名のDESKTOP-E7FHJS4を確認できます(図2)。

画像2はWiresharkのスクリーンショットで、トラフィック内のWindowsホスト名の特定のしかた(矢印でハイライト表示)を説明しています。
図2. NBNS/SMBトラフィック内でWindowsホスト名を見つけているところ

ユーザー ログイン時に生成されるKerberos認証トラフィックがpcapに含まれていれば、そこからWindowsユーザーアカウント名がわかることがあります。kerberos.CNameStringでフィルタリングして、[Packet List (パケット一覧)]ペインで結果を一番下までスクロールし、[Packet List (パケット一覧)]ペインの最終行あたりのいずれか1行選択します。[Packet Details (パケット詳細)]ペイン内でKerberosの行を展開していきます。図3にしたがってdamon.bauerという値を持つCNameStringが見つかるまで値を展開してください。

画像3は、WiresharkでCNameString列をハイライトしたスクリーンショットで、Kerberosトラフィックの中から被害者のWindowユーザー アカウント名を見つける方法を示しています。
図3. Kerberosトラフィックの中から被害者のWindowsユーザー アカウント名を見つけているところ

Wireshark によるパケット解析講座 3: ホストとユーザーを特定する』で説明したとおり、CNameStringの値を選んで右クリックし、コンテキスト メニューの[Apply as Column (列として適用)]を実行すると、Wiresharkの表示にCNameString列を表示させることができます。CNameStringを列として適用した結果を上の図3に示します。

Pcap解析: マルウェアの特定

被害者の詳細情報を得た後は「悪意のあるトラフィックはいつ始まったのか」を特定します。まず平文のHTTPトラフィックに不審なURLがないかチェックします。「basic」のWebフィルターを編集して「tls.handshake.type eq 1」を削除しましょう。これにより 80/tcpで行われているHTTPリクエストだけを確認できます。編集後のWiresharkフィルターは以下のような内容です。

http.request and !(ssdp)

フィルタリング後にWiresharkに表示されるのは2行だけです。2行目のcacerts.digicert[.]comへのHTTP GET リクエストはオペレーティング システムが生成する典型的なトラフィックかWebブラウズ中に定期的に見られるものです。

1行目のHTTP GETリクエストは(FQDNに対してではなく)IPアドレスに対するものでかなり疑わしいといえます。

この疑わしい128.254.207[.]55に対する86607.datを要求しているHTTP GETリクエストを選択し、右クリックしてコンテキストメニューを[Follow (追跡)]、[TCP Stream (TCPストリーム)]の順にクリックします。TCPストリームのウィンドウには最低限のリクエスト ヘッダーしか表示されません。しかもこのサーバーはWindows実行ファイル(.exe)かDLLファイルを返してきています(図4)。

図4はWiresharkのスクリーンショットで、TCPストリームの追跡手順を示しています。TCPストリームのウィンドウからは、リクエスト ヘッダーのUser-Agentはcurlであることのほか、内容がWindowsの.exeファイルないし.dllファイルであることがわかります。
図4. 非常に疑わしい80/tcp 上のHTTPトラフィック

Wiresharkの[File (ファイル)]メニューから[Export Objects (オブジェクトをエクスポート)]、[HTTP]の順にクリックして、pcapから86607.datをエクスポートします(図5参照)。

画像5はWiresharkのスクリーンショットで、[File (ファイル)]メニューからHTTPオブジェクトをエクスポートする方法を示しています。
図5. Wiresharkのオブジェクトのエクスポート機能を使って128.254.207[.]55が返したファイルをエクスポートしているところ

LinuxかmacOS環境であれば、エクスポートしたファイルのファイルの種別をターミナル ウィンドウと

file

コマンドで簡単に確認できます。

file

コマンドで確認すると

86607.dat

はWindowsのDLLファイルであることがわかります(図6)。SHA256ハッシュを

shasum -a 256

コマンドで確認してください(図6)。

画像6は、Linuxのターミナル ウィンドウで、ファイルの種類とハッシュを確認する方法を示したスクリーンショットです。
図6. Linuxのターミナル ウィンドウでファイルの種類とSHA256ハッシュを特定しているところ

VirusTotalでSHA256ハッシュを検索すると複数のベンダーがこのファイルをマルウェアとして検出していることがわかります。このファイルはMalwareBazaarにも提出され、「Qakbot」であることが確認されています。このファイルをホストしているURLもURLhausでQakbotと確認されています。

このタイプの平文のHTTPリクエストは通常Qakbotの感染による最初の悪意のあるトラフィックです。86607.datを要求するHTTPリクエストは2023年2月3日午後5時4分 UTCに発生しており、これが今回の感染の始まった時刻です。

Pcap解析: 感染後のトラフィック

2020年2月に私たちは『Wiresharkによるパケット解析講座 7: Qakbot感染の調査』というチュートリアルを公開し、そのなかでQakbotの感染トラフィックを検証しました。その後もQakbotは進化しつづけていますが、変わらない点もたくさんあります。Qakbotの感染後アクティビティに関する現在の識別情報は以下の通りです。

  • 証明書のissuer(発行者)フィールドにランダムな値を持つ自己署名証明書を使ってIPアドレスに直接HTTPSトラフィックを送信
  • vipsauna[.]comを詐称する自己署名証明書を使った直接IPアドレスを指定したHTTPSトラフィック
  • 以前ツイートしたQakbotの感染トラフィックと同様、複数の正規ドメインへのHTTPSトラフィックを利用して接続性をチェック
  • 65400/tcp経由のトラフィック

脅威アクターは感染ホストのインターネット接続状況を確認するため、正規のWebサイトに接続することがよくあります。たとえばQakbotは過去数年、この接続性のチェックにwww.openssl[.]orgを使っていますが、このサイトは悪意のあるものではありません。

Qakbotに感染後は以下のようなアクティビティが発生することが多いでしょう。

  • SMTP (Simple Mail Transfer Protocol)用ポート経由のスパムボット トラフィック
  • Cobalt Strikeのアクティビティ
  • 仮想ネットワーク コンピューティング(VNC)のトラフィック

この3種類のアクティビティはさまざまな組み合わせで確認される可能性があります。たとえば2023年1月にQakbotに感染したホストからはCobalt StrikeとVNCのアクティビティが報告されています。

ある特定IPアドレスに直接送信されているHTTPSトラフィックを見つけるには、次のWiresharkフィルターを使います。

tls.handshake.type eq 1 and !(tls.handshake.extension.type eq 0)

このフィルターにより、対応するドメインがないHTTPSのWebトラフィックが確認できます(図7)。

画像7はWiresharkのスクリーンショットです。HTTPSトラフィックをWiresharkのフィルターでフィルタリングする方法を示しています(画像では緑色でハイライトされています)。
図7 直接IPアドレスを指定しているHTTPS Webトラフィックをフィルタリングしたところ

Wiresharkの[Statistics (統計)]メニューから[Endpoints (終端)]をクリックし、IPv4で始まるタブを開いて、[Limit to display filter (表示フィルタに制限)]チェックボックスにチェックを入れて全IPv4アドレスをフィルタリングした結果を確認します(図8)。

画像8はWiresharkのスクリーンショットです。[Statistics (統計)]メニューから[Endpoints (終端)]をクリックし、フィルタリングした結果の統計情報を見る方法を示しています。
図8. フィルタリングした結果。IPv4アドレスの終端 (Endpoints) の統計を確認しているところ

この結果は4つのIPアドレスからなります。1つは感染Windowsホストが持つ内部IPアドレスです。他の3つはコマンド&コントロール(C2)トラフィック用のQakbotサーバーです。これらQakbot C2サーバーのアドレスは3つあります。

  • 102.156.32[.]143
  • 208.187.122[.]74
  • 5.75.205[.]43

pcapからHTTPS証明書データを確認してこれらが実際にQakbotのC2サーバーであることを確認しましょう。それには各IPアドレスに対して次にフィルターを使います(注: 以下のフィルターは、第3オクテットと4オクテットを区切るドットを一部ブラケットで囲っています(例: 192.0.2[.]3)。これは本稿から誤って悪意のあるIPアドレスにアクセスしないための安全処理なので、そのままフィルターに入力すると構文エラーになります。[Filter (フィルタ)]ツールバーには、これらのブラケットを外したIPアドレスを入力してください)。

  • tls.handshake.type eq 11 and ip.addr eq 102.156.32[.]143
  • tls.handshake.type eq 11 and ip.addr eq 208.187.122[.]74
  • tls.handshake.type eq 11 and ip.addr eq 5.75.205[.]43

上記1つめのフィルターを102.156.32[.]143に対して使って、結果のフレームを[Packet List (パケット一覧)]ペインで選択します。以下の図9にしたがって[Packet Details (パケット詳細)]ペインで[Transport Layer Security]の行を選択し、rdnSequenceというセクションの証明書の発行者(issuer)が見つかるまで行を展開していきます。

画像9は、証明書の発行者データのrdnSequenceの部分を赤くハイライトしたWiresharkのスクリーンショットです(矢印でハイライトされています)。
図9. 102.156.32[.]143にホストされたQakbot C2サーバーの証明書発行者データ
102.156.32[.]143

にホストされたサーバーからのHTTPSトラフィックの証明書発行者データは次のとおりです。

  • it-ad-countryName=NL
  • it-ad-stateOrProvinceName=TA
  • it-ad-localityName=Lix Mngham
  • it-ad-organizationName=Ardx Qcej Kudefrqoi Tqkofhsie
  • it-ad-commonName=ujcbhafnfs.mobi

どうやら証明書発行者のフィールドのほとんどにランダムな文字が含まれているようです。2つめのフィルターを実行すると、208.187.122[.]74についても同様の証明書発行者データが見つかるはずです(図10)。

画像10は、証明書の発行者データのrdnSequenceの部分を赤くハイライトしたWiresharkのスクリーンショットです(矢印でハイライトされています)。
図10. 208.187.122[.]74にホストされたQakbot C2サーバーの証明書発行者データ
208.187.122[.]74

のサーバーからのHTTPSトラフィックの証明書発行者データは次のとおりです。

  • it-ad-countryName=PT
  • it-ad-stateOrProvinceName=OC
  • it-ad-localityName=Ariy
  • it-ad-organizationName=Stecisp Ondpsqg Ajfqkosna
  • it-ad-commonName=ptvcdl.mobi

5.75.205[.]43の証明書発行者データは、ほかの2つのQakbot C2サーバーのものとは異なっています(図11)。

  • it-ad-countryName=US
  • it-ad-stateOrProvinceName=CA
  • it-ad-localityName=Los Angeles
  • it-ad-organizationName=vipsauna[.]com
  • it-ad-commonName=vipsauna[.]com

画像11は、証明書の発行者データのrdnSequenceの部分を赤くハイライトしたWiresharkのスクリーンショットです(矢印でハイライトされています)。
図11 5.75.205[.]43にホストされたQakbot C2サーバーの証明書発行者データ

この証明書は、発行者(issuer)フィールドにランダムな文字を含まず、

organizationName

フィールドと

commonName

フィールドには

vipsauna[.]com

と記載されています。ただしトラフィックは実際には

vipsauna[.]com

からのものではなく、これは自己署名証明書のようです。

vipsauna[.]comは2012年から登録されたドメインですが、過去数年間、どのIPアドレスにも解決されていません。この同じ証明書の発行者については、2022年に少なくとも1つ、べつのQakbot C2のIPアドレスも記録されています。

Qakbotアクティビティの指標はもう1つあります。65400/tcp経由のトラフィックです。この確認には以下のWiresharkのフィルターを使います。

tcp.port eq 65400 and tcp.flags eq 0x0002

フィルタリング結果は図12のようになるはずです。

画像12はTCPストリーム追跡オプションを選択した後のQakbotトラフィックを表示したWiresharkのスクリーンショットです。
図12. 65400/tcp経由のQakbotトラフィックをフィルタリングして確認する

このトラフィックはIPアドレスに23.111.114[.]52を使っています。このTCPストリームからは、感染ホストを識別する文字列とそのパブリックIPアドレスがトラフィック冒頭の80バイト内に含まれていることがわかります。この例でいうと、感染ホストの識別文字列はjzbxct683972で、パブリックIPアドレスは71.167.93[.]52です。なおこの情報は今月のチュートリアル用にpcapを編集してネットワーク トラフィックをサニタイズしてあります。識別文字列もパブリックIPアドレスも実際のものではありません。

Pcap解析: フォローアップのスパムボット アクティビティ

これまでに多数の報告がQakbotをさまざまなランサムウェア攻撃グループと関連付けており、最近ではBlack Bastaランサムウェア攻撃グループと関連付けられています。Qakbotに感染したホスト上でランサムウェア攻撃グループはCobalt Strikeなどのツールで足場を固め、内部ネットワークをマッピングし、ラテラルムーブを行います。

今月のpcapに使ったActive Directory環境はランサムウェア攻撃グループにとって価値の高いターゲットにはなりません。ただしこうした環境のQakbot感染であっても、Cobalt StrikeやVNCのアクティビティ、スパムボット トラフィックなどのフォローアップ アクティビティにつながることがあります。

今月のチュートリアルのQakbot感染pcapには、スパムボットと思われるアクティビティやVNCトラフィックが含まれています。

pcapで潜在的なスパムボット アクティビティを確認するには、Wiresharkでsmtpをフィルタリングします。この結果、Wiresharkの[Packet List (パケット一覧)]ペインには平文のSMTPトラフィックが表示されます(図13)。

画像13は、フィルタリングされた平文のSMTPトラフィックを示したWiresharkのスクリーンショットです。
図13. WiresharkでSMTPトラフィックをフィルタリングしたところ

通常のAD環境のWindowsクライアントであれば、短時間で多数の異なる公開メールサーバーとの接続を確立しようとはしません。つまりこれはスパムボットのアクティビティを示すものです。以下のWiresharkフィルターでSMTP接続が何回発生したかを判定してみましょう。

smtp.req.command contains "EHLO"

図14のような結果になるはずです。

画像14はSMTPのアクティビティをさらにフィルタリングした結果を示すWiresharkのスクリーンショットです。
図14 SMTPアクティビティをさらに絞り込んだところ

このフィルターからは、この感染Windowsホストがおよそ10~11分の間に少なくとも5台のメールサーバーに接続していることがわかります。ただしこの結果は平文のSMTPトラフィックか、SMTP接続の確立後に暗号化を行ったトラフィックのみを表示しています。以下のWiresharkフィルターを使うとスパムボット アクティビティのより正確な指標を表示できます。

tls.handshake.type eq 1 and (tcp.port eq 25 or tcp.port eq 465 or tcp.port eq 587

これにより図15のような結果が得られるでしょう。

画像15は、TLSで暗号化されているメール トラフィックのフィルタリング指定を改良したWiresharkのスクリーンショットです。
図15. TLSで暗号化されたメール トラフィックをフィルタリングしたところ

このWiresharkフィルターは、SMTPトラフィックでもっともよく使われる3つのポート(25/tcp、465/tcp、587/tcp)上のTLS接続を検索します。この改良したフィルターからは、およそ19〜20分の間に少なくとも25台のメールサーバーに接続していることがわかります(図15)。これがスパムボット アクティビティの指標であることがさらに明らかになりました。

以下の図16を参考にして、[File (ファイル)]メニューから[Export Objects (オブジェクトをエクスポート)]、[IMF]の順にクリックし、平文のSMTPトラフィックで送信された電子メールがあるかどうかを確認してみましょう。残念ながら今回のサンプルにはエクスポート可能なスパムボットメールはありませんでした。

画像16は、Wiresharkのスクリーンショットです。[File (ファイル)]メニューから[Export Objects (オブジェクトをエクスポート)]、[IMF]の順にクリックし、平文のSMTPトラフィックで送信された電子メールがあるかどうかを確認しても、ウィンドウには何も表示されないようすを示しています。
図16. 平文SMTPトラフィックからのメール エクスポートができない

Pcap解析: フォローアップのVNCアクティビティ

VNCはグラフィカルなデスクトップ共有システムで、リモート フレーム バッファ(RFB)プロトコルを使ってほかのコンピュータを制御します。VNCの実行者はネットワーク越しにキーボードやマウスの入力を対象のコンピュータに送信し、そのコンピュータからグラフィカルな更新を受け取ります。

VNCは正当な目的でも利用されますが、脅威アクターが感染Windowsホストを悪質な目的でコントロールすることもよくあります。今月のpcapからはこうしたVNCトラフィックを確認できます。

ここのところ数ヶ月間は、Qakbot感染によるVNCアクティビティが78.31.67[.]7:443/tcpを使っていました。Wiresharkで次のフィルターを指定してこのトラフィックを見つけてみましょう (注意: ここでもIPアドレスの第3オクテットと第4オクテットの間のドットを囲うブラケット[]は入力不要です)。

ip.addr eq 78.31.67[.]7 and tcp.flags eq 0x0002

このフィルターでは、VNCトラフィックの2つのTCPストリームが始まる位置を確認できます(図17)。

画像17のWiresharkの3枚のスクリーンショットはQakbot感染によるVNCトラフィックへのアクセス方法と2つのストリームを表示しています。
図17 Qakbot感染によるVNCトラフィック

このpcapのVNCトラフィックには2つのTCPストリームがあります。1つめのストリームは、わずかなバリエーションをもつ13バイトのシーケンスを何度も繰り返しています。2つめのストリームは顕著に大きく、RFBのコンテンツを含んでいます。ASCII文字のVNCが2つめのTCPストリームのおよそ40バイト目に表示されています。

これらのトラフィック パターンはQakbot感染によるVNCトラフィックの典型パターンです。

Pcap解析: ARPスキャン

脅威アクターは、ARP(アドレス解決プロトコル)スキャンを行うことで、侵害ネットワーク内にあるほかのアクティブなIPアドレスを見つけようとすることがあります。

ARPスキャンはMACレイヤーで行われます。MACレイヤーでは、1つのMACアドレスから同じネットワーク セグメント内のすべてのIPアドレスに対し、ブロードキャスト用MACアドレスのff:ff:ff:ff:ff:ffを使ってARPリクエストが送信されます。その目的は、あるMACアドレスにほかのIPアドレスが割り当てられているかどうかを判断することです。

1台のWindowsクライアントから同一ネットワーク セグメント内の連続するIPアドレスに対してARPクエリーが出されている場合、それはARPスキャンを意味します。

今月のpcapでは、00:21:4d:9e:42:fbのMACアドレスをもつ感染ホストが、UTC午後7時22分以降、ネットワーク セグメント内のすべてのIPアドレスに対し、10.0.0[.]254から10.0.0[.]2まで降順に、ARPリクエストをブロードキャストしています。このARPスキャンに含まれていないアドレスは以下のような既知IPアドレスのみです。

  • 10.0.0[.]149にある感染したWindowsホスト
  • 10.0.0[.]6にあるドメイン コントローラー
  • 10.0.0[.]1にあるネットワーク セグメントのゲートウェイ
  • 10.0.0[.]255の同セグメントのブロードキャスト アドレス

次のWiresharkフィルターでこれらのトラフィックを見つけましょう。

arp and eth.dst eq ff:ff:ff:ff:ff:ff

結果は図18のようになるはずです。

画像18は、Wiresharkで「arp and eth.dst eq ff:ff:ff:ff:ff:ff」というフィルターを指定した結果を示すWiresharkのスクリーンショットです。ARPスキャンが始まった場所が矢印で示されています。
図18. Qakbot感染ホストからのARPスキャン。ARPスキャンが始まった場所を矢印で示す

ARPスキャン中に感染したWindowsホストがネットワーク セグメント上でほかのアクティブなIPアドレスを見つけた場合、ICMPでPingエコー要求を送信します。標的のアドレスが応答した場合、感染したWindowsホストはさまざまなTCP/UDPポート経由で接続を試みて、そのアドレスをプローブ(探査)します。

今月のpcapでほかに存在するIPアドレスはドメイン コントローラーとネットワーク セグメントのゲートウェイだけです。このAD環境ではほかのクライアントやサーバーはアクティブではありません。

そこで、icmpでフィルタリングして、感染したWindowsホストがドメイン コントローラーとネットワーク セグメントのゲートウェイにPingを送信しているようすを確認してみましょう。ip.addr eq 10.0.0[.]1でフィルタリングすると、感染したWindowsホストがプローブしたTCP/UDPポートが表示されます。

ARPスキャンの後にアクティブなIPアドレスのプローブが続くのはQakbotによる感染に限ったことではありません。Bumblebee、IcedID、Emotetなどのマルウェア ファミリーに感染したホストからも同様のアクティビティが確認されています。

Pcap解析: SMB経由のファイル転送

SMB (Server Message Block)プロトコルを使うとWindowsホスト間でファイルを転送できます。AD環境のWindowsクライアントにアクセスした脅威アクターの最終的な目標はその環境のドメイン コントローラーに対する管理者権限を獲得することです。

AD環境ではWindowsクライアントが通常のシステム オペレーションの一環としてドメイン コントローラーと日常的に通信しています。ただしSMBを経由するファイル転送のような特定の種類のアクティビティは疑わしいことがあります。

SMB経由したファイル転送を見つけるには、[File (ファイル)]メニューから[Export Objects (オブジェクトをエクスポート)]、[SMB]の順にクリックします(図19)。

画像19は、Wiresharkのスクリーンショットで、[File (ファイル)]メニューから[Export Objects (オブジェクトをエクスポート)]、[SMB]の順にクリックする方法を示したものです。
図19 WiresharkでSMBオブジェクトをエクスポート

エクスポートしてみると普通のファイル アクティビティが確認できますが、不審なファイルも確認できます(図20でハイライトした部分)。

画像20は、エクスポートされたSMBオブジェクト一覧を示すWiresharkのスクリーンショットです。不審なファイルをハイライト表示しています。
図20 WiresharkがエクスポートしたSMBオブジェクトの一覧。不審なファイルを赤の矩形で示す

SMBトラフィックに含まれるWindows EXEファイルやDLLファイルは疑わしいですが、このアクティビティが正当な利用例であることもあります。たとえばWindows Server Update Service(WSUS)は、AD環境内のサーバーからMicrosoft Updateを展開します。WSUSはEXEなどのファイルからなるSMBトラフィックのファイル転送を発生させます。

ただしランダムな名前のEXEファイルやDLLファイルは非常に疑わしいです。先のSMBオブジェクトのエクスポート一覧から得られたファイル種別は次のとおりです。

(読み方: ホスト名 - ファイル サイズ - ファイル名)

  • \\10.0.0[.]6\Shared - 1,761 KB - \efweioirfbtk.dll
  • \\10.0.0[.]6\Shared - 105 bytes - \efweioirfbtk.dll.cfg
  • \\10.0.0[.]6\C$ - 1,761 KB - \umtqqzkklrgp.dll
  • \\10.0.0[.]6\C$ - 105 bytes - \umtqqzkklrgp.dll.cfg
  • \\10.0.0[.]6\ADMIN$ - 1,761 KB - \ltoawuimupfxvg.dll
  • \\10.0.0[.]6\ADMIN$ - 105 bytes - \ltoawuimupfxvg.dll.cfg

上記の一覧には、一見ランダムな文字のファイル名が含まれていますが、これらはドメイン コントローラーに関連しています。これらには.dllというファイル拡張子か.dll.cfgというファイル拡張子がついています。

[Wireshark - Export - SMB object list (Wireshark - エクスポート - SMBオブジェクト一覧)]ウィンドウから、これらのファイルを1つずつ選択してpcapからエクスポートします。macOSやLinux環境で、ターミナル ウィンドウを開いて、ファイル種別とSHA256ハッシュを確認します(図21)。

105バイトの.bin.cfgファイルはデータ バイナリーで、1761KBの.dllファイルはすべてWindows DLLファイル(SHA256ハッシュ: 713207d9d9875ec88d2f3a53377bf8c2d620147a4199eb183c13a7e957056432)です。このハッシュは最初の感染でHTTPトラフィック経由で送信された最初のQakbot DLLと同じSHA256ハッシュです。

画像21は、SMBトラフィックからエクスポートしたファイルの種別とハッシュを確認する方法を示しているLinuxのターミナル ウィンドウのスクリーンショットです。
図21. SMBトラフィックからエクスポートしたファイルの種別とSHA256ハッシュを確認しているところ

これらのQakbot DLLファイルは、[Wireshark - Export - SMB object list (Wireshark - エクスポート - SMBオブジェクト一覧)]ウィンドウでドメイン コントローラー名とともに表示されています。今回の感染Windowsホストは、どうやらこれらのファイルをドメイン コントローラーに送信したようです。このことは、このドメイン コントローラーに、悪意のあるファイルの転送を許してしまうなんらかの脆弱性が存在する可能性を示唆しています。

こうしたファイルの転送に使われるSMBトラフィックについて掘り下げてみましょう。smb2でフィルタリングして結果をスクロールしてください。SMBトラフィックを確認しながらWiresharkの[Packet List (パケット一覧)]ペインの[Info]列を確認しましょう。[Packet Details (パケット詳細)]ペインには、[Info]列のアクティビティをさらに説明する追加データが含まれています。

同様のアクティビティを現実のシナリオで確認した場合、アナリストはこのドメイン コントローラーも調査することになります。ただし今回のpcapには感染したWindowsクライアントとの間のトラフィックしか含まれておらず、ドメイン コントローラーからインターネットや、ドメイン コントローラーほかのホストへのトラフィックは含まれていません。

ですので今月のWiresharkクイズに関しては、ここからさらに調査する必要はありません。ただし参加者の皆さんがさらに精査してトラフィック解析スキルを磨けるよう、このpcapはこのまま残しておきます。

結論

本稿は「Unit 42 Wiresharkクイズ 2023年2月」の解答編です。pcapからのトラフィックを確認し、感染に基づいてインシデントレポートの提示を行いました。

自社IT環境では完全なパケットキャプチャが手に入らないことも多いでしょう。このためセキュリティ専門家がネットワークトラフィックのレビュー経験を積めないこともあります。そうした場合は本稿のようなWiresharkクイズのトレーニング教材が役に立つでしょう。Pcapの解析は悪意のあるアクティビティへの理解を深めるのに役立つスキルです。インシデント レポートは、調査者が調査結果を把握しやすい形に整理するのに役立ちますし、インシデント レポート作成経験のあるセキュリティ専門家は類似のアクティビティを見つけるのがうまくなります。また、よく書けたレポートは組織内のほかの人が再発防止に向けて適切な措置を講じるのにも役立ちます。

答えを掲載していない問題編のブログもあわせてご確認ください。

パロアルトネットワークスのお客様は、WildFire高度な脅威防御などのクラウド型セキュリティサービスを有効にした次世代ファイアウォールCortex XDRによりこのタイプのマルウェアからの保護を受けています。

侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、こちらの問い合わせフォームからご連絡いただくか、infojapan@paloaltonetworks.comまで電子メールにてご連絡いただくか、下記の電話番号までお問い合わせください(ご相談は弊社製品のお客様には限定されません)。

  • 北米フリーダイヤル: 866.486.4842 (866.4.UNIT42)
  • 欧州: +31.20.299.3130
  • アジア太平洋: +65.6983.8730
  • 日本: +81.50.1790.0200

IoC

インフラ

  • hxxp://128.254.207[.]55/86607.dat
  • 102.156.32[.]143:443
  • 208.187.122[.]74:443
  • 5.75.205[.]43:443
  • 23.111.114[.]52:65400
  • 78.31.67[.]7:443
  • QakbotのDLLファイルのSHA256ハッシュ
  • 713207d9d9875ec88d2f3a53377bf8c2d620147a4199eb183c13a7e957056432

追加リソース

2023-03-17 09:15 JST 英語版更新日 2023-03-15 08:58 PST の内容を反映

Enlarged Image