本文所提出的3种攻击模型
注意:在SMTP协议中有"Mail From"字段,而在邮件内容中有"From"字段,两者存在一定的差异。可以试着用命令行去发一封smtp邮件:
输入 MAIL FROM:<> 回车 <>中填写发件人的邮箱,即发送者的邮箱名
输入 RCPT TO:<> 回车 <>中填入收件人的邮箱
输入 data 回车 ,服务器返回:354 End data with <CR><LF>.<CR><LF>意思是连续两次回车换行后结束(实践中我是回车,再打了个句号,再回车就结束了)
下面是data下的可选项:
输入 from:发件人名称 ,此项可任意填入,将显示在收件箱的‘发件人’一栏
输入 to:收件人名称 ,可任意填入,将显示在收件箱的‘收件人’一栏
由于使用的MAIL FROM与From字段信息不一致,QQ邮箱提示邮件为代发。
举上面这个例子是为了方便大家知道后文的"MAIL FROM"和"From"完全没有关系,"MAIL FROM"主要在SMTP协议的头部中出现,"From"则在数据内出现。
-
攻击者与被冒充者因共享MTA所造成的攻击:对应论文中的a路径
假定攻击者Oscar([email protected])与Alice([email protected])使用同一个邮件服务,Oscar可以利用a.com的MTA发送篡改“From”和“Auth”,甚至“Mail From”头的邮件。
攻击优势:因为攻击者和被冒充者都在a.com下,由于SPF检测是基于域名IP的因此该攻击能够绕过SPF检测。同样由于是自己人MTA也会给邮件自动添加签名,很容易绕过DKIM,甚至绕过DMARC。这样Alice就被攻击者冒用了。
攻击劣势:如果共享的MTA配置了严格的检查策略,可能会直接将存在不一致信息的邮件直接丢弃。
2.攻击者用自己的服务器进行直接的MTA攻击:对应b路径
利用发送方MTA与接收方MTA之间无任何认证鉴权机制。攻击者Oscar可以通过修改“Mail From”和“From”将邮件发件人修改为任意信息。
攻击优势:攻击者自己控制了一台MTA服务器,无需配置严格的检查,至少可以把邮件发出去。
攻击劣势:成本较高
3.利用转发MTA实施攻击:对应c路径
攻击者发送钓鱼邮件到其控制的中间账户(比如他在腾讯的邮件账户),并配置这个中间账户使用MTA的自动转发服务。
攻击优势:
(1)接收方的MTA会相信这封邮件来自合法MTA(因为有一个中间MTA自动转发);
(2)有更大的机会绕过发送方MTA的严格性检查(比如“Mail From”和“From”被篡改导致的差别,因为可以在中间转发时调整其内容);
(3)中间MTA在转发时能够添加一些安全机制(比如DKIM签名),有了安全背书,使邮件看起来更可信。
攻击劣势:实施起来相对较为复杂
作者对攻击成功的定义
(1)在邮件发送的认证阶段,攻击者可以任意修改任意头(AUTH username,FROM等头部信息),且不会被检出。
(2)即使部署了严格的SPF/DKIM/DMARC邮件安全协议,然而仍然可以绕过他们,即接收方邮件合法性检测结果依然是“none/pass”
(3)在邮件转发阶段,转发服务器给予了邮件很强的安全背书(比如加了DKIM签名)/攻击者可以在无需验证的情况下自由配置转发的电子邮件到任何账户。
(4)在接收方的MUA处解析并显示的发件人不是邮件真实的发件人,且系统认为其来自一个合法的邮箱地址。
实验方法
(1)收集样本:选取良性电子邮件样本,要求该样本在日常正常发送时不会有害,且不会被认定为垃圾邮件。
(2)构建发送服务:15个IP地址,每10分钟一条,为攻击者的域名及IP地址部署了MX/TXT/PTR等DNS信息
(3)检测收件人MTA的处理方法:主要是检查收件人MTA对多少邮件报错为“fail”且将邮件丢弃。
攻击方法
本文主要介绍了两种攻击方法:(1)在邮件发送时实施攻击;(2)在邮件被中间转发时实施攻击。这一篇我们重点关注“在邮件发送时实施攻击”!!!!!
主动发送邮件时的攻击方法
A1攻击:AUTH的用户名和FROM头之间的差异
如下图所示:在登陆邮件进行认证时,登陆用户名[email protected],但From字段是[email protected]
复现失败案例:
A2攻击:Mail From头和From头之间的差异
攻击者使用[email protected]登陆,但发送的邮件改了From头为[email protected]
这篇公众号最开始给出的图片即为A2攻击,且QQ邮箱能够检测出,我们是使用代发的方式发送这封邮件的(MAIL FROM与From字段不一致是被检测出来的主要矛盾)。
A3攻击:空的Mail From头
把Mail From字段空缺:本人测试发现邮件没被发到目标邮箱
论文中有提到:有13种邮箱有这一漏洞,有的邮箱的修正方案是丢弃这一邮件到垃圾箱。
A4攻击:魔改From头
有些邮件服务没有完全遵从RFC标准,丢弃多个From头的邮件
(a)写了多个From字段,最后显示的是[email protected]
(b)多个From字段,且字段内数据有空格:如下图所示,会被检出
(c)不合法的大写,改写From为FrOM:本人尝试复现,但邮箱未收到邮件。
(d)将不可见的字符放入From里,xff为例
A5攻击:在From中引入多个Email地址
虽然只写了一个From字段,但在From中写了多个地址:这个攻击很神奇,我这里复现了半天都没成功(接收邮箱未收到内容)。可能后续要参考下相关的RFC标准。
(a)写了[email protected]和[email protected]两个邮箱;
(b)在<>中啥都没写(空地址);
(c)把<>换成了[];
(d)把<>换成了(),注释是以括号形式出现的。
A6攻击:由于对Mail From和From解析不一致带来的攻击
攻击者想办法破坏或终止字符串解析进而绕过
(a)由于在Mail From中加入了路由部分“@a.com,@b.com”带来了问题,导致通过SPF验证:可以较好的绕过发送端对mail from字段的合法性认证。复现发现会被邮件检测为“代发”。
(b)中间加了逗号,导致解析后通过SPF验证
(c)在中间加了括号包裹的注释内容
(d)加入NULL字符,导致能够绕过dmarc验证:复现被检测出由邮箱代发
(e)加入不可看到的unicode字符,可绕过dmarc验证:复现被检测出由其他邮箱代发
(d)加入一些分割字符,可绕过dmarc验证:复现被检测出由其他邮箱代发
A8攻击:基于子域名的攻击
攻击者可以从一个没有MX记录的邮箱后缀发送钓鱼邮件,比如[email protected]这种发件人。由于这种域名没有SPF记录,所以很容易绕过SPF检查,同时由于部分商业公司会使用这类子域名,所以可信度较高。根据RFC2821指出当一个域名没有MX记录时,SMTP认为A记录就足够了,这意味着任何有A记录的域名都可以被认为是一个有效的电子邮件域名。
基于邮件转发的攻击
累屁了,且听,下回分解。。。。。。。。
本文始发于微信公众号(Pai Sec Team):《Weak Links in Authentication Chains》复现,论文阅读及分析(中)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论