渗透技巧——通过 SAM 数据库获得本地用户 hash
0x00 前言
在渗透测试中,获得了 Windows 系统的访问权限后,通常会使用 mimikatz 的 sekurlsa::logonpasswords
命令尝试读取进程 lsass 的信息来获取当前登录用户的密码信息,但想要全面获取系统中的密码信息,还要对 SAM 数据库中保存的信息进行提取,导出当前系统中所有本地用户的 hash。
0x01 简介
本文将要介绍以下内容:
- 通过 SAM 数据库获得用户 hash 的多种方法
- 原理分析
0x02 通过 SAM 数据库获得用户 hash 的方法
1、在线读取 SAM 数据库
读取当前系统的 SAM 数据库文件,获得系统所有本地用户的 hash
(1) mimikatz
privilege::debug
token::elevate
lsadump::sam
测试如下图
(2) pwdump7
下载地址: http://passwords.openwall.net/b/pwdump/pwdump7.zip
管理员权限执行,如下图
(3) powershell
管理员权限执行,测试如下图
2、离线读取 SAM 数据库
获取当前系统的 SAM 数据库文件,在另一系统下进行读取
导出 SAM 数据库文件有以下两种实现方法:
(1) 保存注册表
管理员权限
reg save HKLM\SYSTEM SystemBkup.hiv
reg save HKLM\SAM SamBkup.hiv
(2) 复制文件
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\config\SAM
默认无法被复制,如下图
需要借助 NinjaCopy,作者 Joe Bialek,参考下载地址: https://github.com/3gstudent/NinjaCopy
导出 SAM 数据库文件后,在另一系统,可通过以下方式导出用户 hash:
(1) mimikatz
lsadump::sam /sam:SamBkup.hiv /system:SystemBkup.hiv
如下图
注: mimikatz 的官方说明有问题,地址如下: https://github.com/gentilkiwi/mimikatz/wiki/module-~-lsadump
导出命令:
lsadump::sam SystemBkup.hiv SamBkup.hiv
会报错,如下图
可用的命令由 @我爱这个世界提供
补充:
以下工具在读取 Win7 系统的 SAM 数据库文件会报错
(1) Pwdump7
如下图
(2) Pwdump5
下载地址:
http://passwords.openwall.net/b/pwdump/pwdump5.zip
读取结果不正确,如下图
(3) cain
测试如下图
0x03 原理分析
1、读取 HKLM\SYSTEM,获得 syskey
读取注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
下的键值 JD
、 Skew1
、 GBG
和 Data
中的内容,拼接成 syskey
代码可参考:
- https://github.com/johannwmeyer/quarkspwdump/blob/a68aa6330f37eb8d00055c73e6a4e3cb52bcdd6d/src/crypt.cpp
- https://github.com/gentilkiwi/mimikatz/blob/master/mimikatz/modules/kuhl_m_lsadump.c
完整计算代码可参考:
..//Writeup/master/getsyskey.cpp
(Steal from http://www.zcgonvh.com/post/ntds_dit_pwd_dumper.html )
2、使用 syskey 解密 HKLM\SAM
读取注册表项 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
下每个用户中 F 项和 V 项的内容,使用 syskey 进行一系列的解密
详细解密过程可参考如下链接:http://www.xfocus.net/articles/200306/550.html
综上,想要通过 SAM 数据库获得用户 hash,需要获得两个文件:HKLM\SYSTEM 和 HKLM\SAM,最直接的导出方式是读取当前系统下的注册表 HKLM\SYSTEM 和 HKLM\SAM,但需要获得 system 权限。
0x04 小节
本文介绍了通过 SAM 数据库获得所有用户 hash 的多种方法,关键在于读取 HKLM\SYSTEM 和 HKLM\SAM
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 域渗透——获得域控服务器的 NTDS.dit 文件
下一篇: Covenant 利用分析
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论