使用 PCAP 进行网络取证
从流量中重建攻击过程。
使用 PCAP 进行网络取证 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
网络取证捕获的内容
网络取证会分析捕获的流量,以还原网络传输中发生的情况:连接、传输的文件、命令与控制活动以及数据外泄。
与磁盘取证不同,网络证据具有易失性。如果事件发生期间没有进行捕获,数据包就会消失。因此,组织需要提前部署全数据包捕获和流量日志记录。
PCAP 和捕获工具
PCAP(数据包捕获)格式会存储带时间戳的原始帧。tcpdump 和 tshark 可以从网络分接器或 SPAN 端口捕获流量。
请按照取证要求进行捕获:写入文件,不要在实时过程中解析名称(DNS 查询会增加噪声),并记录所使用的捕获过滤器。
# Capture all traffic on eth0 to a rotating set of files
tcpdump -i eth0 -n -s 0 -w capture-%Y%m%d-%H%M%S.pcap -G 3600
# -n no name resolution
# -s 0 full packet (snaplen)
# -G 3600 rotate hourly全数据包与流数据
两种证据层级:
- 全数据包捕获(PCAP):包含每个字节,可以重建内容,但占用大量存储空间
- 流数据(NetFlow/IPFIX):仅包含元数据,即谁与谁通信、何时通信以及通信量,但不包含载荷
流记录适合低成本长期保留,也非常适合发现信标通信和外泄流量规模;随后可以转到 PCAP 进行详细分析。
Wireshark 显示过滤器
Wireshark(以及 tshark)使用显示过滤器来隔离相关流量。掌握几个常用过滤器后,分析速度会显著提升。
# Traffic to/from a suspect host
ip.addr == 10.0.0.66
# DNS queries only
dns.flags.response == 0
# HTTP requests
http.request
# TCP retransmissions (possible tampering or instability)
tcp.analysis.retransmission跟踪数据流
TCP 重组会将数据包重新拼接成原始通信。Wireshark 中的跟踪 TCP 流(或 tshark -z follow)可以重建 HTTP 交换、聊天会话或传输的文件。
当流量未加密时,这能揭示明文凭据、外泄的文档以及攻击者命令。
# Reconstruct TCP stream index 5 as raw bytes
tshark -r capture.pcap -z follow,tcp,raw,5 -q提取传输的文件
通过 HTTP、FTP 或 SMB 传输的文件可以从捕获内容中雕刻出来。Wireshark 可以导出对象,tcpflow 或 foremost 可以重建载荷。
请对提取出的文件计算哈希,并与威胁情报集合进行比对,以识别恶意软件投递。
# Reassemble flows into per-connection files
tcpflow -r capture.pcap -o extracted/
# Export HTTP objects via tshark
tshark -r capture.pcap --export-objects http,http_objects/DNS 作为指标
即使载荷已加密,DNS 仍然能够揭示大量信息:
- DGA 域名:看起来随机的长名称可能表明存在恶意软件
- NXDOMAIN 比例较高:表明正在尝试生成域名
- DNS 隧道:通过超大或高频的 TXT/NULL 查询传输数据
建立正常 DNS 基线后,异常情况就会更加明显。
# Count queries per domain to spot beaconing or tunneling
tshark -r capture.pcap -Y dns.flags.response==0 \
-T fields -e dns.qry.name | sort | uniq -c | sort -rn | head检测信标通信
命令与控制通道通常会以固定间隔向控制器发送信标。从取证角度看,您应当查找:
- 定期连接到同一目标
- 较小且一致的载荷大小
- 长期持续的会话或固定的抖动
流量分析(连接时间)通常比数据包检查更快发现信标通信。
加密流量分析
大多数现代流量都经过 TLS 加密,因此载荷无法直接读取。您应当改为分析元数据:
- SNI 和证书字段(可见时)
- TLS 握手的 JA3/JA3S 指纹,用于识别客户端工具
- 数据包大小和时间信息
如果捕获了 TLS 密钥(实验室中使用 SSLKEYLOGFILE),Wireshark 就可以解密流量,但这在真实证据中很少见。
# Extract TLS server names (SNI) from a capture
tshark -r capture.pcap -Y 'tls.handshake.type==1' \
-T fields -e tls.handshake.extensions_server_name | sort -u与日志关联
网络证据与主机日志和基础设施日志关联后最具说服力,包括防火墙拒绝记录、代理日志、IDS 警报(Suricata/Zeek)以及终端遥测数据。
Zeek 会将原始 PCAP 转换为结构化日志(conn.log、dns.log、http.log、files.log),比单独查看数据包更容易进行关联分析。
# Generate Zeek logs from a capture
zeek -r capture.pcap
# Inspect connection summary
cat conn.log | zeek-cut id.orig_h id.resp_h proto duration orig_bytes resp_bytes捕获完整性和存储
PCAP 同样属于证据,因此应当像处理磁盘镜像一样严格:采集时计算哈希,以只读方式存储,并记录捕获点、接口和时钟源。
- 注明网络分接器是否看到了双向流量
- 记录丢弃数据包的数量(存在缺口会削弱结论)
- 保留原始捕获内容,在副本上进行分析
# Hash the capture and report stats including drops
sha256sum capture.pcap
capinfos capture.pcap | grep -E 'packets|drop|duration'快速检查
请检验您对网络取证的掌握程度。
回顾
您已经学习了如何从流量中重建攻击过程:
- PCAP 可以捕获所有内容;流数据适合扩展到长期元数据保留
- 显示过滤器和数据流跟踪可以隔离并重组通信
- 对象提取可以恢复传输的文件
- DNS 分析和信标检测可以发现命令与控制活动和隧道
- 通过元数据和 JA3判断加密流量
- Zeek与日志关联分析可以将各类证据串联起来
接下来:将磁盘和网络工件编织进时间线和报告。
常见问题解答
「使用 PCAP 进行网络取证」课时是免费的吗?
是的 — 「使用 PCAP 进行网络取证」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「使用 PCAP 进行网络取证」这节课中我会学到什么?
从流量中重建攻击过程。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「使用 PCAP 进行网络取证」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 取证基础与证据保管链
- 磁盘成像与文件系统分析
- 使用 PCAP 进行网络取证
- 时间线分析与报告