介绍
远程桌面(RDP)是用于管理Windows Server的最广泛使用的工具之一,除了被管理员使用外,也容易成为攻击者的利用目标。登录到RDP会话的凭据通常用于是具有管理权限的,这也使得它们成为红队行动的一个理想目标。站在传统的角度看,许多人倾向于使用LSASS进行凭据盗窃,但是lsass.exe通常受到EDR和防病毒产品的监视,而且对LSASS的操作通常需要权限访问,于是我们自然就会考虑,有没有一种更容易的替代方案?
在本文中,我将描述我编写的一个工具,能使用API钩子从Microsoft RDP客户端提取明文凭据,而且如果是在已经受感染用户的权限下操作(比如网络钓鱼导致),并且该用户已打开RDP会话,则可以提取明文凭据而无需提权。
API钩子
简单来说,API钩子是通过将程序重定向到另一个函数来拦截程序中函数调用的过程。这是通过重新编写目标函数的内存代码来实现的。有几种API挂钩方法,技术都比较复杂,细述的话需要单独的篇章。
而就本文而言,我们将使用到的是Microsoft Detours库,该库是开源的,奇热并且支持32位和64位进程。其他框架(如Frida)也能提供类似的功能,但是Detours是非常轻量级的。为了演示这个库有多么强大,我们将使用它为MessageBox函数创建一个钩子。
钩住函数之前,我们需要做两件事,一个是包含原始函数地址和被钩住函数地址的目标指针,为了使钩子正常工作,目标函数和被钩住的函数都应具有相同数量的参数、参数