隧道
在计算机领域里,隧道是指使用某个网络协议封装另外一种网络协议的技术手段。在渗透测试中,使用隧道技术主要是为了让目标胸膛呢的防护机制无法发挥作用。多数情况下,目标系统的防火墙会组织内部系统访问外网网络,只放行DNS\HTTP\HTTPS这类常见的网络协议。在这种情况下,如果要在目标系统的内网使用外网的其他网络协议,就需要构建HTTP协议的隧道。这样,防火墙就会放行隧道封装的数据。
dns2tcp
dns2tcp是一种把TCP数据包伪装成DNS协议数据包的隧道封装工具。它适用于目标主机只能发送DNS请求的网络环境。当它在特定端口受理链接请求时,它会将数据封装为DNS协议格式,在发送到指定主机的指定端口的dns2tcp服务端程序。
dns2tcp采用了C/S架构,客户单程序叫做dns2tcpc,服务器端程序叫做dns2tcpd
要启动dns2tcp的服务器程序,可以在终端输入以下命令:
dns2tcpd
dns2tcpc
在使用dns2tcp之前需要穿件一个指向公网dns2tcp服务器IP的NS记录。建议为dns2tcp的程序分配子域名的DNS记录。例如dnstimnel.myexample.com。
之后就要配置dns2tcp服务器,默认情况下,dns2tcp服务器端程序会在当前用户的主目录下面寻找文件.dns2tcprcd,将值用作配置文件。
ncat
ncat是一款集发送、接收、转发、加密数据等多种功能于一身的网络工具。ncat是著名的Netcat程序的改进版。它的功能有:
- 它可以用作Web服务程序和其他TCP/IP服务器端程序简易TCP/UDP/SCTP/SSL客户端;
- 它可以用作简单的TCP、UDP、SCTP、SSL服务器端程序。
- 它可以转发或代理TCP、UDP、SCTP流量
- 它可以用作执行系统指令的网络网关
- 它可使用SSL技术加密通信数据
- 它可以使用IPv4或IPV6技术进行网络传输
- 它可用作连接代理,通过第三个中介服务器使用两个或多个客户端互联代理。
proxychains
proxychains程序可以强制TCP客户端程序通过指定的代理服务器(或代理链)发起TCP链接。自从3.1版本开始,它支持SOCKS4代理、SOCKET5代理和基于CONNECT模式的HTTP代理服务器。
声明代理服务器的格式如下:
Proxy_type host port [user pass]
代理服务器类型即:http\socks4\socks5
如果要使Telnet程序通过代理服务器建立链接,可以使用以下指令:
proxychains telnet example.com
上述命令将使Telnet程序通过proxychains配置文集指定的代理服务器登录到example.com的telenet服务。
ptunnel
ptunnel是一款使用ICMP ping(请求和回复)封装TCP链接的隧道工具。即使被测主机无法向Internet发送任何TCP和UDP的数据,只要它可以向取Internet发起ping命令,那么这款工具就可以帮助它穿越防火墙。ptunnel可以脱离TCP和UDP链接访问E-mail、上网或者进行其他网络活动。
如需要启动ptunnel,可以在终端使用以下命令:
ptunnel -h
通过上述指令,你可以查看到该工具的使用方法。
注意:需要配合代理服务器才能在客户端使用ptunnel程序。而且客户端程序所在的主机必须能够访问服务器端主机。另外,如果要在Internet上架设ptunnel服务器端程序,那么服务器端主机就必须使用公网才可以直接访问到IP地址。
其他程序
- socat
- sslh
- stunnel4