影响范围与横向扩散初判
确认一台主机被控之后,紧接着要回答的问题是:还有哪些主机也被控制了。可用的线索主要有三条——相同的 C2 地址或域名、相同的被控账号、相同的样本哈希或计划任务。用这三条线索在日志平台、终端管理平台、被动流量记录与堡垒机日志里横向检索,就能大致圈出受影响范围。这件事必须在清理之前完成,否则会边清边扩散。
基本信息
| 线索一 | 同一 C2 地址、域名或端口出现在多台主机 |
|---|---|
| 线索二 | 同一账号在多台主机出现异常登录或异常 sudo 记录 |
| 线索三 | 相同文件哈希、相同计划任务或相同监听端口出现在多台主机 |
| 数据来源 | 集中日志平台、终端管理平台、被动流量、堡垒机与 VPN 登录审计 |
| 输出物 | 受影响主机清单,含首次出现时间与当前状态 |
| 收尾条件 | 清单内每台主机都已确认状态,并有明确的处置结论 |
典型使用场景
- 单台主机确认被控后,快速判断是孤立事件还是批量攻击
- 确认攻击者是否已经通过跳板机或域控横向移动
- 为清理排定优先级:先处理仍在活动的主机
- 向管理层汇报影响范围时提供有依据的清单
- 清理完成后复检清单,确认没有遗漏主机
跨主机检索 IOC
跨主机检索 IOC
IOC_IP='203.0.113.10'; IOC_HASH='示例哈希值' # 替换为真实值
sudo grep -rl "$IOC_IP" /var/log /etc 2>/dev/null | head -n 20
for h in web01 web02 db01; do echo "== $h"; ssh "$h" "sudo grep -rl '$IOC_IP' /var/log 2>/dev/null | head -n 5"; done
for h in web01 web02 db01; do echo "== $h"; ssh "$h" "crontab -l 2>/dev/null | grep -i suspicious"; done
sudo grep -rl "$IOC_HASH" /evidence 2>/dev/null | head -n 5 # 本机证据目录内的哈希检索线索与判据
| 线索 | 检索位置 | 命中后的判断 |
|---|---|---|
| C2 地址 | 连接日志、防火墙日志、被动流量 | 命中即认为该主机与攻击者有过通信 |
| 被控账号 | 登录日志、sudo 记录、堡垒机审计 | 命中说明凭据已被复用,需重置密码 |
| 样本哈希 | 终端扫描记录、文件清单 | 命中说明同一载荷被投放过多台主机 |
| 计划任务特征 | 各主机任务表与执行日志 | 命中说明持久化被批量部署 |
| 监听端口 | 各主机连接列表 | 命中说明后门服务在多个节点开启 |
范围没圈清楚就开始清理单机,攻击者可以从邻居主机再打回来,清理变成反复劳动。正确节奏是先圈范围、再定方案、最后统一清理,并且清理期间保持对清单内主机的监控。
检索值要选准确:经过 NAT 的出口地址、云厂商的公共地址段、CDN 地址都不适合当 IOC,直接拿去全网检索只会得到成片噪声,反而掩盖真正的信号。