| name | containing-active-security-breach |
| description | 通过隔离受攻陷系统、阻断攻击者通信并保全证据,同时最大程度减少业务中断,快速遏制活跃安全攻陷。 |
| domain | cybersecurity |
| subdomain | incident-response |
| tags | ["incident-response","containment","breach-response","network-isolation","dfir"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
遏制活跃安全攻陷(Containing an Active Security Breach)
适用场景
- 在网络或系统上检测到活跃的未授权访问
- IDS/IPS 告警显示正在进行的漏洞利用或数据外泄
- SOC 分析员确认需要立即遏制的真实安全事件
- 实时观察到横向移动或权限提升
- 在完全部署前检测到勒索软件加密活动
前置条件
- 具有明确遏制流程的事件响应计划
- 对防火墙、交换机和端点管理控制台的网络访问权限
- 跨端点部署的 EDR/XDR 平台(CrowdStrike、SentinelOne、Microsoft Defender for Endpoint)
- 具有实时日志关联的 SIEM 访问权限(Splunk、Elastic、QRadar)
- 预先批准的系统隔离授权(记录在 IR 计划中)
- 已准备好取证镜像工具用于证据保全
工作流程
步骤 1:验证并分类事件
index=security sourcetype=ids_alerts severity=critical
| stats count by src_ip, dest_ip, signature
| where count > 5
| sort -count
curl -X GET "https://api.crowdstrike.com/detects/queries/detects/v1?filter=status:'new'+max_severity_displayname:'Critical'" \
-H "Authorization: Bearer $FALCON_TOKEN"
步骤 2:识别攻陷范围
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p duration orig_bytes resp_bytes \
| awk '$3 == 443 && $5 > 1000000' | sort -t$'\t' -k5 -rn | head -20
wevtutil qe Security /q:"*[System[(EventID=4624)] and EventData[Data[@Name='LogonType']='3']]" /f:text /c:50
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4625} -MaxEvents 100 |
Group-Object -Property {$_.Properties[5].Value} | Sort-Object Count -Descending
步骤 3:执行网络遏制
set cli pager off
configure
set rulebase security rules emergency-block from any to any source [attacker_ip] action deny
set rulebase security rules emergency-block from any to any destination [attacker_ip] action deny
commit force
configure terminal
interface vlan 100
shutdown
end
write memory
echo "attacker-c2-domain.com CNAME ." >> /etc/bind/rpz.local
rndc reload
步骤 4:隔离受攻陷端点
curl -X POST "https://api.crowdstrike.com/devices/entities/devices-actions/v2?action_name=contain" \
-H "Authorization: Bearer $FALCON_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ids": ["device_id_1", "device_id_2"]}'
curl -X POST "https://api.securitycenter.microsoft.com/api/machines/{machineId}/isolate" \
-H "Authorization: Bearer $MDE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"Comment": "IR-2024-001: 活跃攻陷遏制", "IsolationType": "Full"}'
curl -X POST "https://usea1.sentinelone.net/web/api/v2.1/agents/actions/disconnect" \
-H "Authorization: ApiToken $S1_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filter": {"ids": ["agent_id"]}, "data": {}}'
步骤 5:完全隔离前保全易失性证据
winpmem_mini_x64.exe memdump_hostname_$(date +%Y%m%d).raw
netstat -anob > netstat_capture_$(date +%Y%m%d_%H%M).txt
tasklist /V /FO CSV > process_list_$(date +%Y%m%d_%H%M).csv
wmic process list full > process_detail_$(date +%Y%m%d_%H%M).txt
dd if=/proc/kcore of=/mnt/forensics/memory_$(hostname)_$(date +%Y%m%d).raw bs=1M
ss -tulnp > /mnt/forensics/network_$(hostname).txt
ps auxwwf > /mnt/forensics/processes_$(hostname).txt
步骤 6:禁用受攻陷账号
Import-Module ActiveDirectory
Disable-ADAccount -Identity "compromised_user"
Set-ADUser -Identity "compromised_user" -Description "已禁用 - IR-2024-001 $(Get-Date)"
Revoke-AzureADUserAllRefreshToken -ObjectId "user_object_id"
Set-ADAccountPassword -Identity "svc_compromised" -Reset -NewPassword (ConvertTo-SecureString "TempP@ss$(Get-Random)" -AsPlainText -Force)
步骤 7:验证遏制有效性
tcpdump -i eth0 host attacker_ip -c 100 -w verification_capture.pcap
index=security sourcetype=wineventlog EventCode=4624 LogonType=3
earliest=-15m
| stats count by src_ip, dest_ip
| where src_ip IN ("compromised_hosts")
curl -X GET "https://api.crowdstrike.com/devices/entities/devices/v2?ids=device_id" \
-H "Authorization: Bearer $FALCON_TOKEN" | jq '.resources[].status'
核心概念
| 概念 | 说明 |
|---|
| 短期遏制(Short-term Containment) | 阻止活跃损害的即时措施(网络隔离、账号禁用) |
| 长期遏制(Long-term Containment) | 在调查继续进行时的可持续措施(VLAN 分段、增强监控) |
| 证据保全(Evidence Preservation) | 在遏制措施销毁取证产物之前采集易失性数据 |
| 爆炸半径(Blast Radius) | 攻陷影响的系统、账号和数据的总范围 |
| 遏制边界(Containment Boundary) | 为防止进一步传播而建立的网络和逻辑边界 |
| 杀伤链中断(Kill Chain Disruption) | 在尽可能早的阶段打断攻击者的操作链 |
| 业务连续性(Business Continuity) | 在遏制威胁的同时维持关键运营 |
工具与系统
| 工具 | 用途 |
|---|
| CrowdStrike Falcon | 端点检测、主机网络遏制 |
| Microsoft Defender for Endpoint | 端点隔离和自动调查 |
| Palo Alto NGFW | 用于 IP/域名阻断的边界防火墙规则 |
| Splunk/Elastic SIEM | 实时告警关联和范围分析 |
| Zeek(Bro) | 用于 C2 识别的网络流量分析 |
| Velociraptor | 远程取证采集和端点查询 |
| Active Directory | 账号管理和认证控制 |
常见场景
- 勒索软件加密前:攻击者已部署勒索软件二进制文件但加密尚未开始。隔离零号病人、阻断 C2 并防止横向部署。
- 活跃数据外泄:数据正在向外部服务器外泄。阻断到 C2 的出口流量、采集网络证据、隔离受影响系统。
- 域控制器受攻陷:攻击者拥有 DC 访问权限。将 DC 从网络隔离、两次重置 KRBTGT、轮换所有特权凭据。
- 供应链受攻陷:恶意更新已在整个环境中部署。阻断更新服务器、隔离收到更新的系统、评估范围。
- 内部威胁 - 活跃外泄:员工正在主动复制敏感数据。禁用账号、阻断 USB 访问、保全证据链。
输出格式
- 带时间戳的遏制操作日志(谁、做了什么、何时)
- 网络隔离验证报告
- 受攻陷/已隔离系统清单及理由
- 证据保全校验和及监管链记录
- 遏制有效性验证结果
- 包含当前状态和后续步骤的利益相关方通知