神兵利器 - WdToggle WDigest凭据缓存

  • A+
所属分类:安全工具


神兵利器 - WdToggle WDigest凭据缓存


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),注意新用户登录名或解锁桌面会话的用户再次启用了明文密码


神兵利器 - WdToggle WDigest凭据缓存


局限性

  • 此内存修补程序不是永久重启的,因此重启后,您必须重新运行代码。

  • wdigest!g_fParameter_UseLogonCredentialwdigest!g_IsCredGuardEnabled全局变量的内存偏移量可能会在Windows版本和修订版之间改变。我们为不同的版本提供了一些偏移,但是这些偏移可能会在将来的版本中更改。您可以添加自己的版本偏移量,可以使用Windows调试器工具找到该偏移量。


神兵利器 - WdToggle WDigest凭据缓存


侦测


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


项目地址:


https://github.com/outflanknl/WdToggle

本文始发于微信公众号(Khan安全团队):神兵利器 - WdToggle WDigest凭据缓存

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: