邮件痕迹与钓鱼投递链分析
邮件痕迹与钓鱼投递链分析
在很多入侵事件中,真正的起点并不是漏洞、弱口令或 WebShell,而是一封看起来毫不起眼的钓鱼邮件。它可能伪装成采购通知、发票、审批、密码重置、快递提醒,也可能直接投递压缩包、脚本、宏文档或恶意链接。受害者只要点击一次,后续的浏览器下载、脚本执行、凭据窃取和内网横向就会陆续发生。
在 0x02电子取证 里,系统日志、浏览器痕迹、命令历史等证据点已经给了很多基础入口;在 0x06取证辅助工具 里,也已经有 Coremail日志分析脚本 这样的现场筛选工具。到了 0x03取证分析,重点则变成如何把这些线索连成一条完整的钓鱼投递链。
0x01 邮件取证要回答什么
邮件分析不是简单回答“用户收没收到一封邮件”,而是要回答:
- 邮件是否真实送达目标邮箱?
- 邮件是从哪里发来的,经过了哪些投递节点?
- 攻击载荷是附件、链接,还是云盘跳转?
- 用户是否打开、点击、下载或执行了后续内容?
- 这封邮件与主机失陷之间是否形成时间闭环?
如果只能证明“邮箱里有一封可疑邮件”,那还只是材料;能证明“它触发了后续执行”,才真正构成事件证据链。
0x02 邮件证据链的四层结构
建议把邮件分析拆成四层:
1. 邮件层
回答“邮件有没有来,来自谁,发给了谁”:
- 邮件网关日志
- 邮件服务器投递日志
- 邮件头部信息
- 发件人、收件人、Message-ID
2. 载荷层
回答“邮件里到底带了什么”:
- 附件名、附件类型、压缩包层级
- URL、短链接、跳转链接
- 二维码、云盘、对象存储地址
3. 终端层
回答“用户是否触发了邮件中的恶意内容”:
- 邮件客户端打开记录
- 浏览器访问历史
- 下载记录
- 文件落地时间
4. 执行层
回答“触发之后系统发生了什么”:
- Office /
powershell/wscript/cmd启动 - 脚本执行
- 木马上线
- 后续持久化、横向与数据外传
把这四层串起来,才能从“可疑邮件”上升到“邮件是入侵入口”。
0x03 邮件服务器日志的分析重点
不同邮件系统日志格式不同,但分析重点相似。以 Coremail、Exchange、Postfix 等场景为例,通常应优先提取:
- 发件人地址
- 收件人地址
- 投递时间
- 源 IP
- 中继节点
- 邮件主题
- 附件名或 URL 线索
- 是否投递成功、是否退信
1. 为什么 Message-ID 很关键
Message-ID 往往是贯穿整条邮件链最稳定的标识之一。它可以帮助你:
- 关联不同日志节点
- 排除相同主题的批量邮件干扰
- 锁定某一封具体邮件的投递轨迹
在批量钓鱼事件中,光靠主题搜索容易混淆,而 Message-ID 更适合做精确追踪。
2. 邮件日志不只是“搜 IP”
现场分析常见误区是只根据源 IP 搜索日志。实际上,更有效的筛选维度通常包括:
- 发件域名
- 收件人
- 时间窗
- 附件后缀
- URL 域名
- 邮件主题关键词
这也正是 Coremail 简易筛选脚本这类工具的实际价值所在:先把大体量邮件日志压缩到可人工分析的范围,再做事件链拼接。
0x04 钓鱼邮件的三种典型投递模式
1. 附件直接投递型
常见形式:
zip,rar,7zdocm,xlsmiso,imglnk,js,hta
特点是用户通常不需要离开邮件客户端太远,双击附件后就会触发后续恶意链。
2. 链接跳转型
常见形式:
- 邮件正文带钓鱼网址
- 使用短链接或云盘链接
- 跳转到伪装登录页或下载页
这种模式天然要和之前补过的 浏览器痕迹与下载执行链分析.md 结合分析。
3. 云文档与二维码中转型
越来越多钓鱼邮件不会直接附带恶意文件,而是:
- 引导打开在线文档
- 通过二维码让用户在手机上继续操作
- 通过云盘分享页二次下载
这种情况下,邮件本身只承担“引流”功能,真正的恶意动作会发生在浏览器或移动端。
0x05 如何把邮件和终端失陷串起来
这是邮件分析最关键的一步。
1. 先确认投递时间
从邮件服务器或网关日志确认:
- 邮件送达时间
- 用户首次看到邮件的时间窗口
2. 再确认点击或打开动作
重点关联:
- 邮件客户端打开记录
- 浏览器历史
- 下载记录
- 附件落地时间
3. 再确认本地执行
重点关联:
- Office 打开文档
- 宏触发
wscript.exe,mshta.exe,powershell.exe- 解压、双击、脚本启动
4. 最后确认后续危害
继续串联:
- 木马外联
- 计划任务、启动项
- 新账号、公钥写入
- 横向移动
如果时间线表现为:
- 09:10 邮件送达
- 09:13 用户访问正文链接
- 09:14 浏览器下载
invoice.zip - 09:15 本地执行
invoice.lnk - 09:16
powershell -enc启动并对外连接
那么整条钓鱼链基本就可以闭环。
0x06 邮件附件与链接的分析重点
1. 附件取证不要只看文件名
要同时看:
- 真正扩展名
- MIME 类型
- 压缩包内部结构
- 是否包含快捷方式、脚本、宏文档
- 文件名是否与业务语境匹配
例如“发票通知.zip”里面放一个 发票.pdf.lnk,其危险性远高于普通压缩包。
2. 链接取证不要只看最终域名
应该重点记录:
- 短链接原始地址
- 跳转链
- 重定向次数
- 落地下载 URL
- 域名注册时间和解析变化
很多邮件投递不会直接暴露恶意域名,而是通过合法云服务、对象存储、短链平台做中转。
0x07 两类高价值异常信号
1. 同一主题的批量定向投递
如果短时间内多名员工收到:
- 主题相近
- 发件人相似
- URL 指向同一批域名
- 附件命名规则一致
说明这不是单点误发,而是有组织的批量钓鱼活动。
2. 高权限岗位点击后紧接着内网异常
若收件人是:
- 财务
- 运维
- 开发负责人
- 域管理员
且其主机随后出现:
- 浏览器下载
- 凭据抓取
- 横向移动
那邮件就不是普通投递事件,而是后续全网扩散的起点。
0x08 公开案例与落地命令
1. 案例一:TA571 / ClearFake / ClickFix 邮件到 PowerShell 执行链
Proofpoint 在 2024 年连续披露了两组非常适合落地分析的公开案例:
- TA571 通过 HTML 附件、假 OneDrive 页面、假错误提示诱导用户运行 PowerShell
- ClearFake 通过被植入的网页弹出“修复提示”,引导用户复制粘贴 PowerShell
- 之后脚本会继续下载 ZIP、HTA 或下一阶段 PowerShell,最终落地 DarkGate、NetSupport、Lumma 等载荷
这组案例很适合作为邮件专题的原因是,它不是停留在“用户收到了一封钓鱼邮件”,而是非常清楚地把链路拉到了:
- 邮件 / HTML 送达
- 用户点击或打开
- PowerShell 被运行
- ZIP / HTA 被下载
- 木马落地并继续外联
公开来源:
- Proofpoint: From Clipboard to Compromise: A PowerShell Self-Pwn
- Proofpoint: Security Brief: ClickFix Social Engineering Technique Floods Threat Landscape
2. 案例二:OWA 钓鱼后下载恶意 Excel,再由宏执行 PowerShell
另一个更传统但很经典的公开案例是 Proofpoint 在 2016 年披露的 OWA 钓鱼链:
- 攻击者先做 Outlook Web Access 凭据钓鱼
- 用户提交凭据后,被诱导下载
ViolationReport.xls - 恶意 Excel 宏继续执行 PowerShell 下载后续载荷
这类案例特别适合说明一个实战问题:同一封邮件可能既窃取账号口令,也继续投送恶意文件。
公开来源:
3. Coremail / Postfix 现场排查命令
如果现场是 Linux 邮件网关或邮件服务器,可以先按时间窗、发件人、收件人、主题和 URL 域名缩小范围。
如果使用了你仓库里已有的 Coremail 简易筛选脚本,也可以直接按收件人、主题域名、时间窗做关键字筛选。
4. Exchange 现场排查命令
若现场是 Exchange,可以直接查消息追踪日志:
5. 终端侧关联命令
邮件落地后,终端侧最重要的是证明“邮件触发了执行”。
Windows
Linux 桌面 / 办公终端
6. 一套可直接执行的排查流程
真实现场里,建议按下面顺序跑:
- 先从邮件系统查
收件人 + 时间窗 + 主题/域名 - 再锁定
Message-ID、发件人、投递时间 - 再到终端查下载目录、Recent、浏览器历史
- 最后查
4688或 shell 历史,确认powershell / mshta / wscript / Office是否在投递后短时间运行
这样就能把邮件证据和主机证据真正闭环。
0x09 反取证与分析误区
1. 只看客户端,不看邮件系统
受害终端上的邮件可能已被删除,但邮件网关和服务器日志通常还能保留投递证据。
2. 只看邮件,不看后续浏览器与执行链
很多事件中,邮件本身只负责送达,真正恶意动作发生在点击链接之后。如果不和浏览器、下载、命令执行关联,就只能停留在“怀疑”。
3. 误把普通营销邮件当钓鱼
应结合:
- 发件域信誉
- 退信与 SPF / DKIM / DMARC 结果
- 是否存在后续终端执行行为
否则很容易把垃圾营销邮件误判为攻击入口。
0x0A 建议的交付结构
邮件取证结果建议整理为如下表格:
| 时间 | 证据源 | 事件 | 关联对象 | 结论 |
|---|---|---|---|---|
| 09:10:11 | 邮件日志 | 邮件投递成功 | user@example.com | 目标邮箱已收到 |
| 09:13:02 | 浏览器历史 | 点击邮件链接 | hxxps://short.example/... | 用户触发邮件内容 |
| 09:13:28 | 下载记录 | 下载附件 | invoice.zip | 恶意载荷落地 |
| 09:14:10 | 进程日志 | 执行快捷方式 | invoice.lnk | 本地执行发生 |
| 09:14:32 | 网络日志 | 对外连接 C2 | x.x.x.x | 主机已失陷 |
这种结构最适合把“邮件事件”与“主机事件”合并成一份可交付报告。
0x0B 总结
邮件取证真正的价值,不是证明“用户收到过一封奇怪的邮件”,而是证明:
- 这封邮件确实进入了受害者的工作流
- 用户确实触发了其中的附件或链接
- 后续下载、执行和外联与该邮件形成了清晰时间闭环
当邮件日志、浏览器痕迹、文件落地和进程启动能互相印证时,钓鱼邮件就不再只是一个孤立 IOC,而会成为整起入侵事件中最明确的起点证据。