邮件钓鱼免杀完全指南(2026实战版)·三、绕过SPF/DKIM/DMARC邮件认证

admin 2026-05-18 05:16:02 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文深入分析邮件安全认证机制SPF、DKIM、DMARC的绕过技术,指出71%企业SPF配置错误、68%未部署DKIM的现实漏洞。详细解析SPF的~all误配、DNS查询超限等配置缺陷,DKIM的弱密钥、签名重放等攻击手法,并披露2026年4月Exim的SPF解析0day漏洞(CVE-2026-3187)。提供针对性的防御建议,如严格配置-all策略、强化DKIM密钥长度、启用DMARC拒绝策略等。 综合评分: 87 文章分类: 渗透测试,WEB安全,漏洞分析,社会工程学,安全工具


cover_image

邮件钓鱼免杀完全指南(2026 实战版)· 三、绕过 SPF/DKIM/DMARC 邮件认证

原创

IceByte IceByte

IceByte-Sec

2026年5月17日 21:47 内蒙古

在小说阅读器读本章

去阅读

系列说明:本文是《邮件钓鱼免杀完全指南(2026 实战版)》系列的第三篇。上篇完成了 OSINT 信息收集,本篇深入邮件认证机制的核心,详解 SPF/DKIM/DMARC 的绕过手法,以及 2025-2026 年最危险的新型绕过技术。


前言:为什么邮件认证可以被绕过?

SPF、DKIM、DMARC 被称为邮件安全的”三驾马车”,理论上可以拦截所有伪造发件人的邮件。

但现实是:

  • 71% 的企业域名未正确配置 SPF(2026 年 APWG 报告)
  • 68% 的企业未部署 DKIM 签名
  • 启用 DMARC p=reject 的企业比例仅为 39%
  • 即使正确配置了三件套,仍有 17 种已知手法可以绕过验证

根本原因:邮件认证机制依赖域名管理员的配置正确性与完整性,而人类总会犯错。


一、SPF(Sender Policy Framework)机制与绕过

1.1 SPF 的工作原理

SPF 通过 DNS TXT 记录 声明”哪些 IP 地址被允许代表本域名发送邮件”。

正常的 SPF 验证流程

发件人: [email protected]
             ↓
接收方邮件服务器查询 victim.com 的 SPF 记录
             ↓
SPF 记录: v=spf1 ip4:203.0.113.0/24 include:spf.protection.outlook.com -all
             ↓
检查发件人 IP 是否在允许列表中
   ├── 在列表中 → SPF Pass
   └── 不在列表中 → SPF Fail → 按 DMARC 策略处理

SPF 记录详解

v=spf1 [ qualifier] [ mechanism] ... [ qualifier] all

qualifier:
  +  → Pass(通过,默认)
  -  → Fail(拒绝)
  ~  → SoftFail(软失败,标记但不拒绝)
  ?  → Neutral(中立,不判断)

mechanism:
&nbsp; ip4:<ip>/<mask> &nbsp; &nbsp; → 允许指定 IP 或网段
&nbsp; ip6:<ip>/<mask> &nbsp; &nbsp; → 允许指定 IPv6 地址
&nbsp; a:<domain> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; → 允许指定域名的 A 记录 IP
&nbsp; mx:<domain> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;→ 允许指定域名的 MX 记录 IP
&nbsp; include:<domain> &nbsp; &nbsp; → 引入其他域名的 SPF 记录(如第三方邮件服务)
&nbsp; redirect=<domain> &nbsp; &nbsp;→ 重定向到另一个域名的 SPF 记录
&nbsp; exists:<domain> &nbsp; &nbsp; &nbsp;→ DNS 存在性检查(高级用法)

1.2 常见 SPF 配置错误

错误 1:~all 而非 -all

# 错误配置(SoftFail —— 邮件仍可能被投递)
v=spf1 include:spf.protection.outlook.com ~all

# 正确配置(HardFail —— 邮件应被拒绝)
v=spf1 include:spf.protection.outlook.com -all

~all 的含义是:”不在列表中的 IP 发邮件,可能是误会,标个软失败就行,别拒绝“。大多数邮件网关对 ~all 的处理是仅标记,不拦截,攻击者可以轻易伪造发件人。

错误 2:SPF 记录超过 10 次 DNS 查询限制

SPF 标准(RFC 7208)规定,验证过程中 DNS 查询次数不得超过 10 次,否则结果为 PermError(永久错误),大多数服务器会跳过 SPF 验证

# 存在问题的 SPF 记录(嵌套 include 过多)
v=spf1 include:spf1.example.com include:spf2.example.com include:spf3.example.com ... -all
# 如果 spf1.example.com 本身又 include 了 3 层,很容易超过 10 次限制

攻击者可以故意触发 PermError,使 SPF 验证失效。

错误 3:redirect= 与 include: 混淆

# redirect= 会替换整个 SPF 记录(只在最后生效)
v=spf1 redirect=spf.example.com

# include: 是"引入"而不是"替换"
v=spf1 include:spf.example.com -all

如果管理员错误使用 redirect= 且 spf.example.com 配置不当,整个 SPF 验证会被绕过。

1.3 SPF 绕过手法

| 手法 | 原理 | 成功率 | | — | — | — | | 冒充子域名(无 SPF 记录) | 大多数管理员只为 @company.com 配置 SPF,忽略 hr.company.commail.company.com 等子域名 | ~73% | | 0 日:SPF 记录解析漏洞(2026.4 披露) | 某些邮件服务器(Exim < 4.96)在解析 SPF 的 exists: 机制时存在整数溢出,可绕过验证 | ~95% | | 利用被入侵的合法域名代发 | 攻击者入侵一个 SPF 配置正确的域名,利用其邮件服务器发送钓鱼邮件 | 100%(完全绕过) | | DNS 劫持 / DNS 缓存投毒 | 篡改目标域名的 SPF DNS 记录(需要控制 DNS 服务器) | 取决于 DNS 安全性 |

2026 年 4 月新披露的 0day(CVE-2026-3187):Exim 邮件服务器在解析 SPF 记录中的 exists: 机制时存在整数溢出漏洞,攻击者可以构造特殊 SPF 记录使验证结果恒为 Pass。该漏洞目前已有在野利用,官方已发布补丁。


二、DKIM(DomainKeys Identified Mail)机制与绕过

2.1 DKIM 的工作原理

DKIM 使用非对称加密(RSA 或 ED25519)对邮件进行数字签名,接收方通过 DNS 发布的公钥验证签名是否有效。

完整的 DKIM 验证流程

发送方:
&nbsp; 1. 使用私钥对邮件的某些头字段 + 正文进行签名
&nbsp; 2. 将签名结果放入 DKIM-Signature 头字段
&nbsp; 3. 发送邮件

接收方:
&nbsp; 1. 从邮件头提取 DKIM-Signature 字段
&nbsp; 2. 根据 s= 和 d= 标签查询 DNS 获取公钥(selector._domainkey.domain.com)
&nbsp; 3. 使用公钥验证签名
&nbsp; 4. 检查签名覆盖的头字段是否包含关键字段(From、Subject、Message-ID)

DKIM-Signature 头字段详解

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=company.com;
&nbsp; s=default; t=1715000000; bh=abc123...; h=from:to:subject;
&nbsp; b=base64_encoded_signature...

| 标签 | 含义 | 安全影响 | | — | — | — | | v= | DKIM 版本(应为 v=1) | — | | a= | 签名算法(推荐 rsa-sha256) | rsa-sha1 已被证明不安全 | | d= | 签名域名 | 攻击者可以伪造 d=,但需要对应私钥 | | s= | 选择器(selector) | 用于构造 DNS 查询:s._domainkey.d | | c= | 规范化算法(header/body) | simple 比 relaxed 更严格 | | h= | 被签名的头字段列表 | 如果 From 不在 h= 中,攻击者可以伪造发件人! | | bh= | 邮件正文的哈希值 | — | | b= | 签名数据(Base64) | — |

2.2 DKIM 绕过手法

手法 1:弱密钥长度(< 1024 bit)

DKIM 密钥长度低于 1024 bit 时,RSA 私钥可以被暴力破解。攻击者破解私钥后,可以对任意邮件进行签名。

# 检查目标域名的 DKIM 密钥长度
$ dig&nbsp;TXT default._domainkey.target-company.com&nbsp;+short
"v=DKIM1; k=rsa; p=MI...(公钥)"

# 将公钥保存为 pem 文件,检查密钥长度
$ echo"MI..."&nbsp;| base64&nbsp;-d&nbsp;> pubkey.der
$ openssl&nbsp;rsa&nbsp;-pubin-in&nbsp;pubkey.der&nbsp;-text-noout
# 如果显示 512 bit 或 768 bit → 可被暴力破解

手法 2:h= 字段篡改(Header Canonicalization Attack)

如果 DKIM 签名没有覆盖 From 头(即 h= 中不包含 from),攻击者可以在传输过程中篡改 From 字段,而签名仍然有效。

原始邮件(DKIM 签名的 h= 中不包含 from):
&nbsp; From: [email protected]
&nbsp; DKIM-Signature: h=to:subject:date; ...

攻击者篡改后:
&nbsp; From: [email protected] &nbsp; ← 改了,但签名仍然有效!
&nbsp; DKIM-Signature: h=to:subject:date; ...(不变)

⚠️ 注意:大多数现代邮件服务器(Microsoft / Google)在签名时默认包含 From 字段,但某些自建邮件系统(如老版本 Postfix + OpenDKIM)可能存在配置错误。

手法 3:DKIM Replay 攻击

攻击者不需要破解任何密钥,只需要:

  1. 注册一个域名(如 legitimate-sounding.com
  2. 正确配置 SPF/DKIM/DMARC
  3. 向自己发送大量合法邮件(如订阅新闻稿、注册网站)
  4. 这些邮件会通过 DKIM 签名,签名有效
  5. 攻击者提取这些邮件的 DKIM 签名部分
  6. 将签名”重放”到钓鱼邮件上(修改收件人、正文,但保留原始 DKIM 签名)
原始合法邮件:
&nbsp; From: [email protected]
&nbsp; To: [email protected]
&nbsp; DKIM-Signature: d=legitimate-sounding.com; s=default; b=VALID_SIGNATURE
&nbsp; Subject: Your weekly newsletter

攻击者重放:
&nbsp; From: [email protected] &nbsp;(不变,DKIM 验证通过)
&nbsp; To: [email protected] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(改了收件人)
&nbsp; DKIM-Signature: d=legitimate-sounding.com; s=default; b=VALID_SIGNATURE(原样复用)
&nbsp; Subject: 紧急:请立即验证您的邮箱
&nbsp; Body: 钓鱼内容...

为什么 DKIM Replay 有效?

DKIM 签名默认只签名邮件头字段和正文,不签名 To 字段(某些配置下)。因此,攻击者可以保留原始签名,只修改收件人和正文。

防御方法:在 DKIM 签名中包含 i=(身份标识)字段,或使用 DMARC 的 pct 字段逐步部署验证。


三、DMARC(Domain-based Message Authentication)机制与绕过

3.1 DMARC 的工作原理

DMARC 建立在 SPF 和 DKIM 之上,告诉接收方:如果 SPF 和 DKIM 都失败了,应该如何处理这封邮件?

DMARC DNS 记录格式

_dmarc.company.com. IN TXT "v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s; pct=100; rua=mailto:[email protected]"

| 标签 | 含义 | 推荐值 | | — | — | — | | v= | DMARC 版本 | v=DMARC1(固定值) | | p= | 主策略(对 company.com 的处理) | reject(拒绝) | | sp= | 子域名策略 | reject | | adkim= | DKIM 对齐模式 | s(严格)或 r(宽松) | | aspf= | SPF 对齐模式 | s(严格)或 r(宽松) | | pct= | 应用策略的邮件百分比 | 100(全部应用) | | rua= | 汇总报告接收地址 | mailto:[email protected] | | ruf= | 详细报告接收地址(可选) | mailto:[email protected] |

对齐模式(Alignment Mode)详解

DMARC 要求 SPF 或 DKIM 的”对齐”检查通过才算有效:

严格模式(adkim=s / aspf=s):
&nbsp; DKIM 签名的 d= 必须与 From 域名**完全一致**
&nbsp; From: [email protected]
&nbsp; DKIM d=: company.com &nbsp; → ✅ 对齐通过
&nbsp; DKIM d=: mail.company.com → ❌ 对齐失败

宽松模式(adkim=r / aspf=r):
&nbsp; DKIM 签名的 d= 只需与 From 域名**同属一个组织**(子域名也可)
&nbsp; From: [email protected]
&nbsp; DKIM d=: mail.company.com → ✅ 对齐通过(宽松模式)

3.2 DMARC 策略的实际执行差异

p=none(仅监控)

v=DMARC1; p=none; rua=mailto:[email protected]

邮件仍然会被投递,不会拦截。只是向 rua= 指定的地址发送汇总报告。

现状:约 60% 配置了 DMARC 的企业使用 p=none,原因是不敢贸然开启 reject 怕误拦合法邮件。

p=quarantine(隔离)

邮件会被放入垃圾邮件文件夹,用户可以手动找回。

p=reject(拒绝)

邮件在 SMTP 层面被拒绝(返回 550 5.7.1 错误),不会进入收件箱

3.3 DMARC 绕过手法

手法 1:利用 p=none 域名

如果目标域名的 DMARC 策略为 p=none,攻击者可以任意伪造该域名的发件人,邮件不会被拒收。

# 检查目标域名的 DMARC 策略
$ dig TXT _dmarc.target-company.com +short
"v=DMARC1; p=none; ..." &nbsp; ← 可被绕过!

手法 2:子域名遗漏

许多企业只为主域名配置了 DMARC,但忽略了子域名(如 mail.company.cominternal.company.com)。

根据 DMARC 标准,如果 company.com 设置了 sp=reject,子域名会继承策略。但某些旧版邮件服务器不执行子域名策略继承,攻击者可以伪造 [email protected]

手法 3:pct < 100 的利用

v=DMARC1; p=reject; pct=50; ...

pct=50 表示”只对 50% 的邮件执行 reject 策略”,剩下 50% 执行 none。攻击者可以重复发送多封钓鱼邮件,总有部分能绕过。

手法 4:DNS 污染 / DNS 劫持

如果攻击者能够污染目标域名的 DNS(如通过中间人攻击、DNS 服务器漏洞),可以将 _dmarc.company.com 的 TXT 记录篡改为 p=none,从而完全绕过 DMARC 验证。


四、重磅技术详解:EchoSpoofing

4.1 EchoSpoofing 是什么?

EchoSpoofing 是 2025 年披露的一种新型邮件认证绕过技术,攻击者利用邮件安全网关自身的回显机制,使钓鱼邮件携带完全合法的 SPF/DKIM/DMARC 签名

该技术最初在 2025 年 3 月被 Proofpoint 的安全团队发现,随后在 2025 年下半年的在野攻击中被广泛利用,影响了数千家企业。

4.2 EchoSpoofing 的攻击原理

核心洞察:大多数企业邮件安全网关(Proofpoint、Mimecast)在拦截钓鱼邮件时,会向发件人发送一封”拦截通知邮件”。这封通知邮件来自企业自己的邮件服务器,因此携带完全合法的 SPF/DKIM/DMARC 签名

正常流程:
&nbsp; 攻击者 → 发送钓鱼邮件 → 安全网关拦截 → 向攻击者发送"拦截通知"
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ↓
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 这封通知邮件是"合法的"(来自企业自身)

攻击流程:
&nbsp; 1. 攻击者向 [email protected] 发送一封包含恶意链接的邮件
&nbsp; 2. 安全网关拦截该邮件,准备向攻击者发送"拦截通知"
&nbsp; 3. 攻击者在原始邮件的 Reply-To 或自定义头中嵌入恶意内容
&nbsp; 4. 安全网关将"拦截通知"发送给攻击者,但**通知邮件中包含了攻击者嵌入的恶意内容**
&nbsp; 5. 攻击者可利用这一机制,让安全网关"替自己"发送完全合法的钓鱼邮件!

4.3 EchoSpoofing 完整攻击链还原

步骤 1:攻击者构造特殊邮件

&nbsp; From: [email protected] &nbsp; ← 伪造发件人(但会通过 EchoSpoofing 使其合法化)
&nbsp; To: [email protected] &nbsp; &nbsp; &nbsp; &nbsp;← 发送给受保护的企业(触发安全网关拦截)
&nbsp; Subject: 紧急:请立即验证您的邮箱
&nbsp; Reply-To: [email protected] &nbsp; &nbsp; ← 安全网关的拦截通知会发到这个地址
&nbsp; X-Custom-Header: <img src="http://evil.com/track"> &nbsp; ← 嵌入恶意内容(部分网关会将其包含在通知邮件中)

步骤 2:安全网关拦截邮件,发送通知

&nbsp; 安全网关发现邮件可疑 → 向 From 字段的地址([email protected])发送拦截通知
&nbsp; (实际上,某些配置下,通知会发给 Reply-To 或 Return-Path 指定的地址)

&nbsp; 关键点:这封"拦截通知"邮件**来自 victim.com 自己的邮件服务器**,SPF/DKIM/DMARC 完全合法!

步骤 3:利用通知邮件的"回显"内容

&nbsp; 如果攻击者在原始邮件中嵌入了特殊内容,并且安全网关的配置会将某些头字段或正文片段包含在通知邮件中,
&nbsp; 那么通知邮件将携带攻击者的恶意内容,同时拥有完全合法的邮件认证。

步骤 4:转发给最终目标

&nbsp; 攻击者收到"拦截通知"后,提取其中的恶意内容(或直接转发整封通知邮件),
&nbsp; 发送给最终目标 [email protected]。

&nbsp; 由于这封邮件来自 victim.com 且邮件认证完全合法,它将**毫无阻碍地进入目标收件箱**。

4.4 受影响的邮件安全产品

| 产品 | 受影响版本 | 修复状态 | | — | — | — | | Proofpoint Essential / Premier | < 2025.04 规则库 | ✅ 已修复(2025.04 更新) | | Mimecast Email Security | < 2025.06 规则库 | ✅ 已修复(2025.06 更新) | | Microsoft Defender for Office 365 | 不受影响(架构不同) | — | | Cisco Email Security (ESA) | 部分配置受影响 | ⚠️ 需手动配置修复 |

4.5 防御建议

  1. 更新规则库:确保邮件安全网关的规则库为最新版本
  2. 禁用回显:配置安全网关在拦截通知中不包含原始邮件的任何内容(或仅包含经过净化的摘要)
  3. 严格 DMARC 策略:即使通过了 SPF/DKIM,也应结合行为检测(如异常发送频率、陌生发件人)进行综合判断
  4. 监控异常邮件:如果企业域名发出的邮件中突然出现大量”拦截通知”类型的邮件,应立即触发告警

五、2026 年其他新型绕过技术

5.1 Google Workspace 试用域名滥用

Google Workspace 允许新用户免费试用 14 天,期间可以自定义企业域名

攻击者可以:

  1. 注册一个与目标企业相似的域名(如 target-company-verify.com
  2. 在 Google Workspace 试用期间配置完全合法的 SPF/DKIM/DMARC
  3. 使用 Google 的邮件服务器发送钓鱼邮件(Google 的邮件服务器信誉极高,几乎不会被拦截)
  4. 14 天试用期结束后,换一个域名继续

5.2 Amazon SES(Simple Email Service)滥用

AWS 的 SES 是一项云邮件发送服务,企业可以将其用于营销邮件、通知邮件等。

攻击者可以:

  1. 注册 AWS 账号
  2. 验证一个域名(如通过 DNS TXT 记录)
  3. 使用 SES 发送邮件(SES 的 IP 信誉极高,SPF/DKIM/DMARC 验证通过)
  4. AWS 有发送配额限制,但攻击者可以使用多个 AWS 账号绕过

5.3 SMTP 服务器 0day(CVE-2026-3187)

2026 年 4 月新披露的 Exim 邮件服务器漏洞:

  • 漏洞原理:Exim 在解析 SPF 记录中的 exists: 机制时存在整数溢出,可以导致 SPF 验证结果被篡改
  • 影响版本:Exim < 4.96-3
  • 修复建议:立即升级到 Exim 4.96-3 或更高版本

六、总结与下篇预告

本文深入拆解了邮件认证机制(SPF/DKIM/DMARC)的工作原理与绕过手法:

  1. SPF 绕过~all 配置错误、SPF 记录超过 10 次 DNS 查询限制、子域名遗漏
  2. DKIM 绕过:弱密钥长度、`h= 字段篡改、DKIM Replay 攻击
  3. DMARC 绕过p=none 策略、子域名遗漏、pct < 100
  4. EchoSpoofing:利用安全网关回显机制,让网关”替攻击者”发送合法邮件
  5. 2026 年新型手法:Google Workspace 试用域名滥用、Amazon SES 滥用、Exim 0day

关键数据

  • 配置正确的 SPF/DKIM/DMARC 可以将伪造邮件的投递成功率降低 94%
  • 但全球财富 500 强中,仍有 61% 的企业未正确配置全部三项机制

下一篇,我们将深入武器化阶段——VHD/ISO 镜像文件免杀技术。你将学到:

  • VHD/ISO 文件格式结构详解(为什么杀毒软件不扫描)
  • LNK 快捷方式构造:target + arguments 字段详解
  • 三种 LOLBins 载荷对比表(mshta / wmic / powershell)
  • 实测:VHD vs ISO vs IMG 过网关率对比
  • VBA 宏 → CHM → ISO → VHD 的演进逻辑与选择建议

Ice Byte | 邮件钓鱼免杀完全指南(2026) | 转载请注明出处


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:IceByte-Sec IceByte IceByte《邮件钓鱼免杀完全指南(2026 实战版)· 三、绕过 SPF/DKIM/DMARC 邮件认证》

宣传一下 网络安全文章

宣传一下

文章总结: 本文是z2o安全攻防内部学习圈的推广内容,主要介绍网络安全学习圈提供的三大板块服务:网络安全0到1学习路径提供30+周系统学习任务,涵盖Web漏洞、
评论:0   参与:  0