前置内容:
1、什么是SPF:
发件人策略框架(Sender Policy Framework)电子邮件认证机制中文译为发送方策略框架,主要作用是防止伪造邮件地址。可以把 SPF 记录看成是一个合法 IP 地址的白名单,当进来的邮件来自一个白名单中指定的 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记录)
列如
这里就是表示允许mail.qq.com这个域名和其mx记录对应的IP地址发送邮件
也就是如果没有设置SPF那么可以直接伪造,如果设置了那么得根据这个放行的条件来尝试进行绕过
实验一:无SPF直接伪造-Swaks
临时邮箱
临时邮箱、十分钟邮箱(10分钟)、临时邮、临时Email、快速注册Email、24Mail--查错网
https://www.linshi-email.com/
这里使用第二个网站的临时邮箱作为受害者邮箱
首先自己发个邮件看看是否可以正常接受
可以正常接受到邮件
1、检测:
nslookup -type=txt iubridge.com
可以看到并没有开启SPF防护
2、伪造
swaks --header-X-Mailer "" --header-Message-Id "" --header-"Content-Type"="text/html" --from "安全测试部" --ehlo shabimeiquo -header "Subject:测试" --body 我们做了一个测试 --to ivcdnvmooq@iubridge.com
swaks在kali中自带,输入上面的内容(大部分可以自定义最后面的to要改为受害者邮箱号)
在邮箱这边可以看到成功的接受到了钓鱼的邮件并且显示的是admin@qq.com成功的伪造成了qq.com的邮箱号
如果是在实战中这样的邮件是不是一下子就提高了可信度。
但是平时人们用的邮箱域名基本都有SPF的防护,可能一些公司邮箱没有做防护毕竟是自己内部用的。
实验2:有SPF直接伪造-swaks
Swaks - Swiss Army Knife for SMTP
1、软刚发信人:(修改字眼)
简单来说就是system@notice.aliyun.com是正常的做了SPF的域名,只要修改这个域名让他不是notice.aliyun.com比如加个.cn就可以绕过了
swaks --body "test" --header "Subiect:testT" -t xx@163.com -f system@notice.aliyun.com.cn
这里我用了一个我平时邮箱接收的比较多的一个邮箱号,可以看到如果直接伪造为官方的邮箱是会被拒绝接收的
但是如果我添加为
swaks --body "test" --header "Subiect:testT" -t xxx@qq.com -f system@message.ucloud.cn.com
可以看到只是修改了域名的部分就成功的发送了
不过是邮件直接丢到垃圾箱里了,还是挺智能的
思路就是伪造相似的域名,比如aliyun伪造为a1liyun这样的
如果伪造tencent.com就是替换了也被拒绝,它的防护比较严
后面我使用网易邮箱去接受邮件,我发现现在网易的防护也比较高了,也都会丢进垃圾箱里
另外我在测试的时候发现就算是伪造是可以伪造的邮箱号网易邮箱也会被丢进垃圾箱,比如说我有个云服务器厂商的邮箱号为我发现可以直接伪造。但是还是直接给我丢进了垃圾箱,应该是内容不完善被当做垃圾邮件了。
2、硬刚发信人:(转发突破)
注册一个邮箱开启POP3转发
使用网上已知的邮箱系统
1、将要发送的邮件导出EML模版
2、修改内置的发件人内容时间等
swaks --to 收信人 -f 发信人 --data 1.eml --server smtp.163.com -p 25 -au 帐号 -ap 授权码
这里使用网易邮箱演示
首先在设置中 找到这个pop3
开启这个pop3
开启的时候会有一个授权密码记得记录一下
再使用网易给QQ发给邮件测试一下
网易:
qq:
在正常的邮箱里,没有在垃圾箱里
然后在qq邮箱中导出刚才的收到的这份邮件为EML
然后修改这个EML的内容,将里面的这个发送者修改一下
我这里修改为了From: admin admin@jd.com 时间也得伪造一下 这里就是这个Date: Mon, 9 Sep 2024 09:34:53 +0800 (CST) 改为Date: Mon, 9 Sep 2024 19:34:53 +0800 (CST) 大一点的时间就可以了
然后保存把修改好的拖到kali里去
swaks --to xxx.qq.com -f xxx.163.com --data test123.eml --server smtp.163.com -p 25 -au 帐号(这里就是网易邮箱号) -ap 授权码(前面给的授权码)
这里发送确实是成功的发送了,也成功的代理成功了但是没有成功的渲染EML文件,后面我又导出了其他的一些EML尝试伪造好像都无法渲染,不确定是不是现在的qq邮箱改了变得不会自动渲染这个EML文件了
3、自建要伪造高仿的邮箱系统
使用第三方平台或自行搭建
设置SPE,中转平台突破
1、smtp2go (速度慢但免费发送量大)
2、SendCloud (速度快但免费发送量少)
3、当然也可以自己搭建邮件服务器-Ewomail&Postfix(下节课)
SMTP2GO: Reliable & Scalable Email Delivery Service
https://www.sendcloud.net/
EwoMail邮件服务器,企业邮箱,一键搭建,安全稳定的开源邮件系统
1、创建自己域名
首先准备一个域名,我这里是在阿里云买了一个dreamer292.fun一年只要7元
不过在这注册的域名都得实名认证,还得等一段时间进行实名认证。。。
2、配置域名解析
注册域名实名成功后一切就绪准备开始
在sendcloud这边新增一个域名,有两个地方只需要填入第一个地方即可,添加完成后显示的是未验证的情况
然后点这个创建的域名点进去,此时的状态全部显示未生效
然后到域名这边点击这个解析设置
选择添加记录
然后对照着那边的未生效状态的那些填
比如第一条是
就填
一共4条全部照着填好就是这样的
然后回到这边重新刷新一下如果全部对钩了就是成功了
主页也是显示的已验证了
然后就可以进行测试发送了
第一个选项直接就有
第二个apikey需要自己先申请一个,点进去按照他的要求创建一个就可以了
第三个发信地址就是想伪造的发信人
第四个接受者地址就是受害人邮箱
下面的内容就自定义了
点击发送后如果发送成功就没啥问题
不过接收到还是在垃圾箱里,而且发件人有子域
怎么说呢好像是使用此方法代发的话好像是直接会把代理者显示出来。用网易邮箱也是如此,我的命令也是一样的没有啥地方有问题,不确定是哪里出了问题(确实现在还存在代发这种方式的后续我使用gophish成功的实现了)
另外就是可以通过修改内容让内容更加的正常就不会被丢进垃圾箱,我修改了内容后看着像正常的邮件确实没有被丢进垃圾箱,不过可能会被归纳为广告邮件(也就是内容页很重要)
实验3:优化内容效率-Gophish
Gophish:https://github.com/gophish/gophish
1、配置发件接口(自定义)
2、配置发信模版(更逼真)
3、配置触发页面(钓鱼用)
4、配置收信人地址(批量套)
在gtihub官网下载了压缩包后直接运行,第一次的登录密码会显示
然后登录进行后需要修改密码然后就可以正常使用了
1、配置发件接口(自定义)
选择send profile->new profile
也就是创建一个新的配置
smtp from就填网易邮箱号
host smtp.163.com:25 填这个就是因为前面在网易开启了那个smtp代理
username 也填网易邮箱号
password 填前面获取的那个-ap 指定的授权码
然后可以test一下看是否配置成功
可以看到正常收到了邮件
最后在第一个空格取个名字save配置就可以了
2、配置发信模版(更逼真)
点击email templates
比如我要添加一个这样的模版
一样的先导出为eml文件
然后打开保存下来的文件将里面的内容复制全选,然后import email
可以看到下面把这个模版渲染出来了,一毛一样
然后取个模版的名字
这个envelope sender就是伪造的发件人
然后就可以保存模版了
3、配置触发页面(钓鱼用)
点击 landing pages ->new page
取个名字这里我取test 然后会需要导入一个网址,这个网址其实就是用来钓鱼的网页,需要自己后期制作
如果加载成功就会在下面显示
4、配置收信人地址(批量套)
先添加用户和组,这部分就是目标
在user&group处点击new
然后add 在保存,可以add很多个目标所以可以批量发邮件
5、攻击
点击campaigns下发任务
因为前面都创建好了每个选项都有一个可以选择的
url应该就是钓鱼的页面
填写好后直接launch
成功后在qq邮箱中查看
首先说明我这个伪造的UCLOUD是没有SPF防护的,所以伪造的非常的像,除了下面有个显示了代发的基本和原文件一毛一样,并且没有进垃圾箱
然后只要是邮件里能点的链接全部都跳转到了我设置的baidu.com的网站,非常牛逼
我又尝试了其他的比如腾讯的邮件,虽然会丢进垃圾箱并且也显示代发但是可以伪造的很像
到此基本上初步的钓鱼手法就出来了,但是任然还是容易被丢进垃圾箱,这是使用163或者qq很容易出现的情况,想解决只能后续课程中讲到的自己搭建一个邮箱服务器就不会受到限制了。
总结一下如果没有SPF防护的可以直接使用swaks并且可以伪造的和真实的一模一样不需要使用代发的机制,如果有SPF防护那么只能选择代发的方式进行,其中使用gophish可以很方便快捷的批量发送邮件。
附上一个用来测试发出邮件的垃圾邮件匹配度的网站,来测测你伪造的邮件真不真
Newsletters spam test by mail-tester.com