完成内网信息收集工作后,渗透测试人员需要判断流量是否出得去、进得来。隐藏通信隧道技术常用于在访问受限的网络环境中追踪数据流向和在非受信任的网络中实现安全的数据传输。
一、隐藏通信隧道基础知识
(一)隐藏通信隧道概述
一般的网络通信,先在两台机器之间建立TCP连接,然后进行正常的数据通信。在知道IP地址的情况下,可以直接发送报文;如果不知道IP地址,就需要将域名解析成IP地址。在实际的网络种,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接的情况,如果发现异常,就会对通信进行阻断。
什么是隧道?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信。当被封装的数据包到达目的地,将数据包还原,并将还原后的数据包发送到相应的服务器上。
常见的隧道列举如下:
- 网络层:IPv6隧道、ICMP隧道、GRE隧道
- 传输层:TCP隧道、UDP隧道、常规端口转发
- 应用层:SSH隧道、HTTP隧道、HTTPS隧道、DNS隧道
(二)判断内网的连通性
1. ICMP协议
ping www.baidu.com
2. TCP协议
netcat被誉为网络安全界的“瑞士军刀”,是一个短小精悍的工具,通过使用TCP或UDP协议的网络连接读取数据。
nc -zv www.baidu.com 443
3. HTTP协议
使用curl命令测试
curl 百度一下,你就知道
4. DNS协议
使用nslookup或者dig测试DNS连通性
dig @vps-ip www.baidu.com
二、网络层隧道技术
(一)IPv6隧道
IPv6隧道技术是指通过IPv4隧道技术传送IPv6数据报文的技术。
支持IPv6的隧道工具:socat、6tunnel、nt6tunnel等。
(二)ICMP隧道
ICMP隧道见到、实用,是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要。最常见的ICMP消息为ping命令的回复,攻击者可以利用命令行得到比回复更多的ICMP请求。在通常情况下,每个ping命令都有相对应的回复与请求。
在一些网络环境中,如果攻击者使用各类上层隧道(比如HTTP隧道、DNS隧道等)进行的操作都失败了,常常会通过ping命令访问远程计算机,尝试建立ICMP隧道,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(如果防火墙屏蔽了ping数据包,则此方法也不行),实现不受限制的网络访问。
常用的ICMP隧道工具有icmpsh、pingtunnel、icmptunnel、powershell icmp等。
下面是一个测试pingtunnel的实验:
https://blog.csdn.net/u013930899/article/details/132943025?spm=1001.2014.3001.5501
三、传输层隧道技术
传输层技术包括TCP隧道、UDP隧道和常规端口转发等。在渗透测试中,如果内网防火墙阻止了对指定端口的访问,在获得目标机器的权限后,可以使用IPTABLES打开指定端口。如果内网中存在一系列防御系统,TCP、UDP流量会被大量拦截。
传输层隧道技术常用的工具有lcx端口转发、netcat、PowerCat等。
四、应用层隧道技术
在内网中建立一个稳定、可靠的数据通道,对渗透测试工作来说具有重要的意义。应用层的隧道通信技术主要利用应用软件提供的端口来发送数据。常用的隧道协议有SSH、HTTP、HTTPS和 DNS。
HTTP服务代理用于将所有的流量转发到内网。常见的代理工具有reGeorg、meterpreter、tunna等。
reGeorg的主要功能是把内网服务器端口的数据通过HTTP/HTTPS隧道转发到本机,实现基于HTTP协议的通信。reGeorg脚本的特征非常明显,很多杀毒软件都会对其进行查杀。
dnscat2使用DNS协议创建加密的C&C通道,通过预共享密钥进行身份验证;使用shell及DNS查询类型(TXT、MX、CNAME、A、AAAA),多个同时进行的会话类似于SSH中的隧道。
iodine可以通过一台DNS服务器制造一个IPv4数据通道,特别适合在目标主机只能发送DNS请求的网络环境中使用。