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

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

简介

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

应用场景

该种攻击方式与传统的宏启用文档相比,这种攻击的好处是多方面的。在对目标执行网络钓鱼攻击时,您可以将.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,打开宏代码编辑环境
利用DOCX文档远程模板注入执行宏代码_第2张图片
我们打开宏代码编辑环境后,在本文档的ThisDocument下,编写如下宏代码,作用为:打开文档即可弹出对话框,显示“你好!这是远程加载注入宏!”
利用DOCX文档远程模板注入执行宏代码_第3张图片
现在将该docx文档另存为dotm文档,并命名为:MacroTemplate.dotm,保存为启用宏的Word模板
利用DOCX文档远程模板注入执行宏代码_第4张图片
最后将该dotm文件上传到后台服务器上

DOCX文档编写

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

代码地址

本文所有代码地址

参考网站

  • https://bbs.ichunqiu.com/thread-48712-1-1.html

  • https://ired.team/offensive-security/initial-access/phishing-with-ms-office/inject-macros-from-a-remote-dotm-template-docx-with-macros

  • http://blog.redxorblue.com/2018/07/executing-macros-from-docx-with-remote.html https://www.reddit.com/r/redteamsec/comments/900y6v/my_new_blog_post_executing_macros_from_a_docx/e2nql3i/?context=8&depth=9

  • https://blog.csdn.net/god_zzZ/article/details/102745794?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

  • https://x.threatbook.cn/nodev4/vb4/article?threatInfoID=958

你可能感兴趣的:(软件安全,安全,反病毒)