基于Ptunnel建立ICMP隧道

前言

       在某些渗透测试环境下,获得了一个主机的权限但是该主机没有访问外网的权限,对于这种较为严格的网络环境,第一时间想到的就是隧道技术。常见的隧道技术有SSH\DNS\ICMP\端口转发等,大多数端口都存在被禁用的可能,但是ICMP作为基础服务被禁用的可能性却极小,在常用协议都被禁用的情况下可以考虑使用ICMP隧道。

网络拓扑

image
内网主机10.10.10.0/24除了ICMP通讯不能主动访问外网任何资源,20.20.20.101为hack的ICMP隧道服务端。

准备工作

由于通过ICMP协议建立隧道,为了让隧道服务端能够处理收到的ICMP报文,需要禁用系统本身的ICMP响应机制,这里先关闭hack机器的ICMP响应机制

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

Ptunnel的使用

安装需要的依赖包并编译Ptunnel

1
2
3
4
# yum install libpcap libpcap-devel flex bison -y
# tar xf PingTunnel-0.72.tar.gz
# cd PingTunnel
# make

Ptunnel常用的参数

  • -p 指定跳板机的IP
  • -l 指定转发本地监听的端口
  • -da 指定最终要访问的目标主机
  • -dp 指定最终要访问目标主机的端口
    PS:跳板机要有访问目标主机的权限!

在hack机器上开启ptunnel隧道监听
image
在client1连接跳板机20.20.20.101,访问client本地的8000端口,跳转到跳板机本地的22端口
image
查看本地已经监听8000端口
image
client1连接本地8000端口即可通过ICMP隧道连接到跳板机的22端口
image
也可以通过ssh over icmp隧道,建立socks代理访问外网
image