猥琐的邮件欺诈攻击以及解决方案
作者:云舒
最近比较流行猥琐流客户端攻击方法,不过都是以XSS等WEB方面的攻击为主。趁这个机会,我顺便把邮件欺诈这个也比较猥琐的老问题拿 出来说一说。问题虽老,但是用来结合社会工程学,做些挂马欺诈的事情,应该危害还是相当大的。比如说,你某天收到你boss发给你的一封邮件,给你一个 word文档,难道你不会打开看看么?当然,如果连boss的邮件都在虚拟机里面打开就另说了。
具体怎么做太简单我就不说了,这里大致描述一下原理。假设[email protected]要发一封邮件到[email protected], 正常工作流程是这样的:用户a连接smtp.domain-a.com的smtp服务,进行身份认证,发送邮件内容。随后,smtp.domain- a.com会解析domain-b.com的mx记录得到mx.domain-b.com,连接这个mx记录的smtp服务端口,将[email protected]的那封邮件发送过来,mx.domain-b.com再转交到pop3.domain-b.com,发送给[email protected]。 这里问题就来了,因为邮件是从另外的smtp服务器发送过来的,而smtp.domain-a.com不可能有mx.domain-b.com的账号,也 就是说mx.domain-b.com不可能对smtp.domain-a.com进行身份认证。那么用户接受到的邮件为什么会有发件人信息呢?这个,就 是由smtp.domain-a.com随便说了。因此,你随时可能收到来自你Boss的,附加一个包含0Day的word文档作为附件的邮件……
对这个问题,我晚上做了一些测试,给hotmail发送伪造源为[email protected]的邮件被认出来是伪造的放到了垃圾箱,其它的包括gmail,yahoo在内的各大邮箱,都没有部署有效的措施,至于各大企业内部的工作邮箱,我就没敢测试了,也许情况不容乐观。
说了攻击,下面主要描述一下解决方案。解决方案也许不是完全的,但是至少可以解决来自本域的欺诈邮件,保证你不会收到看似来自你 boss的攻击邮件。解决方案很简洁,主要是微软的Sender ID技术,和yahoo的DomainKeys技术,而且这两种技术思路上也非常接近。
Sender ID利用DNS扩展,来验证邮件发送者是否真的来自它声称的域。工作流程图如下:
前面的过程和开始一样,用户a(Sender)通过smtp服务将自己发送给[email protected]的 邮件发送给smtp.domain-a.com。smtp.domain-a.com声称发件人是domain-a.com域的a用户,将邮件发送给 mx.domain-b.com(inbound e-mail server),再转发到pop3.domain-b.com。但是在部署了Sender ID之后,mx.domain-b.com在接收到邮件的时候,会查询domain-a.com域的SPF记录,而SPF记录,保存着允许发送 domain-a.com域邮件的IP段。显然,这个是由domain-a.com域名的拥有者控制的,其它人无法伪造。因此,攻击者伪装domain- b.com发送邮件给domain-b.com域的其他人时,连接过来的IP是攻击者的邮件服务器,而查询出来的允许IP段则是domain-b.com 域公司的IP,显然,这两个IP是不会匹配的,那么就可以判断到这个邮件是伪造的了。
简单的说,Sender ID就是首先在domain-b.com的dns服务器上加一个SPF记录,内容为允许发送domain-b.com域邮件的IP段,一般来说指向 smtp.domain-b.com的IP就可以了。接收到号称来自domain-b.com域的邮件时,将DNS SPF解析的结果与IP层获取到的连接IP地址匹配即可。能匹配则是正确的邮件,不匹配则表示是欺诈的攻击邮件。
相比而言,DomainKeys更为安全,采用了非对称加密签名的方式,甚至可以防止邮件被篡改,只是对系统的资源消耗大了一些。与 Sender ID的区别在于,DomainKeys方案在域的DNS记录中不是保存了允许放松该域邮件允许的IP段,而是保存了一个公钥,相对的私钥保存在SMTP服 务器上。当用户[email protected]在发送邮件 时,SMTP.domain-a.com将用户a此封邮件的邮件头加上邮件内容一起使用私钥做RSA签名,然后将签名附加在邮件头中一起发送。在邮件接收 方服务器mx.domain-b.com接收到邮件时,从domain-a.com的_domainkey记录中获取到该域的公钥,使用公钥对邮件头中包 含的数字签名做验证。签名检验不符合则为伪造邮件,合格则为正常。
总的来说,这两个方法都是要求邮件发送方在DNS中做一个特定的记录,要么是发送方的IP段,要么是公钥。最终邮件接收方根据接收邮件 时候的信息,和这个DNS解析出来的特征做对比,匹配则不是伪造邮件。这两种技术都需要邮件发送方的支持,所以推广比较困难。但是至少,可以在自己的本域 启用,防止攻击者伪造自己本域的邮件。根据测试来看,hotmail就使用了自己的Sender ID技术,可以认出伪造的hotmail.com域的邮件。