AsyncRATキャンペーン、AutoItを使用してマルチステージのマルウェアを配信
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
社会工学的なバッチファイルと正規のAutoItインタープリタを実行に利用する5段階のAsyncRAT感染チェーンが特定されました。マルウェアは、Base64フラグメントの再構築や複数のXOR復号化を含む多層の難読化に依存して検出を回避しています。最終段階では、情報を盗みスクリーンショットを撮るために正規のWindowsプロセスに注入される.NETベースのAsyncRATペイロードを展開します。
調査
調査では、悪意のあるバッチファイルから開始し、続いてPowerShellスクリプト、および名を持つAutoItローダースクリプトまでの実行が追跡されました kojuyn.ini が暗号化されたペイロードをドロップします。アナリストは、 charmap.exe へのプロセス注入を確認するためにPE-Sieveを使用し、ペイロードがAMSIパッチを行うことができる.NETアセンブリであると断定しました。最終的なペイロードはメモリから Veukuzmw.dll.
として回収されました。
防御者は、隠しウィンドウを使った疑わしいPowerShell実行やユーザースタートアップフォルダ内に作成されたバッチファイルを監視するべきです。組織は署名されていないスクリプトの実行を制限し、 charmap.exe のような正規のバイナリが予期しない外部ネットワーク接続を開始するのを監視するべきです。AutoItインタープリタの活動やメモリ注入の試みの強化された監視も推奨されます。
対応策
AsyncRAT活動が検出された場合、影響を受けたエンドポイントをすぐに隔離してさらにC2通信やデータの漏洩を防ぐべきです。レスポンダーはメモリフォレンジックを行って注入されたペイロードを特定し、揮発性アーティファクトを保存する必要があります。システムはスタートアップフォルダの持続性メカニズムを調べ、PowerShellのコマンド履歴を追加のステージングや水平移動のために再確認すべきです。
攻撃フロー
この部分はまだ更新中です。
検出
名前に数字しか含まれない疑わしい実行ファイル(via cmdline)
疑わしいPowerShell文字列(via powershell)
PowerShell難読化の可能性のある指標(via powershell)
自動起動場所にある疑わしいバイナリ/スクリプト(via file_event)
IOCs (HashSha256) 検出: AutoITを介して配信されたAsyncRAT: 全体的な連鎖分析
IOCs (SourceIP) 検出: AutoITを介して配信されたAsyncRAT: 全体的な連鎖分析
IOCs (DestinationIP) 検出: AutoITを介して配信されたAsyncRAT: 全体的な連鎖分析
AsyncRATプロセス注入 into charmap.exe [Windowsプロセス作成]
スタートアップフォルダを介したPowerShellの持続性 [Windows PowerShell]
シミュレーション実行
-
攻撃のシナリオとコマンド: 攻撃者は初期アクセスを取得し、持続性を確立しようとしています。検出されないよう、直接的なレジストリの変更を避けています。代わりに、
cmd.exeシェルコマンドを使って隠れたPowerShellインスタンスを呼び出します。このPowerShellインスタンスには現在のユーザーのスタートアップフォルダに小さな悪意のあるバッチファイルを書き込むよう指示されています。これにより、リブート後もユーザーがログインする際に攻撃者のコードが自動的に実行されることが保証されます。 -
回帰テストスクリプト:
# このスクリプトは正確な連鎖: CMD -> PowerShell(隠し) -> スタートアップへの書き込み をシミュレートします $startupFolder = "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartup" $targetFile = Join-Path $startupFolder "persistence_test.bat" $payloadContent = "@echo off`necho 'Persistence Test Successful'" # ルールの 'ParentImage: cmd.exe' 要件を満たすためにCMD経由で実行します Start-Process cmd.exe -ArgumentList "/c powershell.exe -WindowStyle Hidden -Command `"$payloadContent | Out-File -FilePath '$targetFile' -Encoding ascii`"" -Wait Write-Host "シミュレーションコマンド送信済み。Sysmon Event ID 1 および 11 を確認してください。" -
クリーンアップコマンド:
$startupFolder = "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartup" $targetFile = Join-Path $startupFolder "persistence_test.bat" if (Test-Path $targetFile) { Remove-Item $targetFile -Force Write-Host "クリーンアップ完了: $targetFile 削除済み。" } else { Write-Host "ファイルが見つからず、クリーンアップ不要。" }