声明:该公众号大部分文章来自作者日常学习笔记,未经授权,严禁转载,如需转载,联系洪椒公众号。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

0x00 前言


由于个人的安全意识水平存在差异,钓鱼邮件往往很容易成功让人中招。本篇主要介绍邮件钓鱼时绕过 SPF 伪造发信人信息。

0x01 SPF


1、什么是 SPF

SPF 发件人策略框架(Sender Policy Framework)电子邮件认证机制,主要作用是防止伪造邮件地址。

SPF记录的本质,是向收件人宣告:本域名的邮件从清单上所列IP发出的都是合法邮件。

当在DNS中定义了域名的SPF记录后,为了确认邮件声称发件人不是伪造的,邮件接收方首先检查邮件域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录中,若包含,则认为是一封正确的邮件,否则认为是一封伪造的邮件并退回,或将其标记为垃圾/仿冒邮件。

2、如何判断 SPF

dig -t txt qq.com  //linux

nslookup -type=txt qq.com //windows

"v=spf1 -all" (拒绝所有,表示这个域名不会发出邮件)
"v=spf1 +all" (接受所有)
"v=spf1 ip4:192.168.0.1/16 -all"(只允许 192.168.0.1/16 范围内的IP发送邮件)
"v=spf1 mx -all"(允许当前域名的 mx 记录对应的IP地址发送邮件)
"v=spf1 mx mx:test.example.com -all"(允许当前域名和 test.example.com 的 mx 记录对应的IP地址发送邮件)
"v=spf1 a mx ip4:173.194.72.103 -all"(允许当前域名的 a 记录和 mx 记录和一个给定的IP地址发送邮件)
"v=spf1 include:example.com -all"(采用和 example.com 一样的SPF记录)

如果邮箱没有配置 SPF ,就可以直接伪造邮箱地址发送邮件。下图是没有配置SPF 的邮箱系统。

0x02 无 SPF 伪造


1、Swaks 使用说明

本篇使用 Swaks 工具进行邮件伪造,该工具在 kail 中已经集成,以下是该工具的一些参数介绍。

-t  –to 目标地址 -t   test@test.com
-f –from 来源地址 (发件人)  -f "text"
–protocol 设定协议(未测试)
--body "http://www.baidu.com"    //引号中的内容即为邮件正文
--header "Subject:hello"      //邮件头信息,subject为邮件标题
-ehlo 伪造邮件ehlo头
--data ./Desktop/email.txt     //将TXT文件作为邮件发送

2、临时邮箱

下面是测试需要用到的临时邮箱地址。

http://24mail.chacuo.net/
https://www.linshi-email.com/

3、伪造过程

1.检测

nslookup -type=txt iubridge.com

检测发现该地址没有配置 SPF。

2.伪造

swaks --header-X-Mailer "" --header-Message-Id "" --header-"Content-Type"="text/html" --from "QQ安全中心" --ehlo shabimeiguo -header "Subject: 测试" --body 这是一个测试 --to khyscqharm@iubridge.com

0x03 有 SPF 伪造

如果邮箱存在 SPF ,本篇会介绍4种绕过方法。

1、修改字眼

如果邮箱配置了 SPF,我们又不在其 SPF 配置的IP地址中,就无法直接伪造邮箱地址。但是我们依然可以通过修改字眼的方式来迷惑对方,如修改一些单词为数字,如字母 l 可以修改为数字 1 等等。

swaks --body "test" --header "Subject:testT" -t xxx@qq.com -f message@adobe.com.cn

将 message@adobe.com 伪造成 message@adobe.com.cn

2、邮件转发

所谓的邮件转发,就是我们注册一个开启了 POP3 服务的邮箱,使用该邮箱来转发我们的邮件。

注册一个邮箱开启 POP3 转发,需要保存好授权码,本篇使用的是 163 邮箱。

将要发送的邮件导出 EML 模版

修改内置的发件人内容时间等

使用 swaks 发送邮件。

swaks --to 收信人 -f 发信人 --data 1.eml --server smtp.163.com -p 25 -au 帐号 -ap 授权码

成功伪造了发件人,不过依然不是很隐蔽,因为下面显示了由什么邮箱地址转发。

3、第三方邮箱系统

因为使用自己的邮箱进行转发的话,很容易就暴露了我们的个人信息,所以推荐使用第三方平台进行邮件转发,这样代发显示就是第三方平台,避免了过多的暴露我们自己的信息。

下面是第三方邮箱系统的网址,本篇使用的是 SendCloud 平台。

https://www.smtp2go.com/  //smtp2go(速度慢但免费发送量大)
https://www.sendcloud.net/ //SendCloud(速度快但免费发送量少)

首先新增域名,将域名配置中的发信配置一个个添加到域名解析中去。

接着生成新的API_KEY ,这里需要保存好,后面发送邮件会用到。

最后测试发送,发信地址处输入我们要伪造的地址。

成功伪造发件人地址,后面代发地址显示的也是第三方转发平台。

4、Gophish 工具批量发送

在我们进行邮件钓鱼时,往往需要大批量的发送邮件,这时候一款支持批量发送邮件的工具就显得尤为重要,本篇主要介绍 Gophish 这一款工具。

项目地址

https://github.com/gophish/gophish

使用手册

https://docs.getgophish.com/user-guide/

本篇使用的 windows 版本,直接运行 exe 版本即可,服务会在本地 3333 端口开启。

1.首先配置发件接口,将我们开启了 POP3 服务的邮箱配置上去。

配置好了之后可以点下面的发送邮件进行测试。

2.然后配置发信模版,找一个要伪造的邮箱内容,将源码导入进入。

可以配置伪造的地址。

可以自行选择是否添加附件。

3.配置触发页面,配置这个是为了方便我们进行钓鱼,这个配置好后邮件里的地址都会指向我们配置的,比如我在这里配置为百度的地址。

4.配置收信人地址,这里是为了添加多个用户,从而可以实现批量发送。本篇测试使用只添加了一个用户。

5.所有配置完成后就可以发送邮件了。

成功伪造发件人信息。

邮件所有地址都指向百度。

0x05 后记


本篇主要介绍了绕过 SPF 从而伪造发件人信息。在发送钓鱼邮件时,如果安全意识比较薄弱的人,看到发信人显示的是高信誉的邮箱,往往很容易相信邮件的内容,进而点击邮件的网站或下载了附件,从而成功被攻击者钓鱼。借助此篇也希望能让大家对邮件钓鱼的技术多一些了解,多一些防范。

转载:https://mp.weixin.qq.com/s/W52bs3_Q9cK1fbAnUpMvZg

发表回复

后才能评论