DonutLoaderが再び現れたモダンなRemcos RATキャンペーン
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
G DATA は、新たな Remcos RAT キャンペーンを特定しました。このキャンペーンは悪意のあるバッチファイルから始まり、PowerShell、VBScript、AutoIt を含む複数のスクリプト層を通じて DonutLoader シェルコードペイロードを取得し起動します。最終的に、ローダーは正当な Windows バイナリに最終的な Remcos RAT を注入します。 colorcpl.exeに。攻撃者は、7-Zip、pCloud ストレージ、複数の LOLBins など信頼されたツールを使用して、活動を日常的に見せかけます。プロセスの注入のために Donut 生成のシェルコードを使用することは、現代の Remcos 配信における著しい進化を示しています。
調査
研究者は、フィッシング添付ファイル Bestellung.CMDから始まる完全な感染経路を追跡しました。これは cscript.exe を起動して、Base64でエンコードされたPowerShell コマンドをデコードするVBScriptプロキシを実行しました。そのPowerShell ステージは、7-Zip ユーティリティとパスワードで保護されたアーカイブを pCloud からダウンロードし、AutoIt インタープリターと追加のペイロード内容を運ぶ偽の PNG をドロップする JScript ファイルを展開しました。AutoIt コンポーネントは、XOR で難読化されたデータを復号し、DonutLoader シェルコードを再構築し、 colorcpl.exeに注入し、Remcos RAT バージョン 7.2.1 Pro を実行しました。
軽減策
防御者は、怪しい cscript.exe, SyncAppvPublishingServer.vbsや Base64 でエンコードされたコンテンツを含む PowerShell IEX コマンドをウォッチすべきです。特に、それらのプロセスがバッチファイルから発生した場合は注意が必要です。検出は、予期しない 7z.exe and 7z.dll がユーザーディレクトリに出現すること、及び無許可の AutoIt バイナリをカバーする必要があります。行動ベースの防御は、 colorcpl.exe へのプロセス注入や Donut 生成のシェルコードと一致する活動を特定するように調整するべきです。
対応
この活動が検出された場合、影響を受けたシステムをすぐに隔離し、疑わしいプロセスを終了し、メモリをキャプチャしてシェルコード解析を行います。調査者は、ドロップされたファイルや削除されたアーティファクトを調査して完全な実行チェーンを再構成し、コマンドアンドコントロールインフラとの通信をブロックするべきです。修復には、Remcos RAT の削除と、攻撃で悪用された正当なユーティリティのクリーンアップを含めなければなりません。
graph TB %% クラス定義 classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ff9999 classDef misc fill:#dddddd %% ノード定義 phish_spear[“<b>アクション</b> – <b>T1566.001 フィッシング: スピアフィッシング添付ファイル</b><br/><b>ファイル</b>: Bestellung.CMD”]:::technique cmd_shell[“<b>技術</b> – <b>T1059.003 コマンドおよびスクリプトインタープリタ</b><br/>Windows Command Shell”]:::technique vbscript[“<b>技術</b> – <b>T1059.005 コマンドおよびスクリプトインタープリタ</b><br/>Visual Basic(cscript.exe + .vbs)”]:::technique syncappv_proxy[“<b>技術</b> – <b>T1216.002 システムスクリプトプロキシ実行</b><br/>SyncAppvPublishingServer”]:::technique powershell_hidden[“<b>技術</b> – <b>T1059.001 コマンドおよびスクリプトインタープリタ</b><br/>PowerShell(非表示、Base64デコード)<br/><b>サブ技術</b>: T1027.009 埋め込みペイロード、T1564.003 隠しウィンドウ”]:::technique ingress_transfer[“<b>技術</b> – <b>T1105 侵入型ツール転送</b><br/>7zユーティリティおよびパスワード付きZIPのダウンロード<br/><b>サブ技術</b>: T1027.015 圧縮”]:::technique javascript_masq[“<b>技術</b> – <b>T1059.007 コマンドおよびスクリプトインタープリタ</b><br/>JavaScript(iphdcrtj.js)<br/><b>偽装</b>: T1036.008 AutoItスクリプトを含む偽PNG”]:::technique process_injection[“<b>技術</b> – <b>T1055 プロセスインジェクション</b><br/>colorcpl.exe に注入”]:::technique reflective_loader[“<b>技術</b> – <b>T1620 リフレクティブコードロード</b><br/>DonutLoaderシェルコード → リモートアクセスツール(Remcos RAT)”]:::technique c2_comm[“<b>技術</b> – <b>T1071 アプリケーション層プロトコル</b><br/>C2通信”]:::technique %% 接続 phish_spear –>|続く| cmd_shell cmd_shell –>|続く| vbscript vbscript –>|続く| syncappv_proxy syncappv_proxy –>|続く| powershell_hidden powershell_hidden –>|続く| ingress_transfer ingress_transfer –>|続く| javascript_masq javascript_masq –>|続く| process_injection process_injection –>|続く| reflective_loader reflective_loader –>|続く| c2_comm
攻撃フロー
検出
疑わしいPowerShell文字列(PowerShell経由)
表示
疑わしいPowerShell文字列(cmdline経由)
表示
PowerShell からの疑わしい.NETメソッドの呼び出し(PowerShell経由)
表示
この検出を引き起こすためのIOC(HashSha256):Deceptively Sweet: DonutLoader Reloaded in a modern Remcos RAT Infection
表示
AppvClient を使用した PowerShell IEX コマンドの検出 [Windows Powershell]
表示
LOLBins を使用した Remcos RAT 感染チェーンの検出 [Windows プロセス作成]
表示
シミュレーション実行
前提条件: テレメトリ & ベースライン プレフライトチェックがパスしている必要があります。
根拠: このセクションは、検出ルールを引き起こすために設計されている敵の技術 (TTP) の正確な実行を詳述します。コマンドとナラティブは、特定されたTTPに直接反映され、検出ロジックが期待する正確なテレメトリを生成することを目的としています。
-
攻撃の話とコマンド:
攻撃者は、静的検出を回避するためにBase64でエンコードされた悪意あるPowerShellペイロード(例えば、ダウンローダー)を入手しました。レーダーの下にとどまるために、攻撃者はWindowsシステム上によく存在する署名済みの内蔵モジュールであるAppvClientを選びます。それから、そのモジュールをインポートし、使用して、Invoke-Expression (IEX)を使用してペイロードを完全にメモリ上でデコードし実行し、ファイルのアーティファクトを残さないようにします。この正確なコマンドライン (Import-Module AppvClient; IEX <Base64String>) はSigmaルールの条件に一致します。 -
回帰テストスクリプト:
<# "PowerShell IEX with AppvClient" 検出ルールを引き起こすシミュレーションスクリプト。 #> # 1. 正当なモジュールをインポート(署名済みバイナリプロキシ実行) Import-Module AppvClient -ErrorAction Stop # 2. シンプルで無害なPowerShellペイロードを準備し、Base64エンコード $payload = "Write-Host 'Compromise simulated – payload executed.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($payload) $b64 = [System.Convert]::ToBase64String($bytes) # 3. IEXを使ってメモリ上でペイロードを実行(検出トリガー) IEX ([System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($b64))) # 4. オプション: ログがフラッシュされることを保証するため、セッションを短時間アライブにしておく Start-Sleep -Seconds 5 -
クリーンアップコマンド:
# フットプリントを減らすためにインポートされたモジュールを削除 if (Get-Module -Name AppvClient) { Remove-Module -Name AppvClient -Force } # 現在のセッションのPowerShellヒストリーをクリア Clear-History