Come eseguire il ripristino da un attacco Golden gMSA

Questo articolo descrive un approccio alla riparazione delle credenziali di un account del servizio gestito del gruppo interessato da un evento imprevisto di esposizione del database del controller di dominio.

Sintomi

Per una descrizione di un attacco golden gMSA, vedere l'articolo seguente su Semperis:

Introduzione all'attacco Golden GMSA

La descrizione nell'articolo precedente è accurata. L'approccio per risolvere il problema consiste nel sostituire l'oggetto chiave radice microsoft (kdssvc.dll, noto anche come KDS) chiave radice e tutti gli account del servizio gestito del gruppo che usano l'oggetto chiave radice KDS compromesso.

Ulteriori informazioni

In un attacco riuscito a un account del servizio gestito del gruppo, l'utente malintenzionato ottiene tutti gli attributi importanti dell'oggetto Chiave radice KDS e gli Sid attributi e msds-ManagedPasswordID di un oggetto gMSA.

L'attributo msds-ManagedPasswordID è presente solo in una copia scrivibile del dominio. Pertanto, se viene esposto il database di un controller di dominio, solo il dominio che ospita il controller di dominio è aperto all'attacco Golden gMSA. Tuttavia, se l'autore dell'attacco può eseguire l'autenticazione a un controller di dominio di un dominio diverso nella foresta, l'utente malintenzionato potrebbe disporre di autorizzazioni sufficienti per ottenere il contenuto di msds-ManagedPasswordID. L'utente malintenzionato potrebbe quindi usare queste informazioni per creare un attacco contro gli account del servizio gestito del gruppo in domini aggiuntivi.

Per proteggere domini aggiuntivi della foresta dopo l'esposizione di un dominio, è necessario sostituire tutti gli account del servizio gestito del gruppo nel dominio esposto prima che l'utente malintenzionato possa usare le informazioni. In genere, non si conoscono i dettagli di ciò che è stato esposto. È quindi consigliabile applicare la risoluzione a tutti i domini della foresta.

Come misura proattiva, il controllo può essere usato per tenere traccia dell'esposizione dell'oggetto Chiave radice KDS. Un elenco di controllo di accesso di sistema (SACL) con letture riuscite può essere inserito nel contenitore Chiavi radice master, che consente il controllo delle letture riuscite sull'attributo msKds-RootKeyData della msKds-ProvRootKey classe . Questa azione determina il panorama di esposizione dell'oggetto relativo a un attacco golden gMSA.

Nota

Il controllo consente solo di rilevare un attacco online sui dati della chiave radice KDS.

È possibile impostare il ManagedPasswordIntervalInDays parametro su 15 giorni o scegliere un valore appropriato durante la creazione di un account del servizio gestito del gruppo, perché il ManagedPasswordIntervalInDays valore diventa di sola lettura dopo la creazione di un account del servizio gestito del gruppo.

In caso di compromissione, questa impostazione può ridurre il successivo tempo in sequenza.

Ridurrà il numero teorico di account del servizio gestito del gruppo da ricreare tra la data del backup ripristinato e la fine dell'esposizione del database, o almeno, la durata della finestra di rischio fino al roll di questi account del servizio gestito del gruppo, se si usa lo scenario 1.

Ecco uno scenario di esempio:

  1. Dopo un'esposizione al database, eseguire il ripristino in "Day D".

  2. Il backup ripristinato proviene da D-15.

    Nota

    D-15 indica il giorno che è 15 giorni prima del "Giorno D".

  3. Il valore del servizio gestito ManagedPasswordIntervalInDays del gruppo è 15.

  4. gli account del servizio gestito del gruppo esistono e hanno eseguito il rollback D-1.

  5. Gli account del servizio gestito del gruppo più recenti sono stati creati da D-10.

  6. La compromissione si verifica in D-5 e alcuni account del servizio gestito del gruppo sono stati creati in questa data.

Ecco i risultati:

  1. Gli account del servizio gestito del gruppo creati tra D e D-5 non sono interessati*.

  2. Gli account del servizio gestito del gruppo creati tra D-15 (backup ripristinato) e D-5 (compromissione)* devono essere ricreati oppure le finestre di rischio devono essere considerate se è possibile attendere da D+5 fino a D+10. Ad esempio:

    • In D+5, gli account del servizio gestito del gruppo creati in D-10 devono essere ricreati.
    • In D+10 gli account del servizio gestito del gruppo creati in D-5 devono essere ricreati.

    *Dipende dall'ora esatta di compromissione o backup.

Ecco una sequenza temporale di esempio:

Diagramma di una sequenza temporale dell'account del servizio gestito del gruppo di esempio.

Per il debug, è possibile esaminare gli ID evento per il registro eventi System, Security, Directory Services e Security-Netlogon.

Per altre informazioni su una compromissione, vedere Usare le risorse di sicurezza di Microsoft e Azure per il ripristino da una compromissione sistemica delle identità.

Risoluzione

Per risolvere questo problema, usare uno degli approcci seguenti, a seconda della situazione. Gli approcci implicano la creazione di un nuovo oggetto chiave radice KDS e il riavvio del servizio di distribuzione delle chiavi Microsoft in tutti i controller di dominio del dominio.

Scenario 1: Sono disponibili informazioni affidabili sulle informazioni esposte e sui casi in cui

Se si sa che l'esposizione si è verificata prima di una determinata data e questa data è precedente alla password dell'account del servizio gestito del gruppo meno recente, è possibile risolvere il problema senza creare nuovamente gli account del servizio gestito del gruppo, come illustrato nella procedura seguente.

L'approccio consiste nel creare un nuovo oggetto chiave radice KDS sconosciuto all'utente malintenzionato. Quando gli account del servizio gestito del gruppo eseguono il rollup della password, passano all'uso del nuovo oggetto Chiave radice KDS. Per correggere gli account del servizio gestito del gruppo che hanno eseguito di recente il rollback della password usando la chiave radice KDS precedente, è necessario un ripristino autorevole per forzare un aggiornamento della password subito dopo il ripristino.

Nota

  • Non è necessario ripristinare manualmente gli account del servizio gestito del gruppo creati dopo la fine dell'esposizione del database di Dominio di Active Directory Services (AD DS). L'utente malintenzionato non conosce i dettagli di questi account e le password per questi account verranno rigenerate in base al nuovo oggetto Chiave radice KDS.
  • È consigliabile considerare l'oggetto gMSA in "modalità di manutenzione" fino al completamento della procedura e ignorare i possibili errori segnalati con gli account nel registro eventi System, Security, Directory Services e Security-Netlogon.
  • La guida presuppone che gli account del servizio gestito del gruppo siano oggetti figlio del contenitore Degli account del servizio gestito. Se gli account sono stati spostati in contenitori padre personalizzati, è necessario eseguire i passaggi correlati al contenitore Account del servizio gestito nel servizio gestito del servizio gestito in questi contenitori.
  • Un ripristino autorevole esegue il rollback di tutti gli attributi allo stato in cui si trovavano al momento del backup, inclusi gli account autorizzati a recuperare le credenziali dell'account del servizio gestito del gruppo (PrincipalsAllowedToRetrieveManagedPassword).

Nel dominio che contiene gli account del servizio gestito del gruppo da ripristinare, seguire questa procedura:

  1. Portare offline un controller di dominio e isolarlo dalla rete.

  2. Ripristinare il controller di dominio da un backup creato prima dell'esposizione del database di Active Directory Domain Services.

    Se l'intervallo di password per gli account del servizio gestito del gruppo supera l'età del backup, è possibile decidere di tollerare la finestra in cui il materiale della chiave precedente funziona ancora. Se non è possibile attendere tale tempo e il backup meno recente corrispondente manca troppi account del servizio gestito del gruppo, è necessario passare al piano allo scenario 2.

  3. Eseguire un'operazione di ripristino autorevole nel contenitore Degli account del servizio gestito del dominio. Assicurarsi che l'operazione di ripristino includa tutti gli oggetti figlio dei contenitori che potrebbero essere associati a questo controller di dominio. Questo passaggio esegue il rollback dell'ultimo stato di aggiornamento della password. La volta successiva che un servizio recupera la password, la password verrà aggiornata a una nuova in base al nuovo oggetto Chiave radice KDS.

  4. Arrestare e disabilitare il servizio di distribuzione delle chiavi Microsoft nel controller di dominio ripristinato.

  5. In un controller di dominio diverso seguire la procedura descritta in Creare la chiave radice KDS dei servizi di distribuzione chiavi per creare un nuovo oggetto Chiave radice KDS.

    Nota

    Nell'ambiente di produzione è necessario attendere 10 ore per assicurarsi che la nuova chiave radice KDS sia disponibile. Controllare l'attributo EffectiveTime per sapere quando la nuova chiave radice KDS sarà utilizzabile.

  6. Riavviare il servizio distribuzione chiavi Microsoft in tutti i controller di dominio.

  7. Creare un nuovo account del servizio gestito del gruppo. Assicurarsi che il nuovo account del servizio gestito del gruppo usi il nuovo oggetto Chiave radice KDS per creare il valore per l'attributo msds-ManagedPasswordID .

    Nota

    Questo passaggio è facoltativo, ma consente di verificare che la nuova chiave radice KDS sia attualmente in uso e usata nel servizio di distribuzione delle chiavi Microsoft.

  8. Controllare il msds-ManagedPasswordID valore del primo account del servizio gestito del gruppo creato. Il valore di questo attributo è costituito da dati binari che includono il GUID dell'oggetto chiave radice KDS corrispondente.

    Si supponga, ad esempio, che l'oggetto Chiave radice KDS abbia il seguente CN.

    Screenshot che mostra il valore dell'attributo CN di un oggetto Chiave radice KDS.

    Un account del servizio gestito del gruppo creato tramite questo oggetto ha un msds-ManagedPasswordID valore simile al seguente.

    Screenshot del valore dell'attributo msDS-ManagedPasswordId di un oggetto gMSA, che mostra come include le parti dell'attributo CN della chiave radice KDS.

    In questo valore, i dati GUID iniziano con offset 24. Le parti del GUID si trovano in una sequenza diversa. In questa immagine, le sezioni rosso, verde e blu identificano le parti riordinate. La sezione arancione identifica la parte della sequenza che corrisponde al GUID originale.

    Se il primo account del servizio gestito creato usa la nuova chiave radice KDS, anche tutti gli account del servizio gestito del gruppo successivi usano la nuova chiave.

  9. Disabilitare e arrestare il servizio di distribuzione delle chiavi Microsoft in tutti i controller di dominio.

  10. Riconnettersi e riportare online il controller di dominio ripristinato. Assicurarsi che la replica funzioni.

    Il ripristino autorevole e tutte le altre modifiche (inclusi gli account del servizio gestito del gruppo ripristinati) vengono ora replicate.

  11. Riabilitare e avviare il servizio distribuzione chiavi Microsoft in tutti i controller di dominio. I segreti degli account del servizio gestito del gruppo ripristinati verranno rollforniti e le nuove password verranno create in base al nuovo oggetto Chiave radice KDS su richiesta.

    Nota

    Se gli account del servizio gestito del gruppo vengono ripristinati ma non usati e hanno il PrincipalsAllowedToRetrieveManagedPassword parametro popolato, è possibile eseguire il Test-ADServiceAccount cmdlet nell'account del servizio gestito del gruppo ripristinato usando un'entità che è autorizzata a recuperare la password. Se è necessaria una modifica della password, questo cmdlet eseguirà il rollback degli account del servizio gestito del gruppo alla nuova chiave radice KDS.

  12. Verificare che sia stato eseguito il rollback di tutti gli account del servizio gestito del gruppo.

    Nota

    L'account del servizio gestito del gruppo senza il PrincipalsAllowedToRetrieveManagedPassword parametro popolato non verrà mai rolliato.

  13. Eliminare l'oggetto chiave radice KDS precedente e verificare le repliche.

  14. Riavviare il servizio distribuzione chiavi Microsoft in tutti i controller di dominio.

Scenario 2: non si conoscono i dettagli dell'esposizione dell'oggetto chiave radice KDS e non è possibile attendere il rollback delle password

Se non si conoscono le informazioni esposte o quando sono state esposte, tale esposizione potrebbe far parte di un'esposizione completa della foresta Active Directory. Ciò può creare una situazione in cui l'utente malintenzionato può eseguire attacchi offline su tutte le password. In questo caso, prendere in considerazione l'esecuzione di un ripristino della foresta o la reimpostazione di tutte le password dell'account. Il ripristino degli account del servizio gestito del gruppo in uno stato pulito fa parte di questa attività.

Durante il processo seguente, è necessario creare un nuovo oggetto Chiave radice KDS. Usare quindi questo oggetto per sostituire tutti gli account del servizio gestito del gruppo nei domini della foresta che usano l'oggetto chiave radice KDS esposto.

Nota

I passaggi seguenti sono simili alla procedura descritta in Introduzione agli account del servizio gestito del gruppo. Esistono tuttavia alcune modifiche importanti.

Seguire questa procedura:

  1. Disabilitare tutti gli account del servizio gestito del gruppo esistenti e contrassegnarli come account da rimuovere. A tale scopo, per ogni account impostare l'attributo userAccountControl su 4098 (questo valore combina i flag WORKSTATION_TRUST_ACCOUNT e ACCOUNTDISABLE (disabilitato).

    È possibile usare uno script di PowerShell simile al seguente per impostare gli account:

     $Domain = (Get-ADDomain).DistinguishedName
     $DomainGMSAs = (Get-ADObject -Searchbase "$Domain" -LdapFilter 'objectclass=msDS-GroupManagedServiceAccount').DistinguishedName
     ForEach ($GMSA In $DomainGMSAs)
     {
         Set-ADObject "$GMSA" -Add @{ adminDescription='cleanup-gsma' } -Replace @{ userAccountControl=4098 }
     }
    
  2. Usare un singolo controller di dominio e seguire questa procedura:

    1. Seguire la procedura descritta in Creare la chiave radice KDS di Key Distribution Services KDS per creare un nuovo oggetto Chiave radice KDS.

    2. Riavviare il servizio di distribuzione delle chiavi Microsoft. Dopo il riavvio, il servizio preleva il nuovo oggetto.

    3. Eseguire il backup dei nomi host DNS e dei nomi dell'entità servizio (SPN) associati a ogni account del servizio gestito del gruppo contrassegnato per essere rimosso.

    4. Modificare gli account del servizio gestito del gruppo esistenti per rimuovere i nomi SPN e host DNS.

    5. Creare nuovi account del servizio gestito del gruppo per sostituire gli account del servizio gestito del gruppo esistenti. Devono anche essere configurati con i nomi host DNS e i nomi SPN appena rimossi.

      Nota

      È anche necessario esaminare tutte le voci di autorizzazione usando i SID GMSA rimossi direttamente, perché non sono più risolvibili. Quando si sostituisce una voce di controllo di accesso (ACE), è consigliabile usare i gruppi per gestire le voci di autorizzazione del servizio gestito del gruppo.

  3. Controllare i nuovi account del servizio gestito del gruppo per assicurarsi che usino il nuovo oggetto Chiave radice KDS. A tale scopo, effettuare i passaggi seguenti:

    1. Si noti il CN valore (GUID) dell'oggetto Chiave radice KDS.

    2. Controllare il msds-ManagedPasswordID valore del primo account del servizio gestito del gruppo creato. Il valore di questo attributo è costituito da dati binari che includono il GUID dell'oggetto chiave radice KDS corrispondente.

      Si supponga, ad esempio, che l'oggetto Chiave radice KDS abbia il seguente CN.

      Screenshot del valore dell'attributo CN di un oggetto Chiave radice KDS.

      Un account del servizio gestito del gruppo creato tramite questo oggetto ha un msds-ManagedPasswordID valore simile all'immagine.

      Screenshot del valore dell'attributo msDS-ManagedPasswordId di un oggetto gMSA, che mostra come include le parti dell'attributo CN della chiave radice KDS.

      In questo valore, i dati GUID iniziano con offset 24. Le parti del GUID si trovano in una sequenza diversa. In questa immagine, le sezioni rosso, verde e blu identificano le parti riordinate. La sezione arancione identifica la parte della sequenza che corrisponde al GUID originale.

      Se il primo account del servizio gestito creato usa la nuova chiave radice KDS, anche tutti gli account del servizio gestito del gruppo successivi usano la nuova chiave.

  4. Aggiornare i servizi appropriati per usare i nuovi account del servizio gestito del gruppo.

  5. Eliminare gli account del servizio gestito del gruppo precedenti che usavano l'oggetto chiave radice KDS precedente usando il cmdlet seguente:

    $Domain = (Get-ADDomain).DistinguishedName
    $DomainGMSAs = (Get-ADObject -Searchbase "$Domain" -LdapFilter '(&(objectClass=msDS-GroupManagedServiceAccount)(adminDescription=cleanup-gsma))').DistinguishedName
    ForEach ($GMSA In $DomainGMSAs)
    {
        Remove-ADObject "$GMSA" -Confirm:$False
    }
    
  6. Eliminare l'oggetto chiave radice KDS precedente e verificare le repliche.

  7. Riavviare il servizio distribuzione chiavi Microsoft in tutti i controller di dominio.

Scenario 3: dimissioni di un amministratore di dominio, nessuna informazione rubata al momento ed è possibile attendere il rollback delle password

Se un membro con privilegi elevati con amministratori di dominio o diritti equivalenti si riassegna, non esiste alcuna prova dell'esposizione della chiave radice KDS al momento e si può permettersi un intervallo di tempo per la sequenza delle password. Non è necessario ricreare gli account del servizio gestito del gruppo.

Come misura preventiva, è necessario eseguire il rollback della chiave radice KDS per prevenire eventuali attacchi post-sfruttamento. Ad esempio, un ex amministratore di dominio si è rivelato non autorizzato e ha mantenuto alcuni backup.

Viene creato un nuovo oggetto Chiave radice KDS e gli account del servizio gestito del gruppo verranno automaticamente rolli.

Nota

Per una compromissione correlata a un amministratore di dominio, fare riferimento allo scenario 1 o allo scenario 2 in base a ciò che è stato esposto e seguire le attività di correzione locali in "Usare le risorse di sicurezza di Microsoft e Azure per consentire il ripristino da compromissione sistemica delle identità".

Nel dominio che contiene gli account del servizio gestito del gruppo da eseguire, seguire questa procedura:

  1. In un controller di dominio seguire la procedura descritta in Creare la chiave radice KDS di Key Distribution Services per creare un nuovo oggetto Chiave radice KDS.

    Nota

    Nell'ambiente di produzione è necessario attendere 10 ore per assicurarsi che la nuova chiave radice KDS sia disponibile. Controllare l'attributo EffectiveTime per sapere quando la nuova chiave radice KDS sarà utilizzabile.

  2. Riavviare il servizio distribuzione chiavi Microsoft in tutti i controller di dominio.

  3. Creare un nuovo account del servizio gestito del gruppo. Assicurarsi che il nuovo account del servizio gestito del gruppo usi il nuovo oggetto Chiave radice KDS per creare il valore per l'attributo msds-ManagedPasswordID .

    Nota

    Questo passaggio è facoltativo, ma consente di verificare che la nuova chiave radice KDS sia attualmente in uso e usata nel servizio di distribuzione delle chiavi Microsoft.

  4. Controllare il msds-ManagedPasswordID valore del primo account del servizio gestito del gruppo creato. Il valore di questo attributo è costituito da dati binari che includono il GUID dell'oggetto chiave radice KDS corrispondente.

    Si supponga, ad esempio, che l'oggetto Chiave radice KDS abbia il seguente CN.

    Screenshot del valore dell'attributo CN di un oggetto Chiave radice KDS.

    Un account del servizio gestito del gruppo creato tramite questo oggetto ha un msds-ManagedPasswordID valore simile all'immagine seguente.

    Screenshot del valore dell'attributo msDS-ManagedPasswordId di un oggetto gMSA, che mostra come include le parti dell'attributo CN della chiave radice KDS.

    In questo valore, i dati GUID iniziano con offset 24. Le parti del GUID si trovano in una sequenza diversa. In questa immagine, le sezioni rosso, verde e blu identificano le parti riordinate. La sezione arancione identifica la parte della sequenza che corrisponde al GUID originale.

    Se il primo account del servizio gestito creato usa la nuova chiave radice KDS, anche tutti gli account del servizio gestito del gruppo successivi usano la nuova chiave.

  5. A seconda del successivo rollfornimento della password, i segreti degli account del servizio gestito del gruppo verranno naturalmente rollforniti e le nuove password verranno create in base al nuovo oggetto Chiave radice KDS su richiesta.

    Nota

    Se gli account del servizio gestito del gruppo usati hanno eseguito il rollback, ma gli account del servizio gestito non usati con lo stesso intervallo di rollback e hanno il PrincipalsAllowedToRetrieveManagedPassword parametro popolato, è possibile eseguire il Test-ADServiceAccount cmdlet . Usa un'entità autorizzata a recuperare la password dell'account del servizio gestito del gruppo e questo passaggio sposta l'account del servizio gestito del gruppo nella nuova chiave radice KDS.

  6. Verificare che sia stato eseguito il rollback di tutti gli account del servizio gestito del gruppo.

    Nota

    L'account del servizio gestito del gruppo senza il PrincipalsAllowedToRetrieveManagedPassword parametro non verrà mai rolliato.

  7. Dopo che tutti gli account del servizio gestito del gruppo sono stati distribuiti nel nuovo oggetto Chiave radice KDS, eliminare l'oggetto chiave radice KDS precedente e verificare le repliche.

  8. Riavviare il servizio distribuzione chiavi Microsoft in tutti i controller di dominio.

Riferimenti

Panoramica degli account del servizio gestiti del gruppo

Dichiarazione di non responsabilità dei contatti di terze parti

Microsoft fornisce informazioni di contatto di terze parti per contribuire a trovare informazioni aggiuntive su questo argomento. È possibile che tali informazioni di contatto vengano modificate senza preavviso. Microsoft non garantisce l'accuratezza delle informazioni di contatto di terze parti.