SAM
本地 Windows 凭证被存储在 Security Account Manager 数据库,即 SAM 中,密码是 NTLM 哈希 (基于MD4算法)的形式,简单来说,可以将其视为包含所有用户密码哈希的锁定日志本。在用户尝试登录期间,Windows 系统将要求输入用户名和密码。输入密码后,系统根据 SAM 中的密码进行验证。如果用户名和相关密码与 SAM 中的条目匹配,最终将授予用户访问系统的权限。需要注意的是,SAM只保存了本地账户的凭证,不包含域用户。
在我们获得了主机的最高权限后,我们可以通过多种不同方式来导出 SAM 数据库。尽管 SAM 数据库中的本地用户的密码哈希不会直接帮助我们对域进行进一步渗透,但是从系统管理员的角度,对于相似的主机(例如 WEB01 与 WEB02)、乃至完全不同的主机设置相同的密码是有可能的,即 NTLM 哈希也是相同的。在笔者经历过的真实内网渗透中,是存在这种情况的。
1:通过 mimikatz 导出
privilege::debug
lsadump::sam
2:复制注册表
分别从注册表 HKLM\sam 和 HKTM\system 的位置拷贝 SAM 数据库和 SYSTEM。
在这之后,我们可以通过多种工具来解密,例如 mimikatz,impacket 等。
3:拷贝 SAM 数据库文件
SAM 数据库的文件地址是 C:\Windows\System32\config\SAM,我们是否可以直接复制该文件,然后通过工具来解密呢?
实际上是不可行的,因为该文件被锁定了,无法对其进行读和写。但我们可以通过卷影复制实现。在提升特权的命令行中,使用 wmic 创建一个新的卷影并且指定来源磁盘,这样可以创建一个 C 盘的快照。我们可以用 vssadmin 命令来验证我们的操作。接着,我们可以从影拷贝中拷贝出 SAM 数据库 以及 SYSTEM 文件。之后用工具来解密 SAM 数据库。