サードパーティのSalt Minion拡張機能を介したAzure VMコマンド実行
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
攻撃者は Microsoft.Compute/virtualMachines/extensions/write の権限を持つと、正当なサードパーティの拡張機能を悪用してAzure VM上で任意のコードを実行することができます。Salt Minion拡張を展開し、不正なSalt Masterに接続することで、攻撃者は対象システムに悪意のあるステートをプッシュし、rootまたはSYSTEMレベルのアクセスを得ることができます。この手法は、通常の管理自動化と馴染むステルス性の高いコマンド実行を可能にします。
調査
このレポートは、不正なSalt MasterがAzure VMを制御するために設定されることを証明した攻撃の概念実証を示しています。調査によると、Salt Minion拡張はAzure CLIを通じて展開され、ポート4505と4506を介して通信するように設定されています。研究者は次に、 curl を使用してManaged Identityトークンを外部のインターラクションサービスに送信する悪意のあるSaltステートを実行します。
緩和策
組織はOwner、Contributor、Virtual Machine Contributorといった拡張権限書き込みを含む役割を厳密に制限するべきです。不正な拡張の展開を防ぐには、最小権限の原則を適用することが不可欠です。セキュリティチームはAzure Activity Logsを監視し、疑わしい仮想マシンの拡張書き込み動作や予期しないサードパーティ拡張のインストールをチェックするべきです。
対応
この活動が検出された場合、セキュリティチームは拡張展開に関与したIDの権限を即座に取り消すべきです。Azure Activity Logsを見直し、ソースIPアドレス、影響を受けたVM、および拡張設定を特定します。侵害されたシステムでエンドポイントのフォレンジックスを実施し、コマンド実行、盗まれた資格情報の特定、いかなる不正な永続化も検出します。
攻撃フロー
検出
Pythonが不審なプロセスを生成 (via process_creation)
表示
外部のインターラクションドメインへのリクエストによる不審なコマンド&コントロール (via dns)
表示
Azure VMでのコマンド実行 (via azureactivity)
表示
検出すべきIOC (SourceIP): サードパーティ拡張を使用したAzure VMコマンド実行 – Salt Minion
表示
検出すべきIOC (DestinationIP): サードパーティ拡張を使用したAzure VMコマンド実行 – Salt Minion
表示
不正なVM拡張のAzureへの展開の検出 [Azure Activity Logs]
表示
シミュレーション実行
前提条件: テレメトリー&ベースラインのプリフライトチェックをクリアする必要があります。
根拠: このセクションでは、検出ルールをトリガーするために設計された敵対者の手法 (TTP) の正確な実行を詳述します。コマンドと説明は、有識別のTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。抽象的または無関係な例は誤診を招きます。
-
攻撃の流れとコマンド: 敵対者はAzureテナント内で十分な権限を獲得しています(例: ‘Virtual Machine Contributor’ 役職を持つサービスプリンシパルまたはユーザーアカウントの侵害により)。標的VMに直接コマンドを実行するため、従来のSSH/RDPアクセスなしでの立ち上げと足場の確保を図ります。これにより、「Custom Script Extension」を配備することが選ばれます。この手法は、エンドポイントに基づくネットワーク制御を回避するのに非常に効果的です。敵対者は、Azure CLIコマンドを実行してターゲットVMに新しい拡張を「書き込む」ことを決定します。このアクションは、
MICROSOFT.COMPUTE/VIRTUALMACHINES/EXTENSIONS/WRITEの操作をAzure Activity Logsで引き起こし、これは私たちの検出ルールが捉えるために設計された正確なテレメトリです。 -
回帰テストスクリプト:
# シミュレーション: 'EXTENSIONS/WRITE' 検出ロジックをトリガーするためのダミー拡張の展開 # 変数を実際のテスト環境の値で置き換えてください RESOURCE_GROUP="TestRG" VM_NAME="TestVM" EXTENSION_NAME="MaliciousSaltMinionSim" echo "シミュレーション開始: $EXTENSION_NAME を $VM_NAME に展開中..." az vm extension set --resource-group $RESOURCE_GROUP --vm-name $VM_NAME --name $EXTENSION_NAME --publisher Microsoft.Azure.Extensions --settings '{"commandToExecute": "echo "シミュレーション成功" > /tmp/pwned.txt"}' echo "シミュレーションコマンド送信済み。MICROSOFT.COMPUTE/VIRTUALMACHINES/EXTENSIONS/WRITE をAzure Activity Logsで確認してください" -
クリーンアップコマンド:
# クリーンアップ: 環境を元の状態に戻すためにシミュレーションされた悪意のある拡張を削除 RESOURCE_GROUP="TestRG" VM_NAME="TestVM" EXTENSION_NAME="MaliciousSaltMinionSim" echo "クリーンアップ中: $EXTENSION_NAME を削除中..." az vm extension delete --resource-group $RESOURCE_GROUP --vm-name $VM_NAME --name $EXTENSION_NAME echo "クリーンアップ完了。"