定位网络基础与协议安全篇 · 邮件身份验证三板斧 钓鱼为何仍能得手声明伪造邮件、钓鱼测试仅限自有域名与书面授权向他人发送欺诈邮件违法。一、为什么邮件是钓鱼的「主战场」攻击链常见入口 钓鱼邮件 → 恶意链接/附件 → 凭据窃取 → 内网横向邮件协议 SMTP 设计于无身份时代问题后果SMTP 不验证发件人可伪造From:显示名转发、中继复杂单纯 SPF 易在转发后失败用户信「看起来对」显示名、Logo、 urgency 话术SPF / DKIM / DMARC是当今抵御域名伪造的主流 DNS 机制但不能防住所有钓鱼。本文配好三板斧演示绕过手法蓝队检测。二、SMTP 与「两个发件人」读邮件头前先分清┌─────────────────────────────────────────────────────────┐ │ 信封发件人Envelope MAIL FROM / Return-Path │ │ → SPF 检查的对象退信回到这里 │ ├─────────────────────────────────────────────────────────┤ │ 头域发件人Header From: │ │ → 用户邮箱客户端显示的「发件人」 │ └─────────────────────────────────────────────────────────┘钓鱼常利用二者不一致From: 财务部 ceoyourcompany.com ← 用户看到的 MAIL FROM: bounceattacker-smtp.com ← SPF 可能查这个DMARC的核心就是要求SPF 或 DKIM 至少有一个与 Header From「对齐Alignment」。三、SPF发信 IP 白名单3.1 原理域名发布 DNSTXT记录声明哪些 IP/服务可以代发vspf1 ip4:203.0.113.10 include:_spf.google.com -all收信方 MX 查 SPF连接来的 IP 是否在名单内。3.2 记录语法速查机制含义示例ip4:/ip6:允许的主机ip4:203.0.113.0/24include:引用其他域 SPFinclude:spf.protection.outlook.coma/mx域的 A/MX 记录 IPmx-all其余拒绝推荐生产严格~all其余软失败过渡all其余允许危险等于没配3.3 配置示例自有域名mailsec.labDNS 控制台添加 TXT主机记录或根域vspf1 mx ip4:192.168.56.30 ~all若用 Google Workspacevspf1 include:_spf.google.com -all3.4 验证digTXT mailsec.lab shortdigTXT mailsec.lab 8.8.8.8 short# 在线mxtoolbox.com/spf.aspx3.5 SPF 局限· 只验证 MAIL FROM 域不验证 From 头 · 邮件转发后 IP 变可能 SPF fail需 ARC 等进阶 · 10 次 DNS 查询限制include 嵌套 · 不保证邮件内容未被篡改四、DKIM密码学签名4.1 原理发信服务器用私钥对邮件头/体签名公钥通过 DNS 发布selector._domainkey.mailsec.lab TXT vDKIM1; krsa; pMIGfMA0G...收信方用p公钥验签确认邮件未被篡改且来自持有私钥的一方。4.2 邮件头中的样子DKIM-Signature: v1; arsa-sha256; dmailsec.lab; sdefault; hfrom:to:subject:date; bh...; b...字段含义d签名域s选择器selectorb签名值4.3 靶场生成密钥OpenDKIM 风格# Ubuntu 受害机/邮件机 192.168.56.30sudoaptinstall-yopendkim opendkim-toolssudomkdir-p/etc/opendkim/keys/mailsec.labsudoopendkim-genkey-b2048-dmailsec.lab-sdefault-D/etc/opendkim/keys/mailsec.lab/# 公钥发布到 DNS查看 default.txtsudocat/etc/opendkim/keys/mailsec.lab/default.txtdefault.txt内容合并为一行 TXT 记录主机名default._domainkey.mailsec.lab4.4 验证digTXT default._domainkey.mailsec.lab short收到邮件后看头Authentication-Results: mx.google.com; dkimpass header.dmailsec.lab header.sdefault;五、DMARC策略 对齐5.1 原理在_dmarc.mailsec.lab发布策略告诉收信方· SPF/DKIM 失败时怎么处理none / quarantine / reject · 对齐规则relaxed / strict · 报告发到哪里rua 聚合 / ruf 取证5.2 记录示例监测期建议先上vDMARC1; pnone; ruamailto:dmarc-reportsmailsec.lab; pct100; adkimr; aspfr成熟后收紧vDMARC1; pquarantine; pct100; ruamailto:dmarc-reportsmailsec.lab; adkims; aspfs严格生产vDMARC1; preject; pct100; ruamailto:dmarc-reportsmailsec.lab参数含义p对当前域策略sp子域策略rua聚合报告邮箱adkimr/sDKIM 宽松/严格对齐aspfr/sSPF 宽松/严格对齐5.3 对齐Alignment图解Header From: alicemailsec.lab SPF 对齐MAIL FROM 域也是 mailsec.lab或子域看 relaxed/strict DKIM 对齐DKIM d 也是 mailsec.lab DMARC pass (SPF pass 且 SPF 对齐) 或 (DKIM pass 且 DKIM 对齐)仅 SPF pass 但对齐失败 → DMARC fail钓鱼仍可能被拒。5.4 验证digTXT _dmarc.mailsec.lab short工具dmarcian.com、MXToolbox DMARC六、三板斧协同工作流程收信 MX 收到邮件 │ ┌───────────────┼───────────────┐ ▼ ▼ ▼ 查 SPF TXT 验 DKIM 签 读 DMARC 策略 连接 IP 用 DNS 公钥 看对齐失败处置 │ │ │ └───────────────┴───────────────┘ ▼ Authentication-Results 写入邮件头 ▼ preject → 拒收quarantine → 垃圾箱Authentication-Results 示例GmailAuthentication-Results: mx.google.com; dkimpass header.imailsec.lab; spfpass (google.com: domain of bouncemailsec.lab designates ...); dmarcpass (pREJECT spREJECT disNONE) header.frommailsec.lab七、实验环境搭建7.1 拓扑邮件服务器 Ubuntu 192.168.56.30 Postfix OpenDKIM Kali 发信测试 192.168.56.10 swaks DNS 真实域名控制台 或 靶场 dnsmasq 分析 任意邮箱 / mail-tester.com建议用你可控的真实子域如lab.你的域名.com做 DNS 实验比纯内网假域更可验证。7.2 最小 Postfix OpenDKIM56.30sudoaptinstall-ypostfix mailutils opendkim opendkim-tools# 安装时选 Internet Site主机名 mailsec.lab或 FQDN# /etc/opendkim.conf 关键项sudotee-a/etc/opendkim.confEOF Domain mailsec.lab Selector default KeyFile /etc/opendkim/keys/mailsec.lab/default.private Socket inet:8891localhost EOF# Postfix 集成 milter/etc/postfix/main.cf# milter_protocol 2# milter_default_action accept# smtpd_milters inet:localhost:8891# non_smtpd_milters inet:localhost:8891sudosystemctlenable--nowopendkim postfix7.3 DNS 三板斧清单实验域记录类型主机值TXTvspf1 ip4:你的公网IP -all靶场可用~allTXTdefault._domainkeyOpenDKIM 生成的p...TXT_dmarcvDMARC1; pnone; ruamailto:youmailsec.labMX指向邮件服务器7.4 打快照mail-server-clean/kali-clean八、合法发信测试8.1 swaks 发送「合规邮件」# Kalisudoaptinstall-yswaks swaks--toyour-testgmail.com\--fromalicemailsec.lab\--server192.168.56.30\--headerSubject: DMARC Lab Legit Mail\--bodySPFDKIMDMARC lab test检查收件箱→ 显示原始邮件 → 找spfpassdkimpassdmarcpass。8.2 mail-tester.com 打分# 网站会给你一个临时地址 test-xxxxxmail-tester.comswaks--totest-xxxxxmail-tester.com\--fromalicemailsec.lab\--server你的公网SMTP目标10/10常见扣分SPF/DKIM/DMARC 缺失、反向 DNS、黑名单。九、钓鱼绕过手法授权演示以下在自有域、授权红队、封闭靶场中演示用于蓝队培训。9.1 显示名伪造最常见DMARC 不管swaks--tovictimcompany.com\--fromceoattacker-gmail.com\--headerFrom: CEO Zhang ceoattacker-gmail.com\--headerSubject: 紧急请立即付款\--body...现象说明邮箱显示「CEO Zhang」用户看名字不看地址SPF/DKIM可能 pass攻击者自己的域DMARC对齐的是 attacker 域与伪装无关防御用户培训 邮件网关显示名与地址不一致告警 外部邮件横幅。9.2 相似域名Lookalike真实 company.com 伪造 c0mpany.com / company-co.com / company-login.com攻击者注册近似域配好 SPF/DKIM/DMARC发真 pass的钓鱼信。防御域相似度检测、品牌保护注册、浏览器隔离点击链接。9.3 子域滥用若父域 SPFvspf1 include:... ~all攻击者控制evil.company.com的 DNS自建 SMTPSPF 可能子域独立——取决于父域spDMARC 策略。防御_dmarc设spreject子域同样配 DMARC。9.4 未配 DMARC 的域经典伪造对无 DMARC / pnone的victim-company.comswaks--totestgmail.com\--fromfakevictim-company.com\--server攻击者SMTP\--headerFrom: HR fakevictim-company.com部分收件方仅 SPF fail 标垃圾仍可能进箱Gmail/Outlook 对无 DMARC 域越来越严但不可依赖。蓝队尽快pquarantine→preject。9.5 合法账号被盗真实 SPF pass DKIM pass DMARC pass 但内容仍是钓鱼链接账号接管、OAuth 滥用防御MFA、异常登录检测、链接重写沙箱Safe Links、行为分析。9.6 同源不同内容BEC 商务邮件诈骗不伪造技术字段用被控供应商真实邮箱改收款账号。防御付款二次确认流程、带外电话核实不靠邮件 alone。9.7 绕过手法汇总表手法SPFDKIMDMARC技术能否挡显示名伪造任意任意不相关❌ 需培训网关相似域名passpasspass❌ 需品牌监测无 DMARC 域伪造fail/softfail无△ 部分挡盗号真信passpasspass❌ 需 MFAUEBA转发导致 SPF failfailpass可能 passDKIMARC十、蓝队如何读邮件头10.1 查看顺序1. Authentication-Results综合结论 2. Received-SPF 3. DKIM-Signature 验签结果 4. From / Reply-To / Return-Path 是否一致 5. Received 链来源 IP、跳数 6. Message-ID、Date 异常10.2 快速判断脚本思路# 伪代码解析 Authentication-Resultsifdmarcpassinheadersandfrom_domaincompany_domain:trust_levelhighelifdmarcfailandfrom_domaincompany_domain:trust_levelreject_candidateelifdisplay_name_matches_execandenvelope_from_external:trust_levelphish_suspect10.3 邮件网关策略□ 外部邮件加 [EXTERNAL] 横幅 □ DMARC fail 声称内部域 → 隔离 □ 显示名高管 发件地址非公司域 → 告警 □ URL 重写 沙箱 detonation □ 附件宏默认剥离十一、DMARC 报告解读11.1 聚合报告rua每日 XML 发到rua邮箱含· 声称从你域发出的 IP 列表 · SPF/DKIM 成功/失败统计 · 对齐失败来源发现未授权发信工具dmarcian、Postmark DMARC、Google 报表解析。11.2 从 pnone 到 reject 路线图周 1-2pnone收 rua盘点合法发信源营销邮件、工单系统、CRM 周 3-4补全 SPF include、上 DKIM确认第三方 SaaS 周 5-6pquarantine; pct25 → 50 → 100 周 7preject; spreject十二、完整实验步骤120 分钟□ 1. 准备可控子域添加 SPF TXT □ 2. opendkim-genkey发布 default._domainkey TXT □ 3. 添加 _dmarc pnone; rua... □ 4. PostfixOpenDKIM 发一封合法信确认三板斧 pass □ 5. mail-tester 或 Gmail 原始头截图 □ 6. swaks 演示显示名伪造外部域记录仍进箱原因 □ 7. 演示相似域名思路文字说明DNS 对比表勿滥注册 □ 8. 将 DMARC 改为 pquarantine重发伪造 internal From观察拒收/垃圾箱 □ 9. 写蓝队检查清单 10 条 □ 10. 实验报告配置片段 头部分析 绕过与对策十三、常见踩坑问题原因解决SPF permerror语法错误、超过 10 DNS 查询用 spf flatten 或减少 includeDKIM failDNS 未生效、selector 错dig 验证私钥路径DMARC 永远 none不敢收紧先 rua 监测再 quarantine转发后 SPF fail转发器 IP 不在 SPF保持 DKIM考虑 ARCGmail 不进箱无 PTR、IP 黑名单配 rDNS用 reputable IP内网 56.30 发不到公网NAT/25 端口封用公网 VPS SMTP 或 mail-tester 子域实验把 From 当 SPF 对象概念混淆记住 MAIL FROM vs Header From十四、法律与伦理✅ 允许自有域测试、授权钓鱼演练Phishing Simulation ❌ 禁止伪造银行/政府邮件诈骗 ❌ 禁止未授权对他人域做 DMARC 绕过测试发信企业钓鱼演练需HR/法务/IT 书面批准并提供举报通道。十五、本篇小结┌─────────────────────────────────────────────────────────────┐ │ 邮件安全 核心记忆 │ ├─────────────────────────────────────────────────────────────┤ │ SPFMAIL FROM 发信 IP 白名单DNS TXT │ │ DKIM私钥签名 DNS 公钥验签 │ │ DMARC对齐 失败策略none→quarantine→reject │ │ 技术挡「域伪造」不挡「显示名伪造/相似域/盗号」 │ │ 蓝队Authentication-Results 网关策略 用户培训 │ └─────────────────────────────────────────────────────────────┘下一篇预告《BGP 劫持是怎么回事运营商级路由安全科普》——从企业邮件边界跃迁到互联网路由信任模型。附录 ADNS 记录模板; SPF IN TXT vspf1 mx ip4:203.0.113.10 include:_spf.google.com -all ; DKIM default._domainkey IN TXT vDKIM1; krsa; pMIGfMA0GCSqGSIb3... ; DMARC _dmarc IN TXT vDMARC1; pquarantine; pct100; ruamailto:dmarcmailsec.lab; adkims; aspfs附录 Bswaks 速查# 基础swaks--todestexample.com--fromsrcmailsec.lab--serverSMTP_HOST# 自定义头显示名swaks--tovictimtest.com--fromattevil.com\--headerFrom:\财务总监\attevil.com\--headerSubject: 测试--bodylab# TLSswaks--to...--serversmtp.gmail.com:587--tls附录 Cdig 一键检查DOMAINmailsec.labdigTXT$DOMAINshortdigTXT default._domainkey.$DOMAINshortdigTXT _dmarc.$DOMAINshortdigMX$DOMAINshort附录 D与专栏前篇关联前篇关联DNS 安全SPF/DKIM/DMARC 全是 DNS TXTHTTP/HTTPS钓鱼链接落地仍靠 Web 安全SSL 剥离邮件中的 http 链接同样危险Kill Chain钓鱼是初始入侵常见向量