利用RDP协议搭建Socks5代理隧道

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 代理

测试环境如下:

image-20210912220553393

客户端

在攻击中对 SocksOverRDP-Plugin.dll 进行安装注册


regsvr32.exe SocksOverRDP-Plugin.dll    # 注册

# regsvr32.exe /u SocksOverRDP-Plugin.dll    取消注册

image-20210912214822677

如上图所示,注册成功。但是由于 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

image-20210912214859243

可以下载源代码,将127.0.0.1改成0.0.0.0

通过攻击机启动mstsc.exe,连接目标主机

image-20210912214228447

服务端

弹出了一个提示说 SocksOverRDP 成功启动,当服务端的可执行文件运行后即可在攻击机的 1080 端口上启动 SOCKS5 代理服务。

image-20210912215018587

在攻击机上,可以发现1080端口已经成功建立连接。

image-20210912215102632

使用Proxifier建立代理

image-20210912215255170