专栏首页FreeBuf关于钓鱼邮件的学习笔记

关于钓鱼邮件的学习笔记

攻击

事前准备

钓鱼邮件的攻击方式通常有两种:

1. 构造钓鱼页面引诱受害者点击,获取目标账号密码,或者利用浏览器漏洞直接获取权限 2. 发送带有恶意附件的邮件,引诱受害者运行

所以事前我们需要准备一个钓鱼网站,为了能让钓鱼网站在公网访问,还需要一个VPS,若想获得更好的伪装效果,还需要一个用于伪装的域名。VPS和域名都到手后,还可以搭建属于自己的邮服用于SMTPRelay。使用恶意附件的话,还需要准备一个恶意样本,能做免杀的话就更好了,接收shell的话,同样需要一个VPS。

准备阶段恐怕就要花费大量的时间和金钱,VPS和域名需要购买,钓鱼网站需要制作,VPS需要搭建Web环境挂上我们制作的钓鱼,服务端需要单独写接收账号密码请求的功能,有的系统是token登录,因此密码还有时效性,为了保证能第一时间证明钓鱼成功,还需要开发自动登录目标截图的功能。使用VPS接收shell还需要搭建远控服务端,可以选用MSF、CS、Empire或者其他大佬们用着顺手的工具,还有各种各样的准备工作。最后就是最重要的,还要做好信息收集,掌握目标的近况,比如最近有什么活动、HR经常用什么样的模板发邮件等,掌握足够的情报可以帮助我们构造出容易让人上钩的邮件内容。

从零开始做上述准备工作的话,我这种菜鸟一周时间都不够……

如果不具备一些基础设施,可以选用现成的工具来辅助发送邮件,网上有个公开的网站可以方便的发送伪造邮件:https://emkei.cz/。千里目实验室的一个老哥在Github上也开源了一个邮件伪造工具,亲测也很好用:https://github.com/Macr0phag3/email_hack

邮件伪造

先介绍一下SMTP,SMTP邮件服务器在进行邮件中转的时候不需要认证,利用这个特点攻击者可以进行邮件伪造攻击,SMTP它是基于TCP协议的,因此与TCP协议相同,SMTP传输邮件主要有以下三步:

1. 建立连接 2. 传输数据 3. 断开连接

第一步就是TCP协议的三次握手,SMTP协议的命令主要都是在第二步完成,常用的通信命令如下

了解了这些命令后,直接利用telnet命令就可以实现邮件的发送,下面是我用IIS搭建的SMTP中继服务器进行的邮件发送测试,返回250则代表发送成功。

其中mail from为实际发件人,from为邮件中显示的发件人,通过上面的例子可以看出,在输入发件人的时候,我们是可以任意输入的,因此可以伪造邮件发件人,如果接收方对邮件来源没有做好校验,则很有可能显示成为我们伪造的发件人,这就是邮件伪造的原理。

防护

SPF

说完了攻击再说说防护。SPF是 SenderPolicy Framework 的缩写,邮件接收方会检查域名的SPF记录,来判断发件人的IP地址是否在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件,一般邮件接收服务器会直接拒绝接收。

SPF 其实就是一条DNS的TXT的记录,查询域名的方法也很简单,以163.com为例:

Linux:

dig -t txt 163.com

Windows:

nslookup -type=txt 163.com

可以看到163.com的SPF记录为163.com text = "v=spf1 include:spf.163.com-all",其中:

再看看spf.163.com的SPF记录,也是引用了其他域名的SPF策略,再次查询a.spf.163.com的SPF记录,最后看到很多IP段,我们在使用163.com邮箱发邮件时,收件方会查询到这些IP,如果发件人的源IP不在这些IP列表里,则说明是一封伪造的邮件。

测试一下伪装为admin@163.com邮箱给qq.com发邮件,最后提示550DNS检查失败。

DKIM

DKIM是一种在邮件中嵌入数字签名的技术,DKIM签名会对邮件中的部分内容进行HASH计算,最后在邮件头中增加一个DKIM-Signature头用于记录签名后的HASH值,接收方接收到邮件后,通过DNS查询得到公开密钥后进行验证, 验证不通过,则认为是垃圾邮件。

那么我们如何获取到发件方的DKIM的密钥呢?在DKIM中有一个选择器(selector)的概念,通过此功能可以为不同的用户提供不同的签名,想要找到发件方的DKIM服务器,首先需要找到selector,在邮件的DKIM头中,s字段的值即为DKIM的selector,获取到selector后,我们就可以在如下域名中找到密钥。

selector._domainkey.xxxxxxxx.com

以阿里云的邮件为例,查看邮件源文件,通过s字段可以得到selector的值为s1024。

因此阿里云的DKIM服务器域名为s1024._domainkey.aliyun.com,同样通过dig或者nslookup即可获取解密密钥。

DMARC

DMARC是基于SPF和DKIM协议的可扩展电子邮件认证协议,通常情况下,它与SPF或DKIM结合使用,并告知收件方服务器当未通过SPF或 DKIM检测时该如何处理。

以阿里云为例,获取_dmarc.aliyun.com的txt记录即可获取DMARC策略。

v=DMARC1:版本

p=:接收者根据域名所有者的要求制定的策略,取值和含义如下:

none

不采取特定措施

quarantine

邮件接收者将DMARC验证失败的邮件标记为可疑的。

reject

域名所有者希望邮件接收者将DMARC验证失败的邮件拒绝

pct=:域名所有者邮件流中应用DMARC策略的消息百分比。 rua=:用于接收消息反馈的邮箱。

邮件网关检测原理

以上是协议层面的安全防护,但是协议防护也不是万能的,在真实的企业安全防护中,安全邮件网关是保护邮件安全的有效方案。邮件安全防护产品在此次钓鱼邮件对抗中起到了重要作用,下面简单介绍一下邮件网关的防护原理。

规则库

和杀毒软件一样,为了降低误报,一些邮件网关会使用规则库的技术,一些我们认定为垃圾邮件的邮件,则会被当做邮件样本加入规则库,下次如果再次遇到相同的邮件即可进行检测。

邮件头检测

检测mail from和from字段是否一致,检测SPF、DKIM、DMARC是否符合。

防病毒

邮件中嵌入恶意附件也是常用的攻击方式,邮件内容都是BASE64编码的,因此附件是可以直接进行还原,很多邮件网关都会内置防病毒引擎,甚至有的还有沙箱技术,让附件样本模拟运行后,通过行为来动态判断附件的黑白。一些攻击者在发送木马附件的邮件后可能会遇到有目标上线但很快下线的情况,遇到这种情况也不要高兴的太早,拿到的可能并不是一个真正的主机权限,而是一个沙箱。

黑白名单

黑白名单是简单有效的防护方式,可以针对发件箱、源IP、发件域名等设置黑白名单,特别是在应急响应阶段,黑白名单可以实现快速控制威胁扩散。

频率检测

对于同一源IP或者邮箱,如果一段时间内发送了大量邮件,则认定发件人为攻击者,采取黑名单方式禁止其访问目标。

超链接检测

在钓鱼邮件检测中常用,提取邮件中所有超链接,然后依次判断链接是否已经在恶意链接的规则库中。对于文本显示的链接和超链接的实际链接不同的情况,也会提示为钓鱼邮件。

机器学习

对发件人的邮箱域名进行学习,识别出与真实域名相近的域名,比如tools.com、t00ls.com、tooIs.com等,如果发现类似域名的发件人,则标记为危险邮件。

各种绕过姿势

绕过SPF和DKIM

以阿里云的邮件为例,打开163邮箱看到了阿里云的邮件。

将邮件导出为eml文件,打开看到有DKIM验证。

上面已经演示过aliyun.com既有SPF又有DKIM还有DMARC,邮件伪造防护策略齐活了,如果仍然以阿里云为域名伪造发件人几乎是不可能的,而且163邮箱也有自己的校验机制,因此想要欺骗163邮箱,我们伪造的发件人的域名非常重要,要求这个域名不能有相关的邮件伪造防护策略,因此我随便找了一个小众的域名qiita.com,先看看SPF记录。

虽然有SPF记录,但是看到结尾的策略为~all,~前缀代表软拒绝,对接收方来说,遇到有软拒绝的域名没有通过SPF校验,通常采取的策略是放行或者标记为垃圾邮件,此处我伪装发件人为admin@qiita.com。将邮件保存为eml格式,DKIM的话直接删掉DKIM头即可,只保留从From开始的部分,同时把From处的发件人修改为要伪装的发件人admin@qiita.com。

使用swaks发送邮件,命令如下:

第一次发送的时候会失败,提示,请15分钟后再尝试。

查看163的错误说明,说明中却写着2分钟后再尝试。

那就隔2分钟后再发送邮件,返回250发送成功。

查看邮箱发现收件人已经成功伪造,也没进垃圾箱也没有显示为代发,比较完美的伪造。

绕过邮件网关超链接检测

此处开始介绍的方法都是此次公司实际对抗过程中大佬们采用过的方法,部分内容敏感因此只阐述原理,就不过多展示细节了……

接着说绕过超链接检测,上面介绍过一些邮件网关检测钓鱼邮件时会检测邮件正文中的URL和超链接指向的链接是否一样,比如邮件正文中写入https://www.baidu.com,但点击超链接会跳到https://www.taobao.com,邮件网关会对存在这种特征的邮件特别照顾,了解了检测原理绕过这种检测方式也很简单,那就是文本显示的内容和超链接内容一致,或者干脆不加超链接,测试了部分邮件客户端,对于不加超链接的URL,在本地邮件客户端中打开时会被客户端自动加上超链接,这其实是个方便用户的功能,但是也为钓鱼提供了一定的方便。不过采用这种方法也有弊端,需要把真正的钓鱼链接贴在邮件中,不容易做到伪装,而且也容易将服务器暴露。

绕过邮件网关域名检测

这里主要讲的是绕过防护设备的黑白名单,既然是黑白名单那么一定是人为设置的,人为设置难免会有设置疏忽的地方,这时候需要我们对目标多做一些域名收集,寻找一些没有SPF记录的域名,比如xxxx.com、xxxx.cn或者一些三级域名,甚至可以尝试任意伪造一个不存在的三级域名,比如1111.xxxx.com。

同时需要多收集一些正常的发件邮箱,比如公司IT的邮箱it@xxxx.com,通常此类业务邮箱是在白名单中的,因此在伪造发件人时,可选择一些白名单关键字来尝试匹配防护设备的白名单正则策略,比如itit@xxxx.com、aa@it.xxxx.com等,具体能不能成功还需要在实战中多实践。

另类方法绕SPF

由于邮件网关会对SPF记录中的IP开启白名单,对SPF记录中的IP进行漏洞探测,如果能获取这些IP的控制权,以白名单身份发邮件,即可完美绕过所有限制。在这次实战中,对目标域名进行了SPF查询,发现了3个IP。

本着试一试的态度,发现其中一个IP开了25端口,telnet连上去直接可以转发邮件不需要任何认证,十分舒服,不过防守方很快发现了这个漏洞,也快速修复了。

当然实战中最尴尬的是你只发了一个测试邮件,就被防守方发现了……被发现也就算了,还有更骚气的操作是向云服务商举报,封了我们的云主机……看来攻防永远在矛盾对抗着,任重而道远。

*本文原创作者:sec360zz,本文属于FreeBuf原创奖励计划,未经许可禁止转载

本文分享自微信公众号 - FreeBuf(freebuf),作者:sec360zz

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

原始发表时间:2020-03-22

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一封伪造邮件引发的“探索”(涉及钓鱼邮件、SPF和DKIM等)

    0x00. 引言 我用swaks 发送一封以我们公司CTO为显示发件人(腾讯企业邮箱)的伪造邮件给我的一个同事,邮件的内容就是让这位同事去CTO的办公司一趟,没...

    FB客服
  • 企业邮件安全防护实践

    邮件系统作为一种有效的内外部工作沟通平台,在企业内得到广泛使用。同时,广告邮件、垃圾邮件、钓鱼邮件等问题就成了企业邮件安全头号难题。所以我们的企业安全人员以往更...

    FB客服
  • ROPEMAKER:利用简单CSS属性就可以篡改已发送的邮件内容

    邮件与云安全公司 Mimecast 的安全研究人员 Francisco Ribeiro 最近发现一种名为 ROPEMAKER 的攻击手法。ROPEMAKER 全...

    FB客服
  • 第七章:SpringBoot整合JavaMail发送邮件

    恒宇少年
  • 计算机网络之应用层-Internet电子邮件

    用户代理为电子邮件应用的客户端软件。例如:Outlook,Apple Mail,Fox Mail等。

    越陌度阡
  • 大数据告诉你:如何让大忙人及时回复邮件

    网上教人们如何写邮件的建议不少,但大多还没有数据做支撑。最近,邮件效率服务商Boomerang通过分析5300多万封邮件数据,找出了一些影响邮件回复率的窍门。总...

    华章科技
  • 走进Java接口测试之使用JavaMailSender发送邮件

    一般我们在做接口自动化时,都会通过钉钉或者邮件的方式通知测试结果信息。而且基本上邮件的内容都是测试报告。所以,今天就来讲讲如何利用 pring提供的 JavaM...

    小老鼠
  • “商贸信”病毒重新活跃 四天狂发20万钓鱼邮件

    12月上旬在全球范围大范围爆发的“商贸信”病毒近日再度复苏。根据腾讯安全御见情报中心检测发现,自12月11日起,“商贸信”病毒开始重新活跃,并在国内地区呈现爆发...

    企鹅号小编
  • 31.1企业级开发进阶3.1:发送电子邮件

    从古代的八百里加急,到现在的电子邮件,邮件的发展见证了上下五千年的发展史,这些当然是废话,只是要说说邮件的重要性。

    大牧莫邪
  • 两封发票主题攻击邮件分析

    3月6日上午,邮箱连续收到两封以税务发票“Tax Invoice”为主题的邮件,全部是英文信息,接收时间分别是早上8:27和9:15,附件是windows系统....

    FB客服

扫码关注云+社区

领取腾讯云代金券