事件响应
事件响应 (Incident Response)
本事件响应技能涵盖从初步分诊到取证收集、严重程度声明及升级路由的全生命周期。这不是威胁猎寻(见 threat-detection)或事后合规映射(见 governance/compliance-mapping),而是专注于对已声明的安全事件进行分类、分诊和管理。
---
目录
---
概述
本技能的功能
本技能为事件分诊与响应提供方法论和工具——将安全事件分类为特定类型的事故,评估严重程度,过滤误报,确定升级路径,并在监管链(chain-of-custody)控制下启动取证证据收集。
与其他安全技能的区别
| 技能 | 关注点 | 方法 |
|-------|-------|----------|
| incident-response (本项) | 活跃事件 | 响应式 —— 分类、升级、收集证据 |
| threat-detection | 事件前猎寻 | 主动式 —— 在警报触发前发现威胁 |
| cloud-security | 云端态势评估 | 预防式 —— IAM、S3、网络配置错误 |
| red-team | 攻防模拟 | 进攻式 —— 测试检测与响应能力 |
前置条件
在分诊之前必须先摄入安全事件。事件可来自 SIEM 警报、EDR 检测、威胁情报馈送或用户报告。分诊工具接受 JSON 格式的事件负载;详见下文的输入架构。
---
事件分诊工具
incident_triage.py 工具用于对事件进行分类、检查误报、评分严重程度、确定升级路径并执行取证预分析。
# 从 JSON 文件对事件进行分类
python3 scripts/incident_triage.py --input event.json --classify --json
启用误报过滤进行分类
python3 scripts/incident_triage.py --input event.json --classify --false-positive-check --json
为桌面演习强制指定严重程度级别
python3 scripts/incident_triage.py --input event.json --severity sev1 --json
从标准输入读取事件
echo '{"event_type": "ransomware", "host": "prod-db-01", "raw_payload": {}}' | \
python3 scripts/incident_triage.py --classify --false-positive-check --json输入事件架构
{
"event_type": "ransomware",
"host": "prod-db-01",
"user": "svc_backup",
"source_ip": "10.1.2.3",
"timestamp": "2024-01-15T14:32:00Z",
"raw_payload": {}
}退出代码
| 代码 | 含义 | 要求响应 |
|------|---------|-------------------|
| 0 | SEV3/SEV4 或无异常 | 标准工单处理 |
| 1 | SEV2 — 高级 | 1 小时内召开会议桥接,异步协调 |
| 2 | SEV1 — 紧急 | 立即召开 15 分钟战情室会议,全员参与 |
nds |
---
事件分类
安全事件被分为 14 种事件类型。分类决定了默认严重级别、MITRE 技术映射以及响应 SLA。
事件分类法
| 事件类型 | 默认严重级别 | MITRE 技术 | 响应 SLA |
|--------------|-----------------|-----------------|--------------|
| ransomware (勒索软件) | SEV1 | T1486 | 15 分钟 |
| data_exfiltration (数据外泄) | SEV1 | T1048 | 15 分钟 |
| apt_intrusion (APT 入侵) | SEV1 | T1566 | 15 分钟 |
| supply_chain_compromise (供应链受损) | SEV1 | T1195 | 15 分钟 |
| domain_controller_breach (域控制器被破) | SEV1 | T1078.002 | 15 分钟 |
| credential_compromise (凭据泄露) | SEV2 | T1110 | 1 小时 |
| lateral_movement (横向移动) | SEV2 | T1021 | 1 小时 |
| malware_infection (恶意软件感染) | SEV2 | T1204 | 1 小时 |
| insider_threat (内部威胁) | SEV2 | T1078 | 1 小时 |
| cloud_account_compromise (云账户受损) | SEV2 | T1078.004 | 1 小时 |
| unauthorized_access (未经授权的访问) | SEV3 | T1190 | 4 小时 |
| policy_violation (违反策略) | SEV3 | N/A | 4 小时 |
| phishing_attempt (钓鱼尝试) | SEV4 | T1566.001 | 24 小时 |
| security_alert (安全警报) | SEV4 | N/A | 24 小时 |
SEV 升级触发条件
出现以下任何情况将自动重新定义为更高严重级别:
| 触发条件 | 新严重级别 |
|---------|-------------|
| 发现勒索软件通知 | SEV1 |
| 确认存在活跃的数据外泄 | SEV1 |
| CloudTrail 或 SIEM 被禁用 | SEV1 |
| 确认域控制器被访问 | SEV1 |
| 第二台系统被攻破 | SEV1 |
| 外泄数据量超过 1 GB | 最低 SEV2 |
| C-level 高管账户被访问 | 最低 SEV2 |
---
严重级别框架
SEV 级别矩阵
| 级别 | 名称 | 标准 | 调用的技能 | 升级路径 |
|-------|------|----------|---------------|-----------------|
| SEV1 | 紧急 (Critical) | 确认勒索软件;活跃的 PII/PHI 外泄 (>10K 条记录);域控制器被破;防御规避 (CloudTrail 被禁用);供应链受损 | 所有技能 (并行) | SOC 负责人 → CISO → CEO → 董事会主席 |
| SEV2 | 高 (High) | 确认敏感系统被未经授权访问;具有高权限的凭据泄露;确认横向移动;有勒索软件迹象但尚未确认执行 | 分诊 + 遏制 + 取证 | SOC 负责人 → CISO |
| SEV3 | 中 (Medium) | 疑似未经授权访问 (未确认);恶意软件被检测并遏制;单个账户受损 (无权限提升) | 分诊 + 遏制 | SOC 负责人 → 安全经理 |
| SEV4 | 低 (Low) | 无确认影响的安全警报;信息性指标;无数据风险的策略违反 | 仅分诊 | L3 分析师队列 |
---
误报过滤
分诊工具在升级前会应用五个过滤器,以防止误报数量激增。
误报过滤器类型
| 过滤器 | 描述 | 示例模式 |
|--------|-------------|----------------|
| CI/CD 代理活动 | 被标记为异常的已知构建/部署代理 | jenkins, github-actions, circleci, gitlab-runner |
| 测试环境标记 | 标记为非生产环境的资产 | test-, staging-, dev-, sandbox- |
| 定时任务模式 | 触发警报的预期批处理进程 | cron, scheduled_task, batch_job, backup_ |
| 白名单身份 | 明确批准的服务账户 | svc_monitoring, svc_backup, datadog-agent |
| 扫描器活动 | 已知的安全扫描器和漏洞工具 | nessus, qualys, rapid7, aws_inspector |
确认的误报将抑制升级,并记录抑制原因以供审计。来自同一源的重复误报应在检测层进行调优,而非在分诊层重复过滤。
分诊。
---
取证证据收集
证据收集遵循 DFRWS 六阶段框架和“易失性优先”的获取原则。
DFRWS 六阶段
| 阶段 | 活动 | 优先级 |
|-------|----------|----------|
| 识别 (Identification) | 识别存在哪些证据及其位置 | 立即 |
| 保存 (Preservation) | 防止修改 —— 写保护、快照、法律保留 | 立即 |
| 收集 (Collection) | 按易失性顺序获取证据 | 立即 |
| 检查 (Examination) | 对收集的证据进行技术分析 | 2 小时内 |
| 分析 (Analysis) | 在调查上下文中解释发现的结果 | 4 小时内 |
| 呈报 (Presentation) | 提交包含监管链的调查结果报告 | 事件关闭前 |
易失性证据 —— 优先收集
1. 实时内存 (RAM dump) —— 重启后丢失
2. 运行中的进程和开放的网络连接 (netstat, ps)
3. 已登录用户和活动会话
4. 系统运行时间和当前时间(用于时间线锚定)
5. 环境变量和已加载的内核模块
监管链 (Chain of Custody) 要求
每项证据必须记录以下内容:
- 获取时的 SHA-256 哈希值
- UTC 时间戳(含时区偏移)
- 工具来源 (FTK Imager, Volatility, dd, AWS CloudTrail export)
- 调查员身份
- 移交日志(谁在何时持有该证据)
---
升级路径
按严重程度划分
| 严重程度 | 立即联系人 | 协调会议 (Bridge Call) | 外部通知 |
|----------|------------------|-------------|----------------------|
| SEV1 | SOC 负责人 + CISO (15 分钟内) | 立即建立作战室 (War Room) | 法务 + 公关待命;按截止日期表进行监管通知 |
| SEV2 | SOC 负责人 (30 分钟内异步) | 1 小时协调会 | 若涉及 PII 则通知法务 |
| SEV3 | 安全经理 (4 小时内) | 仅异步沟通 | 除非范围扩大,否则无需通知 |
| SEV4 | L3 分析师队列 (24 小时内) | 无 | 无 |
按事件类型划分
| 事件类型 | 一级升级对象 | 二级升级对象 |
|--------------|-------------------|-----------|
| 勒索软件 / APT | CISO + CEO | 若数据有风险则报至董事会 |
| PII/PHI 泄露 | 法务 + CISO | 监管机构(按截止日期表) |
| 云账户被盗 | 云安全团队 | CISO |
| 内部威胁 | HR + 法务 + CISO | 若涉及刑事犯罪则报至执法部门 |
| 供应链攻击 | CISO + 供应商管理部门 | 董事会 |
---
监管通知义务
通知时钟在事件宣布时开始计时,而非在调查完成后开始。
| 框架 | 事件类型 | 截止日期 | 处罚 |
|-----------|--------------|----------|---------|
| GDPR (EU 2016/679) | 个人数据泄露 | 发现后 72 小时 | 最高全球营收的 4% |
| PCI-DSS v4.0 | 持卡人数据泄露 | 24 小时内通知收单行 | 卡组织罚款 |
| HIPAA (45 CFR 164) | PHI 泄露 (>500 人) | 发现后 60 天 | 每个违规类别最高 190 万美元 |
| NY DFS 23 NYCRR 500 | 网络安全事件 | 72 小时内通知 DFS | 监管制裁 |
| SEC Rule (17 CFR 229.106) | 重大网络安全事件 | 确定为重大事件后 4 个工作日 | SEC 执法 |
| CCPA / CPRA | 敏感 PI 泄露 | 无不合理延迟 | 总检察长 (AG) 执法;私人诉权 |
| NIS2 (EU 2022/2555) | 重大事件(关键服务) | 24 小时预警;72 小时通知 | 国家主管机关制裁 |
操作准则: 如果在宣布事件时范围尚不明确,请假设适用最严格的截止日期,并在首次响应窗口内确认范围。
完整截止日期参考:references/regulatory-dea
dlines.md`
---
工作流
工作流 1:快速分诊 (15 分钟)
适用于在决定是否升级前需要进行分类的单个告警:
# 1. 对事件进行分类并过滤误报
python3 scripts/incident_triage.py --input alert.json \
--classify --false-positive-check --json
2. 检查输出中的 severity(严重程度)、escalation_path(升级路径)和 false_positive_flag(误报标志)
3. 如果 severity = sev1 或 sev2,立即通知 SOC 负责人
4. 如果 false_positive_flag = true,记录并关闭
决策:退出码 2 = 立即进入 SEV1 战时室 (War Room)。退出码 1 = 30 分钟内发起 SEV2 桥接会议。
工作流 2:完整事件响应 (SEV1)
T+0 收到检测通知 (SIEM 告警, EDR, 用户报告)
T+5 使用 incident_triage.py --classify --false-positive-check 进行分类
T+10 若为 SEV1:通知 CISO,开启战时室,启动监管时钟
T+15 启动取证收集 (优先收集易失性证据)
T+15 遏制评估 (与取证并行)
T+30 任何遏制操作需经过人工审批
T+45 执行已批准的遏制措施
T+60 评估遏制效果,若涉及 PII/PHI 范围则向法务简报
T+4h 提交最终取证证据包,估算潜伏时间 (Dwell Time)
T+8h 制定根除与恢复计划
T+72h 提交监管通知 (若触发 GDPR/NIS2)# 结合取证上下文进行完整分类
python3 scripts/incident_triage.py --input incident.json \
--classify --false-positive-check --severity sev1 --json > incident_triage_output.json
取证预分析
python3 scripts/incident_triage.py --input incident.json --json | \
jq '.forensic_findings, .chain_of_custody_steps'工作流 3:桌面演习模拟
在没有真实事件的情况下模拟特定严重级别的事件:
# 模拟 SEV1 勒索软件事件
echo '{"event_type": "ransomware", "host": "prod-db-01", "user": "svc_backup"}' | \
python3 scripts/incident_triage.py --classify --severity sev1 --json
模拟 SEV2 凭据泄露事件
echo '{"event_type": "credential_compromise", "user": "admin_user", "source_ip": "203.0.113.5"}' | \
python3 scripts/incident_triage.py --classify --false-positive-check --json
验证所有 14 种事件类型的升级路径
for type in ransomware data_exfiltration credential_compromise lateral_movement; do
echo "{\"event_type\": \"$type\"}" | python3 scripts/incident_triage.py --classify --json
done---
反模式 (Anti-Patterns)
1. 在调查完成后才启动通知时钟 —— 监管时钟(如 GDPR 72 小时,PCI 24 小时)是从“发现”而非“调查完成”开始计算的。延迟申报即使在事件较轻的情况下,也会使组织面临最高额度的处罚。
2. 在收集易失性证据前进行遏制 —— 重启或隔离系统会破坏 RAM、运行中的进程和活动连接。易失性证据的取证收集必须与遏制并行,绝不能在遏制之后进行。
3. 升级前跳过误报验证 —— 将每个告警都升级为 SEV1 会降低 SOC 的可信度并导致告警疲劳。在通知 CISO 之前,务必运行误报过滤器。
4. 事件指挥决策缺乏记录 —— SEV1 期间做出的每一项决定(包括在不确定情况下的决定)必须记录在证据链中,并注明时间戳和理由。缺乏记录的决策在监管调查中无法自证。
5. 将事件关闭等同于调查完成 —— 事件在根除后才关闭...
恢复完成才算结束,而非调查结束。在业务恢复后,取证报告和监管提交工作可能仍会继续。
6. 单一来源分类 —— 仅凭单一数据源(如一条 SIEM 告警)且缺乏佐证就对事件进行分类,经常会导致误判。在宣布为 SEV1 之前,至少需收集两个独立的信号。
7. 绕过人工审批进行遏制 —— 在没有人工审批的情况下采取自动化遏制措施(如网络隔离、凭据撤销)可能会导致生产环境停机、破坏证据并产生责任风险。所有涉及变更的遏制操作必须经过人工审批。
---
交叉引用
| 技能 | 关系 |
|-------|-------------|
| threat-detection | 确认的威胁猎捕结果将升级至事件响应进行分诊和分类 |
| cloud-security | 云安全态势发现(如 IAM 权限被盗、S3 暴露)可能会触发事件分类 |
| red-team | 红队发现的结果用于验证检测覆盖范围;确认的漏洞将成为猎捕假设 |
| security-pen-testing | 在实际环境中被利用的渗透测试漏洞将升级至事件响应进行主动处理 |