Enumerazione Gruppi Locali: Local Groups (T1069.001)
La tecnica T1069.001 — Local Groups rientra nella tattica TA0007 (Discovery) del framework MITRE ATT&CK e descrive il tentativo di enumerare i gruppi locali di un sistema compromesso e la loro composizione. Nella kill chain si colloca subito dopo l'accesso iniziale e prima delle fasi di privilege escalation e lateral movement: l'attaccante ha bisogno di sapere quali account godono di privilegi elevati, in particolare chi appartiene al gruppo administrators locale, per pianificare i movimenti successivi.
Gli strumenti nativi del sistema operativo sono i preferiti perché non richiedono deploy di binari aggiuntivi e riducono la superficie di rilevamento: net localgroup su Windows, dscl . -list /Groups su macOS e groups o getent group su Linux forniscono le informazioni necessarie senza sollevare allarmi immediati.
L'impatto operativo è notevole. Dai dati MITRE ATT&CK emergono 7 gruppi APT, 21 famiglie di software e 3 campagne documentate che impiegano questa tecnica, con attori statuali come Turla, OilRig, Volt Typhoon e Chimera che la integrano nei propri playbook post-exploitation. La ricorrenza di net localgroup administrators nei log di intrusioni ransomware e campagne di spionaggio la rende un segnale debole ma estremamente diffuso, difficile da distinguere dall'attività amministrativa legittima senza un contesto comportamentale adeguato.
Durante un ingaggio red team la scoperta dei gruppi locali è un passaggio quasi obbligato subito dopo aver ottenuto una shell su un endpoint. Su Windows il comando canonico è net localgroup, che elenca tutti i gruppi locali, seguito da net localgroup administrators per estrarre i membri del gruppo amministrativo. Varianti utili includono net localgroup "Remote Desktop Users" per identificare account con accesso RDP e net localgroup "Backup Operators", gruppo spesso trascurato ma con privilegi sufficienti a leggere file protetti.
PowerShell offre alternative meno rumorose sui sistemi moderni. Il cmdlet Get-LocalGroup restituisce l'elenco completo, mentre Get-LocalGroupMember -Group Administrators enumera i membri senza invocare net.exe, spesso soggetto a monitoraggio più stretto. Su sistemi con AMSI attivo conviene valutare l'uso diretto delle API Win32 tramite NetLocalGroupEnum e NetLocalGroupGetMembers per bypassare il logging di command line.
Su Linux la triade classica comprende groups, id e la lettura diretta di /etc/group. Per l'utente corrente basta id, mentre getent group fornisce anche i gruppi provenienti da NSS (LDAP, SSSD). Per identificare account con privilegi sudo si controlla il gruppo wheel o sudo con getent group sudo. Su macOS lo standard è dscl . -list /Groups seguito da dscl . -read /Groups/admin GroupMembership per verificare chi appartiene al gruppo admin locale.
Sul fronte offensivo diversi framework automatizzano il processo. Cobalt Strike (a pagamento) integra il comando net nella propria beacon shell e permette esecuzione tramite execute-assembly di tool .NET come SharpView (open source). PoshC2 (open source) espone il modulo Get-LocAdm dedicato all'enumerazione dei gruppi locali. SILENTTRINITY (open source) offre moduli equivalenti basati su .NET/IronPython, mentre BloodHound (open source) con il collector SharpHound raccoglie appartenenze ai gruppi locali su larga scala per mappare percorsi di attacco.
In ottica lab-safe è utile combinare l'enumerazione con la verifica del token corrente tramite whoami /groups e whoami /priv, così da correlare l'appartenenza ai gruppi con i privilegi effettivi del processo. Su ESXi, sebbene fuori scope diretto, si può ottenere informazione equivalente leggendo /etc/group via SSH. Documentare il timing esatto dei comandi eseguiti aiuta poi il team difensivo a calibrare le regole di detection senza inseguire falsi positivi generati da normali script amministrativi.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo