过去几年,基于宏的文档攻击技术一直是主流,虽然需要用户主动进行确认,但是攻击的成功率依然非常的高。不过,近段时间来,使用Office DDEAUTO技术来传播恶意文件的方法已经越来越流行。该技术很快被FIN7组织、Necurs僵尸网络所采用,用来进行APT攻击,以及用来传播勒索病毒。该方法已经开始替代了用宏技术来传播,成为当前使用office为载体传播病毒的新宠。
Windows提供了应用程序间数据传输的若干种方法。其中一种就是使用动态数据交换(DDE)协议。DDE协议是一套消息和指示的集合。通过发送消息以及共享内存实现应用程序的数据共享和交换。应用程序可以使用DDE协议实现一次性数据传输以及持续的数据交换(当新数据可用时,应用程序发送更新通知给另一个应用程序)。更详细的可以参考MSDN的介绍。(点击阅读原文查看相关链接)
构造的方法如下:
新建一个Word文档,通过Ctrl+F9添加一个域,然后修改域代码为:{ DDEAUTO c:\windows\system32\cmd.exe “/k notepad.exe” }
DDEAUTO表明是一个自动更新的DDE,后面跟的是可执行文件的路径,然后””里面表明可执行文件的参数,保存文档。
也可以修改DDEAUTO为DDE,然后需要用WinRAR打开doc文档word/settings.xml,嵌入代码:
执行样本后弹出记事本程序:
样本名:DC00035305.doc
样本MD5:FD5D0801D9470908090DCD36AE88E96C
该样本是Necurs僵尸网络发送的恶意邮件里的附件,用来传播locky系列勒索病毒。主要分析下DDE的启动过程。
该命令以-w hidden隐藏窗口,-nop强行绕过UAC执行指令,(New-Object System.Net.WebClient).DownloadString下载远程可执行文件,然后运行。下载地址为:(点击阅读原文查看相关链接)
在DOC文件中发现一段文字,通过右键该段文字其实是一段域代码,并且从代码中发现了powershell.exe的参数,证明该DOC是利用了DDE协议传播恶意代码文件 :
下面重点分析下DDEAUTO启动的原理:
然后MSWord更新储存DDE信息结构的第二个成员的数据为应答窗口的HWND,后续WM_DDE_ACK就会响应WM_DDE_TERMINATE消息,在MSDN中描述DDE请求的目标进程应该已经运行,此处就开始走MSDN描述的流程。
然而在实际代码中,如果DDE没有收到目标进程应答,会从全局原子中读取出字符串拼接,然后由MSWord创建一个新进程。
由此分析发现,这是一个DDE上的WWLIB实现错误,应该要求用户自己启动目标进程,而不是自动启动目标进程。
通过上面的分析发现,该攻击方法需要用户交互。但是我们也注意到,由于安全意识的缺乏,无论是企业里还是个人用户,依然有大量的用户中招。同时微软也表示,DDEAUTO技术并非漏洞而是正常的功能,因此并不打算修复该问题。因此我们推测,该方法会在很长时间里成为文档攻击的主流。
因此,用户一定要提供安全意识,不要随意打开来历不明的邮件的附件,使用腾讯电脑管家可以拦截该方式的攻击。