安全矩阵

 找回密码
 立即注册
搜索
查看: 2590|回复: 0

内网渗透 | 利用 RDP 协议搭建 Socks5 代理隧道

[复制链接]

221

主题

233

帖子

792

积分

高级会员

Rank: 4

积分
792
发表于 2021-8-29 16:13:17 | 显示全部楼层 |阅读模式
内网渗透 | 利用 RDP 协议搭建 Socks5 代理隧道 (qq.com)
内网渗透 | 利用 RDP 协议搭建 Socks5 代理隧道原创 WHOAMI [url=]HACK学习呀[/url] 3天前
收录于话题
#隧道1
#远程桌面3
#内网渗透20

前言如今,在很多组织机构内部,针对 DMZ 或隔离网络区域内的计算机设备,为了限制其它接入端口风险,通常只允许这些设备开启 3389 端口,使用远程桌面来进行管理维护。那么我们能不能利用这个 3389 端口的 RDP 服务建立起一条通向内网的代理隧道呢?当然可以,下面就引出我们今天的主角 —— SocksOverRDP。
SocksOverRDP•项目地址:https://github.com/nccgroup/SocksOverRDP
SocksOverRDP 可以将 SOCKS 代理的功能添加到远程桌面服务,它使用动态虚拟通道,使我们能够通过开放的 RDP 连接进行通信,而无需在防火墙上打开新的套接字、连接或端口。此工具在 RDP 协议的基础上实现了 SOCKS 代理功能,就像 SSH 的 -D 参数一样,在建立远程连接后,即可利用 RDP 协议实现代理功能。
该工具可以分为两个部分:

image-20210805164336410
•第一部分是一个 .dll 文件,需要在 RDP 连接的客户端上进行注册,并在每次运行时将其加载到远程桌面客户端 mstsc 的上下文运行环境中。•第二部分是一个 .exe 可执行文件,它是服务端组件,需要上传到 RDP 连接的服务器并执行。
以下是该工具的运作原理:
  1. If the DLL is properly registered, it will be loaded by the mstsc.exe (Remote Desktop Client) or Citrix Receiver every time it is started. When the server executable runs on the server side, it connects back to the DLL on a dynamic virtual channel, which is a feature of the Remote Desktop Protocol. After the channel is set up, a SOCKS Proxy will spin up on the client computer, by default on 127.0.0.1:1080. This service can be used as a SOCKS5 Proxy from any browser or tool.
复制代码
​ 大致原理是,当 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-20210805190918631
右侧为一个内网环境,其中 Windows Server 2012 是一个 Web 服务器,有两个网卡,分别连通内外网。假设此时攻击者已经通过渗透手段拿下了这台 Web 服务器,需要设置代理进入内网继续对内网进行横向渗透。但是由于防火墙的规则等原因,只允许 TCP/UDP 3389 端口可以进行通信,所以我们只能尝试利用用 RDP 协议来建立通讯隧道。
攻击端在攻击机上需要安装注册 SocksOverRDP-Plugin.dll。首先我们将 SocksOverRDP-Plugin.dll 放置到攻击机的任何目录中,但是为了方便我们可以将其放置到 %SYSROOT%\system32\ 或 %SYSROOT%\SysWoW64\ 目录下。
然后使用以下命令对 SocksOverRDP-Plugin.dll 进行安装注册:
  1. regsvr32.exe SocksOverRDP-Plugin.dll    # 注册
  2. # regsvr32.exe /u SocksOverRDP-Plugin.dll    取消注册
复制代码


image-20210805171250365
如上图所示,注册成功。但是由于 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-20210805183835850
然后启动远程桌面客户端 mstsc.exe 连接目标 Web 服务器 Windows Server 2012:

image-20210805184009799
如上图所示,弹出了一个提示说 SocksOverRDP 成功启动,当服务端的可执行文件运行后即可在攻击机的 1080 端口上启动 SOCKS5 代理服务。
服务端远程桌面连接成功后,将服务端组件 SocksOverRDP-Server.exe 上传到 Windows Server 2012 上:

image-20210805172727184
直接运行 SocksOverRDP-Server.exe 即可:

image-20210805172901544
此时便成功搭建了一个 SOCKS5 代理隧道,查看攻击机 Windows 10 的端口连接状态发现已经建立连接:

image-20210805173743464
然后在攻击机 Kali 上配置好 proxychains:

image-20210805184447817
此时便可以通过代理访问到内网的主机 DC 了。如下所示,成功打开了 DC 的远程桌面:
proxychains4 rdesktop 192.168.93.30

image-20210805184342519
探测内网主机 DC 的端口开放情况:
proxychains4 nmap -sT -Pn 192.168.93.30 -p 445

image-20210805185347989
先该主机开启了 445 端口,我们可以直接用 smbexec.py 连接:
proxychains4 python3 smbexec.py whoamianony/administrator:Whoami2021@192.168.93.30

image-20210805190126459
如上图所示,成功拿下内网主机 DC。

文中若有不当之处,还请各位大佬师傅们多多点评。

  1. 参考:

  2. https://github.com/nccgroup/SocksOverRDP
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-27 14:41 , Processed in 0.012895 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表