被内核独占锁住的凭证文件
拿到Windows本地管理员权限后,红队人员通常想直接导出SAM、SYSTEM和SECURITY注册表配置单元。常规做法是执行reg save HKLM\SAM C:\temp\SAM,但Windows会返回“进程无法访问文件,因为另一个进程正在使用它”。
原因在于内核以独占方式打开这些配置单元,标准文件系统API在靠近目标之前就会触发STATUS_SHARING_VIOLATION。有人会尝试vssadmin,但卷影复制服务经常被禁用或处于监控之下;把磁盘脱机又需要重启或物理接触。
于是问题变成:能不能不向文件系统请求权限,直接把这些文件读出来?
7-Zip打开物理磁盘的意外路径
在一次行动中,合作伙伴Коля “KL3FT3Z”发现7-Zip可以打开原始物理磁盘。以管理员身份运行7-Zip,在地址栏输入\\.\PhysicalDrive0\,软件会把磁盘当作一个巨大的归档文件处理。
用户可以浏览分区,找到Windows\System32\config\,像复制普通文件一样复制SAM、SYSTEM和SECURITY。这一行为之所以成立,是因为7-Zip没有对C:\Windows\System32\config\SAM调用NtCreateFile,而是对\\.\PhysicalDrive0调用CreateFile,并手动解析NTFS引导扇区、MFT记录和数据运行。
它工作在磁盘驱动层(disk.sys),完全位于文件系统栈(ntfs.sys)之下。内核在文件系统层对SAM的独占锁,在这个层级并不存在。由于7-Zip是合法签名软件,几乎每台工作站都有,多数EDR方案不会标记这种行为;拦截文件系统IRP的微过滤驱动也没有挂接到\Device\HarddiskX。
专用工具Sam The Butcher
这一发现引出一个问题:能否构建一个专用工具,更快、更安静地完成读取,并内联解密哈希。答案是Sam The Butcher。
这是一个单文件、独立的Windows可执行程序,体积约40–60 KB。它用原始读取权限打开\\.\PhysicalDrive0,解析NTFS引导扇区定位主文件表,通过解码非驻留数据运行把整个MFT重组到内存中,再构建内存文件树,从MFT根目录按路径遍历解析Windows\System32\config\SAM。
随后它在内存中提取SAM、SYSTEM和SECURITY,内联解析注册表单元结构提取bootKey,使用RC4/MD5解密NTLM和LM哈希,把哈希打印到标准输出,可选写入加密配置单元,然后自我销毁。整个过程不需要Python、不需要.NET运行时、不依赖任何外部组件,一个USB驱动器上的stb.exe即可完成。
从物理层绕开文件系统控制
工具的数据路径可以概括为:原始磁盘到NTFS,再到MFT,最后到文件树。它不经过ntfs.sys,也不触发常规文件访问控制。
原文给出的核心逻辑是“我们不撬锁,我们移动地板”。在文件系统层被锁住的对象,在磁盘驱动层可能只是普通字节。Sam The Butcher正是利用这一层级差异,把受保护凭证从物理盘直接读入内存。
由于工具只使用原始磁盘读取,不修改目标文件,也不在文件系统层产生常规打开操作,它在设计上避开了依赖文件系统IRP的监控路径。
热门跟贴