This post is also available in: English (英語)
概要
Hancitorは、MAN1、Moskalvzapoe、またはTA511と呼ばれる脅威アクターが使用するマルウェアで、Chanitorという名前でも知られています。このマルウェアは脆弱なWindowsホストへの初期アクセスを確立して追加のマルウェアを送信します。今回のWireshark講座では、最近のHancitor感染で確認したアクティビティをレビューして、Hancitorやそのフォローアップマルウェアのトラフィックを識別するヒントを提供します。本講座は、Hancitorのサンプルのほか、Cobalt Strike、Ficker Stealer、NetSupport Manager RAT、ネットワークpingツール、Send-Safeスパムボットマルウェアについてもカバーしています。
本シリーズは、疑わしいネットワークアクティビティの調査やネットワークトラフィックのパケットキャプチャ(pcap)の確認を業務で行っておられるセキュリティ専門家を読者として想定しています。このため本稿での手順説明は読者の皆さんがWiresharkの使いかたをご存知であることを前提としています。また、本稿にて利用するWiresharkのバージョンは主に3.xとなります。
注意: 本チュートリアルは、以前の『Wireshark によるパケット解析講座1: Wiresharkの表示列をカスタマイズする』で設定したカスタマイズ済みの列表示を使います。
また、本チュートリアルで使うpcapファイルの入ったZIPアーカイブを格納しているGithubリポジトリからサンプルファイルをあらかじめ取得しておいてください。解凍用パスワードは「infected」です。
注意: 本稿のチュートリアルに利用する pcap ファイルはWindowsで動作するマルウェアを含んでいます。したがって、Windowsコンピュータを使っている場合感染リスクがあります。できるかぎり BSD系、Linux系、macOSなど、Windows環境以外の環境でpcapファイルを確認することをお勧めします。
Hancitor感染のイベントチェーン
Hancitorは電子メール経由で配布されます。これらのメールにはそれぞれdocs.google.com経由でGoogleドライブのURLにアクセスするHTTPSリンクが含まれています。これらのGoogleドライブのページは、悪意のあるWord文書を返す別のドメインにリンクしています。Word文書でマクロを有効にすると、DLLがドロップされ、感染が開始されます。
感染ホストはまずHancitorのコマンド&コントロール(C2)トラフィックを生成します。続いてFicker StealerなどのフォローアップマルウェアのURLが登場しはじめます。感染ホストがActive Directory(AD)環境の一部であれば、HancitorはCobalt Strikeも送信します。Cobalt Strikeは、ネットワークpingツールやNetSupport Manager RATベースのマルウェアなどの悪意のあるファイルに新たなアクセスチャネルを提供します。なかにはSend-Safeスパムボットマルウェアが観測されるケースもありました。こうしたケースでは感染Windowsホストはスパムボットに変えられてHancitorベースのマルスパムをさらにプッシュします。
このイベントチェーンを把握しておくこと、Hancitor感染中に生成されるトラフィックを理解しやすくなります。詳細については、最近のHancitor感染に関するブログをご覧ください。
Hancitorによる感染アクティビティのPcap
最近のHancitor感染アクティビティのpcapを含む4つのパスワード付きZIPアーカイブ(パスワードは「infected」)をこちらのGitHubリポジトリから取得してください。Githubページに移動して、ZIPアーカイブのエントリをクリックし、図2と図3に示す手順でダウンロードします。
これら4つのZIPアーカイブファイルからpcapを展開するためのパスワードは「infected」です。展開すると次の5つのpcapファイルが作成されます。
- Example-1-2021-02-17-Hancitor-infection.pcap
- Example-2-2021-02-10-Hancitor-infection-part-1-of-2.pcap
- Example-2-2021-02-10-Hancitor-infection-part-2-of-2.pcap
- Example-3-2021-01-25-Hancitor-infection.pcap
- Example-4-2021-02-02-Hancitor-infection.pcap
サンプル1:Ficker StealerとCobalt Strikeを伴うHancitor感染
Example-1-2021-02-17-Hancitor-infection.pcapを開いたら、『Wireshark によるパケット解析講座 2: 脅威インテリジェンス調査に役立つフィルタリング設定』のチュートリアルで解説した「basic」の web 用フィルタを適用します。Wireshark 3.xでのbasicフィルタは次のとおりです。
1 |
(http.request or tls.handshake.type eq 1) and !(ssdp) |
シリーズ初回の『Wireshark によるパケット解析講座 1: Wiresharkの表示列をカスタマイズする』に従ってWiresharkを設定すると、図4のような表示となります。
このpcapは次の特徴を持つActive Directory環境で採取したものです。
- LANセグメントの範囲: 10.2.17.0/24
- ドメイン: bean-genie.com
- ドメインコントローラ: 10.2.17.2 - Bean-Genie-DC
- LANセグメントのゲートウェイ: 10.2.17.1
- LANセグメントのブロードキャストアドレス: 10.2.17.255
- 感染WindowsホストのIPアドレス: 10.2.17.101
- 感染Windowsホストのホスト名: DESKTOP-GBW8K4N
- 感染Windowsホストのユーザーアカウント名: frankie.muntz
Hancitorをプッシュする電子メールはdocs.google.comへのHTTPSリンクを使用します。最初のpcapでは、列表示にリストされている13番目のフレームがこのドメイン名を使用しています。以下の図5はWiresharkの列表示でdocs.google.comをハイライトしています。
なお、docs.google.comは正当なドメインで、本質的に悪意のあるドメインではありません。ですがHancitorの背後にいる犯罪者はGoogleドライブを頻繁に悪用しています。以下の図6は、Hancitor用にMAN1/Moskalvzapoe/TA511が作成したこれらURLの1つからのWebページを示しています。
上記の図6の「Click here to download the document(ドキュメントをダウンロードするには、ここをクリックしてください)」のリンクから、悪意のあるWordドキュメントを提示するページが表示されます。これらのページのURLは.phpで終わっています。多くの場合、これらのURLもHTTPSを使用します。幸い、本稿では4つのサンプルすべてで、Word文書のURLとして、暗号化されていないHTTPが使用されています。おかげで今回のpcapで見つけやすくなっています。
「basic」Webフィルタを適用したら、下にスクロールしていって、.phpで終わる同じドメイン宛の2つのHTTP GETリクエストを見つけてください。以下の図7は、Wiresharkの列表示でこれら2つのHTTP GETリクエストを見たところです。これらは両方次の内容です。
1 |
somdeeppalace[.]com - GET /slickness.php |
次のWiresharkフィルタを使うとこれら2つのURLがさらにすばやく見つかります。
1 |
http.request.method eq GET and http.request.uri contains .php |
以下の図8は、このフィルタの結果を示しています。
列表示でslickness.php宛のHTTP GETリクエストどちらか1つを選んで右クリックし、コンテキストメニューから [Follow(追跡)]、[HTTP Stream(HTTPストリーム)] の順にクリックしてHTTPストリームを追跡します(図9参照)。
このHTTPストリームを最後までスクロールダウンしてください。このbase64テキストから作成される0217_2857682888090.doc という名前のファイルを提示し、保存させるスクリプトが見つかるはずです。これが悪意のあるWord文書となります。また、閉じ</body>タグの後ろに追加されているスクリプトは、Webページをリフレッシュして別のURLにリダイレクトします。詳細は図11を参照してください。
この悪意のあるWord文書のコピーは、pcapからWebページをエクスポートし、Webブラウザで開くと取得できます。これはマルウェアですので、できればコントロールされたラボ環境などのWindows環境以外でやることをお勧めします。
これには、図12に示す手順でメニューを開いてWebページをエクスポートしてください。
[File(ファイル)]、[Export Objects(オブジェクトをエクスポート)]、[HTTP] の順にクリックします。
somdeeppalace[.]comからのslickness.phpの2つ目のエントリを確認します。これは534kBの大きさがあります(図13参照)。見つけたら、.htmまたは.htmlという拡張子をもつファイル名でWebページとして保存してください。
保存したHTMLページをWebブラウザで開いてください。悪意のあるWord文書を保存するオプションを含むポップアップメニューが表示されるはずです。また、Webブラウザが文字列cashplusで終わるURLに更新されていることも確認できます。詳細については、以下の図14を参照してください。
この悪意のあるWord文書により、その後2分以下でpcapにHancitorのC2トラフィックが現れはじめました。
HancitorのC2トラフィックはどのようなものか
Hancitorはまず、感染Windowsホストからapi.ipify.orgへのIPアドレスチェックを行います。その後、C2トラフィックが発生します。HancitorのC2トラフィックは末尾が/8/forum.phpで終わるHTTP POST URLで構成されています。
1点注意していただきたいのが、api.ipify.orgは指標ではあるものの、これ自体は本質的に悪意のあるものではないということです。
「basic」Webフィルタを適用して下にスクロールしていき、api.ipify.orgへのIPアドレスのチェックの後、HancitorのC2に対する最初のHTTP POSTリクエストがthavelede[.]ruに対して出されているところまで下りていってください。以下の図15は、これら2つの行を示しています。
2020年11月以降、HancitorのC2トラフィックのURLは常に/8/forum.phpの形で終わっています。ですので、WiresharkでHancitor固有のトラフィックをチェックする最も簡単な方法は、次のフィルタを使用することです。
1 |
http.request.uri contains "/8/forum.php" or http.host contains api.ipify.org |
上記のWiresharkフィルタを実行すると、次の図16が示すように、HancitorのIPアドレスチェックとそれに続くHancitor C2トラフィックのHTTP POSTリクエストが表示されるはずです。
- api.ipify.org - GET /
- thavelde[.]ru - POST /8/forum.php
- zinsubtal[.]ru - POST /8/forum.php
この結果には、Ficker Stealerマルウェアが生成した次のHTTP GETリクエストも含まれます。
- api.ipify.org - GET /?format=xml
Ficker Stealerのトラフィックについては後で説明しますので、まずはHancitorがフォローアップマルウェアを送信する方法を調べてみましょう。
Hancitorは特定のドメインを使って、フォローアップマルウェアとしてFicker StealerやCobalt Strikeを送信します。このドメインはHancitorがアクティブになときは毎日変更されますが、フォローアップマルウェアのための同一ドメインへのHTTP GETリクエストが3つ表示されるはずです。これらのURLのうちの1つは.exeで終わるものでこれがFicker Stealer用です。2つのURLは.binで終わるものでCobalt Strike用です。
次のWiresharkフィルタを使用して、Ficker StealerとCobalt StrikeのURLを検索します。
1 |
http.request.uri contains .exe or http.request.uri contains .bin |
結果を図17に示します。
上記の図17に示すように、Hancitorからのフォローアップマルウェアをフィルタリングすると、最初のpcapから次のトラフィックが明らかになるでしょう。
- belcineloweek[.]ru - GET /6sufiuerfdvc.exe
- belcineloweek[.]ru - GET /1602s.bin
- belcineloweek[.]ru - GET /1602s.bin
最初のHTTP GETリクエストは、Ficker StealerのEXEファイルを返しています。次の2つのHTTP GETリクエストは、被害者をCobalt Strikeに感染させるために使用するエンコード済みデータを返しています。
Ficker Stealerの感染トラフィックはどのようなものか
Ficker Stealerの場合、1回につき数週間は同じWindows実行可能ファイルが使われます。2021-01-20から直近の2021-03-04までのFicker StealerのSHA256ハッシュ値は次のようになっています。
94e60de577c84625da69f785ffe7e24c889bfa6923dc7b017c21e8a313e4e8e1
Ficker Stealerの上記Windows実行可能ファイルはapi.ipifiy.org/?format=xmlに対するIPアドレスのチェックを引き起こしますが、これ自体は本質的に悪意のあるものではありません。次にFicker Stealerはsweyblidian[.]com に対するDNSクエリを生成して80/tcp経由でHTTPではないトラフィックをそのドメインに送信します。このトラフィックは感染Windowsホストから窃取されたデータで構成されています。
sweyblidian[.]comに使用されたIPアドレスを見つけるにはまず次のWiresharkフィルタを使用して関連するDNSクエリを検索します。
1 |
dns.qry.name contains sweyblidian |
このクエリに対するAnswerはIPv4アドレス185.100.65[.]29です(図18参照)。
1 |
ip.addr eq 185.100.65.29 and tcp.flags eq 0x0002 |
この結果、以下の図19に示すように、2つのTCPストリームのための3つのTCP SYNセグメントが表示されるはずです(TCP SYNセグメントの1つはTCP Retransmission)。
データを漏出するとFicker Stealerは鳴りを潜めてそれ以降は動きが見えなくなります。感染コンピュータがスタンドアロンのWindowsホストの場合、この時点で、HancitorのC2トラフィックのみを目にするようになります。ただし感染コンピュータがAD環境の一部である場合、Cobalt Strikeも観測することになるはずです。
次のWiresharkフィルタを使用し、HancitorによるCobalt Strikeの最初のリクエストを見てみましょう。
1 |
http.request.uri contains .bin |
これにより、次の行が返されます。
- belcineloweek[.]ru - GET /1602s.bin
- belcineloweek[.]ru - GET /1602s.bin
これらHTTP GETリクエストのいずれかについて、先ほどと同じ手順でTCPストリームを追跡してください。このTCPストリームには、belcineloweek[.]ruとの間のHTTP GETリクエストとレスポンスが3つすべて含まれています。したがって、Ficker Stealerの実行ファイルを表す大量のデータを一番下あたりまでスクロールダウンする必要があります。TCPストリームの終わり近くに、1602s.binへの同一のHTTP GETリクエストが2つ見つかるはずです。どちらのリクエストも同じ682バイトのデータを返しています(図21参照)。このデータが被害者をCobalt Strikeに感染させるために使用されます。
Cobalt Strikeのトラフィックはどのようなものか
Cobalt StrikeのトラフィックはHTTPの場合もあればHTTPSの場合もあります。このpcapでは、HancitorによるCobalt StrikeのHTTP GETリクエストのURLには文字「s」が使われています。1602s.binへのリクエストは、この感染のCobalt StrikeがHTTPSトラフィックを使用することを示しています。
ここでは実際、そのとおりになっていますので見てみましょう。Wiresharkに戻り「basic」Webフィルタを再度適用してから下へスクロールしていきます。すると、192.99.250[.]2に対する宛先ポート443/tcpのフレームが複数表示されるはずです(図22参照、フレーム番号4348)。これがCobalt Strikeのトラフィックです。このIPアドレスに対するCobalt Strikeトラフィックにはドメインが関連付けられていないので、列表示のホスト名は空白になります。
Cobalt StrikeのHTTPSトラフィックに含まれる証明書発行者のデータ形式には問題があります。なぜなら国、地域、組織などすべての識別用フィールドが空だからです。Cobalt StrikeのHTTPSトラフィックの証明書データをフィルタリングし、フレームの詳細を展開するとこれを確認できます。
まず、次のWiresharkフィルタを使ってCobalt StrikeトラフィックのIPアドレスからの証明書データを検索します。
1 |
tls.handshake.type eq 11 and ip.addr eq 192.99.250.2 |
これにより、列表示に2つのフレームが表示されます。証明書発行者データのフィールドが見つかるまで、これらのフレームのいずれかでフレームの詳細を展開していきます。これらのフィールドは空白になっているはずです。以下図23にその例を示します。
このpcapの残りの部分からは、HancitorのC2のHTTP GETリクエストとCobalt StrikeのHTTPSトラフィックが確認できます。HancitorのC2トラフィックは約2分ごとに発生します。Cobalt StrikeのHTTPSトラフィックは、ほぼ毎秒発生します。
サンプル2 パート1: Ficker StealerとCobalt Strikeを伴うHancitor感染
Example-2-2021-02-10-Hancitor-infection-part-1-of-2.pcapをWiresharkで開いて、「basic」Webフィルタを適用します(図24参照)。
このpcapは次の特徴を持つActive Directory環境で採取したものです。
- LANセグメントの範囲: 10.2.17.0/24
- ドメイン: pizzawithapples.food
- ドメインコントローラ: 10.2.10.10 - Apples-DC
- LANセグメントのゲートウェイ: 10.2.17.1
- LANセグメントのブロードキャストアドレス: 10.2.10.255
- 感染WindowsホストのIPアドレス: 10.2.10.101
- 感染Windowsホストのホスト名: DESKTOP-TRH50EJ
- 感染Windowsホストのユーザーアカウント名: dave.thomas
上の図24は、docs.google.comへのリンクとそれに続くb2b.ebike-your-life[.]com/commemorative.phpへのHTTP GETリクエストを表示しています。最初のサンプルで行ったように、この2つ目のサンプルからb2b.ebike-your-life[.]comのHTMLページをエクスポートできます。 エクスポートしたら、Webブラウザで開いて、悪意のあるWord文書を取得します。
Word文書のSHA256ハッシュ値は793d134cdb4bcba47e1f678d052c4d7747b93ea4199714efb8b614321b58dca7で、ファイル名は0210_1723194332604.docになっているはずです。
最初のサンプルで行ったように次のWiresharkフィルタでHancitorのC2アクティビティを見つけてください。
1 |
http.request.uri contains "/8/forum.php" or http.host contains api.ipify.org |
これによりHancitorとFickerStealerによるIPアドレスのチェックとHancitorのC2トラフィックがまとめて返ります(以下のリストと図25参照)。
- api.ipify.org - GET /
- anumessensan[.]ru - POST /8/forum.php
- api.ipify.org - GET /?format=xml
次のWiresharkフィルタでHancitorが送信したフォローアップマルウェアをフィルタリングします。
1 |
http.request.uri contains .exe or http.request.uri contains .bin |
これにより、HancitorがCobalt StrikeとFicker Stealer用のフォローアップマルウェアを送信している様子が明らかになります(以下のリストと図26参照)。
- backupez[.]com - GET /0902.bin
- backupez[.]com - GET /0902s.bin
- backupez[.]com - GET /6yudfgh.exe
今回はCobalt StrikeのGETリクエストの1つはURLに「s」を含み、もう1つは「s」を含んでいないので、Cobalt Strikeによって発生したHTTPトラフィックとHTTPSトラフィックの両方が表示されています。
「basic」フィルタを再度適用して下にスクロールしていき、backupez[.]comへのトラフィック後に発生するHTTPリクエストのタイプを確認します。この結果、1080/tcpを介したHTTPトラフィックと、4443/tcpを介したHTTPSトラフィックが表示されるはずです。
Wiresharkの設定によっては、1080/tcpを介したHTTPトラフィックが表示されないことがありますので、その場合は設定を変更して表示させてやる必要があります。そのためには、Wiresharkのメニューで[Analyze(分析)]、[Decode As (としてデコード)]の順にクリックします(図27参照)。[Decode as]ウィンドウが表示されます。
ここでは[Save]ボタンをクリックする必要があります。
エントリを保存後、Wiresharkの列表示に戻り、「basic」のWebフィルタを使用します。下にスクロールすると、下の図29で強調表示したように、Cobalt StrikeのHTTPトラフィックとHTTPSトラフィックの両方が表示されます。
Cobalt Strikeによって発生するトラフィックは次の通りです(上記図29参照)。
- 104.160.190[.]114:8080 - GET /WWFh
- 104.160.190[.]114:8080 - GET /fwlink
- 104.160.190[.]114 port 4443 - HTTPS traffic
WWFhで終わる最初のHTTP GETリクエストは、エンコードされた208,473バイトのバイナリを返しています。これがおそらくはCobalt Strike用のWindowsバイナリにデコードされるものでしょう。このHTTPリクエストのTCPストリームを追跡すると以下の図30に示す情報が表示されます。
次に見ていくpcapは、この2つ目のサンプルで見られた感染の後半部分にあたります。このなかではSend-Safeスパムボットマルウェアの指標が確認できます。
サンプル2 パート2: HancitorのC2、Cobalt StrikeのC2、Send-Safe スパムボットマルウェア
Example-2-2021-02-10-Hancitor-infection-part-2-of-2.pcapをWiresharkで開いて、「basic」Webフィルタを適用します(図32参照)。
このpcapは、ひとつ前で見たpcapの感染の後半に発生したトラフィックです。ときおり、同一秒のなかで、Cobalt StrikeC2トラフィック用のHTTP GETリクエストを最大3つか4つ確認できます。
ただしこのpcapは、Hancitorが別のWindows実行可能ファイルを送信したことと、その実行可能ファイルがSend-Safeベースのスパムボットマルウェアであることを示しています。
このWindows実行可能ファイルを見つけるには、次のWiresharkフィルタを使用します。
1 |
http.request.uri contains .exe |
この結果、backupez[.]comへの別のHTTP GETリクエストが表示されます。これは、このサンプルのパート1でフォローアップマルウェアをプッシュするためにHancitorが使用しているドメインです。このURLは47.exeで終わります。以下の図33の結果を参照してください。
このファイルはpcapからエクスポートできます。エクスポートするには、[File (ファイル)]メニュー、[Export Objects (オブジェクトのエクスポート)]、[HTTP]の順にクリックします。backupez[.]comからの47.exeの項目を選んでください(図34参照)。
47.exeのSHA256ハッシュ値は次の通りです。
51ca66a8ac7f4e072b39ef886d7d414d6c6868d0d67a46150835297e65493dc6
Send-Safeは商用プログラムとしてsend-safe[.]comというWebサイトで販売されていました(現在はすでに利用できません)。その宣伝文句は「...a bulk-emailing program that allows you to send email from your own computer, or a remote computer with or without the use of proxies.(ローカルコンピュータないしリモートコンピュータからプロキシの有無を問わず一括でメールを送信できるプログラム)」というものでした。
このプログラムは、感染したWindowsコンピュータをスパムボットホストに変えるマルウェアとして、さまざまな脅威アクターに利用されています。
Send-Safeスパムボットのトラフィックはどのようなものか
検証では、感染Windowsホストは以下のトラフィックを生成しました。
- 31.44.184[.]47への50025/tcp経由のHTTPSトラフィック
- 31.44.184[.]47への50025/udp経由のトラフィック
- Hancitorをプッシュするマルスパムを送信するSMTPトラフィック
Send-SafeのUDPトラフィックを見つけるには、Wiresharkフィルタに udp.port eq 50026 を使います。結果は次の図35のようになります。
Send-SafeのSMTPトラフィックとHTTPSトラフィックを表示するには、次のWiresharkフィルタを使用します。
1 |
(tcp.port eq 50025 and tls.handshake.type eq 1) or smtp.data.fragment |
結果は図36のようになります。
Send-Safeによって引き起こされたTCPポート50025経由のHTTPSトラフィックは、証明書発行者データのorganizationNameとcommonNameにSend-Safeを使用しています(図37参照)。
このpcapのSMTPトラフィックは暗号化されていないので、Wiresharkでメールを抽出することができます。そのためには、Wiresharkのメニューで[File (ファイル)]、[Export Objects (オブジェクトをエクスポート)]、[IMF] の順にクリックします(図38参照)。
このpcapにはエクスポート可能なメールが167通含まれています。このSend-Safeに感染したWindowsホストからは、平均で毎秒2-3通のメッセージがプッシュされていました。
以下図39は、エクスポートしたHancitorスパムのうちの1通をメールクライアントのThunderbirdで見たときの様子です。この特定Hancitorスパム攻撃波のテンプレートは、ある有名銀行を偽装していました。
サンプル3: Ficker Stealer、Cobalt Strike、ネットワークpingツールを伴うHancitor感染
Example-3-2021-01-25-Hancitor-infection.pcapをWiresharkで開いて、「basic」Webフィルタを適用します(図40参照)。
このpcapは次の特徴を持つActive Directory環境で採取したものです。
- LANセグメントの範囲: 10.1.25.0/24
- ドメイン: permafrostie.com
- ドメインコントローラ: 10.1.25.2 - Permafrostie-DC
- LANセグメントのゲートウェイ: 10.1.25.1
- LANセグメントのブロードキャストアドレス: 10.1.25.255
- 感染WindowsホストのIPアドレス: 10.1.25.101
- 感染Windowsホストのホスト名: DESKTOP-GAL3OV5
- 感染Windowsホストのユーザーアカウント名: barry.paulsen
最初のWord文書を配信したページはwww.nuicala.inspia[.]net/mars.phpです。前の2つのサンプルで行ったように、Webページをエクスポートしてブラウザで開くと、このHancitor感染を開始するために使用された悪意のあるWord文書を取得できます。
エクスポートした悪意のあるWordドキュメントのSHA256ハッシュ値とファイル名は次のとおりです。
8922dbb1e7f157c62fe64d03278757d78d136eb94d00ac2df101789d602f1224 0125_206410993.doc
最初の2つのサンプルの手法に基づいて、このHancitor感染から次の情報を見つけることができます。
Hancitorのトラフィック:
- port 80 - api.ipify.org - GET /
- 83.220.169[.]45 port 80 - wasintodese[.]ru - POST /8/forum.php
Cobalt Strikeのフォローアップマルウェア:
- 8.209.78[.]68 port 80 - drivewaysnowservice[.]com - GET /2101.bin
- 8.209.78[.]68 port 80 - drivewaysnowservice[.]com - GET /2101s.bin
Ficker Stealerのフォローアップマルウェア:
- 8.209.78[.]68 port 80 - drivewaysnowservice[.]com - GET /6gfbd5ws.exe
Cobalt Strikeのトラフィック:
- 23.106.80[.]14 port 1080 - 23.106.80[.]14:1080 - GET /JdHf
- 23.106.80[.]14 port 1080 - 23.106.80[.]14:1080 - GET /match
- 23.106.80[.]14 port 1080 - 23.106.80[.]14:1080 - POST /submit.php?id=2612103345
- 23.106.80[.]14 port 4443 - HTTPS traffic
Ficker Stealerのトラフィック:
- port 80 - api.ipify.org - GET /?format=xml
- 185.100.65[.]29 port 80 - sweyblidian[.]com - TCP traffic
1点言及しておくと、今回の講座のサンプルのFicker Stealerはすべて同一バイナリなので、このマルウェアによる感染後のトラフィックは同じ内容のはずです。Cobalt Strikeの場合、/submit.php?id=を含むHTTP POSTリクエストは、感染Windowsホストごとに一意の識別番号を振られています。
/submit.php?id=を含むHTTP POSTリクエストが Cobalt Strikeから出ていたら追加のマルウェアの指標に注意してください。
Cobalt Strikeを介して送信されるマルウェアは、エンコードされたバイナリとして表示され、これが被害端末上でデコードされます。ですのでpcap内には実際のマルウェアのバイナリは見つかりません。そのかわり、Cobalt Strikeを介して送信されたフォローアップマルウェアは、感染後トラフィックで識別されます。
今回の場合、感染後トラフィックとしてICMPスキャンが確認できますが、これはCobalt Strikeを介してネットワークpingツールが送信された指標となります。pcapにWiresharkフィルタのicmpを適用してください。列表示は下の図41のようになるはずです。
Hancitorに関する最近のブログでも説明しましたが、感染Windowsホストから復元したこのネットワークpingツールのサンプルは、内部のルーティング不能なIPv4アドレス空間を宛先として1,700万個を超えるIPアドレスにpingを実行することから、約1.5GBのICMPトラフィックを生成します。
私たちの検証ではこれらのネットワークpingツールは次のアドレス空間を対象としていました。
- 192.168.0.0 から 192.168.254.254
- 172.16.0.0 から 172.31.254.254
- 10.0.0.0 から 10.254.254.254
これだけpingトラフィックがあるとWiresharkでの表示は非常に遅くなります。Hancitorの3番目のサンプルのpcapには、192.168.0.0/16へのpingトラフィックが含まれています。また、キャプチャを停止する前の172.16.0.0/12アドレス空間へのpingトラフィックの一部も含んでいます。
サンプル4: Ficker Stealer、Cobalt Strike、NetSupport Manager RATを伴うHancitor感染
Example-4-2021-02-02-Hancitor-infection.pcapをWiresharkで開いて、「basic」Webフィルタを適用します(図42参照)。
このpcapは次の特徴を持つActive Directory環境で採取したものです。
- LANセグメントの範囲: 10.2.2.0/24
- ドメイン: sillybobcat.com
- ドメインコントローラ: 10.2.2.2 - Cats-DC
- LANセグメントのゲートウェイ: 10.2.2.1
- LANセグメントのブロードキャストアドレス: 10.2.2.255
- 感染WindowsホストのIPアドレス: 10.2.2.101
- 感染Windowsホストのホスト名: DESKTOP-NDGEE4D
- 感染Windowsホストのユーザーアカウント名: baxter.murdoch
最初のWord文書を配信したページはpremierpt.co[.]uk/footage.phpです。前のサンプルで行ったように、Webページをエクスポートしてブラウザで開くと、このHancitor感染を開始するために使用された悪意のあるWord文書を取得できます。
エクスポートした悪意のあるWordドキュメントのSHA256ハッシュ値とファイル名は次のとおりです。
b60431e0fe5bf2b5c7cd5e01add62d24cd6ad2c99eb6a23fb5a2967d812cbf08 0202_10846666250132.doc
先のサンプルの手法に基づいて、このHancitor感染から次の情報を見つけることができます。
Hancitorのトラフィック:
- port 80 - api.ipify.org - GET /
- 45.9.191[.]107 port 80 - knorshand[.]ru - POST /8/forum.php
Cobalt Strikeのフォローアップマルウェア:
- 8.209.78[.]68 port 80 - bobcatofredding[.]com - GET /0102.bin
- 8.209.78[.]68 port 80 - bobcatofredding[.]com - GET /0102s.bin
Ficker Stealerのフォローアップマルウェア:
- 8.209.78[.]68 port 80 - bobcatofredding[.]com - GET /6lavfdk.exe
Cobalt Strikeのトラフィック:
- 192.254.79[.]71 port 8080 - 23.106.80[.]14:1080 - GET /EbHm
- 192.254.79[.]71 port 8080 - 23.106.80[.]14:1080 - GET /ptj
- 192.254.79[.]71 port 8080 - 23.106.80[.]14:1080 - POST /submit.php?id=242569267
- 192.254.79[.]71 port 443 - HTTPS traffic
Ficker Stealerのトラフィック:
- port 80 - api.ipify.org - GET /?format=xml
- 185.100.65[.]29 port 80 - sweyblidian[.]com - TCP traffic
先のサンプルでも説明しましたが、/submit.php?id=を含むHTTP POSTリクエストが Cobalt Strikeから出ていたら追加のマルウェアの指標に注意してください。今回も先程と同じでpcapにはマルウェアのバイナリが見つからないので、フォローアップマルウェアは感染後のトラフィックから特定する必要があります。
ここではNetSupport Manager RATマルウェアの指標が見つかります。
このRATは、最初にドメイン geo.netsupportsoftware[.]com へのIPアドレスのチェックを行います。次にHTTPリクエストヘッダUser-Agent文字列の一部としてNetSupportManagerのトラフィックを生成します。
次のWireshark表示フィルタを使ってこのトラフィックを検索します。
1 |
http.user_agent contains "NetSupport Manager" or http.host contains netsupport |
この結果は以下の図43のようになるはずです。
上記の図43に示されているトラフィックは次のとおりです。
- 62.172.138[.]35 port 80 - geo.netsupportsoftware[.]com - GET /location/loca.asp
- 46.17.106[.]230 port 3543 - 46.17.106[.]230 - POST hxxp://46.17.106[.]230/fakeurl.htm
HTTP POSTリクエストのTCPストリームを追跡してNetSupport ManagerのC2トラフィックがどのように見えるかを確認します。この結果は以下の図44のようになるはずです。
1点注意していただきたいのは、本講座ではHancitor感染後のCobalt Strikeからのフォローアップトラフィックのサンプルは2つしか扱いませんでしたが、Cobalt StrikeではネットワークpingツールやNetSupport Manager RATなど以外にもさまざまな種類のマルウェアを送信できます。
したがってCobalt StrikeによるHancitor感染のアクティビティを調べるのであれば、他の種類のマルウェア指標も合わせて検索することをお勧めします。
結論
今回は感染トラフィックを含むpcapからHancitorのアクティビティとそのフォローアップマルウェアを特定する方法について確認しました。また、最近の4つのサンプルから5つのpcapを確認し、ネットワークトラフィックから一貫したパターンを見つけました。これらのパターンは同マルウェアについてかなり特徴的なものなので、これらを使えばネットワーク内のHancitorのアクティビティや関連マルウェアを識別することができます。
疑わしいネットワークアクティビティをセキュリティ専門家が確認するさいにこうした知識があれば、Hancitorをよりうまく検出・捕捉できるようになります。
『Wiresharkによるパケット解析講座』シリーズの以前の講座は以下から確認してください。
- Wireshark によるパケット解析講座 1: Wiresharkの表示列をカスタマイズする
- Wireshark によるパケット解析講座 2: 脅威インテリジェンス調査に役立つフィルタリング設定
- Wireshark によるパケット解析講座 3: ホストとユーザーを特定する
- Wireshark によるパケット解析講座 4: Pcapからのオブジェクトのエクスポート
- Wireshark によるパケット解析講座 5: Trickbot感染の調査
- Wireshark によるパケット解析講座 6: Ursnif感染の調査
- Wireshark によるパケット解析講座 7: Qakbot感染の調査
- Wireshark によるパケット解析講座 8: HTTPSトラフィックの復号
- Wireshark によるパケット解析講座 9: Dridex感染トラフィックの調査
- Wireshark によるパケット解析講座10: Emotet感染トラフィックの調査
- Wireshark によるパケット解析講座11: RDPトラフィックの復号