今天就跟大家聊聊有关怎么使用直接系统调用来开启WDigest凭证缓存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
WdToggle技术本质上来说,是Cobalt Strike Beacon Object File(BOF-信标对象文件)的一种概念验证,它可以使用直接系统调用来开启WDigest凭证缓存并尝试绕过凭证守护程序。
通过BOF代码中的内联程序集使用直接系统调用,提供了一种更为安全地与LSASS进程交互的操作方式,而且使用直接系统调用可避免AV/EDR软件拦截用户模式API调用。
VisualStudio(C++)不支持X64处理器的内联汇编。因此,为了编写包含编译/汇编代码的单个信标对象文件(BOF),我们必须使用Mingw-w64(GCC for Windows)编译器。
为了方便大家实验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 = <no type information> 0:000> x wdigest!g_IsCredGuardEnabled 00000001`80035c08 wdigest!g_IsCredGuardEnabled = <no type information> 0:000>
要通过LSASS内存访问检测凭证盗窃,我们可以使用Sysmon之类的工具,可以将Sysmon配置为记录打开lsass.exe文件过程。应用此配置后,我们可以为访问LSASS进程的可疑进程收集遥测信息,并帮助检测可能的凭据转储活动。当然,我们还有更多的选项来检测凭证被盗,例如使用Windows Defender ATP之类的高级检测平台。但是,如果你没有足够的预算和豪华的设备去使用这些平台的话,那么Sysmon是一个免费的工具,可以帮助填补空白。
看完上述内容,你们对怎么使用直接系统调用来开启WDigest凭证缓存有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。