渗透技巧——通过 SAM 数据库获得本地用户 hash

发布于 2024-11-08 12:47:53 字数 5004 浏览 5 评论 0

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

测试如下图

Alt text

(2) pwdump7

下载地址: http://passwords.openwall.net/b/pwdump/pwdump7.zip

管理员权限执行,如下图

Alt text

(3) powershell

下载地址: https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-PowerDump.ps1

管理员权限执行,测试如下图

Alt text

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

默认无法被复制,如下图

Alt text

需要借助 NinjaCopy,作者 Joe Bialek,参考下载地址: https://github.com/3gstudent/NinjaCopy

导出 SAM 数据库文件后,在另一系统,可通过以下方式导出用户 hash:

(1) mimikatz

lsadump::sam /sam:SamBkup.hiv /system:SystemBkup.hiv

如下图

Alt text

注: mimikatz 的官方说明有问题,地址如下: https://github.com/gentilkiwi/mimikatz/wiki/module-~-lsadump

导出命令:

lsadump::sam SystemBkup.hiv SamBkup.hiv

会报错,如下图

Alt text

可用的命令由 @我爱这个世界提供

补充:

以下工具在读取 Win7 系统的 SAM 数据库文件会报错

(1) Pwdump7

如下图

Alt text

(2) Pwdump5

下载地址:

http://passwords.openwall.net/b/pwdump/pwdump5.zip

读取结果不正确,如下图

Alt text

(3) cain

测试如下图

Alt text

0x03 原理分析

1、读取 HKLM\SYSTEM,获得 syskey

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

代码可参考:

完整计算代码可参考:

..//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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

醉态萌生

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

qq_z5gHLI

文章 0 评论 0

圈圈圆圆圈圈

文章 0 评论 0

alipaysp_h2Vbo4sv6k

文章 0 评论 0

初见你

文章 0 评论 0

清风无影

文章 0 评论 0

云胡

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文