SSH端口转发和Socks代理
Lastmod: 2023-04-30

SSH 还同时提供了一个非常有用的功能,这就是端口转发。

本地转发

攻击机正向连接靶机,将靶机的A端口映射到攻击机的B端口

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

例如 ssh -L <2222>:<neiwang.com>:<80> <victim.com> ,这里将victim主机可以访问到的neiwang.com主机的80端口,映射到攻击机的2222端口。

-g : 攻击机的端口默认只开启在127.0.0.1,若希望在所有网卡都可以访问,设置GatewayPorts,添加 -g 选项

远程转发

攻击机无法正向连接靶机,靶机却可以反向连接到公网的攻击机

则在靶机上运行,主动与攻击机建立SSH隧道

ssh -R <local port>:<remote host>:<remote port> <SSH hostname>

例如,ssh -R <6666>:<neiwang.com>:<80> <attack.com>,这里将victim主机可以访问到的neiwang.com主机的80端口,映射到攻击机的6666端口。

Socks代理

把SSH SERVER当作Socks服务器,在本地开启 localport 端口。亦称作动态端口转发。

ssh -D <local port> <SSH Server>

或者

使用XSHELL的查看->隧道窗格功能

ssh_socks_xshell.png

转移规则一栏,右键,添加,选择类型Socks4/5,选择端口,确定。

浏览器设置Socks5代理,127.0.0.1:1080

ip_confirm.png

参考阅读

实战 SSH 端口转发