解析DumpGuard的逆向成果:Credential Guard MIDL接口定义逐条解读

发布时间:2026/10/29 1:24:01
解析DumpGuard的逆向成果:Credential Guard MIDL接口定义逐条解读 【免费下载链接】DumpGuardProof-of-Concept tool for extracting credential material from protected sessions on modern Windows systems.项目地址https://gitcode.com/gh_mirrors/du/DumpGuard点击查看免费下载DumpGuard 是一个针对现代 Windows 系统的概念验证PoC工具用于从启用了 Credential GuardVSM 虚拟机安全模式的受保护会话中提取凭据材料。项目中最有研究价值的成果之一就是 Credential Guard Interfaces/ 目录下这套逆向还原的Credential Guard MIDL 接口定义——它们精确描述了 VSM 隔离区内加密、NTLM、Kerberos、CredMan 等核心服务的 RPC 边界是理解 Windows 凭据保护架构的一手资料。DumpGuard 是什么项目结构总览DumpGuard 的核心思路是既然凭据被 Credential Guard 隔离进了 VSMVirtual Secure Mode普通的进程内存读取就无法拿到明文那么就直接模拟 TSSSP 协议栈与 VSM 建立合法的安全上下文再调用隔离区里的凭据服务。仓库分为两大模块Credential Guard Interfaces/逆向得到的 8 个 MIDL 接口定义.idl与 2 个编译器行为指令文件.acf对应 VSM 侧各 DLL 暴露的 RPC 接口DumpGuard/C 语言实现包含 TSSSP 客户端/服务端、SPNEGO、GSS-API/Kerberos ASN.1 编解码以及基于 MIDL 生成的rcg_KerbCredIsoRemote_c.c/rcg_NtlmCredIsoRemote_s.c桩代码。工具支持/command:ntlmv1、/command:ntlmv2、/command:kerbtgs、/command:msv10等命令配合/target:self或/target:all可对当前会话或全部已登录会话逐一提取 NTLM 响应见 main.c 中的命令枚举。Credential Guard MIDL 接口定义文件清单每个.idl文件顶部都带有uuid和version属性这是识别 VSM 内对应模块的关键指纹。完整清单如下接口文件UUID作用定位BaseTypes.idl—公共基础类型上下文句柄、字符串、八位字节串NtlmIum.idl45527AE0-…-C392NTLM 凭据保护、NT/LM 响应与会话密钥计算KerberosIum.idl9CFEEAD6-…-23F8Kerberos 认证全流程AS/AP 请求、FAST、S4U、PACBCryptIum.idl57CCE375-…-D140VSM 内部 BCrypt 加密 API 的完整边界CredManIum.idl39730EC4-…-E212CredMan 凭据的保护与校验ProvIum.idlA3E5AF3E-…-E4BFVSM 机器密钥、自签名证书与根密钥校验CloudApIum.idl1707E621-…-55A5云身份MFA/条件访问密钥绑定LsaIsoMgmtIum.idlEDA3C9E4-…-607D隔离环境运行状态探测下面逐条解读最有信息量的几个接口。BaseTypes.idl所有接口的公共基础所有接口文件都import BaseTypes.idl其中定义了三个关键抽象CONTEXT_HANDLE带[context_handle]属性的上下文句柄是每次进入 VSM 服务后的会话凭证几乎所有函数都要求先调用GetClientContext获取它IUM_UNICODE_STRING/IUM_STRING/IUM_OCTET_STRING对应内核态UNICODE_STRING等结构的隔离用户态Isolated User Mode版本通过size_is()、length_is()属性精确描述缓冲区大小这是还原 NDR 序列化格式的基础IUM_HANDLElong longVSM 内句柄对象BCrypt 密钥、Kerberos 密钥协商都基于它。这套类型与 rcg_BaseTypes.idl 中的定义一致可见作者是用同一套基础类型同时刻画了真实 VSM 接口和DumpGuard 自定义 RCG 接口。NtlmIumNTLM 凭据保护的逆向核心NtlmIum.idl 是 DumpGuard 攻击路径最直接的依据。数据结构部分还原了微软文档未公开的MSV1_0_SECRETS_WRAPPER它按IsEncrypted字段在明文三哈希NT_OWF_PASSWORDLM_OWF_PASSWORDSHA_OWF_PASSWORD与 308 字节密文之间切换并携带IUM_MSV1_0_CREDENTIAL_KEY凭据密钥。几个关键函数值得逐条看NtlmIumLm20GetNtlm3ChallengeResponse给定凭据与服务器 8 字节 Challenge生成 NTLM v2 响应和会话密钥——这正是/command:ntlmv2的底层调用NtlmIumCalculateNtResponse/NtlmIumCalculateUserSessionKeyNtNTLM v1 响应与会话密钥计算对应/command:ntlmv1NtlmIumDecryptDpapiMasterKey用凭据解DPAPI 主密钥意味着 VSM 内可解密目标用户 DPAPI 保护的数据NtlmIumCompareCredentials在 VSM 内部比较两组哈希是否相等避免哈希值出隔离区NtlmIumProtectSspCredentialPassword与 KerberosIum 中KerbIumGetNtlmSupplementalCredential呼应实现跨协议的凭据格式转换。值得注意的是NtlmIumGetCredentialKey的RootSecret参数注释为NtlmGlobalRootSecret——这正是 VSM 全局根密钥的用途也是 ProvIum.idl 中ProvIumCheckRootSecretValidity校验的对象。KerberosIumKerberos 协议处理的完整接口地图KerberosIum.idl 是最大的接口约 40 个函数注释直接引用了 [MS-RDPEAR] 官方文档可以逐条对照阅读功能分组代表函数说明密码与密钥列表KerbIumBuildPasswordList用明文密码 用户名/域salt构建 AES 密钥列表AS/AP 请求构造KerbIumBuildAsReqAuthenticator、KerbIumCreateApReqAuthenticator生成带时间偏斜修正的认证符票据解密验证KerbIumVerifyServiceTicket、KerbIumUnpackKdcReplyBody解密 EncTicketPart、解析 KDC 应答FAST (RFC 6113)KerbIumBuildFastArmoredKdcRequest、KerbIumVerifyFastArmoredTgsReply等 7 个FAST 装甲请求/应答的构建与验证S4U 代认证KerbIumHashS4UPreauth、KerbIumSignS4UPreauthData服务主体代取票据的 MAC 计算PAC 凭据KerbIumDecryptPacCredentials解密 PAC 中的补充凭据数组PKINIT 密钥协商KerbIumCreateECDHKeyAgreement256/384/521 位、KerbIumFinalizeKeyAgreementECDH/DH 密钥协商句柄管理其中KerbIumEncryptPassword把明文密码转成密文存储形式KERB_PLAINTEXT_PASSWORD结构用Protection枚举KERB_PASSWORD_NO_PROTECTION/KERB_PASSWORD_ENCRYPTED_BY_LSA_ISO/KERB_PASSWORD_LSA_PROTECTED标记保护等级——这说明即使在 VSM 内部密码也有分级的保护策略。BCryptIumVSM 加密能力的边界BCryptIum.idl 把 Windows CNGbcrypt.dll几乎完整的算法接口搬进了隔离区BCryptIumOpenAlgorithmProvider打开算法、BCryptIumGenerateKeyPair生成密钥对、BCryptIumEncrypt/BCryptIumDecrypt加解密、BCryptIumSignHash签名以及一个容易忽略但风险很高的函数BCryptIumExportKey——它允许把密钥以 Blob 形式导出是凭据最终能出VSM 的关键通道之一。该接口还还原了 RSA 填充参数结构IUM_BCRYPT_PADDING_INFO用switch_type联合体区分 PKCS1 / OAEP / PSS 四种填充PaddingType1~4作者甚至在注释里记录了两个 case 都是 PKCS1依据 NDR64 结构推断的逆向细节足见这套定义是逐字节比对二进制反序列化行为得到的。CredManIum、ProvIum、CloudApIum 与 LsaIsoMgmtIum短接口大信息量CredManIum.idl仅 2 个函数。CredManIumProtectCredential输入任意凭据字节返回密文CredManIumCheckProtectedCredential校验并重加密——这就是凭据管理器CredMan存储格式如MSV1_0在 VSM 内的加密封装层。ProvIum.idlVSM 初始化Provisioning接口。ProvIumCreateMachineKey创建机器密钥、ProvIumCreateMachineSelfSignedCertificate生成自签名证书、ProvIumCheckRootSecretValidity校验全局根密钥。它解释了 VSM 首次启动时如何建立信任。CloudApIum.idl仅 3 个函数围绕GenerateKeyBindingKeyPair/VerifyKeyBindingKeyPair服务于云身份验证如 MFA、条件访问的密钥绑定。LsaIsoMgmtIum.idl只有一个GetRunningServices返回值为2默认模式或3Credential Guard 已启用——这是判断目标系统是否开启 Credential Guard 的最轻量子也是安全评估时最常用的指纹点。.acf 文件MIDL 编译器的行为指令两个.acf文件虽然只有几行却展示了逆向的严谨性BCryptIum.acf[strict_context_handle][context_handle_noserialize]声明Context句柄只能以不序列化方式传递避免 MIDL 编译器为句柄生成多余的序列化桩KerberosIum.acf[allocate(all_nodes)] PSECPKG_SUPPLEMENTAL_CRED_ARRAY指定补充凭据数组的分配策略使生成的客户端桩能按整树分配方式还原 PAC 凭据数组。RemoteGuard 调用 IDDumpGuard 自定义的 RCG 接口层除了还原官方接口DumpGuard 还定义了自己的远程守卫接口用于让伪造的 TSSSP 服务端向客户端派发操作rcg_RemoteGuardCallIds.idlRemoteGuardCallId枚举把调用分成两个区段——Kerberos 区0x100~0x1ff共 24 个操作和 NTLM 区0x200~0x2ff共 6 个操作并明确标注哪些操作未被官方KerbCredIsoRemote实现如各 FAST 装甲函数rcg_KerbCredIsoRemote.idl 与 rcg_NtlmCredIsoRemote.idl用CallId switch 联合体的单入口分发模式重写请求结构MIDL 生成的 rcg_KerbCredIsoRemote_c.c、rcg_KerbCredIsoRemote_s.c 等桩代码即基于此编译。对比官方KerberosIum的 40 个细粒度函数RCG 的 24 个 CallId 明显更少——这从侧面印证了注释中Not implemented by KerbCredIsoRemote的判断即官方远程守卫只暴露了 Kerberos 流程的子集。DumpGuard 如何使用这些接口定义结合 main.c 可以看到完整链路初始化 TSSSP 客户端与服务端上下文完成 SPNEGO 协商ASN.1 编解码见 asn1_spnego.c 等服务端内置一张自签名测试证书RcgTest_SelfSignedCertmain.c冒充 VSM 侧 TLS 证书骗过客户端证书校验进入 RDPEAR 虚拟通道后消息格式定义于 tsssp_rdpear.h调用tsssp_rdpear_send_ntlm_request_v1/v2或tsssp_rdpear_send_kerb_request_service_ticket让 VSM 用受害会话的隔离凭据计算 NTLM 响应或申请 TGS 票据/target:all模式下通过LsaEnumerateLogonSessionsImpersonateLoggedOnUser遍历所有域用户会话逐一提取main.c。换句话说MIDL 接口定义既是分析产物也是攻击实现的蓝图它告诉攻击者 VSM 暴露了哪些合法能力DumpGuard 便沿着这些能力组合出提取路径。写在最后安全价值与合规提示这套 MIDL 逆向成果的价值有三点架构透视第一次完整公开了 Credential Guard 隔离区的 RPC 接口边界让研究者无需反编译即可理解 VSM 内 NTLM/Kerberos/BCrypt 的职责划分威胁建模ExportKey、DecryptDpapiMasterKey、CheckRootSecretValidity等函数说明一旦 TSSSP 通道被伪造正如本 PoC 演示DPAPI 主密钥与 NTLM 哈希均在能力范围内加固启示LsaIsoMgmtIum.GetRunningServices可作为快速检测手段而客户端对 RCG 服务端证书的强校验则是防御此类攻击的关键点。需要强调的是DumpGuard 是研究性质的概念验证工具仅在Windows 10 及以上且启用 Credential Guard的环境中可复现且需要管理员权限。请仅在获得授权的环境中进行安全测试将其用于未授权系统可能违反《计算机信息网络国际联网安全保护管理办法》及当地法律法规。小结DumpGuard 把 Credential Guard 这块黑盒拆解成了 8 份可编译的 MIDL 接口BaseTypes定基础、NtlmIum与KerberosIum覆盖认证核心、BCryptIum划出加密边界、CredManIum/ProvIum/CloudApIum补齐周边能力LsaIsoMgmtIum提供状态指纹再叠加自研的RemoteGuardCallId分发层就构成了完整的逆向闭环。对 Windows 安全研究者而言这个目录本身就是一份Credential Guard 接口字典值得逐条精读。赞分享【免费下载链接】DumpGuardProof-of-Concept tool for extracting credential material from protected sessions on modern Windows systems.项目地址https://gitcode.com/gh_mirrors/du/DumpGuard点击查看免费下载相关推荐DumpGuard是什么Windows Credential Guard凭据提取PoC工具完全解析DumpGuard是什么Windows Credential Guard凭据提取PoC工具完全解析 DumpGuard 是一款面向现代 Windows 系统的pg_repack触发器机制如何实现增量数据同步pg_repack触发器机制如何实现增量数据同步 pg_repack是PostgreSQL数据库中一款强大的表重组工具它能够在最小化锁竞争的情况下对表进行重数据库Natsumi Browser 自动更新器逆向解读updater.uc.mjs 逐行精讲Natsumi Browser 自动更新器逆向解读updater.uc.mjs 逐行精讲 Natsumi Browser 是一款为 Firefox 及其衍生浏上一篇AssetRipperUnity资源提取完整指南下一篇VPTQ模型命名解密v8-k65536-256等参数到底代表什么创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询