文章总结: 本文介绍一种新型Windows凭据提取技术,通过组合使用NtOpenKeyEx(启用REGOPTIONBACKUP_RESTORE选项)和冷门APIRegQueryMultipleValuesW,可在不触发EDR警报的情况下直接读取SAM/SECURITY注册表加密数据。该方法无需SYSTEM权限、不产生磁盘文件,仅需启用SeBackupPrivilege的管理员权限即可实现内存级操作,为渗透测试中的横向移动提供隐蔽手段。 综合评分: 87 文章分类: 渗透测试,漏洞分析,红队,内网渗透,安全工具
无声收割:如何在雷达下窃取 Windows 秘密凭证
幻泉之洲
2026年4月12日 09:58 北京
在小说阅读器读本章
去阅读
当攻击者拿到一台Windows主机的权限后,下一目标往往是横向移动。传统的凭据提取技术很容易被现代EDR发现。本文作者找到了一个几乎能绕过所有主流EDR的新方法——利用系统原生的、被人遗忘的API,在不触及磁盘且规避权限检查的前提下,悄无声息地读取SAM和SECURITY注册表中的加密数据。
问题的根源:LSA与凭据存储
Windows 的秘密全由本地安全机构,也就是 lsass.exe 进程管理。这个 LSA 维护着内存中的两个关键数据库,分别对应着磁盘上的两个注册表配置单元。
- SAM 数据库:存着本机用户、组和凭据信息。
- 安全数据库:管理着各种系统秘密。
问题是,这些数据库没有现成的API能直接吐出明文密码。你想拿到有用的东西,就得想办法直接去读 SAM 和 SECURITY 这两个注册表配置单元。可它们被特殊权限保护着,常规手段需要 SYSTEM 权限才能碰。
你或许会说,可以用注册表配置单元备份来读取。没错,这是个老办法,但它在磁盘上会留下痕迹,而且很多 EDR 就盯着这种操作。
更麻烦的还在后面。你以为读出注册表里的那些二进制数据块就大功告成了?错了。那些全是加密的密文。解密的关键藏在 SYSTEM 配置单元里,你需要把它找出来才能解开。所以,获取数据只是第一步,解密是另一场战斗。这篇文章只谈如何悄无声息地拿到这些加密数据。
横移的常规武器库与它们的弱点
我们先看看大家平时都是怎么做的。这张图基本上总结了所有常见的凭证收集技术,远程的和本地的都包括在内。
这些方法各有各的短板。远程读取要开注册表远程服务,动静太大。基于注册表配置单元备份的,会在磁盘上留下文件。至于去LSASS内存里翻,那更是火中取栗。现在的LSASS是EDR和Windows Defender的重点保护对象,稍微碰一下警报就响了。你试试看,十有八九会被抓个正着。
所以核心问题就变成了:有没有一种方法,既能拿到SAM和SECURITY里的数据,又不会触发警报?
EDR是怎么发现你的:内核回调钩子
要绕过防御,你得先知道防御是怎么运作的。现代EDR的一个核心检测机制,是内核态的回调例程。EDR的驱动会让Windows内核在发生特定系统事件时通知它,比如进程创建、镜像加载,还有我们今天关心的注册表访问。
为了监控注册表,驱动会调用一个叫 CmRegisterCallbackEx 的函数,把自己的回调函数地址传进去。这样,每当有注册表操作,内核就会调用这个函数,并告诉它两个关键信息:一个是操作类型,比如“准备枚举某个键下的值”;另一个是上下文数据结构,包含了完整的注册表路径和调用者的访问权限。
但一个Windows系统每分钟产生成千上万个注册表操作,全都监控的话,机器就没法用了。所以EDR驱动很聪明,它们只精心选择一部分“高危”路径进行监控,比如 HKLM\SAM 和 HKLM\SECURITY 下面的那些键。同时,它们也过滤事件类型,只关注对安全真正有威胁的那些操作。这样一来,性能开销不大,却能有效捕获高价值的攻击行为。
这其实就是一道筛选网,网眼的大小,决定了哪些鱼能被捞起来。
无声收割者:换个API,换个世界
我在很多渗透测试项目中,都需要一个足够小、足够“原生”的工具,它要能从注册表里捞出敏感数据,还不能留下那些EDR产品正在寻找的典型痕迹。我的思路很简单,不依赖什么特殊的“EDR规避技巧”,而是纯粹利用Windows的内部机制。
不碰磁盘,实时读取
首要目标是,不创建磁盘上的配置单元备份,也不启用远程注册表。工具应该能以本地管理员的权限运行,这样我就能通过 wmiexec 之类的命令远程执行它。
一开始,我没找到公开的工具或资料能说明如何在不以SYSTEM身份运行的情况下,直接读取SAM和SECURITY里的受保护数据。直到我看到了James Forshaw的NtObjectManager PowerShell模块,它给了我灵感。这个模块把注册表挂载为一个PowerShell驱动器,然后去读那些通常需要提升权限才能访问的键。
我深挖了这个模块的代码,发现它调用了一个未文档化的原生API:NtOpenKeyEx。这个函数里有个叫 OpenOptions 的参数是关键。除了常规选项,有两个标志位对我们至关重要:
- REG_OPTION_OPEN_LINK – 跟随符号链接。
- REG_OPTION_BACKUP_RESTORE – 请求备份/还原语义。
就是这第二个标志位,配合一个名为 SeBackupPrivilege 的权限,可以让内核绕过正常的ACL检查,哪怕是访问最敏感的注册表键。这样一来,一个普通的、但启用了 SeBackupPrivilege 的管理员,就能打开 SAM 或 SECURITY 下的任何东西。
NTSTATUS NtOpenKeyEx( PHANDLE KeyHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, ULONG OpenOptions );
拿到注册表键的句柄之后,用普通的 API 比如 NtQueryValueKey 就能直接从内存里读出数据,整个过程中没有任何配置单元文件触及磁盘。
骗过雷达的最后一环
到这一步,我们只解决了访问控制的问题。管理员有了 SeBackupPrivilege 就能打开受保护的键,但还没解决检测的问题。就算绕过ACL,大多数 EDR 产品依然会在进程碰触 SAM 和 SECURITY 下的敏感值时立刻报警,因为它们监控着像 RegQueryValueExW 这样常见的 API,特别当这些 API 配合高风险路径使用时。
前面说了,EDR驱动不可能检查每一次注册表操作,量太大了。它们只挂钩或过滤一组有限的“有趣”调用。这个观察结论让我开始寻找一个能满足以下条件的Windows API:首先,它必须能让我读取任意注册表值;其次,它最好足够冷门,以至于安全厂商还没把它加到监控规则列表里。
我找到了这个函数:RegQueryMultipleValuesW。
LSTATUS RegQueryMultipleValuesW( HKEY hKey, // 由 RegOpenKeyEx/NtOpenKeyEx 返回的句柄 PVALENTW val_list, // 描述待获取值的数组 DWORD num_vals, // val_list 中的元素数量 LPWSTR lpValueBuf, // 接收数据的缓冲区 LPDWORD ldwTotsize // 输入:缓冲区大小;输出:返回的字节数 );
它的文档说“检索与一个打开的注册表键相关联的一组值名称的类型和数据”。用它来读单个值很简单:创建一个 VALENTW 结构,设置好要读的值名,把 num_vals 设为1,最后指向一个足够大的缓冲区。调用返回后,值的类型和长度就填好了。
实验结果让我有点吃惊。即便是反复调用 RegQueryMultipleValuesW 去读取 SAM 或 SECURITY 里的高敏感值,在测试过的所有 EDR平台上,都没有触发警报。我的推测是,安全厂商把精力都放在了更常见的单值读取API上,像 RegQueryValueExW、NtQueryValueKey这些,而完全没把这个少见的接口加到它们的钩子列表里。
策略结合:先用 NtOpenKeyEx 配合 REG_OPTION_BACKUP_RESTORE 选项获取句柄,再用 RegQueryMultipleValuesW 读取数据。
至此,整个操作完全在内存中完成。没有创建配置单元文件,也没有调用那些高频率的“危险”API。
解密这些数据块是另一个独立的步骤,不在这篇文章的讨论范围之内。但至少在收集阶段,这个方法做到了既无声又便携。你可以看看下面的图,具体是怎么操作的。
一点看法
这次探索说明,利用Windows自身的内部机制,只需要很少的代码,就能绕过访问控制和常见的EDR检测。当然,可以预见的是,等到安全厂商读到这篇文章,RegQueryMultipleValuesW 很可能就会被加到它们的监控逻辑里。
但我觉得,这件事背后有更广泛的启示。在复杂的系统里,总有一些被忽视的功能,它们恰恰提供了绕过防御假设的捷径。防御方在设计监控时,总会有取舍,有盲点。而攻击的本质,很多时候就是去寻找并利用这些盲点。
参考资料
[1] https://sud0ru.ghost.io/silent-harvest-extracting-windows-secrets-under-the-radar/
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:幻泉之洲 《无声收割:如何在雷达下窃取 Windows 秘密凭证》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论