1. 从零开始:认识Windows的“密码保险箱”——SAM文件
大家好,我是老张,在系统安全和渗透测试这块摸爬滚打了十几年。今天咱们不聊那些虚的,就实实在在地掰扯一下Windows系统里那个最核心的“密码保险箱”——SAM文件。很多刚入门安全研究的朋友,一听到“提取哈希”、“破解密码”就觉得高深莫测,其实只要你理解了它的本质,操作起来并没有想象中那么复杂。
SAM文件到底是什么? 你可以把它想象成你们小区门口那个存放所有住户钥匙的保险柜。在Windows系统里,特别是本地用户账户(就是那种不联网、只在这台电脑上登录的账户),它的用户名和密码信息,就加密存放在这个“保险柜”里。这个“保险柜”的正式路径是 C:\Windows\System32\config\SAM。系统为了确保这个柜子不被轻易打开,还给它配了把“大锁”,这把“锁”就是 C:\Windows\System32\config\SYSTEM 文件。简单来说,你想打开SAM这个保险柜拿到里面的钥匙(密码哈希),就必须同时拥有SAM文件和SYSTEM文件。
那有人会问,域环境里呢?在公司的域环境中,用户信息集中管理,本地SAM文件里通常就只有缓存的一些登录凭据了。真正的“总钥匙库”是域控制器上的 C:\Windows\NTDS\NTDS.dit 文件,它相当于整个公司所有门的钥匙总库,重要性更高。今天我们主要聚焦在本地SAM文件上,这是很多内网渗透和权限维持的起点。理解了这个,你就能明白为什么在拿到一台Windows主机权限后,安全研究员或管理员(当然,我们只讨论合法的授权测试!)常常会去提取这几个文件——它们里面藏着通往更高权限或其他机器的潜在“钥匙”。
2. 实战第一步:如何把“保险箱”搬出来?——SAM文件提取方法大全
知道了SAM文件在哪,下一步就是怎么把它安全地“取出来”进行分析。根据你身处的位置和拥有的权限,方法有好几种,我挨个给你讲明白,顺便说说我踩过的坑。
2.1 本地提取:当你已经坐在“电脑前”
如果你已经通过某种方式(比如物理接触,或者已经获得了管理员权限的远程命令行)登录到了目标机器上,那么提取SAM和SYSTEM文件就是最直接的操作。
最经典的方法:利用注册表保存 Windows系统将SAM和SYSTEM的信息也保存在注册表中。所以,我们可以用一条简单的命令把它们“导出”成文件。打开命令行(cmd),用管理员身份运行:
reg save HKLM\SAM sam.hiv
reg save HKLM\SYSTEM system.hiv
这里 HKLM 是 HKEY_LOCAL_MACHINE 的缩写。执行成功后,你会在当前目录下得到 sam.hiv 和 system.hiv 两个文件。这个方法必须要有Administrator权限。我遇到过在一些加固过的系统上,即使你是管理员,也可能因为权限过滤而失败,这时候就得想别的辙。
更隐蔽的“忍者拷贝”:Invoke-NinjaCopy 上面那个方法会触发注册表操作事件日志,不够隐蔽。安全研究员在模拟攻击者视角时,常常会使用一种更底层、更安静的文件复制方式,比如PowerSploit工具包里的 Invoke-NinjaCopy.ps1 脚本。它的原理是直接读取磁盘的原始扇区,绕过一些文件访问的API监控。
怎么用呢?首先,你得把脚本弄到目标机器上。然后,在PowerShell里导入并执行:
Import-Module .\Invoke-NinjaCopy.ps1
Invoke-NinjaCopy -Path "C:\Windows\System32\config\SAM" -LocalDestination ".\sam.hiv"
Invoke-NinjaCopy -


225

被折叠的 条评论
为什么被折叠?



