SSH动态转发是 ssh 创建一个 socks v5 的服务并在 bind_address:bind_port 上侦听,当收到数据后,解析出需要连接的主机和端口并通道加密通道发送给 sshd,sshd 转发数据后并返回结果数据。
SSH动态转发就是SSH服务器使用的是正向匿名代理,由内部机器将数据包通过socks发送到绑定端口,再通过sshd服务去请求目标服务。
ssh的动态转发在流量侧是加密流量,非常适用于外网拿下一台具有访问内网的机器之后,进行代理,攻击内网机器(前提是控制住一台Linux主机)
在linux中,通常使用如下命令,后台执行,再通过proxychains等工具直接代理到内网机器
nohup ssh -ND 1080 [username]@[ip] -p [port] &
在windows中,一般使用如下命令,后台执行
start /b ssh -ND 1080 [username]@[ip] -p [port]
但是在windows 中,只要关闭了cmd.exe
,就会关闭该进程,如果将其写入到.bat
文件中,那么就会有非常丑陋的dos
框
所以我的做法是写一个vbs,开机自启动bat文件
run.bat
内容如下
start /b ssh -ND 1080 [username]@[ip] -p [port]
run.vbs
如下
Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "<your_run.bat_path>" & Chr(34), 0
Set WinScriptHost = Nothing
开机启动项的位置在,打开cmd.exe ,运行shell:startup
我在我的vps上启动一个web服务,前三个http
请求就是我通过代理去访问的web服务,后三个http
请求不是通过代理,可以看到,动态转发就是实现了一个匿名正向代理的一个过程