神兵利器 - WdToggle WDigest凭据缓存

2021-03-10 15:38:08 浏览数 (1)

WdToggle - Cobalt Strike的信标对象文件(BOF),它使用直接的系统调用来启用WDigest凭证缓存。

背景

此PoC代码基于以下出色的博客文章:

探索Mimikatz-第1部分-WDigest

绕过凭据守卫

通过BOF代码中的内联汇编利用直接系统调用提供了一种更安全的与LSASS流程进行交互的方式。使用直接系统调用可避免AV / EDR软件拦截用户模式API调用。

Visual Studio(C )不支持x64处理器的内联汇编。因此,为了编写包含我们已编译/汇编代码的单个信标对象文件,我们必须使用Mingw-w64(适用于Windows的GCC)编译器。

这个是做什么用的?

  • 演示使用内联汇编的直接系统调用的用法,以提供更安全的方式与LSASS流程进行交互。
  • 通过在LSASS进程(wdigest.dll模块)中将全局参数切换为1来启用WDigest凭据缓存g_fParameter_UseLogonCredential
  • 规避凭据保护(如果启用)由切换g_IsCredGuardEnabledLSASS进程内变量为0(wdigest.dll模块)。
  • 使用Beacon对象文件在Beacon进程中执行此代码。
  • 克隆此存储库。
  • 确保已安装Mingw-w64编译器。例如,在Mac OSX上,我们可以使用ports集合安装Mingw-w64(sudo port install mingw-w64)。
  • 运行make命令以编译Beacon目标文件。
  • 在Cobaltstrike信标上下文中,运行inline-execute命令并提供目标WdToggle.o文件的路径。
  • 运行Cobaltstrikelogonpasswords命令(Mimikatz),注意新用户登录名或解锁桌面会话的用户再次启用了明文密码。

局限性

  • 此内存修补程序不是永久重启的,因此重启后,您必须重新运行代码。
  • wdigest!g_fParameter_UseLogonCredentialwdigest!g_IsCredGuardEnabled全局变量的内存偏移量可能会在Windows版本和修订版之间改变。我们为不同的版本提供了一些偏移,但是这些偏移可能会在将来的版本中更改。您可以添加自己的版本偏移量,可以使用Windows调试器工具找到该偏移量。

侦测

要通过LSASS内存访问来检测凭证盗窃,我们可以使用Sysmon之类的工具。可以将Sysmon配置为记录打开lsass.exe进程句柄的进程。通过应用此配置,我们可以收集访问LSASS进程的可疑进程的遥测,并帮助检测可能的凭证转储活动。当然,还有更多选择来检测凭据盗用,例如使用Windows Defender ATP之类的高级检测平台。但是,如果您没有使用这些平台的预算和奢侈,那么Sysmon是可以帮助填补空白的免费工具。

项目地址:

https://github.com/outflanknl/WdToggle

0 人点赞