构建事件响应仪表板 是做什么的?
何时使用
在以下情况下使用此技能:
- 事件响应团队在活跃事件期间需要实时仪表板进行协调和跟踪
- SOC 领导层需要展示事件状态和分析人员工作负载的运营仪表板
- 事后复盘需要可视化时间线和影响评估
- 向管理层汇报时需要高级别的事件指标和趋势分析
不要在常规 SOC 监控仪表板中使用(应使用事件审核功能)——事件响应仪表板专为实时事件协调和管理报告设计。
前提条件
- SIEM 平台(Splunk 且含 Dashboard Studio、Elastic Kibana 或 Grafana)
- SIEM 中已有 Notable 事件和事件数据(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", "检测",
action_type="triage", "分类",
action_type="containment", "遏制",
action_type="eradication", "清除",
action_type="recovery", "恢复",
1=1, "其他"
)
| eval phase_color = case(
phase="检测", "#e74c3c",
phase="分类", "#f39c12",
phase="遏制", "#e67e22",
phase="清除", "#2ecc71",
phase="恢复", "#3498db"
)
| table _time, phase, action, analyst, details
示例时间线数据:
_time,action_type,action,analyst,details
2024-03-15 14:00,detection,告警触发 - 检测到 Cobalt Strike 信标,splunk_es,Notable 事件 NE-2024-08921
2024-03-15 14:12,triage,告警分类 - 确认真阳性,analyst_jdoe,信标哈希 VT 评分 52/72
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"), "活跃", "静默")
| 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 7 个系统已遏制 5 个
已遏制: 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)
业务影响:低 — 财务部门文件服务器离线,无面向客户的系统受影响