利用DOCX文档远程模板注入执行宏代码

利用DOCX文档远程模板注入执行宏代码

简介

本地文件中在没有宏代码的情况下,攻击者可以尝试执行远程文件中宏代码。其中来自APT28的最新样本将此技术展现的淋漓尽致。该样本是docx文件,文件内没有任何宏相关信息,但是打开该文件后,却会弹出经典的“宏安全警告”。本实验将实现通过远程加载执行宏代码的攻击方式。
在这里插入图片描述

应用场景

该种攻击方式与传统的宏启用文档相比,这种攻击的好处是多方面的。在对目标执行网络钓鱼攻击时,您可以将.docx的文档直接附加到电子邮件中,并且您不太可能根据文件的拓展名去阻止它。

Word远程模板执行宏就是利用Word文档加载附加模板时的缺陷所发起的恶意请求而达到的攻击目的,所以当目标用户点开攻击者发给他的恶意word文档就可以通过向远程服务器发送恶意请求的方式,然后加载模板执行恶意模板的宏。

这种攻击更常见的原因是,发送的文档本身是不带恶意代码的,能过很多静态的检测。那么我们只需要在远程DOTM文档中编写宏病毒或者宏木马即可完成攻击

实际案例

最为著名的是APT28 使用 Zebrocy 攻击欧洲军事和外交机构。

APT28,又名 Sofacy、Sednit、FancyBear、TsarTeam、Group 74、Pawn Storm 和 Strontium,自 2007 年起就开始针对北约、东欧及高加索地区的政府等机构开展网络间谍活动,主要目的是收集国防和地缘政治相关情报,被指可能与俄罗斯情报机构 GRU 有关。情报显示,该组织于 2017 年下半年将目标范围扩大到包含中亚地区,且有东移趋势。
该组织自2018年10月下旬以来,针对白俄罗斯等欧洲目标发起了一波新的攻击。分析之后发现:

  • 这波攻击活动中,受害者主要为欧洲和北约相关的军事和外交机构,具体目标包含白俄罗斯国防部和波兰政府等等。
  • 攻击手法为鱼叉式网络钓鱼结合远程模板注入技术,攻击文档包含的恶意宏使用相对较为少见的AutoClose 函数触发执行,启用宏之后,在关闭
    Word 文档时才会执行恶意代码。

具体内容详见:【微步在线报告】APT28 使用 Zebrocy 攻击欧洲军事和外交机构

思路

  • 编写一个带有宏代码的DOTM文档,上传服务器
  • 编写一个能够远程连接的DOCX文档
  • 将该文档压缩找到并更改settings.xml.rels文件中的内容,将其中的target内容修改为服务器上DOTM文档的URL
  • 将DOCX解压后的内容再以存储模式压缩为ZIP
  • 修改后缀名为DOCX,打开后即可实现远程注入宏文档

难点

  • DOTM宏编写的位置需要在左侧导航栏中本DOTM文档中,不要在normal等位置编写
  • DOTM文档上传至服务器可以自己编写,也可以上传至GitHub,本实验是上传到自己服务器实现的
  • 编写一个能够远程连接的DOCX文档,不要编写纯文本的文档,以上两种文档解压后的目录结构不相同(卡在这里非常非常久,具体操作见下文)
  • 压缩解压后的DOCX文档目录,不要在父目录压缩,需要以存储模式压缩(卡在这里非常久,具体操作见下文)

实验环境

  • Windows10操作系统
  • Word 2016(据参考网站说,word 2013也可以)

具体步骤

DOTM文档编写

首先,打开一个word docx文档,点击开发工具->Visual Basic,打开宏代码编辑环境
在这里插入图片描述
我们打开宏代码编辑环境后,在本文档的ThisDocument下,编写如下宏代码,作用为:打开文档即可弹出对话框,显示“你好!这是远程加载注入宏!”
在这里插入图片描述
现在将该docx文档另存为dotm文档,并命名为:MacroTemplate.dotm,保存为启用宏的Word模板
在这里插入图片描述
最后将该dotm文件上传到后台服务器上

DOCX文档编写

新建一个docx文档,命名为RemoteMacroExecute.docx,其中,要注意的是,一定要通过网络来加载一个word模板,这样才能成功。
在这里插入图片描述
如下是反例,不可以只填写文本字符,可以尝试如下两种文档,并将其解压,可以看到两种文档解压后目录结构不相同(如下是反例,不要这么写,不要这么写,不要这么写)
在这里插入图片描述
现在将我们的docx文档压缩成zip格式
在这里插入图片描述
将该zip压缩包解压,其目录结构如下所示
在这里插入图片描述
现在找到word->_rels中的settings.xml.rels,右键打开编辑(如果没有,说明没有按照第一种方式创建docx文档,需要重新创建,以到文件解压后可以看到如下文件位置)
在这里插入图片描述
打开编辑settings.xml.rels后,可以看到如下所示内容,其中,Target所指的路径即我们要修改的位置
在这里插入图片描述
我们现在将其修改为我们dotm文件所在的URL位置,然后将其保存
在这里插入图片描述
现在在RemoteMacroExecute路径下,将其中所有目录及文件选中,点击右键压缩,选中压缩文件格式为zip,压缩方式为存储,然后对其进行压缩
在这里插入图片描述
然后将其后缀名修改为docx,再将其打开,可以看到我们成功加载了远程宏
在这里插入图片描述

代码地址

本文所有代码地址

参考网站

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章