电子邮件身份验证是有价值的证据,但它并非最终裁决。
发件人策略框架(SPF)、域名密钥识别邮件(DKIM)和基于域名的消息认证、报告和一致性(DMARC)可以帮助接收系统判断消息是否通过授权的基础设施发送,以及经过身份验证的身份是否与可见的发件人一致。但在网络钓鱼检测中,将这些检查视为万能答案会产生错误的信心。
这种区别影响了我在我开源的 Python 网络钓鱼检测项目 PhishGuard AI 中添加的电子邮件身份验证支持。
PhishGuard 解析可信接收方的 Authentication-Results(身份验证结果)标头,并将身份验证失败视为佐证。它不独立查询域名系统(DNS)、评估 SPF 策略、验证 DKIM 签名或执行 DMARC 对齐。这意味着调用方必须提供由其信任的接收方生成的身份验证结果。
这是有意为之。目标是实现可解释的网络钓鱼检测,而非隐藏的安全表演。
SPF、DKIM 和 DMARC 能证明什么
SPF 可以显示发送 IP 地址是否获得了该域名 SPF 策略的授权。
DKIM 可以显示消息是否具有来自某域名的有效加密签名,以及签名内容是否保持完整。
DMARC 可以根据域名所有者的策略,显示 SPF 或 DKIM 是否以与可见发件人域名一致的方式通过验证。
综上所述,这些检查功能强大。它们使欺骗变得更加困难,支持域名保护,并在调查可疑电子邮件时为防御者提供有用的证据。
但它们并不能回答所有问题。
它们不能证明什么
SPF、DKIM 或 DMARC 通过验证并不证明消息是安全的。
攻击者可以从他们控制的基础设施发送恶意内容。被入侵的邮箱、被滥用的电子邮件服务或恶意注册的域名仍可能通过身份验证检查。
身份验证失败也不自动证明是网络钓鱼。
转发、邮件列表和消息转换可能会以非恶意的方式破坏 SPF 或 DKIM。如果检测器将每次身份验证失败都视为网络钓鱼的裁决,它可能会惩罚合法邮件并产生可避免的误报。
这就是为什么 PhishGuard 将身份验证结果视为证据,而非确证。
评分界限
该实现故意保持保守:
- 当与可疑内容结合时,身份验证失败可能会增加风险。
- 身份验证通过不会降低风险,因为经过身份验证的基础设施仍可能发送恶意消息。
- 缺失、格式错误和不支持的身份验证值仍标记为
unknown(未知)。 - 单次 SPF 失败不被视为网络钓鱼的确证。
最后一点很重要。当输入信号不完整时,安全工具应保留不确定性。
回归测试示例
两个回归测试案例展示了这一界限。
一封具有 SPF 失败的合法转发邮件仍保持 SAFE(安全),评分从:
0.3149 -> 0.3595
一封具有 SPF、DKIM 和 DMARC 失败的人造凭证诱导邮件,评分从:
0.6525 SUSPICIOUS(可疑) -> 0.8220 PHISHING(网络钓鱼)
差异在于上下文。当其他特征也显得可疑时,身份验证失败更具意义。
可解释的 JSON 输出
PhishGuard
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。