WdToggle - Cobalt Strike的信标对象文件(BOF),它使用直接的系统调用来启用WDigest凭证缓存。
背景
此PoC代码基于以下出色的博客文章:
探索Mimikatz-第1部分-WDigest
绕过凭据守卫
通过BOF代码中的内联汇编利用直接系统调用提供了一种更安全的与LSASS流程进行交互的方式。使用直接系统调用可避免AV / EDR软件拦截用户模式API调用。
Visual Studio(C ++)不支持x64处理器的内联汇编。因此,为了编写包含我们已编译/汇编代码的单个信标对象文件,我们必须使用Mingw-w64(适用于Windows的GCC)编译器。
这个是做什么用的?
g_fParameter_UseLogonCredential
。g_IsCredGuardEnabled
LSASS进程内变量为0(wdigest.dll模块)。sudo port install mingw-w64
)。make
命令以编译Beacon目标文件。inline-execute
命令并提供目标WdToggle.o
文件的路径。logonpasswords
命令(Mimikatz),注意新用户登录名或解锁桌面会话的用户再次启用了明文密码。局限性
wdigest!g_fParameter_UseLogonCredential
和wdigest!g_IsCredGuardEnabled
全局变量的内存偏移量可能会在Windows版本和修订版之间改变。我们为不同的版本提供了一些偏移,但是这些偏移可能会在将来的版本中更改。您可以添加自己的版本偏移量,可以使用Windows调试器工具找到该偏移量。侦测
要通过LSASS内存访问来检测凭证盗窃,我们可以使用Sysmon之类的工具。可以将Sysmon配置为记录打开lsass.exe进程句柄的进程。通过应用此配置,我们可以收集访问LSASS进程的可疑进程的遥测,并帮助检测可能的凭证转储活动。当然,还有更多选择来检测凭据盗用,例如使用Windows Defender ATP之类的高级检测平台。但是,如果您没有使用这些平台的预算和奢侈,那么Sysmon是可以帮助填补空白的免费工具。
项目地址:
https://github.com/outflanknl/WdToggle