僵尸网络攻击如何排查

wen 网络安全 32

本文目录导读:

僵尸网络攻击如何排查

  1. 第一阶段:识别异常现象(症状发现)
  2. 第二阶段:网络层排查(流量在哪里?)
  3. 第三阶段:主机层排查(罪魁祸首是谁?)
  4. 第四阶段:日志层排查(历史痕迹)
  5. 第五阶段:应急处置(隔离与清除)
  6. 高级排查方向:无文件僵尸网络
  7. 总结:自动化排查脚本片段(Linux示例)

僵尸网络攻击的排查是一个系统性工程,旨在从海量网络流量和主机行为中识别出被控制的“肉鸡”,以下是分步骤的排查指南,结合了网络层、主机层和日志层的分析方法。

重要提示: 以下操作需要一定的网络管理和系统管理权限,如果情况复杂或涉及核心业务,建议立即联系专业的网络安全应急响应团队。

第一阶段:识别异常现象(症状发现)

在开始排查前,通常会有以下迹象:

  1. 网络带宽满载:出口带宽被占满,上行流量异常高(常见于DDoS攻击)。
  2. 系统性能下降:CPU、内存或磁盘I/O持续高负载,风扇狂转。
  3. 异常出站连接:大量对外连接,尤其是访问不常见的IP(如境外、云服务器IP)。
  4. 告警日志:防火墙、IDS/IPS或EDR(端点检测与响应)产生告警。
  5. 用户投诉:内网用户反映网速慢或服务异常。

第二阶段:网络层排查(流量在哪里?)

核心目标是找到 “谁在向哪里发什么包”

  1. 抓包分析(最直接方法)

    • 使用工具:tcpdump(Linux)、Wireshark(Windows/Linux)、NetFlow/sFlow。
    • 操作:在核心交换机的镜像端口或可疑主机上抓包。
    • 关键特征
      • 高频连接:同一源IP短时间内连接大量不同目的IP的相同端口(如80、443、22)。
      • 无状态连接:大量SYN包封包(且无后续ACK,只发送SYN用于扫描或攻击)。
      • 异常协议:非业务端口出现不明协议流量,如IRC(僵尸网络常用C&C通信)、DNS异常查询(如TXT记录很长)、ICMP隧道。
      • 统一载荷:多个出站数据包包含完全相同的负载(如HTTP GET /?[随机参数])。
  2. 网络设备日志

    • 防火墙/NAT日志:查看内网哪些IP发起了大量出站连接,僵尸网络通常通过NAT穿透外网。
    • 流量分析:使用NetFlow/sFlow工具(如PRTG、ntopng)查看Top Talkers(流量最大者),通常被控主机的上行流量会远大于下行。
  3. DNS日志分析

    • 频繁的DNS查询:僵尸网络常使用DGA(域名生成算法)生成大量随机域名(如aksdj3k2.linuxab12.com.cn),进行域名解析(用于连接C2服务器)。
    • 异常记录:查询不存在的域名(NXDOMAIN响应)、查询频率异常高、查询低信誉域名(可从威胁情报源下载黑名单)。

第三阶段:主机层排查(罪魁祸首是谁?)

在具体嫌疑主机上找到恶意进程和文件。

  1. 进程与网络关联

    • Windows:使用 netstat -anb (查看端口和对应进程PID)或 tasklist /svc,更推荐 TCPView(Sysinternals工具)。
    • Linux:使用 netstat -antpss -antplsof -i
  2. 关键排查点

    • 隐藏进程:僵尸网络进程常伪装成系统关键进程(如svchost.exelsass.exesystemd),检查其命令行参数磁盘路径(是否在临时目录)。
    • 自启动项
      • Windows:regedit 查看 \SOFTWARE\Microsoft\Windows\CurrentVersion\Run 等键值;任务计划程序(Task Scheduler)中的定时任务。
      • Linux:/etc/init.d//etc/systemd/system//etc/cron.d/~/.bashrc~/.profile
    • 可疑文件
      • 位于系统临时目录:C:\Windows\Temp/tmp/var/tmp
      • 隐藏属性(attrib +h)、无数字签名、MD5/SHA1在VirusTotal上已被标记。
    • 命令与控制(C2)通信:在进程的网络连接中,寻找连接不规则端口(如:TCP 6666、6667、8080、8443、12345等)或私有IP(非业务公网IP)的进程。

第四阶段:日志层排查(历史痕迹)

查找被忽略的线索。

  1. 系统安全日志

    • WindowsEvent Viewer -> Security,查找大量登录失败(暴力破解),僵尸网络可能利用它传播。
    • Linux/var/log/auth.log/var/log/secure,查找异常的用户登录、susudo 尝试。
  2. Web服务器日志(如果该主机是Web服务器):

    • 查找大量类似请求(如 /wp-admin/admin-ajax.php?action=...)或SQL注入/扫描特征,通常是僵尸网络通过漏洞植入后门。
  3. 威胁情报匹配

    • 将排查出的外连IP域名IP对端文件HASH上传至VirusTotal、AlienVault OTX、IBM X-Force Exchange等平台查询,高关联性意味着确认被控。

第五阶段:应急处置(隔离与清除)

一旦确认,切勿直接拔网线(可能丢失证据),应按照以下顺序操作:

  1. 断网隔离

    • 在核心交换机上隔离该主机的端口(ACL或关闭端口)。
    • 如果是服务器,接管其流量至沙箱环境以便取证。
  2. 证据保全

    • 获取内存镜像(使用 DumpItLiME)。
    • 获取硬盘镜像(使用 ddFTK Imager)。
    • 拷贝进程列表网络连接系统日志
  3. 清除与修复

    • 终止恶意进程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。

自动化排查脚本片段(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%的工作。

抱歉,评论功能暂时关闭!