邮件欺诈之SPF

SPF

SPF通过校验发件端IP地址,防止邮件诈骗。

SPF原理

SPF(Sender Policy Framework) 是一种以IP地址认证电子邮件发件人身份的技术,通过认证发件IP与发件域名中的声明进行匹配,从而防止别人伪造你来发邮件。

SPF验证过程

  1. 接收端获取发件端IP(发件端的连接IP,无法改变)
  2. 接收端查询发件域名(SMTP会话中,mail from指令中的用户域名部分)的TXT记录
  3. 根据发件端的SPF记录的规则进行匹配,按照声明的策略进行处理

根据验证过程,我们来梳理一下其中2个点。

mail from

首先要分清楚mail from和from的区别:
mail form:实际发件人,由[前缀@域名]组成
from:显示发件人,即我们平时查看邮件简略信息时显示的发件人
将腾讯邮箱中的一封邮件导出为eml文件,使用记事本查看可以看到如下信息,下图标注了mail from和from

如果mail_from (实际发件人) 和 from (显示发件人) 不一致,则收到的邮件会显示 本邮件由<实际发件人>代发, 以提醒收件人两者的不同。所以,不看清发件人是谁是很容易被骗的。

SPF记录语法

一条 SPF 记录定义了一个或者多个 mechanism,而 mechanism 则定义了哪些 IP 是允许的,哪些 IP 是拒绝的。

这些 mechanism 包括以下几类:

all | ip4 | ip6 | a | mx | ptr | exists | include

每个 mechanism 可以有四种前缀:

"+"  Pass(通过)
"-"  Fail(拒绝)
"~"  Soft Fail(软拒绝)
"?"  Neutral(中立)

这里列举常见的几种:

all

表示所有 IP,肯定会命中。因此通常把它放在 SPF 记录的结尾,表示处理剩下的所有情况。

"v=spf1 -all" 拒绝所有(表示这个域名不会发出邮件)
"v=spf1 +all" 接受所有(域名所有者认为 SPF 是没有用的,或者根本不在乎它)
"v=spf1 +a +mx +a:example.com -all" 即采用本域名的a记录的IP地址,本域名的mx记录的IP地址,以及example.com的a记录的IP地址,除此之外全部拒绝

include

格式为include:,表示引入域名下的 SPF 记录。注意,如果该域名下不存在 SPF 记录,则会导致一个PermError结果。

"v=spf1 include:example.com -all" 即采用和 example.com 完全一样的 SPF 记录,并拒绝其他所有

~软拒绝

使用~all来配置时,一般会把-all拒绝的邮件当作垃圾邮件处理,但是人们有时还是回去翻垃圾邮件,由此也有可能导致邮件欺诈。

所以,在无特殊需求时,建议使用-all来处理。

实战

在学习邮件欺诈漏洞的时候,我尝试对自己公司的邮箱下手,结果还真有,避免挨打,用company.com来代替实际的公司域名。

首先使用nslookup来查看公司邮箱的SPF记录:

nslookup -type=txt company.com

发现使用的是~all配置,在上文提到,这是不安全的,所以我们有机会利用。

利用在线伪造邮件网站https://emkei.cz/?reCAPTCHAv2

From Name:即我们上文提到的mail from
From E-mail:我们想伪造的公司域名
To:受害者邮箱
Subject:邮件标题
Text:邮件内容

类似上面这样填好之后,就可以发送邮件到我的gmail邮箱,立刻就收到了!
And else
通过nslookup可以看到,我们公司使用是腾讯企业邮箱,配置的SPF记录是直接调用spf.mail.qq.com域名的SPF记录,再次去查看该域名的SPF记录,可以看到它又是调用了几个子域的SPF记录
挑第一个子域的SPF看一下,终于看到了具体的IP地址
如果你能拿下这些IP段中任一一台主机,就可以伪造腾讯邮箱进行邮件欺诈了,为所欲为,腾讯的SPF规则对你来说就是渣渣。
推荐阅读hackerOne披露的漏洞实例:https://hackerone.com/reports/629087
快速检查工具:https://github.com/BishopFox/spoofcheck

参考

https://mntn0x.github.io/2019/08/02/邮件欺诈之SPF/
https://cloud.tencent.com/developer/article/1047273
https://www.renfei.org/blog/introduction-to-spf.html
https://www.4hou.com/web/13931.html
https://oddboy.cn/2019/反垃圾邮件技术及可能存在的问题-spf-dkim-dmarc/
http://www.0xby.com/855.html