几个窃取RDP凭据工具的使用测试
2023-12-14 08:32:55 Author: 潇湘信安(查看原文) 阅读量:12 收藏

声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安设为星标”,否则可能看不到了

应用场景

当我们拿到某台机器时就可以用以下几个工具来窃取管理员使用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     //打印提取的凭据(如果有)
这时如果管理员在这台机器上使用mstsc.exe连接另一台机器,只要输入用户、密码就能窃取到RDP凭据。

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


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

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


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

https://github.com/fengwenhua/RdpThief


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

SharpHook

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

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

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

https://github.com/IlanKalendarov/PyHook

RDPCredentialStealer

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

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

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

注意事项

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

参考文章

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

关注我们

 还在等什么?赶紧点击下方名片开始学习吧!


信 安 考 证

需要考以下各类安全证书的可以联系我,价格优惠、组团更便宜,还送【潇湘信安】知识星球1年!

CISP、PTE、PTS、DSG、IRE、IRS、NISP、PMP、CCSK、CISSP、ISO27001...


推 荐 阅 读



文章来源: http://mp.weixin.qq.com/s?__biz=Mzg4NTUwMzM1Ng==&mid=2247507799&idx=1&sn=44d08ff502d768e6b516537adaee4e09&chksm=ceceee378f31530b15b42503d03c66a9edc7c0a69b977c65618110e9c61544bda09446b6a9fc&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh