【元記事をASCII.jpで読む】

影響を受けるプラットフォーム :Microsoft Windows
影響を受けるユーザー     :Microsoft Windows
影響             :盗難された情報は、将来の攻撃に利用される可能性があります
深刻度            :高

 FortiGuard Labsは2025年1月、台湾の企業を標的とした攻撃を発見しました。この脅威アクターは、台湾の国税局を装ったEメールを使用して、winos 4.0と呼ばれるマルウェアを拡散しています。フォーティネットは、継続的な監視を通じて、キャンペーンに関係する別のマルウェアサンプルを特定しました。新しいサンプルの中には、2025年3月に送信されたフィッシングメールも含まれており、その添付ファイルには別の攻撃キャンペーンでも利用されているリンクが含まれていました。

 ひとつめのリンクはtwszz[.]xinドメインに属し、台湾のユーザーを標的とするキャンペーンと似た命名パターンを使用しています。2つめのリンクをクリックすると、税務調査に関する画像に誘導され、HTMLファイル名に、口座明細の詳細が含まれていると記載されています。

 このリンクを通して攻撃を追跡し、別のマルウェアサンプルやリンクを特定しました。図2は、簡略化した脅威マップを示しています。図2の左側にある一連のファイルは、2024年6月に実施されたキャンペーンで使用されたXLSファイルです。

 この脅威グループは過去数ヵ月にわたり、リモートアクセス型トロイの木馬のHoldingHands RAT(別名Gh0stBins)を利用したマルウェアを展開し、台湾のユーザーのセキュリティを侵害しました。このマルウェアは通常、ZIPファイル内に埋め込まれた複数のファイルで構成され、フィッシングメールを通じて配布されます。

フィッシングサイト

 フィッシングメールは通常、政府やビジネスパートナーからのメッセージを装い、件名に、税金や年金、請求書などのトピックを使用して、添付ファイルをすぐにクリックして開くよう受信者に促します。場合によっては、Eメールの内容がハイパーリンク付きの画像になっており、受信者は、クリックするよう要求され、誤ってマルウェアをダウンロードすることになります。

 添付されているPDFファイルは、フィッシングメールに関連する内容を使用することで、受信者を騙してリンクを開かせようとします。新しい攻撃チェーンでは、リンクをクリックすると、ダウンロードページに移動します

 マルウェアのダウンロードページの見た目は、PDFファイルやEメールよりさらにシンプルです。テキストとダウンロードボタンのみ存在します。一部の攻撃チェーンでは、マルウェアは、パスワード保護されたZIPファイルの中に埋め込まれており、ダウンロードページにそのパスワードが記載されています。そのため、ZIPファイルを取得しているがダウンロードページにアクセスしない解析者は、ZIPファイルを開くことができません。

ZIPファイル

 攻撃中に使用されるファイルは、正規の実行ファイル、必要なDLLファイル、暗号化されたシェルコード、シェルコードローダーなど複数あります。シェルコードローダーは、暗号化されたシェルコードを復号化し実行するDLLファイルのことで、正規の実行ファイルによるサイドローディングを通じてロードされます。

 図8は、ZIPファイル内に埋め込まれているファイルと実行フローの例を示しています。「條例檔案」は正規の実行ファイルで、サイドローディングを通じてdokan2.dllをロードするために使用されます。暗号化されたシェルコードは、主な実行フローに加えて永続性も支えており、空のファイル群には一意のファイル名が指定されています。このZIPファイルはさまざまなPDFファイルやWebページからダウンロードされ、フォルダの構造やファイルが異なる場合がありますが、その実行フローは図8に示すものと類似しています。一部のZIPファイルでは実行ファイルのみ含まれており、他の攻撃チェーンで確認されている同じファイルをドロップする場合もあります。実行ファイルのイメージデバッグディレクトリを確認すると、このマルウェアはHoldingHands RAT(リモートアクセス型トロイの木馬)がベースになっています。

 過去2ヵ月にわたり、ZIPファイルに含まれているのは、ZIPファイル内の他のファイルのパスワードが記載されたテキストファイルであるため、検知が困難になっています。

Dokan2.dll

 Dokan2.dllは、dxpi.txt内のデータを復号化し実行するためのスレッドを作成します。最初に、サイドローディングを行うために、ShowWindow関数を呼び出して、実行ファイルのウィンドウを非表示にします。次に、ZIPファイルから抽出したファイル群のファイル名の長さを比較して、kernel32.dllDwhsOqnbdrr.dllを検索します。

 DwhsOqnbdrr.dllは空ファイルです。ファイル名「DwhsOqnbdrr」の各文字のアルフベットを1文字ずつ進めてExitProcessにすることで、得られたExitProcess関数をkernel32.dllからロードします。dxpi.txtを復号化するスレッドからのシグナルを待つために、インポートテーブルのExitProcess関数のアドレスを、WaitForSingleObject関数を呼び出す関数のアドレスに置き換えます。

 スレッドが完了すると、先程ロードされたExitProcess関数を呼び出します。スレッドでは、取得している権限が不十分な場合、「條例檔案」ファイルは管理者として実行されます。次に、collalautriv.xmlを検索し、ファイル名を変換して、復号化で使用されるAPIであるVirtualAllocを取得します。

dxpi.txt

 dxpi.txtは、次の段階のための初期セットアップとして、仮想マシン対策、権限の昇格、およびインストールなどを実行します。

仮想マシン対策 
 多くのサンドボックや仮想マシンは、システムの負荷を軽減するために少ない容量のメモリが割り当てられているため、この機能は、物理的にインストールされているRAMの容量をチェックします。物理的にインストールされているRAMの容量が8 GB未満の場合、終了します。

権限の昇格
 最初に、WinLogonのアクセス制限を迂回するために、SeDebugPrivilege権限を有効化します。次に、ImpersonateLoggedOnUser関数を使用して、WinLogonのユーザー(SYSTEM)に偽装します。最後に、TrustedInstallerサービスのスレッドに偽装して、最高権限を取得します。

インストール
 感染マーカーとして、次のレジストリキーを作成します。
 

 さらに、ZIPファイルから抽出した他のファイルを、C:\Program Files (x86)\WindowsPowerShell\Updateにドロップします。

  また、BrokerClientCallback.dllBlend.dllが存在する場合、コンピュータは感染していることを意味するため、終了します。Blend.dllは、msvchost.datによって後から名前が変更された正規のmsimg32.dllです。インストール後、TaskServer.exeを実行し、サイドローディングを通じてdokan2.dllをロードします。次に、dokan2.dllは、次の段階のためにmsgDb.datのシェルコードを実行します。

その他のファイル

fig64.dllconfig64.dllTimeBrokerClient.dll
 
元のTimeBrokerClient.dllは、TaskSchedulerに関係する正規のDLLで、svchost.exeによってロードされます。呼び出しプロセスがsvchost.exeでない場合、終了します。コマンドラインのチェック後、msvchost.datのシェルコードを復号化し実行します。

code.dllcode.binmsvchost.dat
 これは、偽のTimeBrokerClient.dllによって実行されます。コマンドラインが、C:\windows\system32\svchost.exe -k netsvcs -p -s Scheduleで、avp.exe(Kaspersky)が実行していない場合のみ続行します。チェック後、dxpi.txtと同じメソッドを利用して権限を昇格し、次に、C:\Program Files (x86)\WindowsPowerShell\UpdateのファイルをC:\Windows\System32にコピーします。
 

simg32.dllsimg64.dllmsimg32.dll
 元のmsimg32.dllは、LINEやWeChatなどの多くのアプリケーションMicrosoft Graphical Deviceによって使用される正規のDLLです。この偽のmsimg32.dllは、呼び出しプロセスがLINE.exeまたはWeChat.exeでない場合、終了します。TaskServer.exeが実行中の場合もスリープします。チェック後、system.dat(悪意あるペイロード)のシェルコードを復号化して実行します。

fig32.dll→config32.bin→SysWOW64\version.dll(使用されている場合)
 元のversion.dllは、多くのアプリケーションで使用されるバージョン情報に関する正規のDLLファイルです。この攻撃チェーンでは偽のversion.dllは使用されず、コードは不完全な状態です。私たちは、このコードを、他の攻撃チェーンでドロップされたversion.dllと比較した結果、これは、msimg32.dllと同様の悪意あるペイロード用のシェルコードローダーであると推測しています。

msgDb.dat

 MsgDb.datは、コマンド&コントロールタスクである、レジストリキーの設定、データ収集、HoldingHands RATからのモジュールのダウンロードを実行します。また、ハートビートパケットを送信し、接続がアクティブであることを確認します。

 このパケットのデータ構造を以下に示します(ヘッダーを除く)。msgDb.datおよびC2サーバーからのパケットは、この構造を使用します。

マジック:0xDEADBEEF
データサイズ:コマンドおよびペイロードのサイズ

 最初の送信パケットにはペイロードは含まれていません。KNELコマンドは、パケットがカーネルモジュールから来たものであることを示します。C2サーバーは応答として、データ収集リクエストを送信します。msgDb.datはユーザー情報を送信した後、ハートビートパケットを送信し、次の指示を待ちます。

ハートビート
 コマンド:0x12、0x13、0x14

 msgDb.datは、3分ごとにハートビートパケットを送信し、C2サーバーは、コマンド0x12を付けて応答します。また、msgDb.datは、コンピュータが30秒間アイドル状態の場合、コマンド0x13を付けたパケットを送信し、ユーザーが活動を再開したら、0x14を付けたパケットを送信します。

Data Collectionデータ収集
 コマンド:0x00, 0x01
 ペイロード:ユーザー情報をC2サーバーに提供します。具体的には、IPアドレスコンピュータ名、OS、アーキテクチャ、内部時間、CPU周波数、プロセッサ数、物理メモリ、他のコマンドによって設定されたレジストリ値、およびping間の間隔などが含まれます。

 応答コマンドは0x00です。インストールデータを取得するために、SOFTWARE\HHClientレジストリキーのInstallDate値を読み取ります。C2サーバーがこの情報を初めてクエリする場合、値に現在の時刻を書き込みます。他のコマンドによって設定されたレジストリ値は、SOFTWARE\HHClientレジストリキーのCommentGroupに格納されます。Commentの値が設定されていない場合、パケットには、デフォルトを書き込みます。

Commentの編集
 コマンド:0x04, 0x5
 ペイロードCommentの値

 サーバーからのデータを、SOFTWARE\HHClientレジストリキーのComment値に書き込みます。結果は、0x05を付けてC2サーバーに送信されます。

・Groupの編集
 コマンド:0x06
 ペイロードGroupの値 

 サーバーからのデータを、SOFTWARE\HHClientレジストリキーのGroup値に書き込みます。結果は、0x07を付けてC2サーバーに送信されます。

モジュール情報
 コマンド
:0x0A, 0x0B
 ペイロードモジュールサイズとモジュール

 実行されるモジュールの名前とサイズです。これは、現在のモジュールが、サーバーで指定されているモジュールではない場合に送信されます。msgDb.datは、サーバーの情報とコマンド0x0Bを使用して、C2サーバーからモジュールデータをリクエストします。

モジュールの追加
 コマンド
:0x0B, 0x0C
 ペイロードモジュールサイズ、このパケットのデータサイズ、モジュールデータ

 すべてのデータがダウンロードされると、msgDb.datモジュールを実行します。そうでない場合は、0x0Bを送信し、追加データを要求します。

 解析中、2つのリモートデスクトップモジュールとファイルマネージャーを含む、C2サーバーが配布する3つのモジュールを特定しました。msgDb.datは、エクスポート関数であるModuleEntryのみを呼び出し、攻撃の次の段階に進みます。初期パケットのコマンドを以下に示します:

 パケットの構造は、msgDb.datと同じです。

 モジュールのイメージデバッグディレクトリを確認すると、これらのモジュールがHoldingHands RATに属していることがわかります。一部のモジュールのイメージデバッグディレクトリには、「jingjianban(精簡版)」(中国語で「軽量バージョン」の意味)という単語が記載されており、簡易バージョンだと思われます。

モジュールの実行
 コマンド
:0x09, 0x11
 ペイロードモジュール名と関数名

 このコマンドは、msgDb.datに対して、ペイロードで指定されているモジュールを実行するよう要求します。モジュールが見つからない場合、msgDb.datは、モジュール情報を要求するために、コマンド0x09およびモジュール名を送信します。

終了
 コマンド
:0x15

 終了します。

他の攻撃チェーン

 この脅威グループは、2025年2月に我々が取り上げたwinos、およびこの記事で説明したHoldingHandsに加えて、頻繁にGh0stCringeを利用しています。図5~図7は、この攻撃チェーンのファイルのスクリーンショットです

結論

 上記の解析を通じて、2025年1月から始まる台湾を標的とする攻撃に関係する他のマルウェアサンプルが明らかになりました。攻撃チェーンは、数多くのシェルコードのスニペットとローダーで構成されており、攻撃フローが複雑になっています。一方で、これらのサンプルの目的は、悪意あるペイロードを実行して、C2サーバーにアクセスし他の指示を受け取ることです。この脅威グループは、winos、HoldingHands、およびGh0stCring全体にわたって、継続的にマルウェアおよび配布方法を進化させています。
 
 FortiGuardは今後も、これらの攻撃キャンペーンを監視し、必要に応じて適切な保護を提供する予定です。

フォーティネットのソリューション

 このレポートで説明されているマルウェアは、FortiGuardアンチウイルスで次の名称で検知されブロックされます:

 PDF/Agent.A6DC!tr.dldr
 W64/ShellcodeRunner.ARG!tr
 W64/Agent.FIN!tr
 W64/HHAgent.BEE8!tr

 FortiGate、FortiMail、FortiClient、およびFortiEDRは、FortiGuardアンチウイルスサービスをサポートしています。FortiGuardアンチウイルスエンジンは、これらの各ソリューションに含まれています。結果として、これらの製品の最新のアップデートをインストールしているお客様は保護されます。

 FortiGuard CDR(コンテンツ無害化と再構築)サービスは、FortiGateとFortiMailのどちらでも動作し、ドキュメント内の悪意あるマクロを無害化できます。

 また、各組織は、フォーティネットが無償で提供するNSEトレーニングモジュールFCF Fortinet Certified Fundamentals」を受講することをお勧めします。このモジュールは、エンドユーザーが各種のフィッシング攻撃を識別して自らを保護する方法を学習できるよう設計されています。

 FortiGuard IP ReputationおよびAnti-Botnet Security Serviceは、フォーティネット分散ネットワークから得られた悪意ある送信元のIPデータを一元的に収集することで、これらの攻撃をプロアクティブにブロックします。この分散ネットワークは、脅威センサー、CERT、MITRE、協力関係にある競合他社、その他のグローバルソースなどが連携して、悪意ある送信元に関する最新の脅威インテリジェンスを提供します。

 お客様の組織が、この脅威やその他のサイバーセキュリティ脅威の影響を受けていると思われる場合、当社のFortiGuardグローバルインシデントレスポンスチームまでお問い合わせください。

IOC(Indicators of Compromise:侵害指標)

IP
154[.]91[.]85[.]204
154[.]86[.]22[.]47
156[.]251[.]17[.]17
206[.]238[.]179[.]173
206[.]238[.]220[.]60
206[.]238[.]199[.]22
154[.]91[.]85[.]201
206[.]238[.]221[.]182
206[.]238[.]196[.]32
154[.]91[.]64[.]45
206[.]238[.]115[.]207
156[.]251[.]17[.]12
107[.]149[.]253[.]183

ドメイン
00-1321729461[.]cos[.]ap-guangzhou[.]myqcloud[.]com
6-1321729461[.]cos[.]ap-guangzhou[.]myqcloud[.]com
twzfte-1340224852[.]cos[.]ap-guangzhou[.]myqcloud[.]com
cq1tw[.]top
twcz[.]pro
twczb[.]com
twnc[.]ink
twnic[.]icu
twnic[.]ink
twnic[.]ltd
twnic[.]xin
twsa[.]top
twsw[.]cc
twsw[.]club
twsw[.]info
twsw[.]ink
twsw[.]ltd
twsw[.]pro
twsww[.]vip
twsww[.]xin
twswz[.]top
twswzz[.]xin
twtgtw[.]net
twzfw[.]vip

フィッシングメール
6558dfb070421c674b377a0a6090593fa0c44d5b0dec5325a648583f92175ce2
d3a270d782e62574983b28bd35076b569a0b65236e7f841a63b0558f2e3a231c
a8430ce490d5c5fab1521f3297e2d277ee7e7c49e7357c208878f7fd5f763931
7d3f352ded285118e916336da6e6182778a54dc88d4fb7353136f028ac9b81e0
143f434e3a2cac478fb672b77d6c04cdf25287d234a52ee157f4f1a2b06f8022
c25e80cd10e7741b5f3e0b246822e0af5237026d5227842f6cf4907daa039848
7263550339c2a35f356bb874fb3a619b76f2d602064beada75049e7c2927a6dc

PDF
a8b6c06daeede6199e69f4cafd79299219def5bf913a31829dede98a8ad2aaa9
6fcd6aef0678d3c6d5f8c2cb660356b25f68c73e7ee24fbb721216a547d17ffa
ed72721837c991621639b4e86ffe0c2693ef1a545741b5513d204a1e3e008d8c
65edd9e1a38fd3da79c8a556eb2c7c595125ffec9f7483e2e6e189a08cc5d412
0a0375648bc9368bccfd3d657d26976d5b1f975381d1858d001404d807334058
e809582faccdd27337aa46b4a11dd11f5d0c7d7428ebdc8c895ea80777e4da5f
59d2433264d8ec9e9797918be3aa7132dbeb71e141f6e5c64c0d6f1cb4452934

ZIP
ac957ba4796f06c4bf0c0afb8674bbeb30eb95cef85bc68ced3ee1aa30e3acff
9296adb71bc98140a59b19f68476d45dbb38cc60b9e263d07d14e7178f195989
636c2ccffce7d4591b0d5708469070b839f221400b38189c734004641929ae05
31ffa4e3638c9e094275051629cc3ac0a8c7d6ae8415bbfcacc4c605c7f0df39
da3deea591b59b1a0f7e11db2f729a263439a05f3e8b0de97bbac99154297cea

実行ファイル
e2269b38655a4d75078362856c16594e195cd647c56b8c55883b8e1286baa658
52632d9e24f42c4651cf8db3abc37845e693818d64ab0b11c235eddf8e011b2f
7200155f3e30dbbd4c4c26ce2c7bd4878ab992b619d80b43c0bd9e17390082fc
e516b102a2a6001eafb055e42feb9000691e2353c7e87e34ddaa99d7d8af16fd
a9ddd4e4d54336ce110fdc769ff7c4940f8d89b45ee8dc24f56fc3ea00c18873
a12d17cca038cdbf79b72356e5d20b17722c7b20bd2ee308601bac901890f3f4
b1ac2178c90c8eafd8121d21acbae7a0eb0cbc156d4a5f692f44b28856a23481
a6c1629b4450f713b02d24f088c4f26b0416c6a7924dcf0477425f3a67a2e3ff
3ce81c163ddedb132116cdf92aae197ced0b94f3fc3d1036f5c41b084a256a03
a19fdfc131e8fbe063289c83a3cdefb9fb9fb6f1f92c83b892d3519a381623db
db15f45f69f863510986fb2198a8a6b3d55d8ccc8a2ed4bb30bc27bdd1bf151c
bf1a7938f61a9905e1b151c7a5f925a2ce3870b7c3e80f6e0fc07715bdc258b7
f42c6949c6d8ecf648bacca08cde568f11ec2663221a97dae5fbf01218e8775a
 

FortiGuard Labs、台湾の企業を標的とした攻撃を確認