Vidar 2026の内部: 感染からメモリ実行まで
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
このレポートでは、VidarがGoベースのローダー、VBS、PowerShell、そしてリビングオフザランド・バイナリを組み合わせたマルチステージのファイルレス攻撃フレームワークへと進化した方法を調査しています。これにより、リモートのIPアドレス上にホストされているJPEGおよびTXTファイルに隠された悪意のあるコンテンツを取得します。埋め込まれたペイロードは抽出され、デコードされ、RegAsm.exeを介して直接メモリ内で実行されます。 RegAsm.exe、ディスクベースの検出を回避します。初期アクセスは、偽のGitHubリポジトリ、侵害されたWordPressサイト、偽のCAPTCHAページなどのソーシャル・エンジニアリングの誘いを通じて提供されます。このキャンペーンはまた、コマンドアンドコントロールおよびデータ流出のためにTelegramやCloudflareフロントのドメインを利用しています。
調査
Point Wildの研究者たちは、初期のGoコンパイルされたドロッパーから最終的なVidarペイロードまでの感染チェーン全体を追跡し、途中の各レイヤーの難読化を文書化しました。彼らの分析は、カスタムBase64マーカー、逆文字列、および反射的な.NETアセンブリのロードを使用して実行を隠す方法を強調しました。研究者たちはまた、 WScript、PowerShell、および RegAsm.exe が実行プロキシとして悪用され、マルウェアがメモリ内で完全に隠されたDLLをデコードして起動する方法についても説明しました。ネットワークトラフィックは、ハードコードされたIPアドレスからステージングされたJPEGおよびTXTペイロードをHTTPベースで取得することも確認されました。
緩和策
防御者は、感染チェーンの初期VBSおよびPowerShellステージの検出に焦点を当て、JPEGまたはTXTファイルを悪意のあるIPから取得する不審な使用や認識可能なBase64マーカーパターンを含む必要があります。既知の悪意のあるドメインやIPアドレスのブロッキング、Telegramへのアウトバウンドトラフィックのモニタリング、通常のLOLBINユーティリティへの実行制御の適用は、露出を減少させるのに役立ちます。ファイルレス実行およびメモリ内ローディング手法にチューニングされた行動ベースの検出も強く推奨されます。 RegAsm.exe, retrieval of JPEG or TXT files from the malicious IP, and recognizable Base64 marker patterns. Blocking known malicious domains and IP addresses, monitoring outbound traffic to Telegram, and applying execution controls to common LOLBin utilities can help reduce exposure. Behavior-based detection tuned for fileless execution and in-memory loading techniques is also strongly recommended.
対応策
Vidar感染チェーンに関連するインジケーターが特定された場合、影響を受けたホストを直ちに隔離し、 WScript、PowerShell、および RegAsm.exeのような疑わしいプロセスを終了し、フォレンジックのレビューのためにメモリイメージを収集します。特定されるIPアドレスおよび関連するドメインはブロックされ、永続性のために使用されるスタートアップショートカットやスケジュールされたタスクは削除されるべきです。セキュリティチームはまた、露出したブラウザデータ、拡張機能、暗号通貨ウォレットに焦点を当てた完全な認証情報のレビューを実施するべきです。
"graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef builtin fill:#cccccc %% Nodes initial_access["<b>アクション</b> – <b>T1204 ユーザー実行</b><br/>被害者は、偽のGitHubリポジトリ、偽のCAPTCHA/ClickFixページ、侵害されたWordPressサイトおよびゲームチート配布チャネルから悪意のあるファイルを実行します。<br/><b>サブテクニック</b>: T1204.001 悪意のあるリンク, T1204.002 悪意のあるファイル, T1204.004 悪意のあるコピーアンドペースト"] class initial_access action execution["<b>アクション</b> – <b>T1216 システムスクリプトプロキシの実行</b><br/>WScriptとPowerShellを使用してスクリプトを実行する"] class execution action appdomain_hijack["<b>アクション</b> – <b>T1574.014 実行フローの乗っ取り: AppDomainManager</b><br/>.NETアセンブリをロードするために署名されたバイナリプロキシとしてRegAsm.exeを呼び出します"] class appdomain_hijack action defense_obfusc["<b>アクション</b> – <b>T1027 難読化されたファイルまたは情報</b><br/>ポリモーフィックコード、配信後のコンパイル、HTML密輸、埋め込み/剥奪されたペイロード、逆文字列とカスタムBase64マーカー"] class defense_obfusc action reflective_loading["<b>アクション</b> – <b>T1620 リフレクティブコードロード</b><br/>デコードされた.NETペイロードを完全にメモリ内でロードする"] class reflective_loading action process_injection["<b>アクション</b> – <b>T1055 プロセスインジェクション</b><br/>リフレクティブペイロードを正規のプロセスに注入する"] class process_injection action persistence["<b>アクション</b> – <b>T1176 ソフトウェア拡張</b><br/>ユーザーレベルの永続性のために.batファイルをスタートアップフォルダーにコピーする"] class persistence action discovery["<b>アクション</b> – <b>T1518 ソフトウェアディスカバリー</b> および <b>T1217 ブラウザ情報ディスカバリー</b><br/>暗号通貨ウォレットおよびパスワードマネージャーのためにインストールされているソフトウェアおよび200以上のブラウザ拡張機能を列挙する"] class discovery action c2["<b>アクション</b> – <b>T1071.001 ウェブプロトコル</b>, <b>T1090.004 ドメインフロント</b>, <b>T1102.002 双方向ウェブサービス</b>, <b>T1071.004 DNS</b><br/>直接IP HTTPサーバー、Cloudflareフロントのドメイン、Telegramインフラストラクチャを使用して指令と制御を行う"] class c2 action masquerade["<b>アクション</b> – <b>T1036 擬装</b><br/>悪意のあるファイルは正規のJPEG画像およびTXTテキストキャリアとして偽装される"] class masquerade action exfiltration["<b>アクション</b> – <b>T1041 指令と制御チャネルを介したデータ流出</b><br/>収集されたデータはTelegramウェブページとCloudflareプロキシのドメインを通じて送信される"] class exfiltration action %% Edges showing flow initial_access –>|leads to| execution execution –>|uses| appdomain_hijack appdomain_hijack –>|enables| defense_obfusc defense_obfusc –>|enables| reflective_loading reflective_loading –>|enables| process_injection process_injection –>|enables| persistence persistence –>|enables| discovery discovery –>|enables| c2 c2 –>|enables| masquerade masquerade –>|enables| exfiltration "
攻撃フロー
検知
疑わしいPowershell文字列(cmdline経由)
表示
LOLBAS WScript / CScript(process_creation経由)
表示
疑わしいPowershell文字列(powershell経由)
表示
Powershellから疑わしい.NETメソッドを呼び出す(powershell経由)
表示
自動開始位置にある疑わしいバイナリ/スクリプト(file_event経由)
表示
コマンドと制御チャネルとしてのTelegramの可能性のある悪用(dns_query経由)
表示
検出するためのIOCs(HashMd5): Vidar内部(2026):感染からJPEGおよびTXTペイロード経由のメモリ実行まで
表示
検出するためのIOCs(SourceIP): Vidar内部(2026):感染からJPEGおよびTXTペイロード経由のメモリ実行まで
表示
検出するためのIOCs(DestinationIP): Vidar内部(2026):感染からJPEGおよびTXTペイロード経由のメモリ実行まで
表示
Vidar Infostealer ファイルレスの実行の検出 PowerShellおよびJPEGペイロード経由 [Windows PowerShell]
表示
Vidar Infostealer 多段階の実行 WScript、PowerShell、RegAsm経由 [Windows プロセス作成]
表示
シミュレーションの実行
前提条件: テレメトリおよびベースラインのプリフライトチェックが合格していること。
説明: このセクションは、検出ルールを引き起こすために設計された敵の手法(TTP)の正確な実行を詳述しています。コマンドと物語は、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。
-
攻撃の物語とコマンド:
- 初期ドロッパー(WScript): 攻撃者は悪意のあるJScriptファイル(
payload.js)を配信し、WScript.exeによって起動されます。スクリプトはC2サーバーからBase64エンコードされたPowerShellペイロードをダウンロードし、%TEMP%. - に書き込まれます。 ダウンロードされたペイロードは
-ExecutionPolicy Bypass -NoProfile -WindowStyle Hiddenで実行され、悪意のある.NETアセンブリ(evil.dll)の反射的なDLLローディング(T1620)をメモリ内で行い、アセンブリをディスクにドロップします。 - RegAsmプロキシ: ネイティブのPowerShell検出を回避するために、攻撃者は
RegAsm.exeを指し、evil.dllに/codebaseスイッチを使用して.NETローダーに悪意のあるエントリーポイントを実行させます(T1574.014)。
このチェーンは、ルールの
Image|endswithセレクターに一致する3つの異なるSysmonイベントを生成し、アラートを発生させます。 - 初期ドロッパー(WScript): 攻撃者は悪意のあるJScriptファイル(
-
回帰テストのスクリプト: 以下のスクリプトは、上記のチェーンを 安全な、サンドボックス された方法で再現し、無害なエコーコマンドとダミーDLL(単なるテキストファイル)を使用して実際の悪意のある活動を避けながら、同じプロセス作成イベントを生成します。
<# Vidarスタイルの多段階実行シミュレーション - ステージ1: WScriptがJScriptを起動し、PowerShellスクリプトを%TEMP%に書き込みます - ステージ2: PowerShellがスクリプトを実行し、ダミーDLLを作成し、RegAsmを起動します #> # ---------- ステージ1: WScript ---------- $jsPath = "$env:TEMPstage1.js" $psPayloadPath = "$env:TEMPstage2.ps1" $dummyDllPath = "$env:TEMPevil.dll" # ディスクに単純なPowerShellペイロードを書き込むJScript $jsContent = @" var fso = new ActiveXObject("Scripting.FileSystemObject"); var ts = fso.OpenTextFile("$psPayloadPath", 2, true); ts.WriteLine('Write-Host "[Stage 2] PowerShell executed"'); ts.WriteLine('Set-Content -Path "$dummyDllPath" -Value "This is a dummy DLL"'); ts.WriteLine('Start-Process -FilePath "$env:SystemRootMicrosoft.NETFramework64v4.0.30319RegAsm.exe" -ArgumentList "`"$dummyDllPath`" /codebase" -NoNewWindow'); ts.Close(); "@ Set-Content -Path $jsPath -Value $jsContent -Encoding ASCII # WScript経由でJScriptを実行 Write-Host "`n[Stage 1] Launching WScript..." & "$env:SystemRootSystem32WScript.exe" $jsPath # ---------- ステージ2: PowerShell ---------- Write-Host "`n[Stage 2] Executing generated PowerShell payload..." & powershell.exe -NoProfile -ExecutionPolicy Bypass -File $psPayloadPath # ---------- クリーンアップ ---------- Write-Host "`nCleaning up temporary files..." Remove-Item -Path $jsPath, $psPayloadPath, $dummyDllPath -Force -ErrorAction SilentlyContinue -
クリーンアップコマンド: スクリプトの最後のクリーンアップに加えて、以下を実行して残りのプロセスやファイルが残らないようにします。
# テストで生成された余分なRegAsmまたはPowerShellインスタンスを強制終了 Get-Process -Name regasm, powershell -ErrorAction SilentlyContinue | Stop-Process -Force # テストパターンに一致する%TEMP%内の残留ファイルを削除 Get-ChildItem -Path $env:TEMP -Filter "stage*.*" -File | Remove-Item -Force