Office宏的基本利用
2019-12-10 17:34:44 Author: mp.weixin.qq.com(查看原文) 阅读量:101 收藏

前言

Office宏,译自英文单词Macro。宏是Office自带的一种高级脚本特性,通过VBA代码,可以在Office中去完成某项特定的任务,而不必再重复相同的动作,目的是让用户文档中的一些任务自动化。而宏病毒是一种寄存在文档或模板的宏中的计算机病毒。一旦打开这样的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在Normal模板上。

Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件,也可说是一种应用程式视觉化的Basic 脚本。

环境准备

  • Windows 7 x64 旗舰版

  • Microsoft Office 2016

  • CobaltStrike 3.14

CobaltStrike生成宏

先利用CobaltStrike生成宏payload,接下来只要放入word、excel或ppt即可。

创建宏Word

打开Word文档,点击 “Word 选项 — 自定义功能区 — 开发者工具(勾选) — 确定” 。

编写主体内容后,点击 “开发工具 — Visual Basic” 。

双击 “ThisDocument” ,将原有内容全部清空,然后将CobaltStrike生成宏payload全部粘贴进去,保存并关闭该 VBA 编辑器 。

另存为的Word类型务必要选”Word 97-2003 文档 (*.doc)”,即 doc 文件,保证低版本可以打开。之后关闭,再打开即可执行宏代码。

反弹Beacon shell

默认情况下,Office已经禁用所有宏,但仍会在打开Word文档的时候发出通知。

诱导目标手动点击”启用内容”宏。

目标一旦启用,CobaltStrike的Beacon就会上线,即成功接收到Shell。

宏代码分析

CobaltStrike生成默认的VBA会导入四个Windows API函数,常见的ShellCode加载器代码:

  • CreateRemoteThread 创建一个在其它进程地址空间中运行的线程(也称:创建远程线程).

  • VirtualAllocEx 指定进程的虚拟空间保留或提交内存区域

  • WriteProcessMemory 写入某一进程的内存区域

  • CreateProcess 创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件

其中Array(-4,-24,-119,0,0,0,96,-119,-27...就是ShellCode,混淆的办法有很多种。

ShellCode可以自己在VBA里解码或者比如每个元素自增1,运行的时候-1,达到免杀 ……

本文章仅供学习研究office宏,不可用作非法用途,如产生任何法律问题,与平台及作者无关。

作者:AnonySec 博客:https://payloads.cn/


文章来源: http://mp.weixin.qq.com/s?__biz=MzUyNTk1NDQ3Ng==&mid=2247484808&idx=2&sn=885563e732b07f80157460db1a3f0ca4&chksm=fa17794bcd60f05d87d289de6c3073aee7f9c2c2bceadbc2334fd682c1a956fef0386608fac8#rd
如有侵权请联系:admin#unsafe.sh