本文目录导读:

- 第一阶段:识别异常现象(症状发现)
- 第二阶段:网络层排查(流量在哪里?)
- 第三阶段:主机层排查(罪魁祸首是谁?)
- 第四阶段:日志层排查(历史痕迹)
- 第五阶段:应急处置(隔离与清除)
- 高级排查方向:无文件僵尸网络
- 总结:自动化排查脚本片段(Linux示例)
僵尸网络攻击的排查是一个系统性工程,旨在从海量网络流量和主机行为中识别出被控制的“肉鸡”,以下是分步骤的排查指南,结合了网络层、主机层和日志层的分析方法。
重要提示: 以下操作需要一定的网络管理和系统管理权限,如果情况复杂或涉及核心业务,建议立即联系专业的网络安全应急响应团队。
第一阶段:识别异常现象(症状发现)
在开始排查前,通常会有以下迹象:
- 网络带宽满载:出口带宽被占满,上行流量异常高(常见于DDoS攻击)。
- 系统性能下降:CPU、内存或磁盘I/O持续高负载,风扇狂转。
- 异常出站连接:大量对外连接,尤其是访问不常见的IP(如境外、云服务器IP)。
- 告警日志:防火墙、IDS/IPS或EDR(端点检测与响应)产生告警。
- 用户投诉:内网用户反映网速慢或服务异常。
第二阶段:网络层排查(流量在哪里?)
核心目标是找到 “谁在向哪里发什么包”。
-
抓包分析(最直接方法):
- 使用工具:
tcpdump(Linux)、Wireshark(Windows/Linux)、NetFlow/sFlow。 - 操作:在核心交换机的镜像端口或可疑主机上抓包。
- 关键特征:
- 高频连接:同一源IP短时间内连接大量不同目的IP的相同端口(如80、443、22)。
- 无状态连接:大量SYN包封包(且无后续ACK,只发送SYN用于扫描或攻击)。
- 异常协议:非业务端口出现不明协议流量,如IRC(僵尸网络常用C&C通信)、DNS异常查询(如TXT记录很长)、ICMP隧道。
- 统一载荷:多个出站数据包包含完全相同的负载(如HTTP GET /?[随机参数])。
- 使用工具:
-
网络设备日志:
- 防火墙/NAT日志:查看内网哪些IP发起了大量出站连接,僵尸网络通常通过NAT穿透外网。
- 流量分析:使用NetFlow/sFlow工具(如PRTG、ntopng)查看Top Talkers(流量最大者),通常被控主机的上行流量会远大于下行。
-
DNS日志分析:
- 频繁的DNS查询:僵尸网络常使用DGA(域名生成算法)生成大量随机域名(如
aksdj3k2.linux或ab12.com.cn),进行域名解析(用于连接C2服务器)。 - 异常记录:查询不存在的域名(NXDOMAIN响应)、查询频率异常高、查询低信誉域名(可从威胁情报源下载黑名单)。
- 频繁的DNS查询:僵尸网络常使用DGA(域名生成算法)生成大量随机域名(如
第三阶段:主机层排查(罪魁祸首是谁?)
在具体嫌疑主机上找到恶意进程和文件。
-
进程与网络关联:
- Windows:使用
netstat -anb(查看端口和对应进程PID)或tasklist /svc,更推荐TCPView(Sysinternals工具)。 - Linux:使用
netstat -antp或ss -antp或lsof -i。
- Windows:使用
-
关键排查点:
- 隐藏进程:僵尸网络进程常伪装成系统关键进程(如
svchost.exe、lsass.exe、systemd),检查其命令行参数、磁盘路径(是否在临时目录)。 - 自启动项:
- Windows:
regedit查看\SOFTWARE\Microsoft\Windows\CurrentVersion\Run等键值;任务计划程序(Task Scheduler)中的定时任务。 - Linux:
/etc/init.d/、/etc/systemd/system/、/etc/cron.d/、~/.bashrc或~/.profile。
- Windows:
- 可疑文件:
- 位于系统临时目录:
C:\Windows\Temp、/tmp、/var/tmp。 - 隐藏属性(
attrib +h)、无数字签名、MD5/SHA1在VirusTotal上已被标记。
- 位于系统临时目录:
- 命令与控制(C2)通信:在进程的网络连接中,寻找连接不规则端口(如:TCP 6666、6667、8080、8443、12345等)或私有IP(非业务公网IP)的进程。
- 隐藏进程:僵尸网络进程常伪装成系统关键进程(如
第四阶段:日志层排查(历史痕迹)
查找被忽略的线索。
-
系统安全日志:
- Windows:
Event Viewer->Security,查找大量登录失败(暴力破解),僵尸网络可能利用它传播。 - Linux:
/var/log/auth.log或/var/log/secure,查找异常的用户登录、su或sudo尝试。
- Windows:
-
Web服务器日志(如果该主机是Web服务器):
- 查找大量类似请求(如
/wp-admin/admin-ajax.php?action=...)或SQL注入/扫描特征,通常是僵尸网络通过漏洞植入后门。
- 查找大量类似请求(如
-
威胁情报匹配:
- 将排查出的外连IP、域名、IP对端、文件HASH上传至VirusTotal、AlienVault OTX、IBM X-Force Exchange等平台查询,高关联性意味着确认被控。
第五阶段:应急处置(隔离与清除)
一旦确认,切勿直接拔网线(可能丢失证据),应按照以下顺序操作:
-
断网隔离:
- 在核心交换机上隔离该主机的端口(ACL或关闭端口)。
- 如果是服务器,接管其流量至沙箱环境以便取证。
-
证据保全:
- 获取内存镜像(使用
DumpIt、LiME)。 - 获取硬盘镜像(使用
dd、FTK Imager)。 - 拷贝进程列表、网络连接、系统日志。
- 获取内存镜像(使用
-
清除与修复:
- 终止恶意进程:
kill -9 [PID](Linux)、taskkill /F /PID [PID](Windows)。 - 删除恶意文件:从自启动项中移除,清空任务计划。
- 重置账户:修改所有本地和域管理员密码。
- 重装系统(保守方案):对于受控程度较深的僵尸网络,建议备份数据后格式化全盘重装系统。
- 终止恶意进程:
高级排查方向:无文件僵尸网络
如果主机上找不到实体文件,但网络流量异常,可能是无文件僵尸网络(PowerShell、WMI或注册表持久化)。
- 排查点:
- PowerShell日志:
Event Viewer->Microsoft-Windows-PowerShell/Operational,查看有无高频率、混淆过的PowerShell命令执行。 - WMI持久化:使用
wmic或Autoruns工具检查 WMI 事件订阅(ActiveScriptEventConsumer)。 - 注册表特定路径:
\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce或 RunOnceEx。
- PowerShell日志:
自动化排查脚本片段(Linux示例)
# 快速查看可疑进程和网络连接
echo "=== 监听端口及相关进程 ==="
ss -tlnp4 | awk '{print $4, $7}'
echo "=== 出站连接(排除已知本地服务)==="
netstat -antp 2>/dev/null | grep -E 'ESTABLISHED|SYN_SENT' | awk '{print $5, $7}' | sort | uniq -c | sort -rn | head -20
echo "=== 高CPU进程 ==="
ps aux --sort=-%cpu | head -10
echo "=== 隐藏文件 ==="
find /proc/*/exe -type f -exec ls -la {} \; 2>/dev/null | grep deleted # 查找已删除但仍运行的文件
echo "=== 异常的计划任务 ==="
crontab -l | grep -v "^#" 2>/dev/null
最终建议:僵尸网络排查具有很强的对抗性(恶意软件会反调试、伪装),如果企业缺乏专业安全团队,建议部署EDR(端点检测与响应)产品(如CrowdStrike、SentinelOne、奇安信、深信服等)来自动化完成上述90%的工作。