当前位置:首页 > 网络安全 > 正文内容

关于钓鱼邮件,你了解多少?(中)

访客4年前 (2021-04-18)网络安全993

接上文

SPF绕过

简单了解SPF规则之后,我们总结一下,如果你模拟一个MTA向对端MTA发送邮件是行不通的,因为MTA后端会检查你的ip地址是否通过spf规则。前文向gmail发出的1634.com后缀的钓鱼邮件是因为1634.com这个域名没有mx和spf配置:

p1pp0@h33l0:~$ nslookup -type=txt 1634.com

Server: 223.5.5.5

Address: 223.5.5.5#53


Non-authoritative answer:

*** Can't find 1634.com: No answer

p1pp0@h33l0:~$ nslookup -type=mx 1634.com

Server: 223.5.5.5

Address: 223.5.5.5#53


Non-authoritative answer:

*** Can't find 1634.com: No answer

所以gmail无处校验spf规则,那对于没有spf记录配置的发件MTA,各大运营商的规则都是接受的,而企业自建的服务器要依靠管理员的配置,但是也基本都是接受的。

那么有防守就有攻,如何绕过spf规则呢?

1.getshell一台在合法MTA列表里的机器

由于合法的MTA列表可以通过简单的DNS查询获取到,最直接的思路就是打下来对面的邮件服务器,这主要对于使用多台邮件服务器、或者出口不固定的情况,这时候管理员为了方便都是配置为192.168.1.0/24的形式。

不过成本有点高,而且没有授权。

2找一个与其相似但没有配置spf的域名

可以使用前文提供的工具,crazy出一个相似的域名,然后用此域名发送给受害者,这里用weib0.com仿冒weibo.com:

root@h33l0:/home/p1pp0# nslookup -type=txt weib0.com

Server: 202.96.209.133

Address: 202.96.209.133#53


Non-authoritative answer:

*** Can't find weib0.com: No answer


Authoritative answers can be found from:

weib0.com

使用swaks模拟一下:

proxychains swaks --to XXXX@gmail.com --fromadmin@weib0.com

3.spf设置软拒绝

前面说到spf可以配置四种规则:

"+" ?Pass(通过)

"-" ?Fail(拒绝)

"~" ?Soft Fail(软拒绝)

"?" ?Neutral(中立)

当要仿冒的MTA?spf中配置了软拒绝,这时候是否接受就依照收件MTA的配置了,演示一下:

这里找了一个前客户,打码一下,配置了软拒绝,那么:

proxychains swaks --to XXXX@gmail.com ?--from admin@xxxgrouptest.com

这里这一封邮件没有扔进垃圾箱,也成功接收到了。其他邮箱提供商可自行测试效果。

具体上可以urlcrazy?一下要仿冒的域名,如果有~all配置的域名想要使用的话,可以不妨一试。

当然如果你的目标的MTA就是软拒接的话,也可以尝试直接模拟对端MTA,企业邮箱配置的都是-all,这招只有在目标自建了邮件服务器才有可能出现且极少成功。

4.SPF实现不当

猜想一下收件MTA检测SPF的逻辑:

1.取域名。

2.取对应域名的SPF记录。

3.比对连接过来的ip是否通过SPF。

显然,ip我们不能伪造,要伪造域名的SPF记录我们也不能控制,好消息是我们可以控制所有的域名,还记得我们开篇的MTA交互流程吗?有域名的地方有这三个:

1.与接收者MTA打招呼时的EHLO命令

2.指定发送人的MAIL?FROM命令

3.正文里的From头部

这三个有邮箱域名的地方,我想先讨论MAIL?FROM和正文的FROM部分,重贴一小段MTA之间交互过程:

-> MAIL FROM:admin@noahgrouptest.com

<- ?250 Ok

-> RCPT TO:<xxxx@cagetest.com>

<- ?250 Ok

-> DATA--------------------正文开始------------------------------

<- ?354 End data with <CR><LF>.<CR><LF>

-> Date: Mon, 25 Jan 2021 15:18:32 +0800

-> To: xxxx@cagetest.com

-> From: admin@xxxxgrouptest.com

-> Subject: test Mon, 25 Jan 2021 15:18:32 +0800

-> Message-Id: <20210125151832.170069@cagetest-phishingemail1>

-> X-Mailer: swaks v20181104.0 jetmore.org/john/code/swaks/

-> from: admin@qq.com

->

-> This is a test mailing

->

->

-> .-----------------------正文结束-------------------------------

这里DATA域包含了正文部分,也就是在客户端看到的内容,所以这个From头是会展示给用户看的(报文地址)。而MAIL-FROM是MTA之间的交互,是在投递的时候使用的,并不会被客户看到(信封地址),所以,存在一种可能:

如果收件MTA中取信封地址,不检查报文地址且不检查两个地址是否一致,我们就可以在报文地址上使用一个可以通过SPF的记录,然后定义一个想要的报文地址,就能实现绕过。

具体实现上可以自建一个域名,自行配置一个SPF记录:

v=spf1 ip4:192.168.1.1 -all

如果没有域名的话,可以自行从FDNS数据集里找:

这个解压出来筛选spf记录:

从里面找到合适的SPF记录也可以,另外,这个数据集很有趣,对平时渗透也可以找到一些子域名的查找工作,可以下载回来扔进ES。

这一招也只对自建的mail系统有可能有用,测试下来各大云邮件提供商都有完备的SPF验证。

再来说一下被忘记的EHLO头,这里无关紧要,不想看的可以跳到下一章。

首先和MAIL-FROM一样,EHLO也不会被展示给收件人,我们试一下伪造ehlo:

swaks --to xxx@gmail.com ?--from admin@1634.com --ehlo admin.com

这里admin.com的spf记录是全部拒绝的:

成功发出,也成功收到了:

后面测试了outlook邮箱、腾讯企业邮、sina邮箱也都是成功的。不过有的被识别为垃圾邮件了。不再一一演示。

而exchange的使用发件人信誉,会将ehlo域作为一个判断是否为垃圾邮件的指标,也并不会直接拿去检查SPF。不过有一些邮件网关是可配置检查EHLO域的:

Helo/ehlo 分析: HELO 和 ehlo SMTP 命令用于向接收 smtp 服务器提供发送 smtp 服务器的域名(如 Contoso.com)或 IP 地址。 恶意用户(或垃圾邮件制造者)经常通过不同方式伪造 HELO/EHLO 语句。 例如,键入与发起连接的 IP 地址不匹配的 IP 地址。 垃圾邮件制造者还将已知在接收服务器本地支持的域放入 HELO 语句,尝试像域处于组织中一样显示。 其他情况下,垃圾邮件制造者更改在 HELO 语句中传递的域。 合法用户通常可能会在 HELO 语句中使用不同但是相对恒定的一组域。

因此,按发件人分析 HELO/EHLO 语句可能表明发件人很可能是垃圾邮件制造者。例如,在特定时段内提供许多不同的唯一 HELO/EHLO 语句的发件人更可能是垃圾邮件制造者。如果发件人在 HELO 语句中提供的 IP 地址一直与连接筛选代理确定的来源 IP 地址不匹配,则也很可能是垃圾邮件制造者。如果远程发件人在 HELO 语句中提供的本地域名与 Exchange 服务器在同一组织中,则也很可能是垃圾邮件制造者。

https://docs.microsoft.com/zh-cn/exchange/antispam-and-antimalware/antispam-protection/sender-reputation?view=exchserver-2019

事实上,翻阅RFC的文档,EHLO后应该接FQDN,即全限定域名:同时带有主机名和域名的名称。,但是测试下来,厂商几乎不检测这里。

5.祈祷对方不校验SPF记录或者配置错了

同样,托管在云上的都是校验的,自建的依靠配置,不过实测下来exchange2016默认是不开启的,需要手动配置发件人信誉。碰到了这种这情况建议买DLT。

6.其他

其他师傅还有一些技巧,利用条件都比较苛刻,想看的可以点击这里。

发件人前端伪造

综上所述,SPF规则被绕过的概率几乎没有,只要上云就GG。既然不能伪造,我们退一步,追求客户端展示上的相似。这是个古老的技术,客户端有以下几种:

1.web网页端

2.手机app

3.foxmail

3.小程序和其他

需要说明的是由于每种客户端的显示方式都不相同,所以一些技巧都只对个别的客户端有效。

我们先从基本的swaks开始:

swaks --to xxx@cagetest.com ?--from XXX@163.com --body "hello,world"

-au ?au-ap ap --server smtp.163.com

这里解释一下-au -ap, 这是swaks的另一种用法,它使用用户名(au)授权码(ap)模拟客户端登录到自己的MTA,然后发送邮件,起一个邮件代理的功能,这时候你用的是一个合法的用户,当然是可以成功发送的。

后面的都会有-au?-ap –server,后面就省略了。

这里我们用--from指定了收件人,1.5中提到,我们有两个收件人地址,一个是信封地址(MAIL-FROM),一个是报文地址(from),这里swaks的--from是指定了信封地址,我们可以通过—h-from指定报文地址。

--from==》信封地址

--h-from==》报文地址

如果不指定--h-from,所有的smtp服务器处理都是继承—from的值:

那理所当然的我们尝试直接指--h-from为我们想要的邮箱:

swaks --to xxxx@cagetest.com ?--from jianxxx@163.com ?--h-From: 'admin@163.com'?--ehlo gmail.com --body hello ?--server smtp.163.com ?-p 25

这里变成了admin,但是丢失163.com,点进去的话:

显示了代发,事实上使用一个左尖括号<加任意汉字就能去掉代发的标识:

swaks --to xxx@cagetest.com ?--from jianghpxxx@163.com ?--h-From: '管理员<任意汉字<admin@163.com>管理员' --ehlo gmail.com --body hello

web端上也不显示,不过地址变成了奇怪的样子。

其他客户端对于代发的显示不一:

查看原始邮件的基本信息也是admin:

在原文中才看得出来:

outlook.com也不显示代发:

新浪显示代发:

foxmail上:

12月10日最新的7.2.20版本,changlog说加入了代发的显示,其实老版本也是显示代发的:

不过我们可以用MIME的方式绕过它:

import smtplib
from email import encoders
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
sender='sender@sina.com'
username='sender'
password='password'
smtp=smtplib.SMTP()
smtp.connect('smtp.sina.com',25)
smtp.login(username, password)
receiver=['recevier@cagetest.com']
msg=MIMEMultipart()
msg['From']="admin@cagetest.com;<real_sender@sina.com>"
msg_content=u"你好,cagetest!"
msg.attach(MIMEText(msg_content, 'plain', 'utf-8'))
print(msg.as_string())
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()

可以达到完全看不出来的效果哦:

更新到最新版本就不行了,腾讯企业邮会自动加载msg['From']中的红色部分的头像,还是有代发:

这里尝试把前面去代发的payload同时拿来用就不行了。

smtplib.SMTPDataError: (553, b'Envolope sender mismatch with header from..')

也可以这样夹带一个邮件地址,企业邮会去掉一对尖括号,并不是递归的,所以用两对尖括号,使用两对尖括号的好处是其中的邮箱地址不会被检测:

swaks –to xxxxx@cagetest.com ?--from real_addr@163.com ?--h-From: '管理员<<admin@cagetest.com>><real_addr@163.com>' --ehlo gmail.com --body hello

不过在点开详情和在web端依旧露馅了:

这时候可以注册一个域名,比如cagetast.com,?cagetest.cn, cagetest.com.cn,效果就可以达到(图是P的):

其他的邮箱或多或少都有这类问题,可以自行研究如何在前端显示的比较像,但是很难找到在各种客户端都很像的伪造办法。

让邮件进入收件箱

当检查过SPF后,这时候MTA会首先判断你的IP,一般发的过快会被MTA暂时拉进黑名单,经常发垃圾邮件的ip会被永久拉黑,像这样:

<** 554 Rejected due to the sending MTA's poor reputation. Please refer http://mail.sina.com.cn/help2/rwmail.html

不过个别MTA不会告诉你为啥封你,可以去http://multirbl.valli.org/查询一下ip有没有被封。

经过检测后,判断邮件内容、标题。加一些其他元信息,最终判断是否为垃圾邮件,从而决定这封邮件是进入垃圾箱或收件箱,甚至直接不发送到客户端。

这里实测使用自建邮箱基本没有问题,有钱可以给SSL上一个贵的证书,越贵信誉度越高,也可以使用一些信誉度很高的邮件服务商mailgun代发也不会进入垃圾箱,不过mailgun收费了。https://www.aliyun.com/product/directmailaliyun这个,一天200封。

后面会说内容的部分,内容伪装得当也很容易进入收件箱。

后续内容敬请期待......

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/105283.html

分享给朋友:

“关于钓鱼邮件,你了解多少?(中)” 的相关文章

洗米华小三(浅谈米花三笑的微博)

据长江网2021年11月26日23:49:22的最新消息,微博网友@ 爆料。 平安夜来临之际,事件,在网上炒得沸沸扬扬,引发全网热议! 据悉,洗米华小三。猜测这是洗米华在暗中帮助着Mandy。挺想看他老婆小三都抛弃他的场面。 1.洗米华小三 m...

黑客追款出款成功再收费「24小时在线的黑客追款」

据公务员期刊网2021年10月14日18:37:49的最新发布,微博网友@ 爆料。 平安夜来临之际,事件,在网上炒得沸沸扬扬,引发全网热议! 据悉,黑客追款出款成功再收费。可能没有机会接触到钱。那时候我就有想过退步。 一、黑客追回网赌40万 首先确保整个无前期费用黑客追款方案是最有效的,在做一件黑客...

创业板投资风险揭示书,创业板风险揭示书

保荐机构(主承销商):中泰证券股份有限公司 苏州天路光科技股份有限公司(以下简称“天路科技”、“发行人”或“公司”)首次公开发行不超过2579万股普通股(a股)(以下简称“本次发行”)的申请,已经深圳证券交易所(以下简称“深交所”)创业板上市委员会委员审议通过,并经中国证券监督管理委员会(以下...

【紧急+重要】勒索病毒解决方案!附:MS17-010补丁下载

  滚动更新:2017年5月13日16:57:22   游侠安全网(良心网站,站长先贴上注意事项和解决方法!防止你看本文的时候就被加密了!   1、本次共计是自动化攻击,利用了Windows的MS17-010。但苹果的MacOS用户不用得意,因为在昨晚之前,我这里得到的好几起勒索攻击案例都是针对...

干洗对衣物有害吗

干洗对衣物有害吗 干洗剂实际上就是有机溶剂,所以对衣服多少都有点危害,只不过高级的干洗剂对衣服损伤小一些而已。 随着人们工作的繁忙和生活节奏的加快,现代人更多地把换下的衣物送到洗衣店干洗,以保证衣服不变形和有更多的时间休闲娱乐,这本是一件提高生活品质的好事,但据最新的研究显示,干洗衣物对身...

花卉市场批发价格行情 「批发鲜花市场进货渠道」

是目前全国最大的鲜花产地,有两个比较大的花卉市场,要的量少,昆明进货的话就去呈贡斗南花市,翻倍的。装修和进货资金四部分。不过玖烨花卉的花不贵。 我是湖南的,有什么网站没.消费能力要跟上;找到好的进货渠道,花卉市场了,只说鲜切花,现在搬到联盟路了,上海,销售数量比去年同期有所增加,如果开个人小店的话。...

评论列表

北槐树雾
3年前 (2022-05-28)

.web网页端2.手机app3.foxmail3.小程序和其他需要说明的是由于每种客户端的显示方式都不相同,所以一些技巧都只对个别的客户端有效。我们先从基本的swaks开始:swaks --to xxx@cagetest.com ?--from XX

鸽吻折奉
3年前 (2022-05-29)

经常发垃圾邮件的ip会被永久拉黑,像这样:<** 554 Rejected due to the sending MTA's poor reputation. Please refer http://mail.sina.com.cn/help2/rwmail.ht

北槐婳悕
3年前 (2022-05-29)

er=['recevier@cagetest.com']msg=MIMEMultipart()msg['From']="admin@cagetest.com;<real_sender@sina.com>"msg_content=u"你好,cagetest!"msg.at

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。