| name | triaging-security-incident-with-ir-playbook |
| description | 使用结构化 IR Playbook 对安全事件进行分类和优先排序,确定严重性、分配响应团队并启动适当的响应程序。
|
| domain | cybersecurity |
| subdomain | incident-response |
| tags | ["incident-response","triage","playbook","severity-classification","soc"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
使用 IR Playbook 对安全事件进行分类(Triaging Security Incidents with IR Playbooks)
适用场景
- 从 SIEM、EDR 或其他检测来源收到新的安全告警
- SOC 分析员需要判断告警是否为需要响应的真阳性
- 事件需要严重性分类和团队分配
- 多个并发事件需要优先排序
- 自动化分类规则需要验证或调优
前置条件
- 具备告警关联能力的 SIEM 平台(Splunk、Elastic、QRadar、Sentinel)
- 按事件类型分类的 IR Playbook 库
- 经 CISO 审批的严重性分类矩阵
- 值班轮换和升级程序
- 用于事件追踪的工单系统(ServiceNow、Jira、TheHive)
- 用于 IOC 丰富化的威胁情报订阅
工作流程
步骤 1:接收并确认告警
index=notable status=new severity IN ("critical","high")
| table _time, rule_name, src, dest, severity, description
| sort -_time
curl -s -H "Authorization: Bearer $THEHIVE_API_KEY" \
"https://thehive.local/api/v1/query?name=list-alerts" \
-H "Content-Type: application/json" \
-d '{"query":[{"_name":"listAlert"},{"_name":"filter","_field":"status","_value":"New"}]}'
curl -X POST "https://splunk.local:8089/services/notable_update" \
-H "Authorization: Bearer $SPLUNK_TOKEN" \
-d "ruleUIDs=$RULE_UID&status=1&comment=Triage+initiated+by+analyst"
步骤 2:丰富告警数据
curl -s "https://www.virustotal.com/api/v3/ip_addresses/$SRC_IP" \
-H "x-apikey: $VT_API_KEY" | jq '.data.attributes.last_analysis_stats'
curl -s "https://api.abuseipdb.com/api/v2/check?ipAddress=$SRC_IP&maxAgeInDays=90" \
-H "Key: $ABUSEIPDB_KEY" -H "Accept: application/json" | jq '.data'
curl -s "https://www.virustotal.com/api/v3/files/$FILE_HASH" \
-H "x-apikey: $VT_API_KEY" | jq '.data.attributes.last_analysis_stats'
curl -s "https://cmdb.local/api/assets?ip=$DEST_IP" \
-H "Authorization: Bearer $CMDB_TOKEN" | jq '.asset_criticality, .owner, .environment'
步骤 3:对事件类型进行分类
grep -i "$ALERT_SIGNATURE" /opt/ir/playbooks/trigger_conditions.yaml
curl -s "https://attack.mitre.org/api/techniques/$TECHNIQUE_ID" | jq '.name, .tactic'
步骤 4:分配严重性级别
python3 -c "
severity_score = 0
# 资产重要性:关键=4, 高=3, 中=2, 低=1
severity_score += 4 # 关键服务器
# 数据敏感性:PII/PHI=4, PCI=3, 机密=2, 公开=1
severity_score += 3 # PCI 数据
# 范围:企业级=4, 部门级=3, 单系统=2, 单用户=1
severity_score += 2 # 单系统
# 威胁状态:活跃=4, 近期=3, 历史=2, 潜在=1
severity_score += 4 # 活跃威胁
if severity_score >= 12: print('严重 - P1')
elif severity_score >= 9: print('高 - P2')
elif severity_score >= 6: print('中 - P3')
else: print('低 - P4')
print(f'得分: {severity_score}/16')
"
步骤 5:选择并启动 Playbook
cat /opt/ir/playbooks/ransomware_playbook.yaml
cat /opt/ir/playbooks/phishing_playbook.yaml
cat /opt/ir/playbooks/unauthorized_access_playbook.yaml
curl -X POST "https://thehive.local/api/v1/case" \
-H "Authorization: Bearer $THEHIVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "IR-2024-XXX: [事件类型] - [简要描述]",
"description": "分类摘要和初始发现",
"severity": 3,
"tlp": 2,
"pap": 2,
"tags": ["ransomware", "triage-complete"],
"customFields": {
"playbook": {"string": "ransomware_v2"},
"affected_systems": {"integer": 5}
}
}'
步骤 6:分配响应团队
curl -s "https://pagerduty.com/api/v2/oncalls?schedule_ids[]=$SCHEDULE_ID" \
-H "Authorization: Token token=$PD_TOKEN" | jq '.oncalls[].user.summary'
curl -X POST "https://events.pagerduty.com/v2/enqueue" \
-H "Content-Type: application/json" \
-d '{
"routing_key": "'$PD_ROUTING_KEY'",
"event_action": "trigger",
"payload": {
"summary": "P1 安全事件:在 PROD-DB-01 上检测到勒索软件",
"severity": "critical",
"source": "SIEM-Splunk",
"custom_details": {"incident_id": "IR-2024-042", "playbook": "ransomware_v2"}
}
}'
步骤 7:记录分类决定并移交
curl -X PATCH "https://thehive.local/api/v1/case/$CASE_ID" \
-H "Authorization: Bearer $THEHIVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "InProgress",
"customFields": {
"triage_analyst": {"string": "analyst_name"},
"triage_time": {"date": '$(date +%s000)'},
"severity_justification": {"string": "关键资产 + 活跃威胁 + PCI 数据"}
}
}'
核心概念
| 概念 | 定义 |
|---|
| 真阳性(True Positive) | 告警正确识别了真实安全事件 |
| 假阳性(False Positive) | 告警错误地将正常活动标记为恶意 |
| 严重性分类(Severity Classification) | 根据影响和紧迫性对事件优先级进行排名 |
| Playbook 选择(Playbook Selection) | 根据事件类型选择适当的响应程序 |
| IOC 丰富化(IOC Enrichment) | 从威胁情报来源为指标添加上下文信息 |
| 升级阈值(Escalation Threshold) | 触发升级至更高严重性或管理层的条件 |
| 分类 SLA(Triage SLA) | 初始评估的时间目标(关键事件通常为 15-30 分钟) |
工具与系统
| 工具 | 用途 |
|---|
| Splunk/Elastic/QRadar | SIEM 告警关联与查询 |
| TheHive/SIRP | 事件案例管理和 Playbook 追踪 |
| VirusTotal/AbuseIPDB | IOC 声誉查询和丰富化 |
| PagerDuty/OpsGenie | 值班管理和告警通知 |
| MITRE ATT&CK | 技术分类与映射 |
| Cortex XSOAR | 用于自动化分类工作流的 SOAR 平台 |
常见场景
- 暴力破解告警:单一 IP 多次登录失败。丰富 IP 声誉,检查地理位置,验证账号是否被攻陷,若未成功则分配 P3。
- 端点恶意软件检测:AV/EDR 隔离了恶意软件。验证隔离是否成功,检查是否有横向移动,若检测到持久化则分配 P2。
- 可疑出站流量:大量数据传输至未知外部 IP。检查是否为已知云服务,验证数据分类,若确认外泄则分配 P1。
- 用户举报钓鱼邮件:用户报告可疑邮件。提取 IOC,检查是否有其他收件人,若有人输入了凭据则分配 P2。
- 权限提升:用户意外获得管理员权限。验证是否为授权变更,检查是否存在漏洞利用,若未授权则分配 P1。
输出格式
- 含严重性论据的分类决定文档
- 已分配 Playbook 和团队的事件工单
- 附加到案例的 IOC 丰富化摘要
- 发送给相关干系人的升级通知
- 从告警数据提取的初始事件时间线