目录 在红蓝对抗中,邮箱是一个非常重要的一个入口。针对邮箱攻击有几个思路: 本文中,关于邮箱系统的漏洞暂不提及,会在以后的文章中继续分析。本文主要讲如何爆破出可用的邮箱账号和能否绕过SPF伪造任意用户发送邮件。 要想爆破邮箱账号,肯定首先得有足够多的邮箱账号。那么,我们从哪里去获取目标邮箱系统的邮箱账号呢? 这两个网站只要输入目标域名,就可以从互联网上搜到对应格式的邮箱账号。 还有两个Github上的项目: 收集到邮箱账号后,我们还需要对邮箱账号的可用性进行检测。因为有些邮箱账号很有可能已经弃用了。通过下面这些网站可以验证邮箱地址的可用性: 筛选出可用的邮箱账号后,我们就需要对目标邮箱系统进行爆破了。对邮箱进行爆破,有两种方式: 既然对端口号进行爆破,那么我们就自然得知道邮箱的常用端口号了。 常见的爆破工具有:超级弱口令检查工具、medusa、hydra、SNETCracker、APT34组织、 owa爆破工具。 SPF(Sender Policy Freamwork)发件人策略框架,是一种以IP地址认证电子邮件发件人身份的技术。在SPF出现之前,发件人的邮箱地址是可以由发信人任意声明的,这带来了很大的危险性。SPF的出现,就是为了防止发信人随意伪造发件人。 SPF记录实际上是服务器的一个DNS记录,原理如下:假设邮件服务器收到一封来自IP为192.168.10.10主机发送的邮件,并且声称发件人为 admin@qq.com 。邮件系统为了确认发件人不是伪造的,邮件服务器会去查询 qq.com 的SPF记录。如果该域的SPF记录中允许该IP发送邮件,则邮件服务器就认为该邮件是合法的, 否则会认为这是一封非正常邮件并且拒收或标记为垃圾、仿冒邮件。因为攻击者虽然可以声称邮件是来自 qq.com ,但是他却无权操作qq.com的DNS记录,并且他也无法伪造自己的IP地址为SPF中允许的IP地址,因此正确配置SPF还是很有效果的。目前大多数邮件服务提供商都会去验证SPF。 邮件系统如果没有配置SPF,则攻击者可以随便伪造邮件。即使配置了SPF(错误配置),也存在被绕过的风险。下面命令查看目标域名邮件系统是否配置SPF。 一条 SPF 记录定义了一个或者多个策略,而策略则定义了哪些 IP 是允许的,哪些 IP 是拒绝的。 这些策略包括以下几类: all 表示所有 IP,肯定会命中。因此通常把它放在 SPF 记录的结尾,表示处理剩下的所有情况。例如: ip4 格式为 ip6 格式和 a 和 mx 这俩的格式是相同的,以 会命中相应域名的 a 记录(或 mx 记录)中包含的 IP 地址(或地址段)。如果没有提供域名,则使用当前域名。例如: 例如,这是一个比较常见的 SPF 记录,它表示支持当前域名的 a 记录和 mx 记录,同时支持一个给定的 IP 地址;其他地址则拒绝: include 格式为 exists 格式为 ptr 格式为 访问控制 每个策略可以有四种前缀: 测试时,将从前往后依次测试每个策略。如果一个策略包含了要查询的 IP 地址(称为命中),则测试结果由相应策略的前缀决定。默认的前缀为+,也就是通过。如果测试完所有的策略也没有命中,则结果为Neutral中立。 除了以上四种情况,还有 None(无结果)、PermError(永久错误)和 TempError(临时错误)三种其他情况。对于这些情况的解释和服务器通常的处理办法如下: 注意,上面所说的服务器处理办法仅仅是 SPF 标准做出的建议,并非所有的邮件服务器都严格遵循这套规定。 关于v=spf1,这是必须的,这个表示采用 SPF 1 版本,现在它的最新版本就是第 1 版。 假设目标邮件系统的SPF记录设置为 这条SPF记录的意思是只接收192.168.10.0/24范围内的IP发送的邮件,其他地址发送的邮件软拒绝。 这就存在两个安全隐患: 当 SPF 记录设置成 ~all 时,通过测试可以发现,outlook 邮箱可以接收邮件,QQ邮箱不接收,163邮箱被标记为垃圾邮件。 还有一种极为严重的错误,就是SPF解析记录配置错误,早在之前鹅厂就出现过SPF解析错误,比如: 这里介绍一个工具,输入域名和SPF记录,可快速检查SPF记录是否正确 测试地址:https://www.kitterman.com/spf/validate.html SPF记录报错,在这条SPF记录中,存在多个IP段,但只有开头的一段ip用了ipv4,这就导致了语法错误。因为这个错误,将导致整个SPF记录完全失效,因为SPF无效,邮件接收方的SPF检测功能也就完全失效了。 综上,当我们在查看一个域名的SPF记录时,它其实不只是一条解析记录,更是一种邮件安全的策略,SPF记录配置不严或SPF解析错误,就容易导致大量本该被拦截的邮件直接被放进来,而绕过的策略就隐藏在这条SPF记录里面。 邮件服务器管理员做SPF配置时,其实是需要两个步骤的。首先在域名中增加SPF记录,向支持SPF功能的邮件服务器提供验证信息,使别人能验证自己;另外,需要配置邮件服务器支持 SPF,这样才可以验证别人。 那么,在SPF配置过程中,也常常因为配置不当导致绕过,比如: 第一种情况: 域名增加了SPF记录,但是邮件服务器不支持SPF检查或邮件网关未开启SPF检测,无法验证邮件来源。这种情况下,我们声明了自己是谁,但却无法验证对方是谁,SPF检测无效,可伪造任意用户发送到你的域名邮箱里。 第二种情况: SPF解析在公网DNS,邮件服务器配置内部DNS,内部DNS无法进行SPF解析,从而导致绕过,可从公网伪造任意用户发送邮件。 第三种情况: 攻击者在公司内网,内网SMTP服务器开启匿名邮件发送或者在信任服务器IP段,就可以使用任意用户发送邮件。 比如,当 mynetworks=192.168.10.0/24,在内网,任意一台终端就可以直连公司的SMTP服务器,伪造了一封来自 admin@taobao.com 的邮件发给自己。 对于Exchange邮箱系统,拥有Domain admins权限的域用户,可通过outlook直接指定发件人,伪造任意发件人发送邮件。伪造邮件的方式十分简单,且邮件头无法显示真实IP。 测试过程:我给自己的账号添加了 使用 使用 很多时候,大部分的企业邮箱SPF配置都是正确的,理论上,它会对每一封邮件进行检测,那么它是如何验证发件人IP地址的? 点击Test SPF Recod进行验证: 结果毫无疑问,SPF验证失败,伪造邮箱不成功,伪造的邮件将会被退回。 QQ邮箱网页版查看邮件,Sender和From字段不一样时,发件人的位置显示由admin@evil.com代发。 使用Foxmail客户端查看同一封邮件,Sender和From字段不一样时,不显示代发,伪造成功。 我们分别使用网页版邮箱和客户端邮箱打开同一封邮件,通过对比可以发现,不同的邮件客户端对发件人位置的内容解析是不一样的。 当我们伪造邮件发送的时候,Sender和From字段不一样,邮件接收方会这样提示邮件代发。 那么有没有办法只显示伪造的发件人,不显示邮件代发呢? 使用 —data 参数发送邮件 成功发送给目标邮箱,QQ邮箱接收邮件后的呈现效果 备注:从测试情况看,伪造的邮件进了QQ垃圾箱,但这种思路还是挺不错的,重新Fuzz,或许可以构造特殊的数据包触发这个问题。 如果目标邮件服务器没有配置SPF的话,可以直接使用swaks伪造邮件发送 参考文章:邮件伪造之SPF绕过的5种思路
爆破邮箱账号
1:收集目标邮箱系统账号
2:验证邮箱账号可用性
3:爆破邮箱账号
绕过SPF
nslookup -type=txt taobao.com
SPF记录的语法
all | ip4 | ip6 | a | mx | ptr | exists | include
"v=spf1 -all" 拒绝所有 "v=spf1 +all" 接受所有
ip4:<ip4-address>
或者 ip4:<ip4-network>/<prefix-length>
,指定一个 IPv4 地址或者地址段。如果prefix-length
没有给出,则默认为/32
。例如:
"v=spf1 ip4:192.168.10.1/24 -all" 只允许在 192.168.10.1 ~ 192.168.10.255 范围内的 IP
ip4
的很类似,默认的prefix-length
是/128
。例如:
"v=spf1 ip6:1080::8:800:200C:417A/96 -all" 只允许在 1080::8:800:0000:0000 ~ 1080::8:800:FFFF:FFFF 范围内的 IP
a
为例,格式为以下四种之一:
a a/<prefix-length> a:<domain> a:<domain>/<prefix-length>
"v=spf1 mx -all" 允许当前域名的 mx 记录对应的 IP 地址。 "v=spf1 mx mx:deferrals.example.com -all" 允许当前域名和 deferrals.example.com 的 mx 记录对应的 IP 地址。 "v=spf1 a/24 -all" 类似地,这个用法则允许一个地址段。
v=spf1 a mx ip4:173.194.72.103 -all
include:<domain>
,表示引入<domain>
域名下的 SPF 记录。注意,如果该域名下不存在 SPF 记录,则会导致一个PermError
结果。例如:
"v=spf1 include:example.com -all" 即采用和 example.com 完全一样的 SPF 记录
exists:<domain>
。将对<domain>
执行一个 A 查询,如果有返回结果(无论结果是什么),都会看作命中。ptr
或者ptr:<domain>
。使用ptr
机制会带来大量很大开销的 DNS 查询,所以连官方都不推荐使用它。
"+" Pass(通过) "-" Fail(拒绝) "~" Soft Fail(软拒绝) "?" Neutral(中立)
结果
含义
服务器处理办法
Pass
发件 IP 是合法的
接受来信
Fail
发件 IP 是非法的
退信
Soft Fail
发件 IP 非法,但是不采取强硬措施
接受来信,但是做标记
Neutral
SPF 记录中没有关于发件 IP 是否合法的信息
接受来信
None
服务器没有设定 SPF 记录
接受来信
PermError
发生了严重错误(例如 SPF 记录语法错误)
没有规定
TempError
发生了临时错误(例如 DNS 查询失败)
接受或拒绝
1:SPF解析不当导致绕过
v=spf1 ip4:192.168.10.0/24 ~all
v=spf1 ip4:113.110.223.0/24 183.110.226.0/24 183.110.255.0/24 59.110.132.0/24 -all
2、SPF配置不当导致绕过
python SimpleEmailSpoofer.py -t [目标邮箱] -n QQ邮箱管理员 -f admin@qq.com -j "邮件主题" -e 1.txt -s [内网邮件服务器IP]
3、高权限用户绕过
Domain admin
权限。Outlook2013
客户端指定发件人发送邮件,接收邮件直接显示伪造人的名字,伪造成功Outlook2016
客户端测试,邮件接收方的发件人位置显示”XXX代表XXX”,伪造失败4、邮件客户端内容解析差异
我们使用一个SPF在线检测的工具,来做一个的尝试,利用我本地搭建的匿名SMTP服务器伪造 admin@qq.com 邮箱。
测试地址:https://www.kitterman.com/spf/validate.html
1、在IP address: 里输入将要发信的IP地址,即本地ip地址。 2、SPF Record v=spf1...://-->:输入nslookup查出来的SPF记录 3、Mail From address:输入将要发信的发件人
通过查看邮件头信息,有两个比较重要的字段,Sender和From。
Sender字段,代表的是邮件的实际发送者,邮件接收方会对它的邮件域名进行SPF检测,确认是否包含了发信人的IP地址。From字段,代表的是邮件发送人,即邮件里所显示的发件人,容易被伪造。
在SPF配置有效的情况下,Sender必须通过SPF检验,所以我们可以设置为正常的邮件服务器地址,然后对From字段进行伪造。
使用swaks做一个邮件测试:
sudo ./swaks --to 67*****28@qq.com --from admin@evil.com --h-From: '=?GB2312?B?UVHTys/kudzA7dSx?= <admin@qq.com>' --ehlo evil.com --body hello --header "Subject: test" --from <实际发件人,对应Sender字段> --h-From <邮件显示的发件人,对应From字段>
平时工作中,不少使用腾讯企业邮箱的童鞋,都喜欢使用Foxmail客户端查收邮件,这就给了我们成功伪造邮件的可乘之机。
通过测试可以发现:qq邮箱、163邮箱网页版均会显示代发,Outlook邮箱不显示代发,具体邮件客户端软件可具体再行测试。5、From字段名截断绕过
在网络上看到一种思路,来源于网贴《关于邮件伪造的一些新思路》,挺有意思的。
在用SMTP发送电子邮件时,发件人别名,格式为:From:发件人别名<邮件地址>
。通过对发件人别名字段填充大量的特殊字符,使邮箱客户端截取真实的邮件地址失败,从而只展示我们伪造的发件人别名和伪造邮箱。
邮件伪造测试过程:
From:=?gb2312?B?udzA7dSxIDxhZG1pbkBxcS5jb20+0aGhoaGhoaGhoaGhoaGhoaGhoaGhoQ==?= =?gb2312?B?oaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGh?= =?gb2312?B?oaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGh?= =?gb2312?B?oaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGh?= =?gb2312?B?oaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGh?= =?gb2312?B?oaGhoaGhoaGhoaGhoaGhoaGhoaGhoSAgICAgICAgICAgICAgICAgIKGkoaQ=?= =?gb2312?B?oaQgICAgICAgICAgICAgICAgIKGhICAgICAgIKGkoaShpA==?= <admin@test.com>
sudo ./swaks --data mail.eml --to 67*****28@qq.com --from admin@test.com
鱼叉钓鱼
钓鱼文件制作
发送钓鱼邮件
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算