几个窃取RDP凭据工具的使用测试

admin 2023年12月17日00:58:42评论35 views字数 2568阅读8分33秒阅读模式

应用场景

当我们拿到某台机器时就可以用以下几个工具来窃取管理员使用mstsc.exe远程连接其他机器时所输入的RDP用户密码等信息,其原理是将特定的恶意dll注入到mstsc.exe实现窃取RDP凭据;实战中我们还可以过观察和分析窃取到的RDP凭据是否存在规律、通用性的可能,如果存在则可以生成一个高效字典来对内网其他机器进行爆破......等等景。

RdpThief

RdpThief本身是一个独立的DLL,当注入mstsc.exe进程时,将执行API挂钩、提取明文凭据并将其保存到文件中。

作者写了个CNA脚本,可以监视新进程并将shellcode注入mstsc.exe,启用后RdpThief将每5秒获取一次进程列表,搜索mstsc.exe并注入到其中,DLL已使用sRDI项目转换为shellcode

https://github.com/0x09AL/RdpThiefhttps://github.com/monoxgas/sRDI
CobaltStrike加载RdpThief.cna脚本会提供三个新命令,只需要先执行rdpthief_enable命令启用即可,当目标主机进程列表中有mstsc.exe进程时将注入shellcode。
rdpthief_enable   //启用新的mstsc.exe进程心跳检查(5s),找到将注入shellcoderdpthief_disable  //禁用新的mstsc.exe进程心跳检查(5s),但不会卸载已加载的DLLrdpthief_dump     //打印提取的凭据(如果有)
几个窃取RDP凭据工具的使用测试
这时如果管理员在这台机器上使用mstsc.exe连接另一台机器,只要输入用户、密码就能窃取到RDP凭据。
几个窃取RDP凭据工具的使用测试

rdpthief_dump命令提取窃取到的RDP凭据,无论输入用户密码是否正确,都会记录在%temp%data.bin文件中,RdpThief.cna脚本也是读取的这个文件。

几个窃取RDP凭据工具的使用测试

RdpThief使用detours库开发,通过挂钩以下几个API从RDP客户端提取明文凭据,可以使用API Monitor工具监控mstsc.exe进程在登录过程中调用了哪些API?

https://github.com/microsoft/Detourshttp://www.rohitab.com/apimonitor
CredReadW --> ServerIPSspiPrepareForCredRead --> ServerIPCredIsMarshaledCredentialW  --> UsernameCryptProtectMemory --> Password

几个窃取RDP凭据工具的使用测试

注:Win7的mstsc.exe没有调用SspiPrepareForCredRead(获取不到IP),可以改用CredReadW,@江南小虫虫师傅已基于RdpThief改了一个,且修复可能出现的编码问题。

https://github.com/fengwenhua/RdpThief

几个窃取RDP凭据工具的使用测试

而且在测试中发现目标必须为网络级别身份验证CredIsMarshaledCredentialW、CryptProtectMemory才能获取到RDP凭据,否则可能获取到的是null,无法正常窃取到RDP凭据。

几个窃取RDP凭据工具的使用测试

SharpHook

SharpHook的灵感来自SharpRDPThief项目,这两都是C#写的,使用EasyHook将DLL注入到mstsc.exe中,然后该DLL将挂钩CryptProtectMemory API调用,该钩子将从传递给CryptProtectMemory的地址中抓取密码,最后通过EasyHook的IPC服务器将其发送到主进程。
https://github.com/IlanKalendarov/SharpHookhttps://github.com/passthehashbrowns/SharpRDPThief
几个窃取RDP凭据工具的使用测试

他们在执行过程中都会在%temp%临时目录生成一个Costura文件夹释放相关文件,记得清理一下痕迹。

几个窃取RDP凭据工具的使用测试

SharpHook目前仅支持mstsc、runas、powershell等进程下窃取凭据,其他的还未完成或有BUG,可以改用python写的PyHook,支持在以下进程中窃取凭据,使用frida将其依赖项注入目标进程。

https://github.com/IlanKalendarov/PyHook
几个窃取RDP凭据工具的使用测试

RDPCredentialStealer

RDPCredentialStealer使用C++中的API Hooking和Detours窃取RDP中用户提供的凭据,注入的dll文件和用于保存凭据的txt文件都是写死的,可以自己在源代码中进行修改。
https://github.com/S12cybersecurity/RDPCredentialStealer
将这个项目下的APIHookInjectorBin.exe、RDPCredsStealerDLL.dll文件上传到C:UsersPublicMusic目录下,然后Win+R运行输入mstsc.exe打开一个RDP远程桌面连接。
几个窃取RDP凭据工具的使用测试

接着在命令终端下执行APIHookInjectorBin.exe将RDPCredsStealerDLL.dll文件注入到mstsc.exe进程中,提示DLL Injected succesfully为注入成功,可用ProcessExplorer查看。

几个窃取RDP凭据工具的使用测试

最后在RDP远程桌面连接输入用户、密码就会在C:UsersPublicMusic目录下生成一个RDPCreds.txt文件存储窃取到的RDP凭据,但是只有用户和密码,没有IP地址。

几个窃取RDP凭据工具的使用测试
注意事项

这个工具不会循环检测mstsc.exe进程是否存在并自动注入dll,得先运行mstsc.exe后才能通过APIHookInjectorBin.exe注入dll,实战中可能不是很适用,甚至可以说是有些鸡肋,大家可以基于这个项目来进行二开,或者改用我个人比较推荐的RdpThief(比较贴近实战场景)。

参考文章

https://mp.weixin.qq.com/s/ukKyGkIYiJIOvS0xbn9i4Qhttps://fengwenhua.top/index.php/archives/79/

原文始发于微信公众号(潇湘信安):几个窃取RDP凭据工具的使用测试

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月17日00:58:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   几个窃取RDP凭据工具的使用测试https://cn-sec.com/archives/2301836.html

发表评论

匿名网友 填写信息