Rilevamento Lingua di Sistema: System Language Discovery (T1614.001)
La tecnica T1614.001 — System Language Discovery rientra nella tattica TA0007 (Discovery) e descrive il comportamento con cui un attaccante interroga il sistema compromesso per determinarne la lingua e il layout di tastiera, con l'obiettivo di inferire la posizione geografica della vittima. Questa informazione non è fine a sé stessa: guida decisioni operative critiche, come proseguire l'infezione o autoterminarsi silenziosamente.
Su Windows la raccolta avviene tipicamente tramite lettura della chiave di registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language o chiamate ad API native come GetUserDefaultUILanguage, GetSystemDefaultUILanguage, GetKeyboardLayoutList e GetUserDefaultLangID. Su macOS e Linux l'attaccante può leggere la variabile d'ambiente $LANG o interrogare locale.
La portata del fenomeno è significativa: i dati MITRE ATT&CK mappano 4 gruppi APT, 31 famiglie malware e 1 campagna documentata che implementano questo controllo. La logica ricorrente è la geofencing evasion: numerose famiglie ransomware e infostealer (Ryuk, REvil, LockBit 2.0/3.0, Clop, DEATHRANSOM, Avaddon, Cuckoo Stealer) terminano l'esecuzione se rilevano lingue riconducibili a Russia o paesi CIS, riducendo il rischio di scrutinio da parte delle forze dell'ordine locali. All'opposto, malware come SharpStage, DropBook e Spark eseguono solo su sistemi in lingua araba, mentre Flagpro cerca giapponese, taiwanese o inglese, dimostrando come lo stesso pattern tecnico serva sia difesa dell'operatore sia targeting selettivo.
Per un red team, simulare T1614.001 richiede la riproduzione fedele delle chiamate API e delle query di registro utilizzate dai malware documentati, senza attivare la componente distruttiva.
Su Windows la via più diretta è PowerShell. La lettura della chiave di registro replica il comportamento di Ryuk:
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Language' -Name InstallLanguage
Per emulare le chiamate API come fanno Maze, REvil e Zeus Panda, un piccolo wrapper .NET risulta efficace:
[System.Globalization.CultureInfo]::InstalledUICulture [System.Globalization.CultureInfo]::CurrentCulture
La lista dei layout di tastiera, replicando SynAck e Cuba, si ottiene con Get-WinUserLanguageList oppure interrogando direttamente GetKeyboardLayoutList tramite P/Invoke in C#. Per una demo command-line che imita IcedID, il one-liner cmd.exe /c chcp restituisce il code page attivo.
Su Linux e macOS la raccolta è banale: locale, echo $LANG, localectl status su distribuzioni systemd. Su macOS il comando defaults read -g AppleLocale restituisce la locale utente, mentre osascript -e 'user locale of (get system info)' replica esattamente il payload AppleScript usato da XCSSET.
Per l'integrazione in un implant di laboratorio, framework come Sliver (open source) e Mythic (open source) espongono già primitive di host discovery che includono la locale nel beacon iniziale. Cobalt Strike (a pagamento) dispone del comando integrato per interrogare le informazioni di sistema tramite Beacon Object Files personalizzati. Un red team maturo scrive un BOF minimale che chiama direttamente GetUserDefaultUILanguage via GetProcAddress su kernel32.dll, evitando la creazione di processi figli e riducendo la telemetria generata.
Per riprodurre la logica di geofencing evasion in un esercizio di adversary emulation, si può costruire un dropper che confronta l'output di GetUserDefaultLangID con una blacklist (0x419 russo, 0x422 ucraino, 0x423 bielorusso) e termina se corrisponde. Atomic Red Team (open source) include test specifici per T1614.001 che coprono sia le query di registro sia le chiamate API, utilizzabili come baseline per validare la detection del SOC.
In contesti ESXi o Linux server, la lettura di /etc/default/locale o /etc/locale.conf fornisce la stessa informazione senza necessità di privilegi elevati, replicando il pattern osservato in Cuckoo Stealer che verifica la variabile LANG prima di procedere.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo