应用场景
RdpThief
作者写了个CNA脚本,可以监视新进程并将shellcode注入mstsc.exe,启用后RdpThief将每5秒获取一次进程列表,搜索mstsc.exe并注入到其中,DLL已使用sRDI项目转换为shellcode。
https:
//github.com/0x09AL/RdpThief
https:
//github.com/monoxgas/sRDI
rdpthief_enable
//启用新的mstsc.exe进程心跳检查(5s),找到将注入shellcode
rdpthief_disable
//禁用新的mstsc.exe进程心跳检查(5s),但不会卸载已加载的DLL
rdpthief_dump
//打印提取的凭据(如果有)
rdpthief_dump命令提取窃取到的RDP凭据,无论输入用户密码是否正确,都会记录在%temp%data.bin文件中,RdpThief.cna脚本也是读取的这个文件。
RdpThief使用detours库开发,通过挂钩以下几个API从RDP客户端提取明文凭据,可以使用API Monitor工具监控mstsc.exe进程在登录过程中调用了哪些API?
https:
//github.com/microsoft/Detours
http:
//www.rohitab.com/apimonitor
CredReadW
--> ServerIP
SspiPrepareForCredRead
--> ServerIP
CredIsMarshaledCredentialW
--> Username
CryptProtectMemory
--> Password
注:Win7的mstsc.exe没有调用SspiPrepareForCredRead(获取不到IP),可以改用CredReadW,@江南小虫虫师傅已基于RdpThief改了一个,且修复可能出现的编码问题。
https:
//github.com/fengwenhua/RdpThief
而且在测试中发现目标必须为网络级别身份验证CredIsMarshaledCredentialW、CryptProtectMemory才能获取到RDP凭据,否则可能获取到的是null,无法正常窃取到RDP凭据。
SharpHook
https:
//github.com/IlanKalendarov/SharpHook
https:
//github.com/passthehashbrowns/SharpRDPThief
他们在执行过程中都会在%temp%
临时目录生成一个Costura文件夹释放相关文件,记得清理一下痕迹。
SharpHook目前仅支持mstsc、runas、powershell等进程下窃取凭据,其他的还未完成或有BUG,可以改用python写的PyHook,支持在以下进程中窃取凭据,使用frida将其依赖项注入目标进程。
https:
//github.com/IlanKalendarov/PyHook
RDPCredentialStealer
https:
//github.com/S12cybersecurity/RDPCredentialStealer
接着在命令终端下执行APIHookInjectorBin.exe将RDPCredsStealerDLL.dll文件注入到mstsc.exe进程中,提示DLL Injected succesfully为注入成功,可用ProcessExplorer查看。
最后在RDP远程桌面连接输入用户、密码就会在C:UsersPublicMusic目录下生成一个RDPCreds.txt文件存储窃取到的RDP凭据,但是只有用户和密码,没有IP地址。
这个工具不会循环检测mstsc.exe进程是否存在并自动注入dll,得先运行mstsc.exe后才能通过APIHookInjectorBin.exe注入dll,实战中可能不是很适用,甚至可以说是有些鸡肋,大家可以基于这个项目来进行二开,或者改用我个人比较推荐的RdpThief(比较贴近实战场景)。
参考文章
https:
//mp
.weixin.qq.com/
s/ukKyGkIYiJIOvS0xbn9i4Q
https://fengwenhua
.top/index.php/archives/
79
/
原文始发于微信公众号(潇湘信安):几个窃取RDP凭据工具的使用测试
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论