网站被攻击了,第一时间要做的不是惊慌失措,而是立刻开始取证。最核心、最直接的证据就是攻击发生时的网络流量数据,保存为PCAP文件是后续一切分析、溯源和修复的基础。这就像犯罪现场的第一手录像,没了它,后续工作几乎无从谈起。

为什么PCAP文件是“数字铁证”?

PCAP(Packet Capture)文件记录了网卡上流过的每一个原始数据包,包括源IP、目标IP、端口、协议、载荷内容等完整信息。当网站遭遇DDoS、SQL注入、漏洞利用或未授权访问时,攻击者的每一步操作都会以数据包的形式在网络中传输。完整保存这些数据包,你就能复盘攻击全过程:攻击从哪个IP发起、使用了什么手法、尝试利用了哪个漏洞、是否已经得手窃取了数据。没有这个文件,你的所有判断都只能是猜测。

攻击发生时,快速抓取PCAP的实战步骤

时间就是证据。一旦发现异常(如服务器负载飙升、应用异常、告警触发),立即行动。

1. 确定抓包位置:最佳位置是网站服务器的入口网卡(如eth0)。如果服务器已经失陷或负载过高,可在其前方的交换机镜像口或防火墙、负载均衡器上抓包,前提是这些设备支持。

2. 选择并启动抓包工具:Linux服务器首选命令行工具"tcpdump",它资源占用低,速度快。立即SSH登录服务器,执行抓包命令。

tcpdump -i eth0 -w /tmp/attack_evidence.pcap host not 192.168.1.100 and port not 22

这条命令解释:"-i eth0"指定网卡;"-w"将数据包写入文件;"host not"和"port not"用于过滤掉你自己的管理IP和SSH端口流量,避免抓取的PCAP文件过大且包含无关信息。请将"192.168.1.100"替换为你的管理IP。

3. 控制抓包范围与时长:在攻击进行时,可使用"-c"参数限制抓包数量(如"-c 10000"抓1万个包),或用"-G"和"-W"参数按时间旋转文件,避免单个文件撑满磁盘。同时,立即将抓取到的PCAP文件通过SCP等方式备份到安全的远程存储中。

高级抓取策略:确保抓到“关键包”

盲目全抓可能错过关键信息或产生巨量文件。应根据攻击迹象进行精准抓取。

# 疑似SQL注入,重点抓取访问Web端口的POST/GET请求
tcpdump -i eth0 -w sql_injection.pcap 'tcp port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420)'

# 怀疑特定IP段攻击,进行IP过滤
tcpdump -i eth0 -w from_malicious_subnet.pcap src net 203.0.113.0/24

# 组合复杂条件,抓取非内网、访问特定端口的流量
tcpdump -i eth0 -w suspicious.pcap 'not dst net 10.0.0.0/8 and not dst net 172.16.0.0/12 and not dst net 192.168.0.0/16 and (dst port 80 or dst port 443 or dst port 8080)'

这些命令能有效聚焦攻击流量,提升取证效率。务必记录下你开始和结束抓包的具体时间,与系统日志时间对齐。

取证不只是抓包:必须同步收集的关联证据

PCAP文件是网络层证据,必须与其它层面的证据形成链条。

系统层证据:立即使用"ps auxf"、"netstat -tunlp"、"ss -tunlp"保存进程和连接快照。使用"top"或"htop"记录资源占用情况。使用"last"、"lastb"、"cat /var/log/auth.log"(Linux系统)检查登录记录。

应用层证据:立即备份网站访问日志(如Nginx的access.log/error.log)、应用日志、数据库日志。这些日志中的时间戳、请求URI、用户代理字符串可以与PCAP文件中的数据包内容相互印证。

文件系统快照:如果条件允许,对关键目录(如网站根目录、配置文件目录)创建备份或记录文件校验和(使用"md5sum"或"sha256sum")。检查是否有新增的陌生文件或系统文件被篡改。

所有这些操作,都应在不干扰原始证据的前提下进行,最好能写到只读介质或直接传输到安全分析平台。

初步分析PCAP文件:快速定位攻击手法

抓取到PCAP文件后,即使不是网络专家,也可用一些工具进行快速分析。

1. 使用Wireshark/Tshark进行快速过滤:将PCAP文件下载到安全的分析机,用Wireshark打开。在过滤栏输入关键词快速定位异常: - "http contains "union select"" 或 "http.request.uri contains "../"":查找SQL注入或路径遍历痕迹。 - "tcp.flags.syn==1 and tcp.flags.ack==0":筛选出SYN包,辅助判断SYN Flood攻击。 - "http.request.method == "POST"":重点检查POST请求。 - "dns":检查是否有异常DNS查询(可能指向C2服务器)。

2. 统计与对话分析:在Wireshark中点击“统计”->“对话”,查看TCP/UDP对话。攻击通常表现为:与某个外部IP有巨量连接(DDoS),或与某个非常用端口建立连接(后门)。排序查看数据包数量最多、字节数异常的对话。

3. 追踪流:右键可疑的数据包,选择“追踪流”->“TCP流/HTTP流/SSL流”。这能将一个会话的所有请求和响应内容重组,让你直观看到攻击者提交的恶意参数和服务器返回的响应,是分析漏洞利用过程的最直接方式。

长期防护与自动化取证准备

不能每次等攻击来了才手动抓包。应将取证能力固化到系统中。

部署网络流量镜像与留存系统:在核心交换机或网关处,配置流量镜像,将进出网站服务器的所有流量持续发送到一台专用的、大存储的“流量记录器”服务器。该服务器上运行稳定的"tcpdump"或更专业的商业方案,实现7x24小时全流量留存(至少保存7-30天)。这样,任何时间点发现攻击,都可以回溯调取历史PCAP文件。

设置关键事件触发抓包:结合入侵检测系统(IDS)或安全监控平台的告警,可以自动触发抓包脚本。例如,当Snort或Suricata检测到一条高危攻击规则时,自动在目标服务器上启动一个限定时长和范围的"tcpdump"任务。

#!/bin/bash
# 一个简单的触发抓包脚本示例
ALERT_IP=$1
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
tcpdump -i eth0 -w /archive/alert_capture_${TIMESTAMP}.pcap host ${ALERT_IP} -G 300 -W 1 &
# -G 300: 每300秒旋转一个新文件
# -W 1: 只保留1个文件,持续覆盖

建立完整的证据管理流程:规定PCAP文件及关联日志的命名规范(包含时间、事件类型)、安全存储位置、访问权限以及保留策略。确保所有证据的完整性(可通过哈希值校验)和可追溯性,为可能的内部调查、向监管机构报告乃至司法诉讼做好准备。

总结:将PCAP纳入事件响应核心流程

网站安全事件响应中,“快速取证”环节绝不能缺失。保存攻击流量PCAP文件,是从被动挨打到主动分析的关键转折点。它让你从“我的网站好像被打了”的模糊状态,进入“攻击者在X点X分从IP Y.Y.Y.Y通过Z漏洞尝试入侵,发送了如下恶意负载”的清晰状态。请立即检查你的应急预案中是否有明确的抓包步骤和工具准备,并定期演练。在数字世界里,没有证据,就没有真相,也就没有真正的安全。