SOC Prime Bias: 中程度

01 12月 2025 20:34

AWS GuardDuty 検出器が無効化/停止 – 脅威検出ルール週報 #11-2025

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
AWS GuardDuty 検出器が無効化/停止 – 脅威検出ルール週報 #11-2025
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

このブログ記事は、GuardDuty Detector が削除、無効化、または停止されたときにアラートを出すために設計された AWS GuardDuty Detector の検出ルールを説明しています。期待される管理、テスト、攻撃者のシナリオを解説し、Sigma ルールのサンプルを含み、アラートを調査する方法を詳細に説明しています。このルールは、DeleteDetector および UpdateDetector API アクティビティをキャプチャする AWS CloudTrail レコードに基づいており、GuardDuty Detector の可視性を無効にしようとする試みを特定するのに役立ちます。

分析

このセクションでは、アナリストに DeleteDetector and UpdateDetector の GuardDuty API 呼び出しを確認し、アクションが成功したかどうかを検証し、それらを発行した IAM ユーザーまたはロールを特定し、他の疑わしいイベントとの時刻を関連付けることを推奨します。また、検知器の変更前に生成された最近の GuardDuty 所見を確認し、操作を実行したアカウントに割り当てられた IAM 権限を評価することを推奨します。

緩和策

緩和策として、GuardDuty Detector をすぐに有効な状態に復元し、IAM ポリシーを強化し、厳格に管理されたロールのみに DeleteDetector and UpdateDetector API 呼び出しの使用を許可し、GuardDuty の設定変更に AWS Config を利用して通知し、正当な検出器の削除に対して正式な変更管理を施行することを推奨します。さらに、GuardDuty Detector を誤って削除することを防ぐために自動化とスクリプトをレビューすることが推奨されます。

対応

そのような悪意のある活動が検出された場合、セキュリティチームはリクエストが承認されているかどうかを確認し、直ちに GuardDuty Detector を再有効化し、潜在的に侵害されたリソースを隔離し、主要な関係者に通知し、将来的な未許可の検出器の変更リスクを減少させるためにモニタリングとアクセス制御を強化すべきです。

mermaid graph TB %% Class definitions classDef technique fill:#ffcc99 classDef action fill:#99ccff classDef builtin fill:#cccccc %% Technique nodes tech_valid_accounts[“<b>Technique</b> – <b>T1078 Valid Accounts</b><br /><b>説明</b>: 攻撃者が侵害された資格情報を取得してアカウントにアクセスします”] class tech_valid_accounts technique tech_impair_defenses[“<b>Technique</b> – <b>T1562 Impair Defenses</b><br /><b>説明</b>: 攻撃者がセキュリティツールやメカニズムを無効にしようとします”] class tech_impair_defenses technique tech_clear_persistence[“ÅÅ<b>Technique</b> – <b>T1070.009 Clear Persistence</b><br /><b>説明</b>: 攻撃者が持続性や以前の活動を示すアーティファクトを削除します”] class tech_clear_persistence technique %% Action nodes action_obtain_credentials[“<b>Action</b> – guardduty:DeleteDetector/UpdateDetector 権限を持つ侵害された IAM 資格情報を取得”] class action_obtain_credentials action action_disable_gd[“<b>Action</b> – API 呼び出しで GuardDuty detector を削除または更新”] class action_disable_gd action action_remove_alerts[“<b>Action</b> – GuardDuty アラートとログを削除し、検出証拠を排除”] class action_remove_alerts action %% Connections showing attack flow tech_valid_accounts u002du002d>|有効化され| action_obtain_credentials action_obtain_credentials u002du002d>|実行するために使用| tech_impair_defenses tech_impair_defenses u002du002d>|使用する| action_disable_gd action_disable_gd u002du002d>|につながる| tech_clear_persistence tech_clear_persistence u002du002d>|促進する| action_remove_alerts

攻撃の流れ

シミュレーションの実行

前提条件: テレメトリー & ベースラインの事前チェックが合格していること。

  • 攻撃のシナリオとコマンド:

    特権のある AWS 認証情報(例: AdministratorAccess)を入手した敵対者は、GuardDuty のモニタリングを削除することで悪意のある活動を隠すことを目指しています。攻撃者はまず既存の GuardDuty 検出器 ID を特定し、その後検出器を完全に削除するか、無効にするために更新します。どちらの操作も、Sigma ルールに一致する CloudTrail イベントを生成します。

  • リグレッションテストスクリプト:

    #!/usr/bin/env bash
    # =============================================================================
    # シミュレーションスクリプト – T1562.008: GuardDuty Detector の無効化または削除
    # 前提条件:
    #   - AWS CLI v2 がインストールされ、GuardDuty 管理権限を持つ認証情報で設定されていること
    #   - JSON 解析用に jq がインストールされていること
    # =============================================================================
    
    set -euo pipefail
    
    REGION="us-east-1"
    
    echo "[*] GuardDuty 検出器 ID を発見中..."
    DETECTOR_ID=$(aws guardduty list-detectors --region "$REGION" --output json | jq -r '.DetectorIds[0]')
    
    if [[ -z "$DETECTOR_ID" || "$DETECTOR_ID" == "null" ]]; then
        echo "[!] リージョン $REGION に GuardDuty 検出器がありません。終了します。"
        exit 1
    fi
    echo "[+] 検出器 ID: $DETECTOR_ID"
    
    # -------------------------------------------------------------------------
    # オプション 1: 検出器を削除する(DeleteDetector イベントを生成)
    # -------------------------------------------------------------------------
    echo "[*] T1562.008 をシミュレートするために GuardDuty 検出器を削除中..."
    aws guardduty delete-detector 
        --detector-id "$DETECTOR_ID" 
        --region "$REGION"
    echo "[+] DeleteDetector 呼び出しを発行しました。"
    
    # -------------------------------------------------------------------------
    # オプション 2: 検出器を無効化する(enable=false で UpdateDetector を生成)
    # -------------------------------------------------------------------------
    # Delete の代わりに UpdateDetector パスをテストするには、以下のブロックをアンコメントします。
    #: <<'DISABLE_BLOCK'
    #echo "[*] GuardDuty 検出器を無効化中(代替パス)..."
    #aws guardduty update-detector 
    #    --detector-id "$DETECTOR_ID" 
    #    --region "$REGION" 
    #    --enable false
    #echo "[+] UpdateDetector (enable=false) 呼び出しを発行しました。"
    #: DISABLE_BLOCK
    
    echo "[*] シミュレーションが完了しました。DeleteDetector または UpdateDetector イベントの SIEM アラートを確認してください。"
  • クリーンアップコマンド:

    #!/usr/bin/env bash
    # GuardDuty 検出器を再作成(削除された場合)または再有効化(無効化された場合)
    
    REGION="us-east-1"
    
    # 検出器が存在するかどうかを確認
    EXISTING=$(aws guardduty list-detectors --region "$REGION" --output json | jq -r '.DetectorIds | length')
    
    if [[ "$EXISTING" -eq 0 ]]; then
        echo "[*] GuardDuty 検出器が見つかりませんでした - 新しいものを作成中..."
        aws guardduty create-detector --region "$REGION" --enable true
        echo "[+] 新しい GuardDuty 検出器が作成され有効化されました。"
    else
        DETECTOR_ID=$(aws guardduty list-detectors --region "$REGION" --output json | jq -r '.DetectorIds[0]')
        echo "[*] 既存の検出器 $DETECTOR_ID を再有効化中..."
        aws guardduty update-detector 
            --detector-id "$DETECTOR_ID" 
            --region "$REGION" 
            --enable true
        echo "[+] 検出器 $DETECTOR_ID が再有効化されました。"
    fi