Wireshark
抓包、过滤、追踪流、导出对象——流量分析里真正会用的四个动作。
四个动作
Wireshark 的面板有几十个,实际用到的就四个:抓、过滤、追踪流、导出对象。
过滤
http 只看 HTTP
ip.addr == 10.1.2.3 指定 IP
tcp.port == 8080 指定端口
http.request.method == "POST" 只看 POST
http contains "password" 内容匹配
tls.handshake.extensions_server_name == "example.com" 看 SNI
最后一条在加密流量里特别有用。流量全加密,看不到内容,但 SNI 是明文的——目标访问了哪些域名,一览无余。
追踪流
右键任意一个包 → Follow → TCP Stream / HTTP Stream。
HTTP Stream 会把整个请求响应按顺序拼出来,比一个个包看快得多。找「恶意程序从哪下载的 payload」,基本都在这一步。
导出对象
File → Export Objects → HTTP。
所有通过 HTTP 传输的文件都列在这里,包括图片、压缩包、可执行文件。选中导出,直接拿到原始文件。
这一步是流量取证的核心。钓鱼邮件里的附件、木马下载的载荷,都能这么捞出来。
一个完整的分析过程
场景:给了个 pcap,问「恶意程序访问了哪个 URL,下载了什么」。
http过滤,看请求列表。按Info列排序,找可疑域名。- 挑一个可疑请求,右键 Follow HTTP Stream。完整 URL 和响应头都在里面。
- File → Export Objects → HTTP,把响应里的压缩包导出来。
- 导出的文件改名成正确后缀(
.zip、.exe),算 MD5,扔沙箱。 - 沙箱报告里会写后续行为:回连域名、释放的文件、注册表改动。
第三步有个坑:导出的文件没有后缀,Wireshark 只给一个 %5bContent-Type%5d 之类的名字。看响应头里的 Content-Type 和文件头判断类型。
从压缩包到下一跳
很多钓鱼样本是「压缩包 + 里面的 JS/VBS 脚本」的组合。
解压之后先别运行。用文本编辑器打开脚本,去掉注释再看:
正则:\/\*[\s\S]*\*\/|\/\/.*
去注释之后,脚本的可读性会好很多。末尾通常有个字符串拼接出来的域名——那就是下一跳的 C2。
TLS 解密
流量是 HTTPS 的话,需要密钥才能看内容。
两种方式:
- 有 session key:Chrome/Firefox 可以设置
SSLKEYLOGFILE环境变量,把密钥写出来,Wireshark 里配置 Pre-Master Secret log filename 就能解密。 - 有服务器私钥:仅限 RSA 密钥交换,现在基本都是 ECDHE,用不了。
做应急响应的时候,第一条最实用——让终端在启动浏览器前设好环境变量,后续的流量就能解。
参考
- 《Wireshark——抓包分析》,CSDN 存档
- 《wireshark 还原文件(软件)方法》,公众号存档
- 《流量特征分析——小王公司收到的钓鱼邮件》,公众号 LKing-Sec