NativeBypassCredGuard:一款基于NTAPI的Credential Guard安全测试工具

科技   2025-01-17 19:04   上海  

关于NativeBypassCredGuard


NativeBypassCredGuard是一款功能强大的Credential Guard安全测试工具,该工具可以帮助广大研究人员测试Credential Guard的安全态势。


NativeBypassCredGuard 是一款旨在通过仅使用 NTAPI 函数(由 ntdll.dll 导出)修补 WDigest.dll 来测试Credential Guard 的工具。它有两种版本:C# 和 C++。


运行机制


该工具在磁盘上的 WDigest.dll 文件中定位模式“39 ?? ?? ?? ?? 00 8b ?? ?? ?? ?? 00”,然后计算必要的内存地址,最后修补 WDigest.dll 中两个变量的值:g_fParameter_UseLogonCredential(为 1)和g_IsCredGuardEnabled(为 0)。


这种行为将强制将纯文本凭证存储在内存中,确保从那时起,每当用户登录时,凭证都以明文形式存储。因此,下次转储 LSASS 进程时,它可能包含纯文本密码。


使用的NTAPI函数和运行流程如下:



NtOpenProcessToken 和 NtAdjustPrivilegesToken 启用 SeDebugPrivilege 特权

NtCreateFile 和 NtReadFile 打开磁盘上的 DLL 文件的句柄并读取其字节

NtGetNextProcess 和 NtQueryInformationProcess 获取 lsass 进程的句柄

NtReadVirtualMemory 和 NtQueryInformationProcess 获取 WDigest.dll 基地址

NtReadVirtualMemory 读取变量的值

NtWriteProcessMemory 将新值写入变量


仅使用 NTAPI 函数,就可以重新映射 ntdll.dll 库以绕过用户模式挂钩和安全机制,这是该工具的可选功能。如果使用,则会从在调试模式下创建的进程中获取干净版本的 ntdll.dll。


注意事项


该工具专为 64 位系统设计,因此必须编译为 64 位二进制文件


工具安装


广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

https://github.com/ricardojoserf/NativeBypassCredGuard.git


然后打开最新版本的Visual Studio,导入项目并根据目标操作系统架构完成代码编译即可。


工具使用


NativeBypassCredGuard.exe <OPTION> <REMAP-NTDLL>


参数选项


必填项


check:读取当前值

patch:写入新值


重新映射ntdll(可选)


true:重新映射 ntdll 库

false(或省略):不重新映射 ntdll 库


工具运行演示


读取值(无需ntdll 重新映射):

NativeBypassCredGuard.exe check



补丁值(使用ntdll 重新映射):

NativeBypassCredGuard.exe patch true



项目地址


NativeBypassCredGuard

https://github.com/ricardojoserf/NativeBypassCredGuard


FreeBuf粉丝交流群招新啦!
在这里,拓宽网安边界
甲方安全建设干货;
乙方最新技术理念;
全球最新的网络安全资讯;
群内不定期开启各种抽奖活动;
FreeBuf盲盒、大象公仔......
扫码添加小蜜蜂微信回复「加群」,申请加入群聊】





FreeBuf
中国网络安全行业门户
 最新文章