邮件伪造和SPF

之前看了下邮件伪造觉得挺有意思的,所以看了下邮件伪造的东西,下面简单的总结了一下,如果有不妥的地方还望大佬们提出来。

1. 什么是SPF

SPF是 Sender Policy Framework 的缩写,一种以IP地址认证电子邮件发件人身份的技术,是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录。 接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。

SPF可以防止别人伪造你来发邮件,是一个反伪造性邮件的解决方案。当你定义了你域名的SPF记录之后, 接收邮件方会根据你的SPF记录来确定连接过来的IP地址是否被包含在SPF记录里面,如果在,则认为是一封正确的邮件,否则则认为是一封伪造的邮件。

设置正确的 SPF 记录可以提高邮件系统发送外域邮件的成功率,也可以一定程度上防止别人假冒你的域名发邮件。

2. 测试方法

1. Windows下

nslookup -type=txt ***.com
  1. 不存在漏洞的情况:
nslookup -type=txt baidu.com
  1. 存在漏洞的情况:
nslookup -type=txt freebuf.com

2. Linux下

  1. 不存在漏洞的情况:
dig -t txt baidu.com
  1. 存在漏洞的情况:
dig -t txt freebuf.com

3. 利用方法

1. Swaks介绍

Swaks是SWiss Army Knife Smtp的缩写,由John Jetmore编写和维护的一种功能强大,灵活,可脚本化,面向事务的SMTP测试工具。可向任意目标发送任意内容的邮件。

Kali中是自带的,也可以在作者官网下载

作者官网下载

2. 基本用法

-- to <收件人的邮箱>

-- from <要显示的发件人邮箱>

-- ehlo <伪造的邮件ehlo头>

-- body <邮件正文>

-- header <邮件头信息,subject为邮件标题>

3. 使用方法

  1. SPF配置好的情况
root@kali:~# swaks --to xxxxxxxxx@qq.com --from admin@qq.com --ehlo qq.com --body hello --header "Subject: hello"
伪造admin@qq.com失败
  1. SPF未配置的情况
root@kali:~# swaks --to xxxxxxxxx@qq.com --from admin@freebuf.com --ehlo csdn.com --body hello --header "Subject: hello"

在你ip没有被qq邮箱band的情况下,邮件可以正常发送,返回250 OK。

伪造admin@freebuf.com成功
查看邮件

4. 高级用法

使用swaks还可以进行高级的邮件伪造,使用--data参数

--data <源邮件>

首先需要找一份正常的邮件,显示邮件原文,复制内容保存为一个txt文件。原文中的received可以删除,该项为接收信息,发信中是不需要。to也可以删除,可以直接使用swaks --to来代替。最后不要忘了加--from 否则qq邮箱会报由kali代发的。

swaks --data ./Desktop/email.txt --to xxxxxxxxx@qq.com --from xxx@admin.com

遇到邮件伪造的例子了,直接贴图

这个发送的邀请邮件只能登录第三方邮箱发送,但是我们在伪造的时候并不影响,查看邮件原文,按照上面的步骤

原邀请邮件
root@kali:~# swaks --data ./桌面/email.txt --to 8xxxx2@qq.com --from service@fxxxxxe.com(这里面的xxx全是遮掩了的)
swaks --data ./桌面/email.txt --to 8xxxx2@qq.com --from service@fxxxxxe.com
邮件伪造成功,腾讯邮箱也没有当成垃圾邮件处理

推荐阅读更多精彩内容