L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

building-incident-response-dashboard

building-incident-response-dashboard

在 Splunk、Elastic 或 Grafana 中构建实时事件响应(Incident Response)仪表盘,为安全运营中心(SOC)分析师和领导层提供主动事件处理过程中的态势感知(Situational Awareness),追踪受影响系统、遏制状态、失陷指标(IOC)扩散和响应时间线。适用于 IR 团队在事件协调和事后报告期间需要统一可见性的场景。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: building-incident-response-dashboard description: > 在 Splunk、Elastic 或 Grafana 中构建实时事件响应(Incident Response)仪表盘,为安全运营中心(SOC)分析师和领导层提供主动事件处理过程中的态势感知(Situational Awareness),追踪受影响系统、遏制状态、失陷指标(IOC)扩散和响应时间线。适用于 IR 团队在事件协调和事后报告期间需要统一可见性的场景。 domain: cybersecurity subdomain: soc-operations tags: [soc, dashboard, incident-response, splunk, visualization, situational-awareness, metrics] version: "1.0" author: mahipal license: Apache-2.0

构建事件响应仪表盘

适用场景

在以下情况使用本技能:

  • IR 团队在主动事件处理期间需要实时仪表盘进行协调和跟踪
  • SOC 领导层需要展示事件状态和分析师工作负载的运营仪表盘
  • 事后审查需要可视化时间线和影响评估
  • 高管汇报需要高级别的事件指标和趋势分析

不适用于日常 SOC 监控仪表盘(应使用事件审查功能)——IR 仪表盘专为主动事件协调和管理报告而设计。

前置条件

  • SIEM 平台(带有 Dashboard Studio 的 Splunk、Elastic Kibana 或 Grafana)
  • SIEM 中的重要事件和事件数据(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, "其他"
  )
| 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,Alert triggered - Cobalt Strike beacon detected,splunk_es,Notable event NE-2024-08921
2024-03-15 14:12,triage,Alert triaged - confirmed true positive,analyst_jdoe,VT score 52/72 on beacon hash
2024-03-15 14:23,containment,Host WORKSTATION-042 isolated,analyst_jdoe,CrowdStrike network isolation
2024-03-15 14:35,containment,C2 domain blocked on firewall,analyst_msmith,Palo Alto rule deployed
2024-03-15 15:00,eradication,Enterprise-wide IOC scan initiated,analyst_jdoe,Splunk search across all indices
2024-03-15 15:30,containment,3 additional hosts identified and isolated,analyst_msmith,Lateral movement confirmed
2024-03-15 16:00,eradication,Malware removed from all affected hosts,analyst_tier3,CrowdStrike RTR cleanup
2024-03-15 18:00,recovery,Systems restored and monitored,analyst_msmith,72-hour monitoring period started

步骤 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 暴露)"

--- 趋势对比(本月与上月)
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

核心概念

术语定义
态势感知(Situational Awareness)实时了解事件范围、受影响系统和响应进展
MTTD平均检测时间(Mean Time to Detect)——从威胁发生到 SOC 告警生成的平均时间
MTTR平均响应时间(Mean Time to Respond)——从告警到事件解决或遏制的平均时间
遏制率(Containment Rate)相对于已被攻陷的系统总数,成功隔离的受影响系统百分比
燃尽图(Burn-Down Chart)事件期间随时间推移跟踪剩余未完成调查任务的可视化图表
高管汇报(Executive Briefing)显示业务影响、时间线和恢复状态的非技术性摘要仪表盘

工具与系统

  • Splunk Dashboard Studio:具有拖放可视化和实时数据的现代仪表盘框架
  • Elastic Kibana Dashboard:具有 Lens、Maps 和 Canvas 的可视化平台,用于安全仪表盘
  • Grafana:支持包括 Elasticsearch 和 Splunk 在内的多种数据源的开源可视化平台
  • Microsoft Sentinel Workbooks:基于 Kusto 的分析可视化的 Azure 原生仪表盘框架
  • TheHive:开源事件响应平台,具有内置案例跟踪和指标仪表盘

常见场景

  • 主动勒索软件事件:显示加密扩散、遏制状态、备份验证和恢复进展的仪表盘
  • 数据泄露调查:跟踪受影响数据存储、外泄(Exfiltration)量和通知要求的仪表盘
  • 钓鱼(Phishing)攻击活动响应:显示收件人数量、点击率、凭据暴露和修复状态的仪表盘
  • 月度 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 人(Tier 2:2 人,Tier 3:1 人)

业务影响:低 — 财务文件服务器离线,无面向客户的系统受影响
Skills enregistrées