怎么使用直接系统调用来开启WDigest凭证缓存
今天就跟大家聊聊有关怎么使用直接系统调用来开启WDigest凭证缓存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
成都创新互联公司提供高防服务器租用、云服务器、香港服务器、郑州服务器托管等
WdToggle技术
WdToggle技术本质上来说,是Cobalt Strike Beacon Object File(BOF-信标对象文件)的一种概念验证,它可以使用直接系统调用来开启WDigest凭证缓存并尝试绕过凭证守护程序。
通过BOF代码中的内联程序集使用直接系统调用,提供了一种更为安全地与LSASS进程交互的操作方式,而且使用直接系统调用可避免AV/EDR软件拦截用户模式API调用。
VisualStudio(C++)不支持X64处理器的内联汇编。因此,为了编写包含编译/汇编代码的单个信标对象文件(BOF),我们必须使用Mingw-w64(GCC for Windows)编译器。
WdToggle库
为了方便大家实验WdToggle技术,我们专门提供了一个【GitHub库】供大家使用。
这个库的主要作用如下:
演示使用内联程序集进行直接系统调用的用法,以提供与LSASS进程交互的更为安全的操作方式。
通过在LSASS进程中将g_IsCredGuardEnabled变量切换为1来启用WDigest凭据缓存(wdigest.dll模块)。
通过在LSASS进程中将g_IsCredGuardEnabled变量切换为0来绕过凭证保护(如果启用)(wdigest.dll模块)。
使用信标对象文件(BOF)在信标(Beacon)进程中执行此代码。
如何配置实验环境
在这里,我们并不打算给大家提供已编译好的源码,因此大家需要自行动手完成代码编译。
首先,我们需要使用下列命令将WdToggle项目源码克隆至本地:
git clone https://github.com/outflanknl/WdToggle.git
确保你已经正确安装了Mingw-w64编译器。如果使用的是macOS的话,我们可以使用下列命令来安装Mingw-w64:
sudo port install mingw-w64
接下来,运行下列命令来编译信标对象文件(BOF):
make
在一个Cobaltstrike Beacon上下文环境中,运行inline-execute命令并提供对象WdToggle.o文件的路径。
然后,运行Cobaltstrike的logonpasswords命令(Mimikatz),别忘了针对新用户登录或未锁定桌面会话的用户要再次开启密码清理选项。
限制条件
这种技术无法实现重启持久化,因此设备重启后我们需要重新运行代码。
wdigest!g_fParameter_UseLogonCredential和wdigest!g_IsCredGuardEnabled全局变量的内存偏移量可能会因Windows操作系统版本的不同而发生改变。大家可以使用Windows调试器工具来查看并添加自己对应系统版本的偏移量:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64>cdb.exe -z C:\Windows\System32\wdigest.dll 0:000>x wdigest!g_fParameter_UseLogonCredential 00000001`800361b4 wdigest!g_fParameter_UseLogonCredential =0:000> x wdigest!g_IsCredGuardEnabled 00000001`80035c08 wdigest!g_IsCredGuardEnabled = 0:000>
检测方式
要通过LSASS内存访问检测凭证盗窃,我们可以使用Sysmon之类的工具,可以将Sysmon配置为记录打开lsass.exe文件过程。应用此配置后,我们可以为访问LSASS进程的可疑进程收集遥测信息,并帮助检测可能的凭据转储活动。当然,我们还有更多的选项来检测凭证被盗,例如使用Windows Defender ATP之类的高级检测平台。但是,如果你没有足够的预算和豪华的设备去使用这些平台的话,那么Sysmon是一个免费的工具,可以帮助填补空白。
WdToggle运行界面
看完上述内容,你们对怎么使用直接系统调用来开启WDigest凭证缓存有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
文章名称:怎么使用直接系统调用来开启WDigest凭证缓存
本文URL:http://pwwzsj.com/article/jsscsh.html