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

邮件与云安全公司 Mimecast 的安全研究人员 Francisco Ribeiro 最近发现一种名为 ROPEMAKER 的攻击手法。ROPEMAKER 全称叫 Remotely Originated Post-delivery Email Manipulation Attacks Keeping Email Risky。攻击者利用这个攻击方法,可以让一封合法邮件瞬间变身恶意邮件,一般的安全工具还检测不出来。攻击者给受害人发送一封 HTML 格式的邮件,在这封原本合法的邮件发出之后,攻击者还能篡改邮件内容,比如将其中的合法 URL 地址置换成恶意地址。

整个过程可躲避垃圾邮件和安全检查,甚至不需要访问收件人的计算机或者邮件应用。听起来是不是特别不可思议?其本质还是在于对 CSS 样式表的利用。攻击者发送的邮件没有采用内联 CSS,而是从他自己的服务器上加载 CSS。这样一来,在邮件抵达收件人的收件箱之后,攻击者再改换服务器上的 CSS 文件,就可以起到篡改邮件内容本身的目的。

研究人员表示,ROPEMAKER 攻击可以是很多样的,主要取决于攻击者的创造力

”ROPEMAKER的出现源于电子邮件和web技术之间的交集,更准确的说,是HTML中的css造成的,“Mimecast的高级产品营销经理Matthew Gardiner在博文中写道。 ”相比于纯文本的展示方式,在邮件中使用web技术会让邮件更加吸引人,更加动态化,但这样同时也让电子邮件更容易被黑客攻击。“

ROPEMAKER可以成功欺骗当前的邮件安全工具

发件人刚开始发出的邮件的确是干净的,所以它能够通过目标网络(收件人网络)的邮件安全扫描。在邮件安静躺在收件箱之后,攻击者再通过修改外部css文件来篡改邮件内容,自然就不会触发安全检查了,因为邮件的安全系统不会再次对已经发入收件箱的邮件做二次检查。

举个例子,比如攻击者在邮件中提供了两个链接,一个正常链接,一个恶意链接。

首先,有一个前提条件我们要知道:

URL在发送过程中是不会被渲染出来的。

“URL在被发送后才被展示出来,像Minecast这样的邮件安全保护手段是无法探测到URL是否篡改了的,只是在接收端点击时才会检查链接安全性。这是因为在邮件发送的时候,根本就没有URL,也就不会被探测到了,如果想保证安全邮件安全的话, 需要对css文件经行解析,这已经超过了当前邮件安全能系统的范畴。”

也就是说:对于伪造的恶意链接来说,在发送过程中,URL不会被解析,也就不会被发现,在发送后,正常链接被隐藏,显示的是恶意链接,邮件安全系统在不审查外部css文件的情况下,是无法核实链接的安全性的。

两种ROPEMAKER方式

来自Mimecast的研究员Francisco Ribeiro(负责邮件和云的安全)发现了这种有威胁的攻击方式,并且指出存在两种ROPEMAKER方式。

第一种称为ROPEMAKER Switch Exploit:

攻击者改变元素css中“display”属性

比如上文提到:攻击者给受害人发送的邮件包含了两个链接,一个是正常链接,一个是恶意链接,一开始发送的时候,只显示正常的链接。但当邮件投递完成后,攻击者会再修改远程css文件,这样一来邮件中原本隐藏的恶意链接就会显示在用户面前。恶意网址可能会让用户感染恶意程序获取窃取敏感信息。

正常的链接:

恶意的链接:

两种链接分别对应的css:

第二种方法称为ROPEMAKER Matrix Exploit:

这种方法就比较复杂了,攻击者将邮件中所有的字母都植入css中的“id”属性,而这些“id”是通过ASCII命名的。

通过使用css的规则,攻击者可以控制每个字母的显示和隐藏,这样一来就可以随时随意修改邮件的内容了。

这两种方法对邮件扫描程序都是不可见的,但是Matrix exploit会让邮件变得很臃肿,因为攻击者需要向邮件中每个字母都插入“字母_数字”形式的id,邮件保护程序可以通过配置文件的大小来探测到这种攻击。

撰写本文的时候,Ribeiro表示,Mimecast没有探测到使用ROPEMAKER技术的攻击,但由于现在的邮件保护产品都无法探测到这个漏洞,所以不排除在其他地方出现类似的攻击。

ROPEMAKER炒作性要比危险性要大

这种攻击看起来很吓人,事实上用户却没必要太担心。因为现在大多数的邮件客户端都会检查HTML形式邮件的header标签,包括里面调用的远程css文件。

因为对header标签审核的十分严格,所以大多数对HTML邮件的指导都建议web开发者只使用内联的css而避免使用远程调用外部的css。

Mimecast表示,浏览器下使用电子邮件不会被ROPEMAKER影响。这并不意外,因为浏览器会剥离每一个header标签进行检查,而不是只检查页面上显示的正常header。

而且,一位来自Reddit的热心网友表示,“这种攻击可以轻易被过滤器过滤掉,在加载远程css文件的时候,系统可以直接阻断邮件客户端对css文件的请求。“

ROPEMAKER的确很聪明,但在现实世界里,它几乎不起作用。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-08-28

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯Bugly的专栏

Android 插件技术实战总结

前言 安卓应用开发的大量难题,其实最后都需要插件技术去解决。 现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家...

39360
来自专栏deed博客

权限何必那么高

19240
来自专栏二次元

正式开启全站HTTPS加密之旅

2、微语不见了 当初emlog弄上微语的时候我就感觉那是多此一举了,弄的很粗糙,但等到大家都熟悉了之后,又去掉了,未免有点。。。 其实这也能用第三方插件...

13000
来自专栏携程技术中心

干货 | Android工程模块化平台的设计

19430
来自专栏架构师之路

分布式ID生成器 | 架构师之路

一、需求缘起 几乎所有的业务系统,都有生成一个唯一记录标识的需求,例如: 消息标识:message-id 订单标识:order-id 帖子标识:tiezi-id...

64270
来自专栏程序你好

微服务:API网关在API安全中的作用

当从单体应用程序切换到微服务时,来自客户端的行为不能与以前一样,单体架构客户端只有一个入口点到应用程序。

46040
来自专栏带你撸出一手好代码

神奇的Java

使用java开发一个socket服务器,使用protocol buffer作为和客户端通信的数据格式。然后,问题就来了,这个socket服务器要如何调试?换句话...

11720
来自专栏程序员八阿哥

王老板Python面试(1):HTTP中GET与POST的区别?

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。

11910
来自专栏FreeBuf

扒一扒浏览器的安全机制

*本文原创作者:梅孜,本文属FreeBuf原创奖励计划,未经许可禁止转载 随着互联网深入人们的生活,浏览器的发展更加丰富多彩,其种类多样,版本更新速度也日益提...

22890
来自专栏极客猴

爬虫与反爬虫的博弈

近来这两三个月,我陆续将自己学到的爬虫技术分享出来。以标准网络库 urllib 的用法起笔,接着介绍各种内容提供工具,再到后续的 scrapy 爬虫框架系列。我...

23220

扫码关注云+社区

领取腾讯云代金券