建置事件回應儀表板
使用時機
在以下情況使用此技能:
- IR 團隊在進行中的事件期間,需要即時儀表板進行協調與追蹤
- SOC 領導階層需要呈現事件狀態和分析師工作量的營運儀表板
- 事後檢討需要視覺化的時間軸與影響評估
- 高階主管簡報需要高層級的事件指標與趨勢分析
請勿將此用於日常 SOC 監控儀表板(請改用 Incident Review)——IR 儀表板專為進行中事件的協調與管理報告而設計。
先決條件
- SIEM 平台(Splunk Dashboard Studio、Elastic Kibana 或 Grafana)
- SIEM 中的 Notable Event 和事件資料(Splunk ES incident_review 索引)
- 工單系統整合(ServiceNow、Jira)以進行補救追蹤
- 用於脈絡強化的資產與身分查詢表格
- 儀表板發布權限,以便分發給 SOC 團隊與管理階層
工作流程
步驟 1:設計進行中事件儀表板佈局
使用 Splunk Dashboard Studio 建置進行中事件追蹤儀表板:
<dashboard version="2" theme="dark">
<label>進行中事件回應儀表板</label>
<description>IR-2024-0450 即時追蹤</description>
<row>
<panel>
<title>事件摘要</title>
<single>
<search>
<query>
| makeresults
| eval incident_id="IR-2024-0450",
status="CONTAINMENT",
severity="Critical",
affected_hosts=7,
contained_hosts=5,
iocs_identified=23,
hours_elapsed=round((now()-strptime("2024-03-15 14:00","%Y-%m-%d %H:%M"))/3600,1)
| table incident_id, status, severity, affected_hosts, contained_hosts, iocs_identified, hours_elapsed
</query>
</search>
</single>
</panel>
</row>
</dashboard>
步驟 2:建置即時受影響系統面板
追蹤受影響系統及其隔離狀態:
| inputlookup ir_affected_systems.csv
| eval status_color = case(
status="Contained", "#2ecc71",
status="Compromised", "#e74c3c",
status="Investigating", "#f39c12",
status="Recovered", "#3498db",
1=1, "#95a5a6"
)
| stats count by status
| eval order = case(status="Compromised", 1, status="Investigating", 2,
status="Contained", 3, status="Recovered", 4)
| sort order
| table status, count
--- 詳細主機表格
| inputlookup ir_affected_systems.csv
| lookup asset_lookup_by_cidr ip AS host_ip OUTPUT category, owner, priority
| table hostname, host_ip, category, owner, status, containment_time,
compromise_vector, analyst_assigned
| sort status, hostname
步驟 3:建置 IOC 追蹤面板
監控 IOC 在環境中的散佈情況:
--- 事件期間識別出的 IOC
index=* (src_ip IN ("185.234.218.50", "45.77.123.45") OR
dest IN ("evil-c2.com", "malware-drop.com") OR
file_hash IN ("a1b2c3d4...", "e5f6a7b8..."))
earliest="2024-03-14"
| stats count AS hits, dc(src_ip) AS unique_sources,
dc(dest) AS unique_dests, latest(_time) AS last_seen
by sourcetype
| sort - hits
--- IOC 時間軸
index=* (src_ip IN ("185.234.218.50") OR dest="evil-c2.com")
earliest="2024-03-14"
| timechart span=1h count by sourcetype
--- 新 IOC 發現追蹤
| inputlookup ir_ioc_list.csv
| stats count by ioc_type, source, discovery_time
| sort discovery_time
| table discovery_time, ioc_type, ioc_value, source, status
步驟 4:建置應變時間軸面板
建立按時間順序排列的事件時間軸:
| inputlookup ir_timeline.csv
| sort _time
| eval phase = case(
action_type="detection", "Detection",
action_type="triage", "Triage",
action_type="containment", "Containment",
action_type="eradication", "Eradication",
action_type="recovery", "Recovery",
1=1, "Other"
)
| eval phase_color = case(
phase="Detection", "#e74c3c",
phase="Triage", "#f39c12",
phase="Containment", "#e67e22",
phase="Eradication", "#2ecc71",
phase="Recovery", "#3498db"
)
| table _time, phase, action, analyst, details
範例時間軸資料:
_time,action_type,action,analyst,details
2024-03-15 14:00,detection,警報觸發 - 檢測到 Cobalt Strike 信標,splunk_es,Notable event NE-2024-08921
2024-03-15 14:12,triage,警報分級 - 確認為真陽性,analyst_jdoe,VT score 52/72 on beacon hash
2024-03-15 14:23,containment,主機 WORKSTATION-042 已隔離,analyst_jdoe,CrowdStrike 網路隔離
2024-03-15 14:35,containment,防火牆已封鎖 C2 網域,analyst_msmith,Palo Alto 規則已部署
2024-03-15 15:00,eradication,啟動全企業 IOC 掃描,analyst_jdoe,Splunk 搜尋所有索引
2024-03-15 15:30,containment,識別並隔離 3 台額外主機,analyst_msmith,已確認橫向移動
2024-03-15 16:00,eradication,已從所有受影響主機移除惡意軟體,analyst_tier3,CrowdStrike RTR 清理
2024-03-15 18:00,recovery,系統已還原並開始監控,analyst_msmith,已啟動 72 小時監控期
步驟 5:建置 SOC 營運儀表板
追蹤整體 SOC 績效指標:
--- 依嚴重性分類的事件數量(過去 30 天)
index=notable earliest=-30d
| stats count by urgency
| eval order = case(urgency="critical", 1, urgency="high", 2, urgency="medium", 3,
urgency="low", 4, urgency="informational", 5)
| sort order
--- MTTD(平均偵測時間)
index=notable earliest=-30d status_label="Resolved*"
| eval mttd_minutes = round((time_of_first_event - orig_time) / 60, 1)
| stats avg(mttd_minutes) AS avg_mttd, median(mttd_minutes) AS med_mttd,
perc95(mttd_minutes) AS p95_mttd
--- MTTR(平均應變/解決時間)
index=notable earliest=-30d status_label="Resolved*"
| eval mttr_hours = round((status_end - _time) / 3600, 1)
| stats avg(mttr_hours) AS avg_mttr, median(mttr_hours) AS med_mttr by urgency
--- 分析師工作量分配
index=notable earliest=-7d
| stats count by owner
| sort - count
--- 警報處置分類
index=notable earliest=-30d status_label IN ("Resolved*", "Closed*")
| stats count by disposition
| eval percentage = round(count / sum(count) * 100, 1)
| sort - count
步驟 6:建置高階主管簡報儀表板
為重大事件期間的管理階層建立高層級儀表板:
--- 高階主管摘要面板
| makeresults
| eval metrics = "業務影響:1 台檔案伺服器離線(財務部門),"
."預計恢復時間:4 小時,"
."資料遺失風險:低(備份已驗證),"
."客戶影響:無,"
."法規通報:不需要(已確認無 PII 外洩)"
--- 趨勢比較(本月 vs 上月)
index=notable earliest=-60d
| eval period = if(_time > relative_time(now(), "-30d"), "本月", "上月")
| stats count by period, urgency
| chart sum(count) AS incidents by period, urgency
--- 主要威脅類別
index=notable earliest=-30d
| top rule_name limit=10
| table rule_name, count, percent
步驟 7:自動化儀表板更新
使用 Splunk 排程搜尋來維護儀表板資料:
--- 排程搜尋以更新受影響系統查閱檔案(每 5 分鐘執行一次)
index=* (src_ip IN [| inputlookup ir_ioc_list.csv | search ioc_type="ip"
| fields ioc_value | rename ioc_value AS src_ip])
earliest=-1h
| stats latest(_time) AS last_seen, count AS event_count,
values(sourcetype) AS data_sources by src_ip
| eval status = if(last_seen > relative_time(now(), "-15m"), "Active", "Dormant")
| outputlookup ir_affected_systems_auto.csv
關鍵概念
| 術語 | 定義 |
|---|---|
| 態勢感知 | 即時了解事件範圍、受影響系統與應變進度 |
| MTTD | 平均偵測時間 — 從威脅發生到 SOC 警報產生的平均時間 |
| MTTR | 平均應變時間 — 從警報產生到事件解決或隔離的平均時間 |
| 隔離率 | 成功隔離的受影響系統相對於總受損系統的百分比 |
| 燃盡圖 | 事件期間,隨時間推移追蹤剩餘開放調查任務的視覺化圖表 |
| 高階主管簡報 | 非技術性的摘要儀表板,顯示業務影響、時間軸與恢復狀態 |
工具與系統
- Splunk Dashboard Studio:現代儀表板框架,具備拖放式視覺化與即時資料功能
- Elastic Kibana Dashboard:視覺化平台,提供 Lens、Maps 和 Canvas 以建置安全儀表板
- Grafana:開放原始碼視覺化平台,支援包括 Elasticsearch 和 Splunk 在內的多種資料來源
- Microsoft Sentinel Workbooks:Azure 原生儀表板框架,搭配以 Kusto 為基礎的分析視覺化
- TheHive:開放原始碼事件回應平台,內建案件追蹤與指標儀表板
常見場景
- 進行中的勒索軟體事件:顯示加密散佈、隔離狀態、備份驗證、恢復進度的儀表板
- 資料外洩調查:追蹤受影響資料儲存庫、外洩量、通報要求的儀表板
- 釣魚郵件活動應變:顯示收件人數、點擊率、憑證外洩、補救狀態的儀表板
- 每月 SOC 報告:顯示事件趨勢、MTTD/MTTR 指標、分析師績效的管理儀表板
- 合規稽核:展示偵測覆蓋率、應變 SLA 遵循情況及事件結案指標的儀表板
輸出格式
事件回應儀表板 — IR-2024-0450
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
狀態:隔離階段(已過 6 小時 30 分)
受影響系統: 隔離進度:
已受損: 2 [==========----------] 71%
調查中: 1 5 / 7 個系統已隔離
已隔離: 3
已恢復: 1
IOC 摘要: 應變時間軸:
IP: 4 14:00 — 警報觸發
網域: 2 14:12 — 確認惡意
雜湊值: 3 14:23 — 第一台主機隔離
URL: 5 15:00 — 啟動企業掃描
電子郵件:1 15:30 — 再隔離 3 台主機
關鍵指標:
MTTD: 12 分鐘
MTTC: 23 分鐘(第一台主機)
活躍分析師:3 人(第 2 級:2 人,第 3 級:1 人)
業務影響:低 — 財務部門檔案伺服器離線,無面向客戶的系統受影響