Cifratura Reversibile: Reversible Encryption (T1556.005)

La tecnica T1556.005 - Reversible Encryption descrive l'abuso di una proprietà di Active Directory che, se abilitata, consente di memorizzare le password in una forma decifrabile anziché come hash unidirezionale. La proprietà AllowReversiblePasswordEncryption nasce per garantire compatibilità con protocolli legacy come CHAP, MS-CHAP e Digest Authentication, ma trasforma il directory service in un vettore di esfiltrazione credenziali in chiaro.

MITRE ATT&CK associa questa tecnica a tre tattiche: TA0003 (Persistence), perché l'abilitazione persistente della proprietà garantisce accesso continuo alle credenziali future; TA0005 (Defense Evasion), poiché la modifica avviene attraverso strumenti amministrativi legittimi come GPO o PowerShell; e TA0006 (Credential Access), in quanto il fine ultimo è ottenere password in chiaro senza dover ricorrere a cracking offline.

Un attaccante con privilegi sufficienti può abilitare la proprietà via Set-ADUser -AllowReversiblePasswordEncryption $true, tramite Group Policy, oppure applicando una Fine-Grained Password Policy (FGPP) a domini con functional level Windows Server 2008 o superiore. Le password modificate successivamente vengono cifrate con una chiave derivabile da quattro componenti (G$RADIUSCHAP, G$RADIUSCHAPKEY, G$MSRADIUSCHAPKEY e la chiave statica in RASSFM.DLL), rendendo banale la ricostruzione del plaintext. L'impatto è particolarmente severo negli ambienti dove account privilegiati o service account cambiano password dopo l'attivazione, esponendo credenziali critiche senza necessità di attacchi computazionalmente costosi.

Un red teamer che voglia simulare T1556.005 in laboratorio parte tipicamente da un accesso con privilegi di Domain Admin o comunque delegati sull'attributo userAccountControl. Il flag da manipolare è ENCRYPTED_TEXT_PASSWORD_ALLOWED (valore 0x0080), che corrisponde alla proprietà AllowReversiblePasswordEncryption.

L'abilitazione via PowerShell è diretta usando il modulo ActiveDirectory (open source, incluso nei RSAT Microsoft):

Set-ADUser -Identity target.user -AllowReversiblePasswordEncryption $true

La modifica non ha effetto retroattivo: la password in chiaro viene memorizzata solo al successivo cambio. Per forzare il refresh in un lab, l'operatore può richiedere il cambio password all'utente oppure impostarlo direttamente con Set-ADAccountPassword. Per un impatto più ampio, l'attivazione via Fine-Grained Password Policy consente di applicare la proprietà a interi gruppi:

New-ADFineGrainedPasswordPolicy -Name "LegacyCompat" -Precedence 100 -ReversibleEncryptionEnabled $true

seguito da Add-ADFineGrainedPasswordPolicySubject per legare la policy a un gruppo bersaglio.

La fase di estrazione richiede accesso al database NTDS.dit e al SYSTEM hive. Il tool di riferimento è secretsdump.py dalla suite Impacket (open source), che con il flag -just-dc-user può estrarre le credenziali di account specifici. Per gli utenti con reversible encryption abilitata, le password in chiaro appaiono nella sezione dedicata dell'output.

Un'alternativa on-host è Mimikatz (open source): il modulo lsadump::dcsync replica il comportamento di un domain controller e recupera i secreti, mentre lsadump::secrets estrae le LSA secrets locali necessarie per la decifratura quando si opera direttamente su un DC compromesso.

Per una catena completa d'attacco, uno scenario realistico è: compromissione iniziale di un account con delega su una OU, abilitazione FGPP mirata a service account privilegiati, attesa (o induzione) del cambio password tramite ingegneria sociale o forzatura amministrativa, quindi DCSync per raccogliere le credenziali in chiaro.

In laboratorio è utile verificare lo stato corrente della proprietà con:

Get-ADUser -Filter * -Properties AllowReversiblePasswordEncryption | Where-Object {$_.AllowReversiblePasswordEncryption -eq $true}

e controllare le FGPP esistenti con *Get-ADFineGrainedPasswordPolicy -Filter *. Questi comandi sono anche la base della fase di ricognizione post-exploitation per identificare account già configurati come bersagli a basso costo.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.