AI関連文書を装ってマルウェア「AsyncRAT」を配信する攻撃キャンペーンを確認

文●フォーティネットジャパン 編集●ASCII

提供: フォーティネットジャパン

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「脅威アクターがAIへの関心の高まりを攻撃に転用し、AsyncRATを配信」を再編集したものです。

米国時間2026年6月11日に掲載されたフォーティネットブログの抄訳です。
影響を受けるプラットフォーム:Microsoft Windows
影響を受けるユーザー    :あらゆる組織
影響            :攻撃者による感染システムの制御
深刻度           :高

AIの導入が拡大し続ける中、脅威アクターはAIへの関心の高まりをいち早く攻撃に利用しています。FortiGuard Labsは新たに、「AI-Ready PostgreSQL 18: Building Intelligent Data Systems」(AI時代に対応したPostgreSQL 18によるインテリジェントデータシステム構築)や「A Guide for Thinking Marketers in the Age of AI」(AI時代に成果を生み出すマーケターのためのガイド)といったタイトルの、AI関連文書を装った悪意のあるファイルを配信するキャンペーンを観測しました。

これらのおとり文書は、AIに関する学習資料を積極的に探しているユーザーを標的として設計されています。これらのファイルの背後にある攻撃チェーンは非常に複雑で、複数段階のスクリプトを用いて活動を隠蔽し、最終的にAutoHotkeyベースのローダーを展開します。このローダーは、.NETのリモートアクセス型トロイの木馬およびAsyncRATをメモリ上にリフレクティブインジェクションし、コマンド&コントロール通信および後続の攻撃を可能にします。特に注目すべき点として、複数の中間段階のスクリプトでは簡体字中国語の変数名が多用されているほか、コードが整理され体系的に記述されています。これらの特徴から、脅威アクターがAIによる支援のもとでマルウェアを開発した可能性があります。本ブログでは、この感染チェーンの各段階について詳しく解説します。

図1:攻撃チェーン

LNKファイルを含む初期ZIPアーカイブ

このマルウェアは、「Agentic Coding with Claude Code, The everyday developer’s guide to agentic coding with Claude Code.7z」(Claude Codeによるエージェント型コーディング ― 開発者のための実践ガイド)というタイトルの技術資料を装った圧縮アーカイブ(7z形式)に含まれて配信されていました。一見すると、このアーカイブは無害に思われます。表示される内容はショートカットファイルのみですが、実際には、3th.pdf4th.pdfという2つのファイルも含まれています。これらのファイルには隠し属性が設定されているため、通常の設定ではユーザーには表示されません。このアーカイブは、意図的に無害なファイルであるかのように見せかけています。また、単純な実行ファイルを配信する仕組みではなく、各段階が次の段階を呼び出すことを主な目的とした、慎重に構築された多段階の侵入チェーンとなっています。

図2:アーカイブファイルのLNKファイルと隠しファイル

被害者がLNKファイルを開くと、ショートカットはcmd.exemoretypefindstrといったWindows標準のコマンドを利用して構築され、難読化されたコマンドシーケンスを実行します。このLNKファイルは3th.pdfを文書としてではなく、データコンテナとして扱います。ファイルを1行ずつ読み取り、限定された範囲の行(26004、26005、26006、および26007)のみを抽出し、その内容だけを実行します。攻撃者はペイロードを単一の明確なスクリプトや実行ファイルとして配置しているわけではなく、1つのファイルを複数のゾーンを持つストレージコンテナとして利用しており、各段階は、特定のオフセット位置から次の段階を取得する処理のみを行うよう設計されています。

図3:LNKファイル内のコマンド

埋め込まれたPowerShellスクリプト

3th.pdfから最初に抽出されるブロックも、最終的なペイロードではありません。これは短いステージング用スクリプトであり、再び3th.pdfからデータを読み取りますが、今度はファイルの深い位置までスキップしたうえで、限定された範囲の行を抽出し、その結果を直接PowerShellに渡します。PowerShellのステージは、すべてのコンソールウィンドウを非表示にする「-windowstyle hidden」、ユーザープロファイルスクリプトによる干渉を防ぐ「NoProfile (-nop)」、-システムのスクリプト実行制限を回避する「-ExecutionPolicy Bypass (-ep Bypass)」のオプションを指定して実行されます。

図4:3th.pdf内の抽出対象のバッチスクリプト

このPowerShellスクリプトには暗号化ロジックが含まれています。スクリプトは3th.pdf内から、m1およびm2マーカー(-----BEGIN PGP PRIVATE KEY BLOCK----- と -----END PGP PRIVATE KEY BLOCK------)で囲まれたデータを検索し、ヘッダーのような行を除外した後、残りの内容を連結してBase64形式からデコードします。このスクリプトは、固定のパスワード「1」を使用し、PBKDF2によって暗号鍵を導出し、AES-CBC方式によりペイロードを復号します。復号された平文データはPowerShellスクリプトとして解釈され、%APPDATA%にCache_{GUID}.ps1という名前で保存された後、直ちに実行されます。

図5:3th.pdfからのデータ抽出

図6:3th.pdfの暗号化データ

図7:Cache_{GUID}.ps1としてドロップされた暗号化データ

ドロップされたPowerShellスクリプト

復号されたスクリプトが実行されると、3th.pdfはさらに多くの役割を果たします。このファイルには、単一の隠しステージだけでなく、複数の異なる埋め込みデータ領域が含まれています。スクリプトはまず、%LOCALAPPDATA%\Packages\Microsoft.WindowsSoundDiagnosticsの下に作業用ディレクトリを作成します。このパスは、正規のWindowsオーディオ機能や診断コンポーネントに関連するフォルダであるかのように見せかける目的で選ばれています。続いて、3th.pdf内から === SoundEffects X === マーカーを検索します。その後、マーカー間に含まれる16進数データを連結し、16進数以外の文字を除去したうえでバイト列へ変換します。最後に、その出力データをSubtitlesという名前のファイルとして書き出します。

図8:3th.pdfからのデータ抽出と「Subtitles」ファイルへの保存

スクリプトは次に、3th.pdfに対してさらに2つの抽出ルーチンを実行します。具体的には、NameおよびKasKosというフィールドを検索し、Base64でエンコードされたペイロードを抽出します。これらのデータは、Realtek2025というハードコードされた文字列を鍵として使用する独自のXORベースのルーチンによって復号されます。その結果は、同じステージングディレクトリに、それぞれRealtekAudioService64.ps1およびRealtekAudioService64.batとして書き込まれます。

図9:3th.pdfからのPowerShellスクリプトとバッチスクリプトの抽出

ペイロードの抽出後、スクリプトは永続化のために、CheckRealtekAudioVersionという名前のスケジュールタスクを登録します。このタスクはRealtekのオーディオサービスを装っており、cmd.exe経由でドロップされたRealtekAudioService64.batを実行するよう設定されています。また、このタスクには権限を考慮した設定を取り入れているほか、感染直後およびその後のユーザーログオン時にバッチファイルが確実に実行されるよう、2つのトリガーが設定されています。最後に、この攻撃チェーンでは4th.pdfを抽出します。これは無害なおとり文書であり、被害者に表示されることで正当なファイルが開かれたかのように見せかけます。その一方で、悪意のあるコンポーネントはバックグラウンドで秘密裏に実行され続けます。

コード記述のスタイルやインラインの注釈は、このコードが生成AIツールの支援を受けて作成された可能性を示しています。例えば、英語主体のスクリプト内に、簡体字中国語のコメント「# 静默任务创建脚本 - 无输出版本」が含まれているほか、絵文字付きのコメント「# 🔥 REMOVE EVERYTHING NOT HEX」が見られます。こうした特徴は、脅威アクターの母国語がAI生成コードの出力に意図せず現れ、展開する前に十分な修正や削除が行われなかったことを示唆しています。これは、攻撃全体のロジックは人間のオペレーターが設計し、コード実装を効率化するためにAIツールを活用するワークフローと整合しています。

図10:永続化の設定

図11:おとりPDF

ドロップされるスクリプト「RealtekAudioService64」

RealtekAudioService64.batは、PowerShellステージのためのステルスランチャーとして機能します。このファイルは、最初に隠し引数を使用して起動されたかどうかを確認します。隠し引数を使用して起動されていない場合、スクリプトはまず元のインスタンスを終了する前に、-WindowStyle Hiddenオプションを付けてPowerShell経由で自身を再実行して、すべてのコンソールウィンドウの表示を抑制します。非表示状態で実行されると、powershell.exeという文字列は直接参照されるのではなく、3つに分割された変数を連結して再構築されます。これは、文字列ベースの静的な検知を回避するための単純でありながらも効果的な手法です。続いて、スクリプトはステージングディレクトリ内に、ver0x0000000000000003_というバージョン番号を含む名前のタイムスタンプ付きログファイルを作成します。このファイルは正規の診断用のログファイルに見せかけることを目的としています。その後、RealtekAudioService64.ps1を-NoProfile、-WindowStyle Hidden、-ExecutionPolicy Bypassオプションを付けて実行し、ユーザーに気付かれずに制限なく実行できるようにします。最後に、このログファイルは削除され、実行の痕跡が消去されるため、フォレンジック調査で利用できる証拠を最小限に抑えます。

図12:バッチファイルからのPowerShellスクリプトの実行

RealtekAudioService64.ps1は、感染チェーンの中でもより高度なステージになっており、実行の過程全体を通じて複数層の難読化を用いています。特に注目すべき点として、Test-Path、Join-Path、New-Item、Out-NullなどのPowerShellの組み込みコマンドレットは、すべて実行時に文字配列から再構築され、$测试路径、$连接路径、$新建项目、$输出空值といった簡体字中国語の変数名に格納されています。

このように中国語の識別子を意図的に使用することには、2つの目的があります。1つは、この難読化パターンに不慣れなアナリストに対して、スクリプトの可読性を大幅に低下させること、もう1つは、英語のコマンドレット文字列認識を手掛かりとするシグネチャベースの検知ルールを回避することです。さらに、ディレクトリパスやバイナリファイル名もBase64でエンコードされた文字列として隠蔽されており、実行時にデコードされます。これにより、機密性の高いIoCがスクリプト内に平文で表示されないようにしています。

図13:PowerShellスクリプトでの変数定義

スクリプトは、先にドロップされたSubtitlesファイルをGZipで圧縮されたストリームとして開き、独自のレコード構造を用いて解凍します。各エントリには、相対パス、ファイルかディレクトリかを示すタイプフィールド、さらにファイルエントリの場合は、データ長の後に未加工データが含まれます。RealtekAudioService64.ps1は、各ファイルをディスクに書き込む前に、各バイトから3を減算する(256を法とする)変換を実施します。これは軽量な復号レイヤーとして機能します。復元されたディレクトリツリーは%LOCALAPPDATA%\Packages\Microsoft.WindowsSoundDiagnosticsに書き込まれ、後続の実行ステージで使用されるAutoHotkeyベースのローダー、AHKスクリプト、バッチファイルなどの実際のコンポーネントが配置されます。

図14:「Subtitles」の復号と抽出

展開後、スクリプトは2つのスケジュールタスクを登録します。1つはConfigureSoundSettingsサブディレクトリ内のRealtekAudioEnhancements64.exeを対象とするタスクであり、もう1つはCacheディレクトリ内のRtkNGUI64.exeを対象とするタスクです。これらのタスクは、それぞれRealtekAudioEnhancements64およびCheckRealtekAudioVersionという名前で登録されます。両タスクには複数のトリガーが設定されており、ユーザーログオン時やシステム起動時のトリガーや、権限が許可されている場合には毎日正午に実行されるトリガーも設定されています。これにより、再起動後やユーザーセッションをまたいでも、堅牢で冗長な永続化を確立しています。

図15:「Subtitles」からデコードされた未加工データ

図16:永続化の設定

AutoHotkeyローダー

現段階における最も重要な発見の1つは、復元された実行ファイルのうち2つは独自に作成されたマルウェアバイナリではないことです。ファイル名こそRealtek関連のオーディオコンポーネントに似せていますが、これらのハッシュ値はAutoHotkey.exeと一致しています。これは、攻撃者がAutoHotkeyを実行エンジンとして悪用していることを示しています。表示される実行ファイル自体は無害であり、悪意のあるロジックは.ahkスクリプト内に格納されています。これは非常に効果的な設計です。この手法により、多数のコンパイルされたカスタム実行ファイルを配信する必要が減り、より多くのロジックを、容易に改変でき、PEファイルの特性だけに基づく分類を困難にするスクリプト層へ移行できます。

図17:「Subtitles」から抽出されたデータ

ここから攻撃チェーンは、2つの主要な分岐に分かれます。重要な分岐はRtkNGUI64.ahkによって実行されます。このスクリプトは追加の4つのモジュールをインポートした後、その真の目的であるルーチンを呼び出します。そのうちの1つのヘルパー関数は、C:\Windows\Microsoft.NET\Framework\v4.0.30319\にある正規の.NET Framework実行ファイルを選択します。AddInProcess32.exeAppLaunch.exeaspnet_compiler.exeなどのバイナリの中からランダムに1つが選ばれます。別のヘルパー関数はRtkLoggingManifest.manファイルを1行ずつ読み込み、System metric code = <数値>の文字列から整数値を抽出し、それらをバイト配列へ変換します。つまり、このマニフェストファイルと呼ばれるファイルは、実際には数値テキストとしてエンコードされたPEペイロードを隠蔽しています。短時間の待機した後、スクリプトはこれらのバイトと選択したホストプロセスのパスを、RtkDiagService.ahkに実装されたExecute() 関数へ渡します。

図18:パスの定義および4つの追加モジュールのロードを行うRtkNGUI64.ahk

図19:ファイルの読み込みを行うRtkDeviceConfigure64.ahk

図20:対象となる実行ファイルを選択するRtkCplApp.ahk

このExecute()関数は、完全なプロセスホローイングのワークフローを実装しています。このスクリプトは、正規の.NETプロセスを一時停止した状態で生成し、再構築されたペイロードのPE構造を解析します。次に、対象スレッドコンテキストを取得し、必要に応じて元のイメージをアンマップしたうえで、リモートプロセス内にメモリを割り当てて、新しいメモリ領域にペイロードのヘッダーおよび各セクションを書き込みます。続いて実行コンテキストを修復し、最後に一時停止したスレッドを再開します。

バックエンドでのAPI呼び出しは、CreateProcessGetThreadContextWriteProcessMemoryVirtualAllocExZwUnmapViewOfSectionSetThreadContextResumeThreadを含む、典型的なインジェクションシーケンスに従っています。この分岐では、ペイロードをディスク上から直接起動するのではなく、テキスト形式のデータから隠されたPEファイルを再構築し、それを正規の.NET Frameworkプロセスに挿入しています。

この実装で特異なのは、スクリプト全体を通じて、中国神話や中国思想に由来する識別子が広範に使用されている点です。マルウェアはWindows APIを直接参照する代わりに、「九天玄女」(CreateProcess)、「乾坤袋」(VirtualAllocEx)、「起死回生」(ResumeThread)といった象徴的な別名にマッピングしています。さらに、「三界六道」や「五行八卦」といった概念に基づくグループ化された命名体系を導入することで、抽象化がさらに深められています。

これらの識別子には実質的な機能上の目的はほとんどなく、実際の実行フローを難読化し、手動解析を困難にすることが主な目的と考えられます。この命名スタイルはマルウェア開発では極めて特異であり、コモディティ型のローダーで一般的に見られる短い英語の変数名とは大きく異なっています。また、スクリプト全体に見られる反復的な構造パターンや強力にテンプレート化されたコーディングスタイルと併せて考えると、攻撃者はこの実装で、文化的テーマを用いた命名によって意味的な曖昧化を意図的に行い、可読性の低下や単純なパターン検知やアナリストによるトリアージの回避を図っていた可能性が高いことを示しています。

図21:インジェクションを実行するRtkDiagService.ahk

RtkLoggingManifest.manから生成されたこのコンテンツは .NET実行ファイルです。これは難読化されているものの、RAT機能を備えたclay_Clientであることが確認できます。このRAT機能については後のセクションで詳しく説明します。

図22:デコードされたデータを含むRtkLoggingManifest.man

図23:RtkLoggingManifest.manからデコードされた実行ファイル

もう一方の分岐は、RealtekAudioEnhancements64.ahkを中心としたチェーンです。初期段階は比較的単純に見えるものの、解析を進めると、この分岐も同様に重要な役割を担っていることが明らかになります。このスクリプトは主にラッパーとして機能し、RealtekAudioEnhancements64.batを秘密裡に起動します。このバッチファイルは、次に、先に説明したアーキテクチャ上の同じ処理を繰り返しています。つまり、次のPowerShellペイロードを直接含むのではなく、RealtekAudioEnhancements64.assetsという別の偽装コンテナを読み込み、一定数の行をスキップした後、狭い範囲のセグメントを抽出し、そのセグメントをPowerShellへ渡して実行します。.assetsファイルもまた別のステージコンテナとして機能しており、本来は無関係またはおとりとして用意された大量のコンテンツの中に、悪意のあるスクリプトが埋め込まれています。

図24:「RealtekAudioEnhancements64.bat」を実行するRealtekAudioEnhancements64.ahk

図25:.assetsファイル内のスクリプトを実行するRealtekAudioEnhancements64.bat

.assetsファイルから復元されたPowerShellスクリプトは、これまでとは異なる処理を実行します。このPowerShellスクリプトは後続のペイロードを起動する前に、ホストの防御機能を弱体化させ、後続の不正な処理を実行しやすい環境へと整えようとします。具体的には、runasによって権限を昇格したPowerShellプロセスを使用し、Add-MpPreferenceを呼び出します。これにより、C:\をMicrosoft Defenderの除外パスに追加するとともに、powershell.exeを除外するプロセスに登録します。これは、明らかに防御機能を回避するためのステップです。続いて、このスクリプトはRealtekAudioEnhancements64.ps1RealtekAudioEnhancements32.ps1の2つの追加のPowerShellファイルを起動します。

図26:RealtekAudioEnhancements64.assets

32ビット版のスクリプトは、従来の意味でのペイロードではなく、実行環境を攻撃のために準備するためのツールとして機能します。具体的には、レジストリでWindows Script Hostが無効化されていないかをチェックし、必要に応じて再度有効化します。また、.vbsファイルを再度wscript.exeに関連付けます。必要なレジストリの変更に権限昇格が必要な場合は、昇格した権限で自身を再実行します。この動作は珍しいものですが、戦術的には重要な意味を持ちます。このマルウェアは単にシステムでVBSを実行できることを期待しているわけではありません。ホスト側でVBS実行を防ぐための堅牢化が施されていた場合でも、VBSを実行できる環境を積極的に復元しようとします。

図27:RealtekAudioEnhancements32.ps1

64ビットの補完的なスクリプトは、修復されたスクリプト実行環境を利用して、追加の永続化レイヤーを確立します。このスクリプトは、スケジュールタスクのXML定義ファイルと ResetRealtekAudioSettings64.vbsという名前のVBSファイルを書き込み、次にResetRealtekAudioSettings64という名前のスケジュールタスクを作成します。このタスクはPowerShellスクリプトを直接呼び出すわけではありません。代わりに、wscript.exeを起動してVBSをバックグラウンドモードで実行します。このVBSはさらに以下のコンテンツの別のバッチファイルを起動します。

On Error Resume Next
Set shell = CreateObject("WScript.Shell")
localAppData = shell.ExpandEnvironmentStrings("%LOCALAPPDATA%")
docPath = localAppData & "\Packages\Microsoft.WindowsSoundDiagnostics\Cache"
shell.Run """" & docPath & "\ResetRealtekAudioSettings64defualt.bat""", 0, False

これは、脅威アクターが単一のランチャーに依存しないよう、永続化の仕組みを多層化していることを示しています。現在までに、このマルウェアはすでに一度タスクスケジューラーを使用していますが、さらに既存の仕組みの上に、VBSを介したタスクチェーンを追加しています。

図28:作成されたXMLファイル

次のバッチファイルも、再び特定の行範囲を抽出します。今回は、ResetRealtekAudioSettings64.Realtekというファイルをコンテナとして利用します。約1,000行をスキップした後、特定ブロックを抽出し、PowerShellに渡します。つまり、.Realtekファイルも、これまでの3th.pdfや.assetsと同様に、ペイロードを隠蔽した別の偽装アーカイブです。このファイルから抽出されたPowerShellブロックには、2つの重要な埋め込みオブジェクトが含まれています。1つ目のオブジェクトは、MZで始まる16進数エンコードの長いPEファイルです。これには有効なPEヘッダーと、mscoree.dll_CorDllMainといった.NET固有のインポートが含まれており、32ビットの.NET実行ファイルまたはDLLであることが確認できます。2つ目のオブジェクトは、Assembly.Loadを使用してメモリへリフレクティブにロードされる別の.NETアセンブリです。このスクリプトは、次にリフレクションを利用して、そのローダーアセンブリ内の公開静的メソッドを特定し、C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exeへのパスと再構築された.NETペイロードのバイトの2つの重要な入力を供給します。

この段階では、PowerShellはもはや主要な実行主体ではなくなります。PowerShellは単に、.NETローダーをリフレクティブにロードする手段として使用されているだけであり、そのローダーがさらに別の.NETペイロードを準備し、正規の.NETユーティリティのもとで実行します。これは、信頼された実行環境内で動作し、悪意のある動作をメモリ常駐コンポーネントのより深層へ移していくという、この攻撃全体で共通する特徴と一致しています。

図29:ResetRealtekAudioSettings64.Realtek

最終的なペイロードRAT

ResetRealtekAudioSettings64.Realtekから最終的に復元された.NETファイルは、モジュール型のRATです。このRATは難読化されており、文字列がエンコードされているため、分析がさらに困難になっています。最初に、IDG5FUAM3PSONBSInGIGSWSDというミューテックスを作成し、重複実行を防止します。

図30:.NET実行ファイル

一定時間待機した後、shampobiskworld.nl、shampoolagtto.com、shamppocosmaticso.comから成るC2サーバーリストの文字列をデコードします。C2サーバーと連絡すると、被害者から基本的なシステム情報を収集し、リモートサーバーへ送信します。収集される情報には、Win32_Processor、Environment.UserName、SOFTWARE\Microsoft\Windows NT\CurrentVersionのOSバージョンおよびビルド番号、Win32_Processor.DeviceIDのCPU情報、root\SecurityCenter2へのクエリによって取得したセキュリティアプライアンス情報、yyyy-MM-dd HH:mm:ss形式のシステム時刻が含まれます。

図31:C2接続の確立

メインクラスは、RATのコマンドハンドラーとして機能します。C2サーバーから暗号化された命令を受信すると、復号してデシリアライズし、オブジェクト配列へ変換します。次に、コマンド値を使用して実行する機能を決定します。

図32:C2サーバーから受信したコマンドの処理

コマンドセットは、以下のカテゴリに分類されます。

1. システム制御コマンド:これらのコマンドは、被害者のマシンでインプラントの状態、永続化、および存在を管理します。
 

コマンド 技術的な動作と影響
ClientShutdown キルスイッチ:通信ソケットを段階的に終了(SocketShutdown.Both)し、Environment.Exit(0) を呼び出してプロセスを即座に終了します。
ClientDelete
自己削除:マルウェアの痕跡をディスクおよびレジストリから完全に消去するためのアンインストールルーチンであり、フォレンジック調査を妨害することを目的としています。
ClientUpdate リモート更新:新たに受信したペイロードを%TEMP%ディレクトリに保存し、秘密裡に実行します。また、必要に応じて古いバージョンに対して自己削除の仕組みをトリガーします。
Ping ハートビート:感染したノードが現在も稼働しており、命令を受信できる状態であることをC2パネルへ通知するキープアライブの仕組みです。

2. 監視およびリモート監視コマンド:これらの機能により、攻撃者はユーザーのデスクトップ環境をリアルタイムで監視し、対話的な操作を実行できるようになります。

コマンド 技術的な動作と影響
RemoteDesktopOpen 偵察:Screen.AllScreens.Lengthを使用してシステムのモニター構成をクエリし、画面サイズなどの情報を抽出してハンドラーへ戻します。
RemoteDesktopSend スクリーンショットの抽出:Graphics.CopyFromScreenを使用してスクリーンショットを取得し、フレームをリサイズしたうえで、指定されたエンコーダ品質パラメータに基づいてJPEG形式へ圧縮します。これにより通信帯域の使用量を抑えつつ、取得した未加工データをC2へ送信します。
mousemove 入力の模倣:マウス座標を解析し、ユーザー入力をシミュレートする機能が備えられています。

3. 高度な実行機能と回避機能:このカテゴリは、ペイロードに含まれる機能の中でも最もリスクが高いものです。これらの機能は、.NET Frameworkのモジュール性を利用することで、従来型のEDR(エンドポイントの脅威検知とレスポンス)ソリューションによる検知や防御を回避します。
 

コマンド 技術的な動作と影響
Reflection ファイルレスアセンブリのロード:Assembly.Loadを利用して、.NET DLLのバイトをメモリ上で直接解析し、そのEntryPointを呼び出します。このペイロードは物理ディスク上に書き込まれることがないため、従来型の静的なファイルスキャンを効果的に回避します。
RunPE プロセスホローイング:正規で信頼されたシステムプロセス空間(explorer.exeやsvchost.exeなど)へ悪意のあるコードを挿入します。これにより、悪意のあるネットワーク通信やリソース使用状況を信頼されたWindowsプロセスイメージ内に隠蔽できます。

通信レイヤーもまた、その性質を明確に示しています。このマルウェアは送信するオブジェクトをシリアライズした後、ECBモードのRijndaelManagedを用いて暗号化し、MD5から暗号鍵を生成します。受信したペイロードは、同じ静的鍵の仕組みで復号されます。送信データには独自の長さのヘッダーが付けられ、その後、ソケットへ非同期に書き込まれます。これらの特徴から、このマルウェアが単発のダウンロードイベントではなく、独自のシリアライズ、暗号化通信、そして永続的なクライアント / サーバー間通信を実装したステートフルRATアーキテクチャを採用していることが確認できます。

RtkLoggingManifest.manから生成された別の.NETファイルはAsyncRATであり、そのC2サーバーのアドレスは107[.]172[.]10[.]190です。

図33: AsyncRAT

結論

この攻撃チェーンは、ステルス性の高いペイロード配信、モジュール型実行、および長期的なリモートアクセスを目的として構築され、完全に機能する多段階型の侵入フレームワークです。最終的にはさまざまな機能を備えた.NETのリモートアクセス型トロイの木馬(RAT)が展開されます。

特筆すべき点として、中間ステージのスクリプトには、AIを活用して開発されたことを示唆する特徴が複数見られます。PowerShellコンポーネント全体で簡体字中国語の変数名が使用されていることに加え、ステージングスクリプト内には簡体字中国語のコメントや絵文字付きの注釈がそのまま残されていました。これらの痕跡は、AI生成の出力が十分に検証または消去されないまま展開されたことを示しています。攻撃全体のロジックは明らかに人間の攻撃者が設計していますが、見落とされたこれらの痕跡からは、開発ワークフローで実装の効率化を目的として生成AIツールが使用されたことを示しています。

ユーザーは、信頼できない提供元から入手したショートカットファイル(.lnk)、圧縮アーカイブ、またはドキュメントを扱う際には、十分に注意することが強く推奨されます。また、スタートアップ項目、スケジュールタスク、およびレジストリキーに不正な変更が加えられていないか定期的に監査するとともに、異常なPowerShell実行や予期しない外部ネットワーク通信を監視することが、重要な防御対策となります。

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

本レポートで説明したマルウェアは、FortiGuardアンチウイルスにより以下の脅威として検知およびブロックされます。

LNK/Agent.MQOEQT!tr
MSIL/Agent.CDW!tr
POWERSHELL/Agent.CA!tr


FortiGuardアンチウイルスサービスエンジンは、FortiGateFortiMailFortiClient、およびFortiEDRに統合されています。これらの製品を最新のシグネチャを利用して運用しているお客様は、本レポートに記載されているマルウェアコンポーネントから保護されます。

FortiGuard Webフィルタリングサービスは、C2サーバーをブロックします。

基礎的なセキュリティ意識の強化を目指すお客様は、サイバーセキュリティに関するフォーティネット認定ファンダメンタルズ(FCF)トレーニングの実施もご検討ください。このモジュールでは、エンドユーザーはさまざまなフィッシング攻撃を識別して自らを保護する方法を学習できます。

FortiGuard IPレピュテーションおよびアンチボットネットセキュリティサービスは、フォーティネットが全世界に展開するセンサーネットワーク、CERTの連携、MITRE、信頼できる業界パートナー、その他のインテリジェンスソースから収集した悪意のあるIPインテリジェンスを相関させることで、このキャンペーンに関連するインフラストラクチャをプロアクティブにブロックします。

このようなサイバーセキュリティの脅威の影響を受けていることが疑われる場合は、グローバルのFortiGuardインシデントレスポンスチームにお問い合わせください。

IOC(Indicators of Compromise:侵害指標)

IP
107[.]172[.]10[.]190

ドメイン
Shampobiskworld[.]nl
shampoolagtto[.]com
shamppocosmaticso[.]com

ハッシュ
LNK

61b7fa5a7186cbf73dbc1f03e6e6f6819f5eb1e630a001059d381114bda2f974

POWERSHELL
7d6ee3c6ff8f70b1817aaec82aff1d2babe0b62cafef3975262644743afc0cb8

EXE
96b486bd7308ef3d6771360800f4c9b48b10697bd4cb69a8589b97b039377ecb
 

■関連サイト

本記事はアフィリエイトプログラムによる収益を得ている場合があります