1.swaks工具使用
2.什么是邮件的SPF配置
3.SPF漏洞简析
4.SPF漏洞修复方案
一般来说kali自带:
基础用法:
swaks –to <要测试的邮箱> 用来测试邮箱的连通性
我们先申请一个临时邮箱:http://24mail.chacuo.net/enus
[root@AlexzKali ~/swaks]# swaks -t [email protected] -f [email protected] --body 'this is a test email' --header 'Subject:TEST' --ehlo alexz.com
回车发送:
当然,这只是一个临时邮箱,没有做任何的垃圾邮件过滤等其他的防御措施,所以可以收到任何的邮件;
--to <接收方的地址>
--from <要显示的发件人邮箱>
--ehlo <伪造的邮件ehlo头>
--body <邮件正文>
--header <邮件头信息,subject为邮件标题>
--data <源邮件> #可以使用txt格式的邮件原文进行发送邮件
当然,我们这里使用swaks并不是用来无聊发邮件的,因为使用swaks其实还可以进行更高级的邮件伪造,几乎可以伪造邮件中的每一个参数。
使用--body定义文件内容,--header定义邮件标题头,--ehlo定义伪造的ehlo头信息
[root@AlexzKali ~/swaks]# swaks --body "FAKE-TEST" --header "Subject:Fake" --to [email protected] --from [email protected]
这样,马总就成功的给我发了一封邮件,邀请我入职阿里巴巴的CFO
那这样一来,岂不是谁都可以冒充马总到处发邮件去骗财骗色了?
针对这个SMTP协议的一处天生的漏洞,人们开发出了一个邮件服务器的选择过滤功能:SPF配置
SPF,全称为 Sender Policy Framework,即发件人策略框架。
当前 Email 通信,还是在使用 SMTP 这个协议。SMTP 的全称为 Simple Mail Transfer Protocol,即「简单邮件传输协议」。正如它的名字锁暗示的,SMTP 实际上是一个非常简单(甚至简陋)的传输协议,本身并没有很好的安全措施。根据 SMTP 的规则,发件人的邮箱地址是可以由发信方任意声明的。在 SMTP 协议制定的时候也许还好,但在垃圾和诈骗邮件横行的今天,这显然是极不安全的。
SPF 出现的目的,就是为了防止随意伪造发件人。
SPF 记录的原理 :SPF 记录实际上是服务器的一个 DNS 记录,原理其实很简单:
假设邮件服务器收到了一封邮件,来自主机的 IP 是173.194.72.103,并且声称发件人为[email protected]。为了确认发件人不是伪造的,邮件服务器会去查询example.com的 SPF 记录。如果该域的 SPF 记录设置允许 IP 为173.194.72.103的主机发送邮件,则服务器就认为这封邮件是合法的;如果不允许,则通常会退信,或将其标记为垃圾/仿冒邮件。
因为不怀好心的人虽然可以「声称」他的邮件来自example.com,但是他却无权操作example.com的 DNS 记录;同时他也无法伪造自己的 IP 地址。因此 SPF 是很有效的,当前基本上所有的邮件服务提供商(例如 Gmail、QQ 邮箱等)都会验证它。
SPF 记录的语法
一条 SPF 记录定义了一个或者多个 mechanism,而 mechanism 则定义了哪些 IP 是允许的,哪些 IP 是拒绝的。
这些 mechanism 包括以下几类:
``` all | ip4 | ip6 | a | mx | ptr | exists | include ``` 每个 mechanism 可以有四种前缀:
严格来说,SPF 数据应该创建为 SPF 记录。但是鉴于很多 DNS 服务商不支持 SPF 记录,甚至有的邮件服务器也不支持 SPF 记录,因此大部分邮件服务提供商都创建为一条 TXT 记录;
在dns记录里面,除了最常见的a记录,cn记录,mx记录,还有不常见的txt记录。
txt记录用来保存域名的附加文本信息,txt记录的内容按照一定的格式编写,最常用的是spf格式,spf用于登记某个域名拥有的用来外发邮件的 所有ip地址。
mx记录的作用是给寄信者指明某个域名的邮件服务器有哪些
spf格式的txt记录的作用跟mx记录相反,它向收信者表明,哪些邮件服务器 是经过某个域名认可会发送邮件的。
spf的作用主要是反垃圾邮件,主要针对那些发信人伪造域名的垃圾邮件。
按照spf格式在dns中增加一条txt类型的记录,将提高该域名的信誉度,同时可以防止垃圾邮件伪造该域的发件人发送垃圾邮件。
所以我们通常使用Linux下的dig命令去查看目标邮件服务器的SPF配置信息:
我这边查询的是某企业的腾讯企业邮,可以看到如下信息
"v=spf1 include:spf.mail.qq.com ~all"
只要最后这里不是硬拒绝的 -all 我们就有课可乘之机:
SPF 记录是一种域名服务(DNS)记录,用于标识哪些邮件服务器可以代表您的域名发送电子邮件。 SPF 记录的目的是为了防止垃圾邮件发送者在您的域名上,使用伪造的发件人地址发送邮件。
若您未对您的域名添加 SPF 解析记录,则黑客可以仿冒以该域名为后缀的邮箱,来发送垃圾或诈骗邮件。
这里依然是一个企业的腾讯企业邮,我冒充一下马总给我的有邮箱发一下邮件:[email protected]
然后马总就给我发邮件了:
莫名的兴奋,兴奋过后确实无尽的空虚
检查一个企业的邮箱是否存在该漏洞,先dig一下SPF记录,看看只要不是硬拒绝 -all 就有可能存在该漏洞
然后直接使用网易系列的邮箱进行测试就行,网易邮箱护理机制比较宽松
要是不想使用swaks发邮件也可以使用foxmail
在您的 DNS 服务提供商处,为您的域名添加一条 TXT 记录:
将主机字段(Host)设置为您子域名的名称。(例如,如果您的电子邮件地址是[email protected]
,则为 mail
。)如果不使用子域名,则将其设为@
。
用您的 SPF 记录填写 TXT 值字段。例如 v = spf1 a mx include:secureserver.net-all
参考资料
http://www.mamicode.com/info-detail-2418032.html
https://www.freebuf.com/articles/web/138764.html
https://www.cnblogs.com/zhaijiahui/p/11494626.html
https://help.aliyun.com/knowledge_detail/37532.html
我还年轻,我渴望上路。 带着最初的激情,追寻着最初的梦想,感受着最初的体验,我们上路吧。
——凯鲁亚克 《在路上》