通过SAM获得本地用户hash
0x00 引言
渗透中,在获取到window系统的访问权限后,一般会使用mimikatz的sekurlsa::logonpasswords命令读取进程lsass的信息来获取当前登录用户的密码信息,但是如何全面获取系统的密码信息呢,这就要对SAM数据库中保存的信息进行提取,导出当前系统所有本地用户的hash。
0x01 简介
- 通过SAM数据库获得用户hash的多种方法
- 原理分析
0x02 通过SAM数据库获得用户hash的方法
1、在线读取SAM数据库
直接将工具传入目标机器,在目标机器中运行并获取密码信息。
mimikatz
1 | privilege::debug 提升权限 |
pwdump7
利用pwdump7 使用管理员权限直接在目标机器运行。
可以到处hash,爆破不出明文密码。
2、离线读取SAM数据库
将需要的SAM数据库文件等其他可以用文件导出,传送到攻击机器中进行分析。
获取SAM数据库文件有三种实现方式
(1)从注册表中导出 。需要管理员权限
1 | reg save HKLM\SYSTEM systembkup.hiv |
(2)使用工具复制文件。NinjaCopy、需管理员权限
1 | NinjaCopy.ps1 是一个powershell 策略文件 |
导出SAM 文件后,拉回本地使用mimikatz进行破解
1 | lsadump::sam /sam:sambkup.hiv /system:systembkup.hiv |
0x03 原理分析
读取注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
下的键值JD
、Skew1
、GBG
和Data
中的内容,拼接成syskey。
读取注册表项HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
下每个用户中F项和V项的内容,使用syskey进行一系列的解密。
至于拼接和解密的原理,自己找吧。
我只是技术的搬运工