一封钓鱼邮件的流量分析
从一个 pcap 出发,把「谁中了、中了什么、连去哪」三件事查清楚。
场景
安全设备上出现一段可疑流量。手上只有一个 pcap,要回答三个问题:恶意程序访问了什么、下载了什么、下一跳在哪。
这是应急响应的标准起手式,也是流量分析最典型的用法。
第一步:把请求列出来
Wireshark 打开,过滤 http,看请求列表。
重点看两列:Host 和 Info(请求行)。可疑的特征:
- 域名是随机字符串,或者看起来像正常服务但拼写奇怪
- 请求路径带一长串参数,参数值是时间戳或随机数
User-Agent不是常见浏览器,或者版本号很旧- 响应是
application/octet-stream、application/zip
这一轮不要陷进去,扫一遍,标记两三个可疑的,往下走。
第二步:追踪流,拿完整 URL
右键可疑请求 → Follow → HTTP Stream。
完整 URL 在这里,包括查询串。把它记下来——这是 IOC 的第一条。
同时看响应头:
HTTP/1.1 200 OK
Content-Type: application/zip
Content-Length: 48213
Content-Disposition: attachment; filename="invoice.zip"
Content-Disposition 里的文件名,就是落地文件的原始名字。
第三步:导出文件
File → Export Objects → HTTP。列表里能看到所有通过 HTTP 传输的对象,按大小排序,最大的那个通常是载荷。
选中导出。导出的文件名是 Wireshark 生成的(类似 %5bContent-Type%5d),没有后缀。按响应头里的 Content-Type 和文件头判断真实类型,手动改后缀。
改完之后先别打开。算 MD5,扔沙箱。
md5sum invoice.zip
MD5 是第二条 IOC,也是最通用的一条——威胁情报平台基本都支持按 hash 查。
第四步:看沙箱报告
沙箱会给出:释放的文件、进程行为、网络回连、注册表改动。
重点看「网络」那一栏。回连的域名就是下一跳。如果沙箱没跑出网络行为(很多样本会检测沙箱环境后静默),就手动分析。
第五步:手动看脚本
压缩包里常是 JS / VBS / HTA 脚本。用文本编辑器打开,别双击。
先去掉注释,可读性会好很多:
\/\*[\s\S]*\*\/|\/\/.*
然后找字符串拼接。恶意脚本的域名通常是拆开拼的:
var a = "shakyastatue";
var b = "strade.com";
var url = "http://" + a + b + "/gate.php";
搜索 http、eval、ActiveXObject、WScript.Shell,基本能定位核心逻辑。
输出成什么
一份可用的分析结论,包含四样东西:
| 项 | 内容 |
|---|---|
| 初始入口 | 恶意 URL、投递方式 |
| 载荷 | 文件名、MD5、类型 |
| 下一跳 | 回连域名 / IP、端口、协议 |
| 影响范围 | 哪些主机访问过这个 URL |
第四条要从 DNS 日志或代理日志里查,不是从 pcap 里查。pcap 只能告诉你「这台机器中了」,查「还有谁中了」要靠全量日志。
一处容易漏的
分析完流量,别急着结案。
同一封钓鱼邮件通常发给了多个人。从邮件网关导出收件人列表,逐个确认有没有人点过——这个动作比分析样本本身更能减少损失。
参考
- 《流量特征分析——小王公司收到的钓鱼邮件》,公众号 LKing-Sec
- 抓包与导出操作:Wireshark