Environmental Keying: Crittografia che Riconosce la Vittima (T1480.001)

L'Environmental Keying rappresenta una delle tecniche più sofisticate nel repertorio degli attaccanti moderni. Questa metodologia sfrutta elementi specifici dell'ambiente target per generare chiavi crittografiche, rendendo il payload eseguibile solo sul sistema designato.

La tecnica si colloca nella tattica TA0005 (Defense Evasion) e permette agli avversari di vincolare l'esecuzione del malware a condizioni ambientali precise. Serial number dei volumi, hostname specifici, domini Active Directory o versioni software diventano ingredienti per derivare la chiave di decifratura.

Due gruppi APT hanno dimostrato particolare maestria nell'implementazione: Equation e APT41. Quest'ultimo ha perfezionato l'approccio utilizzando DPAPI per legare i payload a specifici account utente su macchine precise. 8 famiglie di malware documentate implementano varianti di questa tecnica, da ROKRAT che verifica hostname specifici a Ninja che genera chiavi basate sul serial number del disco.

L'impatto sulla difesa è significativo: l'analisi in sandbox diventa inefficace, il reverse engineering richiede accesso all'ambiente originale e la condivisione di sample per analisi collaborative perde efficacia.

Iniziamo con l'approccio classico basato sul volume serial number di Windows. Il comando wmic path Win32_LogicalDisk get VolumeSerialNumber estrae il valore che diventerà parte della nostra chiave. PowerPunch utilizza esattamente questa tecnica per generare chiavi XOR uniche per ogni vittima.

Per replicare l'approccio di APT41 con DPAPI, il processo diventa più articolato. Prima cifriamo il payload legandolo all'utente corrente:

[System.Security.Cryptography.ProtectedData]::Protect($bytes, $null, 'CurrentUser')

Questo garantisce che solo l'utente specifico su quella macchina possa decifrare il contenuto. InvisiMole porta questa tecnica all'estremo, cifrando ogni componente con DPAPI per evadere la detection.

Su Linux, l'estrazione di valori ambientali richiede un approccio diverso. Il comando cat /sys/class/dmi/id/product_serial fornisce il serial number hardware, mentre hostname -f restituisce il FQDN completo. Combinando questi valori con SHA256 si genera una chiave robusta:

echo -n "$(cat /sys/class/dmi/id/product_serial)$(hostname -f)" | sha256sum

TONESHELL dimostra un'implementazione particolarmente elegante. Il malware genera GUID univoci per ogni dispositivo vittima, utilizzando computer name e valori di configurazione per la derivazione delle chiavi. La verifica avviene prima del payload principale, garantendo che l'esecuzione fallisca silenziosamente in ambienti non target.

Per testare in laboratorio, create uno script che verifichi multiple condizioni ambientali prima della decifratura. Controllate dominio AD con $env:USERDNSDOMAIN, enumerate share di rete specifiche con net view, verificate software installato tramite registry. Solo quando tutte le condizioni combaciano, procedete con la decifratura del payload utilizzando la chiave derivata.

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

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.