SocksOverRDP
- 项目地址:https://github.com/nccgroup/SocksOverRDP
SocksOverRDP 可以将 SOCKS 代理的功能添加到远程桌面服务,它使用动态虚拟通道,使我们能够通过开放的 RDP 连接进行通信,而无需在防火墙上打开新的套接字、连接或端口。此工具在 RDP 协议的基础上实现了 SOCKS 代理功能,就像 SSH 的 -D
参数一样,在建立远程连接后,即可利用 RDP 协议实现代理功能。
该工具分为服务端和客户端
- 第一部分是一个
.dll
文件,需要在 RDP 连接的客户端上进行注册,并在每次运行时将其加载到远程桌面客户端 mstsc 的上下文运行环境中。 - 第二部分是一个
.exe
可执行文件,它是服务端组件,需要上传到 RDP 连接的服务器并执行。
工具原理:
当 SocksOverRDP-Plugin.dll 在 RDP 客户端上被正确注册后,每次启动远程桌面时都会由 mstsc 加载。接着,当 SocksOverRDP-Server.exe 被上传到 RDP 服务端上传并执行后 ,SocksOverRDP-Server.exe 会在动态虚拟通道上回连 SocksOverRDP-Plugin.dll,这是远程桌面协议的一个功能。虚拟通道设置完成后,SOCKS 代理将在 RDP 客户端计算机上启动,默认为 127.0.0.1:1080。此服务可用作任何浏览器或工具的 SOCKS5 代理。并且服务器上的程序不需要服务器端的任何特殊特权,还允许低特权用户打开虚拟通道并通过连接进行代理。
通过 SocksOverRDP 搭建 SOCKS5 代理
测试环境如下:
客户端
在攻击中对 SocksOverRDP-Plugin.dll 进行安装注册
regsvr32.exe SocksOverRDP-Plugin.dll # 注册
# regsvr32.exe /u SocksOverRDP-Plugin.dll 取消注册
如上图所示,注册成功。但是由于 SocksOverRDP 建立的 SOCKS5 代理是默认监听在 127.0.0.1:1080 上的,所以只能从攻击机本地使用,为了让攻击者的 Kali 也能使用搭建在攻击机 Windows 10 上的 SOCKS5 代理,我们需要修改其注册表,将 IP 从 127.0.0.1 改为 0.0.0.0。注册表的位置为:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Terminal Server Client\Default\AddIns\SocksOverRDP-Plugin
可以下载源代码,将127.0.0.1改成0.0.0.0
通过攻击机启动mstsc.exe,连接目标主机
服务端
弹出了一个提示说 SocksOverRDP 成功启动,当服务端的可执行文件运行后即可在攻击机的 1080 端口上启动 SOCKS5 代理服务。
在攻击机上,可以发现1080端口已经成功建立连接。
使用Proxifier建立代理