implementing-siem-use-cases-for-detection について
SOC と検知エンジニアリングチーム向けに、SIEM の検知ユースケースを設計、テスト、展開、保守するスキルです。ATT&CK のカバレッジ分析、攻撃シミュレーション、ルールの健全性監視を扱います。
主な機能
- 01ATT&CK のカバレッジ不足を特定
- 02ユースケースを標準形式で記録
- 03複数 SIEM 向けの検知ロジック作成
- 04攻撃シミュレーションによるルールテスト
- 05有効性の監視とライフサイクル管理
活用シーン
- 01脅威評価の結果を検知ルールに変換
- 02コンプライアンス要件の検知能力を検証
- 03レッドチームの発見事項を本番検知に反映
- 04SIEM 移行時のユースケース変換と検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill implementing-siem-use-cases-for-detectionインストール後、Claude Code で/implementing-siem-use-cases-for-detectionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
SIEM ユースケースの実装による検知
使用するタイミング
このスキルは次のような場合に使用します:
- SOC チームが SIEM の検知ライブラリをゼロから構築または拡充する必要がある場合
- 脅威評価により、新しい検知ルールを必要とする ATT&CK テクニックのギャップが特定された場合
- 検知エンジニアが、ユースケースの設計、テスト、デプロイのための体系的なプロセスを必要とする場合
- コンプライアンス要件により特定の検知機能が義務付けられている場合(PCI DSS、HIPAA、SOX)
使用しないこと: 場当たり的なハンティングクエリには使用しないでください。ユースケースは、正式化され、テストされ、保守される検知ルールであり、探索的な検索ではありません。
前提条件
- 本番データを持つ SIEM プラットフォーム(Splunk ES、Elastic Security、または Microsoft Sentinel)
- ギャップ分析のための ATT&CK Navigator
- CIM/ECS フィールド標準に正規化されたログソース
- ユースケースのドキュメント化フレームワーク(Wiki、Git リポジトリ、または検知エンジニアリングプラットフォーム)
- 攻撃シミュレーションツールを備えたテスト環境(Atomic Red Team、MITRE Caldera)
ワークフロー
ステップ 1: 検知カバレッジのギャップを評価する
現在の検知ルールを ATT&CK にマッピングし、ギャップを特定します:
import json
# Load current detection rules mapped to ATT&CK
current_rules = [
{"name": "Brute Force Detection", "techniques": ["T1110.001", "T1110.003"]},
{"name": "Malware Hash Match", "techniques": ["T1204.002"]},
{"name": "Suspicious PowerShell", "techniques": ["T1059.001"]},
]
# Load ATT&CK Enterprise techniques
with open("enterprise-attack.json") as f:
attack = json.load(f)
all_techniques = set()
for obj in attack["objects"]:
if obj["type"] == "attack-pattern":
ext = obj.get("external_references", [])
for ref in ext:
if ref.get("source_name") == "mitre-attack":
all_techniques.add(ref["external_id"])
covered = set()
for rule in current_rules:
covered.update(rule["techniques"])
gaps = all_techniques - covered
print(f"Total techniques: {len(all_techniques)}")
print(f"Covered: {len(covered)} ({len(covered)/len(all_techniques)*100:.1f}%)")
print(f"Gaps: {len(gaps)}")
# Prioritize gaps by threat relevance
priority_techniques = [
"T1003", "T1021", "T1053", "T1547", "T1078",
"T1055", "T1071", "T1105", "T1036", "T1070"
]
priority_gaps = [t for t in priority_techniques if t in gaps]
print(f"Priority gaps: {priority_gaps}")
ステップ 2: ユースケース仕様を設計する
標準化されたテンプレートを使用して、各ユースケースを文書化します:
use_case_id: UC-2024-015
name: Credential Dumping via LSASS Access
description: Detects tools accessing LSASS process memory for credential extraction
mitre_attack:
tactic: Credential Access (TA0006)
technique: T1003.001 - LSASS Memory
data_sources:
- Process: OS API Execution (Sysmon EventCode 10)
- Process: Process Access (Windows Security 4663)
log_sources:
- index: sysmon, sourcetype: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
- index: wineventlog, sourcetype: WinEventLog:Security
severity: High
confidence: Medium-High
false_positive_sources:
- Antivirus products scanning LSASS
- CrowdStrike Falcon sensor
- Windows Defender ATP
- SCCM client
tuning_notes: >
Maintain exclusion list for known security tools that legitimately access LSASS.
Review exclusions quarterly for newly deployed security products.
sla: Alert within 5 minutes of detection
owner: detection_engineering_team
status: Production
created: 2024-03-15
last_tested: 2024-03-15
ステップ 3: プラットフォーム横断で検知ロジックを実装する
Splunk ES 相関検索:
| tstats summariesonly=true count from datamodel=Endpoint.Processes
where Processes.process_name="lsass.exe"
by Processes.dest, Processes.user, Processes.process_name,
Processes.parent_process_name, Processes.parent_process
| `drop_dm_object_name(Processes)`
| lookup lsass_access_whitelist parent_process AS parent_process OUTPUT is_whitelisted
| where isnull(is_whitelisted) OR is_whitelisted!="true"
| `credential_dumping_lsass_filter`
または、生の Sysmon データを使用する場合:
index=sysmon EventCode=10 TargetImage="*\\lsass.exe"
GrantedAccess IN ("0x1010", "0x1038", "0x1fffff", "0x40")
NOT [| inputlookup lsass_whitelist.csv | fields SourceImage]
| stats count, values(GrantedAccess) AS access_flags by Computer, SourceImage, SourceUser
| where count > 0
Elastic Security EQL ルール:
process where event.type == "access" and
process.name == "lsass.exe" and
not process.executable : (
"?:\\Windows\\System32\\svchost.exe",
"?:\\Windows\\System32\\csrss.exe",
"?:\\Program Files\\CrowdStrike\\*",
"?:\\ProgramData\\Microsoft\\Windows Defender\\*"
)
Microsoft Sentinel KQL ルール:
DeviceProcessEvents
| where Timestamp > ago(1h)
| where FileName == "lsass.exe"
| where ActionType == "ProcessAccessed"
| where InitiatingProcessFileName !in ("svchost.exe", "csrss.exe", "MsMpEng.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName,
InitiatingProcessCommandLine, AccountName
ステップ 4: 攻撃シミュレーションでテストする
Atomic Red Team を使用して検知ルールを検証します:
# Install Atomic Red Team
IEX (IWR 'https://raw.githubusercontent.com/redcanaryco/invoke-atomicredteam/master/install-atomicredteam.ps1' -UseBasicParsing)
Install-AtomicRedTeam -getAtomics
# Execute T1003.001 - Credential Dumping
Invoke-AtomicTest T1003.001 -TestNumbers 1,2,3
# Execute T1053.005 - Scheduled Task
Invoke-AtomicTest T1053.005 -TestNumbers 1
# Execute T1547.001 - Registry Run Key
Invoke-AtomicTest T1547.001 -TestNumbers 1,2
SIEM で検知を確認します:
index=sysmon EventCode=10 TargetImage="*\\lsass.exe"
earliest=-1h
| stats count by Computer, SourceImage, GrantedAccess
| where count > 0
テスト結果を文書化します:
TEST RESULTS — UC-2024-015
Atomic Test T1003.001-1 (Mimikatz): DETECTED (alert fired in 47s)
Atomic Test T1003.001-2 (ProcDump): DETECTED (alert fired in 32s)
Atomic Test T1003.001-3 (Task Manager): FALSE NEGATIVE (excluded by whitelist — expected)
False Positive Rate (7-day backtest): 2 events (CrowdStrike scan — added to whitelist)
ステップ 5: 検知を本番環境にデプロイし、ユースケースの状態を監視する
検知ルールの有効性を追跡します:
-- Use case firing frequency
index=notable
| stats count AS fires, dc(src) AS unique_sources,
dc(dest) AS unique_dests
by rule_name, status_label
| eval true_positive_rate = round(
sum(eval(if(status_label="Resolved - True Positive", 1, 0))) /
count * 100, 1)
| sort - fires
| table rule_name, fires, unique_sources, unique_dests, true_positive_rate
-- Detection latency monitoring
index=notable
| eval detection_latency = _time - orig_time
| stats avg(detection_latency) AS avg_latency_sec,
perc95(detection_latency) AS p95_latency_sec
by rule_name
| eval avg_latency_min = round(avg_latency_sec / 60, 1)
| sort - avg_latency_sec
ステップ 6: ユースケースライブラリを保守する
すべての検知ユースケースについて、ライフサイクル管理を確立します:
USE CASE LIFECYCLE
━━━━━━━━━━━━━━━━━━
1. PROPOSED → New detection need identified (threat intel, gap analysis, incident finding)
2. DEVELOPMENT → Query written, false positive analysis, tuning
3. TESTING → Atomic Red Team validation, 7-day backtest
4. STAGING → Deployed in alert-only mode (no incident creation) for 14 days
5. PRODUCTION → Full production with incident creation and SOAR integration
6. REVIEW → Quarterly review of effectiveness, false positive rate, relevance
7. DEPRECATED → Technique no longer relevant or replaced by better detection
主要な概念
| 用語 | 定義 |
|---|---|
| ユースケース | 文書化されたロジック、テスト、チューニング、ライフサイクル管理を備えた正式な検知ルール |
| 検知エンジニアリング | ソフトウェア開発の一分野として、SIEM 検知ルールを設計、テスト、保守する実践 |
| 相関検索 | 複数のソースからのイベントを組み合わせて攻撃パターンを特定する SIEM クエリ |
| 誤検知率 | 良性のアクティビティであるアラートの割合。本番用ユースケースでは 20% 未満を目標とする |
| 検知遅延 | イベント発生からアラート生成までの時間。重大な検知では 5 分未満を目標とする |
| ATT&CK カバレッジ | 本番用の検知ルールが少なくとも 1 つ存在する、関連する ATT&CK テクニックの割合 |
ツールとシステム
- Splunk ES: 相関検索、リスクベースアラート、Incident Review を備えたエンタープライズ SIEM
- Elastic Security: 検知ルール、EQL シーケンス、ML ベースの異常検知を備えた SIEM
- Microsoft Sentinel: KQL 分析ルール、Fusion ML エンジン、Lighthouse マルチテナントを備えたクラウド SIEM
- Atomic Red Team: ATT&CK テクニックに対して検知ルールをテストするための、オープンソースの攻撃シミュレーションフレームワーク
- ATT&CK Navigator: テクニック全体の検知カバレッジをマッピングおよび追跡するための MITRE の可視化ツール
一般的なシナリオ
- インシデント後のユースケース: ランサムウェアインシデント後、調査中に発見された初期アクセスベクトルに対する検知を構築する
- コンプライアンス主導: PCI DSS では管理者アカウントの不正使用の検知が求められるため、4672/4720/4732 イベントのユースケースを構築する
- 脅威インテリジェンス主導: 新しい APT グループが自社の業界を標的にしている場合、そのグループの文書化された TTP に対するユースケースを構築する
- レッドチームの発見事項: パープルチーム演習で死角が特定された場合、発見事項を本番用の検知ルールに変換する
- SIEM の移行: QRadar から Splunk に移行する場合、既存のすべてのユースケースを変換し、新しいプラットフォームで検証する
出力形式
USE CASE DEPLOYMENT REPORT
━━━━━━━━━━━━━━━━━━━━━━━━━
Quarter: Q1 2024
Total Use Cases: 147 (Production: 128, Staging: 12, Development: 7)
New Deployments This Quarter:
UC-2024-012 Kerberoasting Detection (T1558.003) — Production
UC-2024-013 DLL Side-Loading (T1574.002) — Production
UC-2024-014 Scheduled Task Persistence (T1053.005) — Production
UC-2024-015 LSASS Memory Access (T1003.001) — Staging
ATT&CK Coverage:
Overall: 67% of relevant techniques (up from 61%)
Initial Access: 78%
Execution: 82%
Persistence: 71%
Credential Access: 65%
Lateral Movement: 58% (priority gap area)
Health Metrics:
Avg True Positive Rate: 74% (target: >70%)
Avg Detection Latency: 2.3 min (target: <5 min)
Use Cases Deprecated: 3 (replaced by improved versions)
コメント
Markdown 対応