CrowdStrike、VMware ESXiでのシェルコマンド難読化をハント
Detection stack
- AIDR
- Alert
- ETL
- Query
要約
攻撃者は検出を回避するために設計された高度なシェルコマンド難読化を使用してVMware ESXハイパーバイザーをますます標的にしています。脅威者は、基本的な16進エンコードから高度な暗号化暗号、BusyBoxシェルに注入された見えないUnicode文字に至るまでの技術を使用します。これらの方法により、攻撃者はsyslogを無効にしたり、仮想マシンを暗号化するなどの悪意のあるコマンドを実行しながら、標準シェルログにおける読み取り可能な痕跡を最小限に抑えることができます。
調査
CrowdStrikeの研究者は、制御されたESX 7.0.3環境内で21の異なる難読化技術を体系的に評価しました。彼らはこれらの方法をエスケープシーケンス、文字生成、Unicode注入、暗号化エンコーディング、インフラストラクチャキー化ペイロード、代替エンコーディングシステムの6つのカテゴリに分類しました。研究により、これらの技術が、コマンドが解析され最終的に実行される際に発生する違いを利用して、従来のキーワードベースの検出を回避できることが確認されました。
緩和策
セキュリティチームは基本的なキーワードベースの検出を超えて進化し、難読化に関連する共通の構文パターンを特定する正規表現を用いた相関ルールを採用すべきです。CrowdStrike Falcon Next-Gen SIEMなどの高度なSIEMプラットフォームは、ESXシェルのテレメトリ全体でこれらの動作を検出するのに役立ちます。また、正常な管理活動の信頼できるベースラインの維持は、異常なシェル実行を特定するために不可欠です。
対応
難読化されたコマンド実行が検出された場合、インシデントレスポンダーは、横方向の移動やVMの暗号化を制限するために、影響を受けたESXホストを直ちに隔離すべきです。シェルログは、実際に実行されたコマンドを再構築するために、既知の難読化パターンに対して分析されるべきです。Respondersは、スケジュールされたタスクや変更されたシステム設定を通じて永続性を調査し、VMFSファイルシステムの整合性を確認する必要があります。
攻撃フロー
検出
可能なESXCLIシステム列挙 [Windows] (cmdline経由)
Proof of Value
可能なSSHd設定ファイル列挙または変更試行 (cmdline経由)
Proof of Value
可能なESXCLIシステム列挙 [Linux] (cmdline経由)
Proof of Value
疑わしいESXCLI Syslogサービスリロード [Linux] (cmdline経由)
Proof of Value
VMware ESX上の難読化コマンドの検出 [Linuxプロセス作成]
Proof of Value
シミュレーション実行
前提条件: テレメトリおよびベースライン事前チェックが完了していること。
根拠: このセクションでは、検出ルールをトリガーするために設計された対戦相手技術 (TTP) の正確な実行を詳述します。コマンドとナラティブは、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。
-
攻撃ナラティブ&コマンド: 対戦相手はVMware ESXホストへのシェルアクセスを得ました。セキュリティツールがキーワード検索を回避するために
esxcli攻撃者はawkコマンドを使用して、文字列をASCIIの10進数値を使って生成し、その後esxcliそれをsystem()に渡します。この手法は、(例: ログホストのリセット) を構成変更を行いながら、単純なパターンマッチングフィルタに見えないようにするために使用されます。 -
回帰テストスクリプト: このスクリプトは、検出論理で定義された特定のペイロードのいずれかを実行して、ルールがトリガーされることを確認します。
#!/bin/bash # 'Detection of Obfuscated Command on VMware ESX'ルールをトリガーするためのシミュレーションスクリプト。 echo "[+] シミュレーション開始: 難読化されたコマンド実行" # ペイロード1: サブシェル内でprintfを使用して 'esxcli' を隠す echo "[+] ペイロード1を実行中 (printf難読化中)..." $(printf "x65x73x78x63x6cx69") system syslog config get # ペイロード2: awkを使用してASCIIの10進数コードから 'esxcli' を再構築 echo "[+] ペイロード2を実行中 (awk ASCII再構築)..." awk 'BEGIN{printf "%c%c%c%c%c%c",101,115,120,99,108,105} system " syslog config get"' echo "[+] シミュレーション完了。SIEMで警告を確認してください。" -
クリーンアップコマンド: これらのコマンドは非破壊的(使用された
getorconfig get)に設計されているため、最小限のクリーンアップが必要です。ただし、何らかの永続的な変更がなされたか確認するためにsetコマンドが使用された場合:# このシミュレーションで破壊的行動は行われませんでした。 # 'set' コマンドが使用された場合、元の構成に戻します。 echo "[+] クリーンアップ: システム構成には変更ありませんでした。"