0x01 通信技术的基础知识
0x001 什么是隧道?
隧道,就是绕过端口屏蔽的通信方式。以允许通过防火墙两端的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当被封装的数据包到达目的地时,再将数据包还原,并将还原后的数据包发送给相应的服务器上。
隐藏通信隧道技术常用于在访问受限的网络环境中追踪数据流向和在非受信任的网络中实现安全的数据传输。
0x002 常见的隧道技术
- 网路层: IPv6隧道、ICMP隧道、GRE(通用路由封装)隧道
- 传输层: TCP隧道、UDP隧道、常规端口转发
- 应用层: SSH隧道、HTTP/S隧道、DNS隧道
0X003 判断内网的连通性
判断内网的连通性是指判断机器能否上外网等。要综合判断各种协议(TCP、HTTP、DNS、ICMP等)及其端口的通信情况,常见的允许流量流出的端口有80、8080、443、53、110、123(网路时间协定NTP,)等。
1、ICMP协议
我们可以使用ping命令来判断是否连通。
2、TCP、UDP 协议
我们可以使用:netcat <ip地址 端口>
来测试连通性。netcat:瑞士军刀简称nc,网络上的cat。从网络一端读取数据输出到网络的另一端,nc的具体参数我们后面细究。
3、HTTP协议
我们使用 curl <IP地址:端口号>
来进行连通性测试。如果远程端口开启的了对应的服务端口会返回相应的数据,如果每有开启则每有任何提示。我们可以自行CTRL + C
断开连接。
4、DNS协议
windows: nslookup domain [dns-server]如果没有指定dns服务器就会使用系统默认的dns服务器
Linux:其实Linux下可以使用nslookup,而dig也是linux自带的。dig [@dns-server] domain。
0x02 网络层的隧道技术
在网络层中,两个常用的隧道协议是IPV6和ICMP。
IPV6 隧道技术
IPV6隧道技术指的是通过IPV4隧道传送IPV6数据报文的技术。将ipv6作为报文整体封装在IPV4数据报文中,这样就可以将IPv6的数据顺利通过IPV4传输。
就比如你发的是顺丰快递(ipv6)但是目的地顺丰送不到,这样顺丰就会交给能送到的快递公司比如邮政(IPV4),用中国邮政的包装箱再装起来(封装成ipv4).这样最后ipv6
的数据还是可以正常发送的。
IPV6 隧道攻击的方式
因为现阶段的边界设备、防火墙甚至入侵检测系统都还无法识别IPV6的通信数据,而大多数的操作系统支持iPV6,但是需要人工配置打开IPV6。
攻击者通过恶意软件来配置允许进行IPv6通信的设备。支持IPv6的隧道工具:socat、6tunnel、nt6tunnel等。
IPV6隧道攻击的防御
了解IPv6具体漏洞,综合其他协议、设备来过滤IPv6通信如防火墙。
ICMP隧道攻击
一般的通信协议里,如果2台设备需要通信肯定要有开放端口,而ICMP协议下就不需要。
攻击者可以将TCP/UDP数据封装在ICMP的ping包中,从而穿越防火墙。常见的icmp隧道工具:icmpsh、PingTunnel、icmptunnel、powershell icmp等。
防御ICMP隧道攻击的方法:
许多网络管理员会阻止ICMP通信进入站点,但是不会在出方向限制ICMP。而且目前大多数边界设备和网络都不会过滤ICMP流量包。
- 检测同一来源的ICMP数据包的流量,一个正常的icmp命令每秒最多发送2个数据包。
- 注意那些payload大于64bit的icmp数据包。
- 寻找响应数据包中的payload与请求数据包中的payload不一致的ICMP数据包。
- 检查ICMP数据包的协议标签。例如:icmptunnel会在所有的icmp payload前面添加”TUNL“标记来标识隧道。