专栏首页黑白天安全团队Swaks伪造邮件发件人绕过SPF

Swaks伪造邮件发件人绕过SPF

MTP协议简介

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准。
RFC821:https://tools.ietf.org/html/rfc821
•    SMTP默认端口:25
•    SSL SMTP默认端口:465

SMTP相关安全协议 - SPF

发件人策略框架(Sender Policy Framework , SPF)是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的所有IP地址。可确定允许哪些邮件服务器代表您的域来发送电子邮件
https://www.ietf.org/rfc/rfc4408.txt
"v=spf1 a mx ip4:47.100.47.4 -all"

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

SPF验证原理

假设邮件服务器收到了一封邮件,来自主机的 IP 是47.100.47.4,并且声称发件人为email@example.com。为了确认发件人不是伪造的,邮件服务器会去查询example.com的 SPF 记录。如果该域的 SPF 记录设置允许 IP 为47.100.47.4的主机发送邮件,则服务器就认为这封邮件是合法的;如果不允许,则通常会退信,或将其标记为垃圾/仿冒邮件。
因为不怀好心的人虽然可以「声称」他的邮件来自example.com,但是他却无权操作example.com的 DNS 记录;同时他也无法伪造自己的 IP 地址。因此 SPF 是很有效的,当前基本上所有的邮件服务提供商(例如 Gmail、QQ 邮箱等)都会验证它。

常见参数

all:结束标志,“-”表示只允许设置的记录为通过,“~”表示失败,通常用于测试,“+”表示忽略SPF
例如,这是一个比较常见的 SPF 记录,它表示支持当前域名的 a 记录和 mx 记录,同时支持一个给定的 IP 地址;其他地址则拒绝:
v=spf1 a mx ip4:47.100.47.4 -all

SMTP相关安全协议 - DKIM

DKIM是为了防止电子邮件欺诈的一种技术,同样依赖于DNS的TXT记录类型。这个技术需要将发件方公钥写入域名的TXT记录,收件方收到邮件后,通过查询发件方DNS记录找到公钥,来解密邮件内容。
https://tools.ietf.org/html/rfc6376

SMTP相关安全协议 - DMARC

DMARC(Domain-based Message Authentication, Reporting & Conformance)是txt记录中的一种,是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议,其核心思想是邮件的发送方通过特定方式(DNS)公开表明自己会用到的发件服务器(SPF)、并对发出的邮件内容进行签名(DKIM),而邮件的接收方则检查收到的邮件是否来自发送方授权过的服务器并核对签名是否有效。对于未通过前述检查的邮件,接收方则按照发送方指定的策略进行处理,如直接投入垃圾箱或拒收。
DMARC协议是有效解决信头From伪造而诞生的一种新的邮件来源验证手段,为邮件发件人地址提供强大保护,并在邮件收发双方之间建立起一个数据反馈机制。

swaks工具简介

Swaks是由John Jetmore编写和维护的一种功能强大,灵活,可脚本化,面向事务的SMTP测试工具。可向任意目标发送任意内容的邮件。
swaks-SMTP协议下的瑞士军刀
kali Linux自带

基本使用语法:

1 swaks --to 123@qq.com     //测试邮箱的连通性;
2 选项说明:(更多高级功能请查man手册)
--from  000@qq.com     //发件人邮箱;
--ehlo  qq.com      //伪造邮件ehlo头,即是发件人邮箱的域名。提供身份认证
--body "http://www.baidu.com"    //引号中的内容即为邮件正文;
--header "Subject:邮件标题"   //邮件头信息,subject为邮件标题
--data ./Desktop/email.txt    //将正常源邮件的内容保存成TXT文件,再作为正常邮件发送;
–attach 添加附件

输出内容的含义 “===”:swaks输出的信息行 “*“:swaks中产生的错误 ” ->”:发送到目标的预期行(无错误) “<- “:服务器的预期回复(无错误) “<**”:服务器返回的错误信息

基本语法

swaks --body "内容" --header "Subject:标题" -t xxxxx@qq.com -f "admin@qq.com"  --server 你的邮件服务器地址 -p 25 -au <USER> -ap <PASS>

邮件服务器可以选择自己搭建一个或者使用smtp2go,smtp2go主要是相当于邮件托管,可以分发子账户进行发送。 下面的实验用的是自己搭建的。如何搭建的话,这个网上有很多教程,这里为了快速搭建,可以选择使用ewomail 建议自己搭一个或者找个偏点的没什么安全策略的smtp服务器 不然还是很大几率被扔进垃圾桶

swaks配合邮件服务器发送伪造的钓鱼邮件查看是否能通过SPF

swaks --to xxx@gmail.com --from admin@qq.com --ehlo gmail.com --body hello --server 邮件服务器地址 -p 25 -au  账号 -ap 密码
打开gmail邮箱可以看到虽然能发送出去但是SPF验证是失败的,很大几率会被扔进垃圾邮箱里面

SPF验证原理

如果mail.kevin.com是我的邮件服务器,那么gmail服务器收到的源IP肯定也得是mail.kevin.com的IP
gmail会验证邮件发送者的IP是否存在于smtp.from的域名配置列表里。
而上面这条命令
smtp.from是admin@qq.com 和mail.kevin.com的IP不同,所以SPF会验证失败被仍进垃圾桶
默认情况下 如果没有设置mail.from 也就是邮件头的from 则会使用smtp.from作为Mail.from,就是如果没有设置邮件发件人的话就会默认设置邮件服务器来源是邮件发件人

绕过SPF

由于邮件显示的是Header中的From不是smtp.from,因此可以将smtp.from设置为正常的邮件服务器地址,伪造一个Mail.From(发件人)即可。

swaks --to xxx@gmail.com --from @kevin.com(你的邮件地址) --h-From: '管理员<admin@qq.com>' --ehlo gmail.com --body hello --server 邮件服务器地址 -p 25 -au 账号 -ap 密码

Gmail接收到这封邮件后,会校验--from xxx@kevin.com中的kevin.com是否等于mail.kevin.com的IP,由于伪造后是相等的,所以完成了SPF的校验。

如果我想去除Mailer特征,就可以这么做:

 swaks --header-X-Mailer gmail.com --to xxx@gmail.com --from xxx@kevin.com(你的邮件地址) --h-From: '管理员<admin@qq.com>' --ehlo gmail.com --body hello --server 邮件服务器地址 -p 25 -au 账号 -ap 密码

如何检测域名是否可被伪造 可以推荐个小脚本 spoofcheck 地址https://github.com/BishopFox/spoofcheck

如何解决? 为了使得域名不会被伪造,需要为域名正确配置SPF、DKIM、DMARC。只配置SPF是不行的。

如有错误的地方,欢迎各位师傅指出,避免误导他人。

本文分享自微信公众号 - 黑白天(HBT-SEC),作者:akevin

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Gophish钓鱼测试

    Gophish 是一个功能强大的开源网络钓鱼框架,可以轻松测试组织的网络钓鱼风险,专为企业和渗透测试人员设计

    cn0sec
  • 文件包含漏洞原理利用方式及修复

    文件包含定义: 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所...

    cn0sec
  • 项目实战 | 细节决定成败的渗透测试

    个人水平有限,文章若有不足之处,感谢各位大佬批评指正,希望能够与各位师傅分享学习。

    cn0sec
  • 根据红帽RHEL7官方文档对centos7进行技术剖析(三)

    第一章:高级网络配置 1.虚拟网卡的添加 ifconfig eth0:1 10.0.0.2 netmask 255.255.255.0 临时添加虚拟网卡 永久保...

    BGBiao
  • 没抢到?意匠轩新三板竟错失域名

    扬州意匠轩园林古建筑营造股份有限公司日正式挂牌新三板,采用5声母yzyjx.com。

    躲在树上的域小名
  • DNS隧道技术解析

    在之前穿越边界的姿势文章中介绍了几种穿透内网的方式,今天的这种方式再之前的文章里没有提及,所以今天来重点介绍使用dns协议穿透内网。

    信安之路
  • 3杂再破市场行情 6位数结拍

    近段时间,域名圈可谓热度不减,交易的好消息接连不断,这不,听说又有3个域名结拍。

    躲在树上的域小名
  • 5声母域名备受欢迎 btczj.com 2万被秒

    域名被秒、域名易主的消息并不常见,最近就有HY.com成功易主;ljj.com以七位数的价格卖终端等等等,近日,一5声母域名:btczj.com以一口...

    躲在树上的域小名
  • POP3收取邮件

    SMTP用于发送邮件,如果要收取邮件呢? 收取邮件就是编写一个MUA作为客户端,从MDA把邮件获取到用户的电脑或者手机上。收取邮件最常用的协议是POP协议,目...

    xiangzhihong
  • 机器学习(十四) ——朴素贝叶斯实践

    机器学习(十四)——朴素贝叶斯实践 (原创内容,转载请注明来源,谢谢) 一、垃圾邮件分类 垃圾邮件分类,即通过读取邮件的内容,并打上标记其是垃圾邮件或者是正常...

    用户1327360

扫码关注云+社区

领取腾讯云代金券