カーリーな仲間たち:異常なHyper-Vのアクティベーション
Detection stack
- AIDR
- Alert
- ETL
- Query
異常なHyper-Vのアクティベーション
この研究では、Curly COMradesという新たな脅威アクターが、Windows Hyper‑Vを利用して、侵害されたWindows 10ホスト上に隠されたAlpine Linux VMを作成する手法を明らかにしています。このVMは、持続的なリバースシェルとプロキシ機能を提供し、通常のEDR検出を回避するために、カスタムマルウェア(CurlyShellとCurlCat)を実行します。追加の技術としては、PowerShellを利用したKerberosチケットの注入、グループポリシーによるローカルアカウントの作成、オープンソースのプロキシツールの使用があります。
Curly COMradesがLinux VMでマルウェアを隠す方法とは?
Curly COMradesは、悪用されたWindowsホスト上でMicrosoft Hyper-V内に小さなAlpine Linuxゲストを作成し、これらの隠されたVM内でカスタムインプラント(CurlyShellとCurlCatとして報告)を実行することでマルウェアを隠します。そしてHyper-Vのネットワーキング(デフォルトスイッチ)を使用して外向きトラフィックがホストから発生しているように見せかけます。
彼らはホスト上でPowerShellヘルパーとcurl.exeを展開し、欺瞞的なVM名を付け、Hyper-V管理インターフェースを制限して検出を回避し、その技術指標と対応策がBitdefenderの分析で文書化されました。
緩和策
ホストベースのネットワーク検査(例:Bitdefender NAD)を展開して、ホストネットワークスタックからの異常なアウトバウンドトラフィックを検出します。Hyper‑V機能の有効化を無効または厳密に管理し、DISMおよびVMをインポート/開始するPowerShell cmdletの使用を制限することでWindowsを強化します。ネイティブバイナリ(curl、rar、Import‑VM、Start‑VM)の不正使用をブロックするために、Proactive HardeningおよびAttack Surface Reduction(PHASR)を適用します。新しいHyper‑V VMの作成、ProgramData内の異常なVHDX/VMCXファイル、Linux VM上のcrontab修正を監視します。EDR/XDR資格情報アクセスアラートを使用してLSASSアクセスとKerberosチケット注入を検出します。グループポリシースクリプトに対して最小特権を強制し、ローカルアカウントの作成を監査します。カスタムインプラントCurlyShell/CurlCatおよび知られているプロキシツールのために署名ベースおよび行動検出を使用します。
対応
影響を受けたホストを隔離し、Hyper‑Vを無効にし、隠されたVMファイルおよび関連するVHDX/VMCXイメージを削除します。PowerShellスクリプト(kb_upd.ps1、screensaver.ps1、locals.ps1)の完全なファイルシステムおよびレジストリスキャンを実施し、削除します。不正なローカルアカウントをリセットまたは削除し、パスワードを変更します。特定されたC2 IPへのアウトバウンド接続をブロックし(例:45.43.91.10, 88.198.91.116)、ファイアウォールルールを更新します。CurlyShellおよびCurlCatの特定のDLL/ELF署名および観察されたプロキシツールの検出ルールを展開します。公開GitHubリポジトリからのIOCを使用して脅威ハントを実施します。CERTと連携してインテリジェンスを共有し、追加の活動を監視します。探知されたCVEs(もしあれば)を緩和するためにパッチを適用し、アップデートを実行します。
mermaid graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff %% Nodes – Actions action_initial_setup[“<b>アクション</b> – 初期設定<br /><b>テクニック</b>: T1564.006 アーティファクトの隠蔽: バーチャルインスタンスの実行, T1497 仮想化/サンドボックス回避, T1059.012 ハイパーバイザCLI<br />DISMを使用してHyper‑Vを有効化し、管理クライアントを無効化”] class action_initial_setup action action_vm_deployment[“<b>アクション</b> – VM展開<br /><b>テクニック</b>: T1059.012 ハイパーバイザCLI<br />curlでAlpine Linux VHDXをダウンロードし、WinRARで解凍し、PowerShellでVMをインポート・開始”] class action_vm_deployment action action_vm_persistence[“<b>アクション</b> – VMでの持続性<br /><b>テクニック</b>: T1037.004 RCスクリプト, T1543 システムプロセスの作成/修正<br />Cronジョブが毎4時間/bin/alpine_initを起動しCurlyShellを開始”] class action_vm_persistence action action_c2_communication[“<b>アクション</b> – C2通信<br /><b>テクニック</b>: T1071.001 ウェブプロトコル, T1102.002 双方向ウェブサービス<br />CurlyShellがlibcurlを使ってHTTPSエンドポイントに接続(GET/POST)”] class action_c2_communication action action_proxy_tunneling[“<b>アクション</b> – プロキシ&トンネリング<br /><b>テクニック</b>: T1090.001 内部プロキシ, T1090.003 マルチホッププロキシ<br />ProxyCommandを介したSSH逆転プロキシが設定され、ローカルSOCKSプロキシを介してトラフィックが転送”] class action_proxy_tunneling action action_credential_abuse[“<b>アクション</b> – 資格情報の悪用<br /><b>テクニック</b>: T1550.003 チケットの譲渡, T1059.001 PowerShell<br />PowerShellスクリプトkb_upd.ps1が偽造されたKerberosチケットをLSASSに注入”] class action_credential_abuse action action_lateral_movement[“<b>アクション</b> – 横方向移動<br /><b>テクニック</b>: T1021.002 SMB/Windows管理共有, T1135 ネットワークの共有ディスカバリー<br />injectしたチケットを使ってnet useとSMBコマンドで共有を列挙しリモートコマンドを実行”] class action_lateral_movement action action_persistence_accounts[“<b>アクション</b> – ローカルアカウントによる持続性<br /><b>テクニック</b>: T1136.001 ローカルアカウントの作成, T1037.003 ネットワークログオンスクリプト<br />グループポリシースクリプトが継続的なアクセスのためにローカルアカウントを作成またはリセット(例:camera)”] class action_persistence_accounts action action_defense_evasion[“<b>アクション</b> – 防御回避<br /><b>テクニック</b>: T1059.003 Windowsコマンドシェル, T1202 間接命令実行, T1001.003 プロトコル擬態, T1599 ネットワーク境界ブリッジング<br />隠されたVM内で全ての悪意あるバイナリを実行し、カスタムBase64エンコーディングを使用して法廷フットプリントを縮小”] class action_defense_evasion action %% Nodes – Tools / Processes / Malware tool_dism[“<b>ツール</b> – DISM<br /><b>説明</b>: Windows機能(例:Hyper‑V)を展開”] class tool_dism tool tool_powershell[“<b>ツール</b> – PowerShell<br /><b>説明</b>: VMのインポート、チケット注入、その他の自動化に使用されるスクリプト環境”] class tool_powershell tool process_curl[“<b>プロセス</b> – curl<br /><b>説明</b>: Alpine VHDXをダウンロードしてHTTPS C2リクエストを実行いたします”] class process_curl process process_winrar[“<b>プロセス</b> – WinRAR<br /><b>説明</b>: ダウンロードしたVHDXアーカイブを解凍”] class process_winrar process malware_curlyshell[“<b>マルウェア</b> – CurlyShell<br /><b>説明</b>: 隠されたAlpine VM内で動作するカスタムバックスペースドア”] class malware_curlyshell malware malware_ssh_reverse[“<b>マルウェア</b> – SSH Reverse Proxy<br /><b>説明</b>: ~/.ssh/configを介してトンネリングを通じてSOCKSプロキシを介してトラフィックが転送されます”] class malware_ssh_reverse malware script_kb_upd[“<b>マルウェア</b> – kb_upd.ps1<br /><b>説明</b>: PowerShellスクリプトが偽造されたKerberosチケットを生成してLSASSに注入”] class script_kb_upd malware %% Connections – Flow action_initial_setup u002du002d>|使用済| tool_dism action_initial_setup u002du002d>|使用済| tool_powershell action_vm_deployment u002du002d>|ダウンロード| process_curl action_vm_deployment u002du002d>|解凍されます| process_winrar action_vm_deployment u002du002d>|インポート/開始| tool_powershell action_vm_persistence u002du002d>|cronジョブ作成| malware_curlyshell action_c2_communication u002du002d>|通信| process_curl action_c2_communication u002du002d>|バックドア| malware_curlyshell action_proxy_tunneling u002du002d>|設立される| malware_ssh_reverse action_credential_abuse u002du002d>|実行されます| script_kb_upd action_credential_abuse u002du002d>|使用済| tool_powershell action_lateral_movement u002du002d>|チケットから| script_kb_upd action_lateral_movement u002du002d>|SMBコマンド使用済| tool_powershell action_persistence_accounts u002du002d>|アカウント作成| tool_powershell action_defense_evasion u002du002d>|バイナリ実行| action_vm_deployment action_defense_evasion u002du002d>|データ難読化| process_curl %% End of diagram
隠されたHyper-Vバーチャルマシン攻撃チェーン
シミュレーション手順
シミュレーション実行
前提条件:Telemetry & Baseline Pre‑flight Checkは合格していること。
理由:このセクションは、検出ルールをトリガーするために設計された敵の技術(TTP)を正確に実行する詳細を示しています。コマンドとナarrationは、識別されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。抽象的または関連性のない例は誤診に繋がります。
-
攻撃の物語とコマンド:
攻撃者はすでに低権限のユーザーアカウントを侵害し、Hyper‑V管理者権限を持つサービスアカウントに昇格しています。ステルスな持続性を維持するために、AppVキャッシュディレクトリ内に隠されたVMイメージを作成します(c:programdatamicrosoftAppVappVirtual Machines1DBCC80B-5803-4AF1-8772-712C688F408A.vmcx)。PowerShellを使用してこのVMをサイレントにインポートし、名前を付けて開始します WSL、正当なWindows Subsystem for Linuxのインスタンスとして偽装しています。この正確なコマンドラインは、Sigmaルールのハードコーディングされた文字列と一致しており、アラートが発生するようにします。 -
回帰テストスクリプト:
# ------------------------------------------------- # Curly COMrades Hyper‑V永続性のシミュレーション # ------------------------------------------------- # ルール内の正確な文字列を反映した変数 $vmPath = 'c:programdatamicrosoftAppVappVirtual Machines1DBCC80B-5803-4AF1-8772-712C688F408A.vmcx' $vmName = 'WSL'