在日常工作中,我们的邮箱每天会有大量邮件的往来。然而,由于邮件客户端本身的漏洞,一些风险就蕴藏在其中,需要引起大家足够的关注。
这不,在今天下午,我的邮箱就收到了好几封来自TeLangPu@whitehouse.gov的邮件。具体的邮件内容,涉及到我和美国总统之间的隐私,在此忽略不提。但我们看到,在Outlook的界面,发件人确实显示的是来自白宫的官方域名。那么,这是什么原因造成的,我们是否能有效进行防范呢?
漏洞描述
该漏洞由德国安全研究员Sabri Haddouche在2017年12月首次发现,攻击者可以借助该漏洞伪造成任意的发件人,进行邮件欺骗攻击。在发现的最初,这种攻击方式能够规避多种反欺诈保护机制和垃圾邮件过滤器。
经过测试,发现共有33个邮件客户端受该漏洞影响,其中包括Outlook 2016及以前版本、macOS Mail.app、Thunderbird、Yahoo! Mail等主流客户端。
原理分析
大家可能听说过ASCII码,这是当前最通用的一种编码标准,主要用于显示英语和其他西欧语言。而我们所使用的中文,绝大多数都采用国家标准总局发布的“GB2312”编码标准。为了避免不同编码的内容在邮件传送过程中产生错误,大多数邮件客户端都会在发送邮件前,按照RFC-1342中的规定,对非ASCII的字符串进行编码,并在收到邮件后再使用相同标准,解码所有非ASCII字符。
然而,大多数邮件客户端在使用RFC-1342协议的过程中都存在缺陷:如果它解码的邮件字符串中包含一个空字节,或包含两个及两个以上的邮件地址,邮件客户端只会读取空字节之前的部分,或者是可以识别的第一个有效邮件地址,并且不会对其进行有效性检查。
我们举例来说,我们可以利用自己的域名,创建一个这样的电子邮件地址并用于发出邮件:
From:=?utf-8?b?${base64_encode('TeLangPu@whitehouse.gov')}?==?utf-8?Q?=00?==?utf-8?b?${base64_encode('(TeLangPu@whitehouse.gov)')}?=@mailsploit.com
经过RFC-1342协议的编码后,该电子邮件的发件人地址就变成了:
From:=?utf-8?b?VGVMYW5nUHVAd2hpdGVob3VzZS5nb3Y=?=@mailsploit.com
再经过邮件客户端的解析,发件人地址就变为:
From:TeLangPu@whitehouse.gov\0(TeLangPu@whitehouse.gov)@mailsploit.com
由于遇到了空字节“\0”,大多数邮件客户端会忽略空字节之后的部分,因此也就将邮箱地址显示为“TeLangPu@whitehouse.gov”。
然而实际上,我们看到这封电子邮件的真实域名并非whitehouse.gov,而是mailsploit.com。
在正常的邮件中,发件人通常会显示为“姓名<邮箱地址>”的格式,但如果发件人中出现乱码或出现未知域名,就需要引起我们的警惕。
特别需要注意的是,即使是正常显示的发件人,也不能排除伪造的可能性,如下图所示。因此需要大家根据邮件的内容进行判断,如果发现邮件内容非常可疑,那么建议最好通过“邮件头”进行判断,或通过微信、电话等方式进行二次确认。
接下来,我们就研究一下如何通过甄别这些伪造的邮件。
伪造邮件的甄别方法
简单来说,我们需要查看邮件原始文件中的“邮件头”,从而有效发现伪造的邮件。原因在于,“邮件头”中的一些信息是真实并且无法伪造的。以Outlook 2010为例,具体步骤如下:
- 双击打开邮件正文,点击“标记”工具栏右下角的箭头,打开“属性”界面。
- 在“属性”界面中,观察“Internet邮件头”中的内容。
- 关注其中的“From”、“FROMIP”信息是否正确。如下图所示,就暴露了实际的邮件来源是“demo@mailsploit.com”。
- 特别需要注意其中的“Received”信息。如果其中包含可疑IP或域名,那么该邮件的真实性就非常值得怀疑。
如下图,是我们伪造特朗普邮件的Received值,其中包含境外IP 54.240.7.28,以及未知域名a7-28.smtp-out.eu-west-1.amazonses.com,由此可推断为伪造邮件。
我们再来看一封合法的邮件,其Received值显示IP为211.151.X.X(公司邮件服务器),域名为nXus.com,这样一来,就基本认定该邮件为真实邮件。
如果你使用的是Foxmail客户端,右键点击相应邮件,选择“更多操作(M)”,选择“查看邮件源码(I)”,即可查看邮件头信息。
最后,我感到非常难过,本以为自己已经和川普成为了好朋友,但没想到这些邮件实际上都是黑客伪造的。痛定思痛,希望大家能通过本文中的案例,学会如何甄别邮件的实际来源,并在收到可疑邮件时使用本文中的方法进行判断。
除此之外,还要提醒大家:不要轻易点击陌生邮件中的链接,对于邮件中一些奇怪的“指示和要求”要进行二次确认,提高安全意识,防范邮件风险。