performing-purple-team-exercise について
攻撃手法のシミュレーションを通じて、防御側の検知能力を検証する紫チーム演習のスキルガイドです。赤チームと青チームが連携し、アラートの網羅性や遅延を測定して検知ギャップを修正し、改善を再テストします。
主な機能
- 01ATT&CKの手法に沿ったテスト計画
- 02許可された攻撃シミュレーションの実施
- 03SIEMアラートのリアルタイム監視
- 04検知結果と遅延の測定
- 05検知ギャップの修正と再テスト
活用シーン
- 01定期演習で検知ルールを検証
- 02SIEMやEDR変更後に網羅性を確認
- 03連携シミュレーションによるアナリスト訓練
- 04インシデント後に検知改善を検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-purple-team-exerciseインストール後、Claude Code で/performing-purple-team-exerciseを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
パープルチーム演習の実施
使用するタイミング
次の場合にこのスキルを使用します:
- SOC チームが、検知ルールが対象とする脅威を実際に検知できるか検証する必要がある
- レッドチーム評価で得られた調査結果を、検知の改善につなげる必要がある
- 新しい検知ツールの導入や SIEM の移行に伴い、検知カバレッジの検証が必要である
- アナリストのトレーニングで、実際の攻撃手法と SIEM の応答を実践的に経験する必要がある
- 四半期または半年ごとの検知検証サイクルが予定されている
使用しないでください:事前告知のないレッドチーム活動には使用しないでください。パープルチーム演習には、攻撃側と防御側の明示的な連携とリアルタイムの共同作業が必要です。
前提条件
- レッドチームの実施能力:社内チームまたは契約したパープルチームのオペレーター
- 攻撃シミュレーションツール:Atomic Red Team、MITRE Caldera、または C2 フレームワーク(許可済み)
- 演習中にアラートをリアルタイムで監視するための SIEM アクセス
- 想定されるアラート名が記載された、ATT&CK にマッピング済みの検知ルール一覧
- 隔離されたテスト環境、または変更管理の承認を得た本番環境の範囲
- リアルタイムのレッドチーム・ブルーチーム連携用コミュニケーションチャネル(Slack/Teams)
ワークフロー
ステップ 1:演習の範囲と目的を定義する
演習のパラメーターを文書化します:
purple_team_exercise:
exercise_id: PT-2024-Q1
date: 2024-03-20
duration: 8 hours (09:00-17:00 UTC)
scope:
environment: Production (Finance VLAN, 10.0.5.0/24)
systems_in_scope:
- WORKSTATION-TEST01 (10.0.5.100) — Test endpoint
- DC-TEST (10.0.5.200) — Test domain controller
- FILESERVER-TEST (10.0.5.201) — Test file server
systems_excluded:
- All production domain controllers
- Customer-facing systems
objectives:
- Validate 15 detection rules mapped to FIN7 TTPs
- Test SOC analyst response to real attack indicators
- Identify detection gaps for credential access and lateral movement
- Measure detection latency for each technique
threat_scenario: FIN7 campaign targeting financial data via spearphishing
authorization: Approved by CISO, Change Request CR-2024-0567
communication: #purple-team-2024q1 Slack channel
ステップ 2:ATT&CK にマッピングしたテスト計画を作成する
手法ごとのテストマトリックスを作成します:
| # | ATT&CK ID | 手法 | テストツール | 想定される検知 | ブルーチームの指標 |
|---|---|---|---|---|---|
| 1 | T1566.001 | スピアフィッシング添付ファイル | 手動メール | メールゲートウェイのアラート | 検知の有無、遅延 |
| 2 | T1204.002 | ユーザーによる実行 | マクロ文書 | Sysmon のプロセス作成 | 検知の有無、遅延 |
| 3 | T1059.001 | PowerShell | Atomic RT #1-3 | PowerShell 実行アラート | 検知の有無、遅延 |
| 4 | T1053.005 | スケジュール済みタスク | Atomic RT | スケジュール済みタスク作成アラート | 検知の有無、遅延 |
| 5 | T1547.001 | レジストリ実行キー | Atomic RT | レジストリ変更アラート | 検知の有無、遅延 |
| 6 | T1003.001 | LSASS メモリ | Mimikatz | 認証情報ダンプのアラート | 検知の有無、遅延 |
| 7 | T1550.002 | Pass-the-Hash | Mimikatz | NTLM の異常検知 | 検知の有無、遅延 |
| 8 | T1021.002 | SMB/PsExec | PsExec | PsExec サービス作成アラート | 検知の有無、遅延 |
| 9 | T1047 | WMI | wmic /node | WMI リモート実行アラート | 検知の有無、遅延 |
| 10 | T1021.001 | RDP | xfreerdp | RDP 横展開アラート | 検知の有無、遅延 |
| 11 | T1071.001 | Web C2 | Cobalt Strike | C2 ビーコンの検知 | 検知の有無、遅延 |
| 12 | T1041 | C2 によるデータ窃取 | Rclone | データ窃取アラート | 検知の有無、遅延 |
| 13 | T1490 | 復旧の妨害 | vssadmin | シャドウコピー削除アラート | 検知の有無、遅延 |
| 14 | T1486 | データの暗号化 | テスト用暗号化 | 大量暗号化の検知 | 検知の有無、遅延 |
| 15 | T1070.001 | ログの消去 | wevtutil | ログ消去の検知 | 検知の有無、遅延 |
ステップ 3:レッドチームの手法を実行する
Atomic Red Team(または手動実行)を使用して、各手法を実行します:
# Install Atomic Red Team
IEX (IWR 'https://raw.githubusercontent.com/redcanaryco/invoke-atomicredteam/master/install-atomicredteam.ps1' -UseBasicParsing)
Install-AtomicRedTeam -getAtomics
# Test 1: T1059.001 — PowerShell Execution
Write-Host "[$(Get-Date -Format 'HH:mm:ss')] Executing T1059.001 - PowerShell"
Invoke-AtomicTest T1059.001 -TestNumbers 1
# Notify blue team: "T1059.001 executed at $(Get-Date)"
# Test 2: T1053.005 — Scheduled Task Creation
Write-Host "[$(Get-Date -Format 'HH:mm:ss')] Executing T1053.005 - Scheduled Task"
Invoke-AtomicTest T1053.005 -TestNumbers 1
# Test 3: T1547.001 — Registry Run Key
Write-Host "[$(Get-Date -Format 'HH:mm:ss')] Executing T1547.001 - Registry Persistence"
Invoke-AtomicTest T1547.001 -TestNumbers 1,2
# Test 4: T1003.001 — Credential Dumping
Write-Host "[$(Get-Date -Format 'HH:mm:ss')] Executing T1003.001 - LSASS Access"
Invoke-AtomicTest T1003.001 -TestNumbers 1,2
# Test 5: T1490 — Shadow Copy Deletion
Write-Host "[$(Get-Date -Format 'HH:mm:ss')] Executing T1490 - Inhibit Recovery"
Invoke-AtomicTest T1490 -TestNumbers 1
# Cleanup after each test
Invoke-AtomicTest T1059.001 -TestNumbers 1 -Cleanup
Invoke-AtomicTest T1053.005 -TestNumbers 1 -Cleanup
Invoke-AtomicTest T1547.001 -TestNumbers 1,2 -Cleanup
ステップ 4:ブルーチームの検知をリアルタイムで監視する
ブルーチームは実行中に SIEM を監視します:
--- Real-time purple team monitoring dashboard
index=notable earliest=-1h
| where Computer IN ("WORKSTATION-TEST01", "DC-TEST", "FILESERVER-TEST")
OR src IN ("10.0.5.100", "10.0.5.200", "10.0.5.201")
| eval detection_latency = _time - orig_time
| eval latency_seconds = round(detection_latency, 0)
| sort _time
| table _time, rule_name, urgency, src, dest, user, latency_seconds
--- Check specific technique detection
index=sysmon Computer="WORKSTATION-TEST01" earliest=-15m
(EventCode=1 OR EventCode=3 OR EventCode=10 OR EventCode=11 OR EventCode=13)
| sort _time
| table _time, EventCode, Image, CommandLine, TargetFilename, TargetObject
結果をリアルタイムで記録します:
exercise_results = {
"exercise_id": "PT-2024-Q1",
"results": [
{
"technique": "T1059.001",
"name": "PowerShell Execution",
"execution_time": "09:15:00",
"detected": True,
"alert_name": "Suspicious PowerShell Encoded Command",
"detection_time": "09:15:47",
"latency_seconds": 47,
"notes": "Detected via Sysmon EventCode 1 with encoded command pattern"
},
{
"technique": "T1003.001",
"name": "LSASS Memory Access",
"execution_time": "10:30:00",
"detected": False,
"alert_name": None,
"detection_time": None,
"latency_seconds": None,
"notes": "GAP: No detection rule for LSASS access. Sysmon EventCode 10 present but no correlation rule."
}
]
}
ステップ 5:共同でギャップを修正する
ギャップが見つかるたびに、ブルーチームは直ちに検知ルールを作成します:
--- Gap: T1003.001 — No LSASS access detection
--- Build rule during exercise
index=sysmon EventCode=10 TargetImage="*\\lsass.exe"
GrantedAccess IN ("0x1010", "0x1038", "0x1fffff", "0x40")
NOT SourceImage IN ("*\\svchost.exe", "*\\csrss.exe", "*\\MsMpEng.exe")
| stats count by Computer, SourceImage, SourceUser, GrantedAccess
| where count > 0
作成後、再テストします:
Red Team: "Re-executing T1003.001 at 11:45"
Blue Team: "Confirmed — alert 'LSASS Memory Access Detected' fired at 11:45:32 (32s latency)"
Result: GAP CLOSED
ステップ 6:演習レポートを作成する
def generate_purple_team_report(results):
total = len(results["results"])
detected = sum(1 for r in results["results"] if r["detected"])
gaps = sum(1 for r in results["results"] if not r["detected"])
avg_latency = sum(r["latency_seconds"] for r in results["results"]
if r["latency_seconds"]) / max(detected, 1)
report = f"""
PURPLE TEAM EXERCISE REPORT — {results['exercise_id']}
{'=' * 60}
SUMMARY:
Techniques Tested: {total}
Detected: {detected} ({detected/total*100:.0f}%)
Gaps Identified: {gaps} ({gaps/total*100:.0f}%)
Avg Detection Latency: {avg_latency:.0f} seconds
DETAILED RESULTS:
"""
for r in results["results"]:
status = "DETECTED" if r["detected"] else "GAP"
latency = f"{r['latency_seconds']}s" if r["latency_seconds"] else "N/A"
report += f" [{status}] {r['technique']} — {r['name']} (Latency: {latency})\n"
if not r["detected"]:
report += f" Action: {r['notes']}\n"
return report
主な概念
| 用語 | 定義 |
|---|---|
| パープルチーム | 攻撃側(レッドチーム)と防御側(ブルーチーム)が協力して、検知を検証し改善する演習です |
| 敵対者エミュレーション | 防御能力をテストするため、特定の脅威アクターのTTPを体系的にシミュレーションすることです |
| 検知の検証 | 対象の手法が実行された際に、検知ルールが正しく作動することを確認するプロセスです |
| 検知レイテンシ | 手法の実行からSIEMアラートの生成までの時間です。パープルチーム演習中に測定します |
| ギャップの修正 | テスト中に検知できなかった手法について、検知ルールをただちに作成または調整することです |
| Atomic Red Team | 個々のATT&CK手法を対象とした、小規模で目的を絞ったテストのオープンソースライブラリです |
ツールとシステム
- Atomic Red Team:Red Canaryが提供するオープンソースの攻撃テストライブラリです。手法ごとの検証に使用します
- MITRE Caldera:ATT&CKにマッピングされた攻撃チェーンに対応する、自動化された敵対者エミュレーションプラットフォームです
- Vectr:演習結果と検知範囲の改善状況を追跡する、パープルチーム管理プラットフォームです
- Prelude Operator:複数段階の攻撃シナリオの自動化に対応する、敵対者エミュレーションツールです
- AttackIQ:継続的な検知検証に使用する、侵害および攻撃シミュレーション(BAS)プラットフォームです
一般的なシナリオ
- 四半期ごとの検証:上位20件の検知ルールをATT&CK手法に対してテストし、有効性が維持されていることを確認します
- 新しいツールの検証:新しいEDRの導入後、ベースラインの手法に対する検知範囲を検証します
- アナリストのトレーニング:経験豊富な担当者のSIEM調査に関する指導を受けながら、ジュニアアナリストが実際の攻撃をリアルタイムで観察します
- インシデント発生後の検証:実際のインシデント後に攻撃チェーンをエミュレーションし、検知の改善状況を確認します
- コンプライアンスの証跡:SOC 2、ISO 27001、またはPCI DSSの監査向けに、検知検証の結果を記録します
出力形式
PURPLE TEAM EXERCISE REPORT — PT-2024-Q1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Date: 2024-03-20 (09:00-17:00 UTC)
Scenario: FIN7 Financial Sector Campaign
Scope: Finance VLAN (10.0.5.0/24)
RESULTS:
Techniques Tested: 15
Detected: 11 (73%)
Gaps Identified: 4 (27%)
Gaps Remediated Same Day: 3
Avg Detection Latency: 38 seconds
DETAILED RESULTS:
[PASS] T1566.001 Spearphishing Attachment — 12s latency
[PASS] T1204.002 User Execution (Macro) — 8s latency
[PASS] T1059.001 PowerShell Execution — 47s latency
[PASS] T1053.005 Scheduled Task — 23s latency
[PASS] T1547.001 Registry Run Keys — 31s latency
[FAIL] T1003.001 LSASS Memory Access — REMEDIATED during exercise
[FAIL] T1550.002 Pass-the-Hash — REMEDIATED during exercise
[PASS] T1021.002 PsExec — 15s latency
[PASS] T1047 WMI Remote Execution — 42s latency
[PASS] T1021.001 RDP Lateral Movement — 28s latency
[FAIL] T1071.001 Web C2 Beaconing — REMEDIATED during exercise
[PASS] T1041 Exfiltration over C2 — 67s latency
[PASS] T1490 Shadow Copy Deletion — 5s latency
[FAIL] T1486 Data Encryption for Impact — OPEN — requires endpoint telemetry
[PASS] T1070.001 Event Log Clearing — 11s latency
POST-EXERCISE COVERAGE: 93% (14/15) — up from 73% at start
REMAINING GAP: T1486 requires EDR file monitoring enhancement
コメント
Markdown 対応