Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Aprile! Scopri di più
Quando un attaccante mette piede su un sistema compromesso, una delle prime domande che si pone è semplice: chi altro vive qui? La tecnica Local Account Discovery consiste nell'enumerazione degli account utente configurati localmente su una macchina, ed è una delle operazioni di ricognizione post-compromise più diffuse in assoluto. Si colloca nella fase Discovery (TA0007) della kill chain, quella in cui l'avversario esplora l'ambiente per orientarsi prima di agire.
I numeri parlano da soli: 18 gruppi APT documentati, 44 software diversi e almeno 1 campagna nota (Operation CuckooBees) sfruttano questa tecnica. La ragione è banale — i comandi necessari sono nativi del sistema operativo. Su Windows bastano net user e net localgroup; su Linux si legge /etc/passwd o si eseguono id e groups; su macOS si usa dscl . list /Users; su ESXi il comando è esxcli system account list. Nessun malware da caricare, nessun exploit da lanciare: gli strumenti sono già tutti a bordo.
L'output di questa ricognizione è prezioso. Sapere quali account esistono — soprattutto quelli con privilegi amministrativi — consente all'attaccante di pianificare movimenti laterali, privilege escalation e persistenza. Una singola mitigazione è documentata a livello di configurazione del sistema operativo, il che rende la detection comportamentale il vero perno della difesa.
L'enumerazione degli account locali è il punto di partenza di quasi ogni esercizio di post-exploitation. In un engagement red team, l'obiettivo è dimostrare quante informazioni un attaccante può raccogliere senza caricare nulla sul disco, utilizzando esclusivamente i tool nativi del sistema — la cosiddetta tecnica living-off-the-land.
Su Windows, la catena classica parte dal comando più semplice e scala verso output più strutturati. Inizia con il banale:
net user
Questo restituisce la lista completa degli account locali. Per identificare subito chi ha privilegi elevati, il passo successivo è naturale:
net localgroup administrators
Se vuoi un approccio più silenzioso rispetto ai log tradizionali, PowerShell offre cmdlet nativi che restituiscono oggetti strutturati:
Get-LocalUser | Select-Object Name, Enabled, LastLogon
Get-LocalGroupMember -Group "Administrators"
Per un esercizio più avanzato, puoi replicare l'approccio WMI, spesso usato da malware come Bazar e Valak per identificare account amministrativi senza invocare net.exe:
Get-WmiObject -Class Win32_UserAccount -Filter "LocalAccount=True"
Su Linux, l'enumerazione è ancora più diretta. Il file /etc/passwd è leggibile da qualsiasi utente per impostazione predefinita, e con un semplice filtro puoi isolare gli account interattivi:
awk -F: '$3 >= 1000 && $7 !~ /nologin|false/ {print $1}' /etc/passwd
I comandi id e groups completano il quadro mostrando appartenenze ai gruppi per l'utente corrente. Per enumerare chi fa parte del gruppo sudo:
getent group sudo
Su macOS, la catena riproduce il comportamento documentato per gruppi come APT32:
dscl . list /Users | grep -v '^_'
Il filtro rimuove gli account di sistema (prefissati con underscore), lasciando solo gli utenti reali. Il comando dscacheutil -q user fornisce dettagli aggiuntivi come la home directory e la shell di default.
Per gli ambienti ESXi, spesso trascurati nei pentest ma sempre più bersagliati, il comando è:
esxcli system account list
In un lab, BloodHound (open source) rappresenta lo standard per visualizzare le relazioni tra account locali e privilegi attraverso la rete. Anche PoshC2 (open source) e Empire (open source) includono moduli specifici per l'enumerazione locale. Se usi Pupy (open source), i moduli PowerView e Pywerview automatizzano l'intero ciclo di discovery.
La raccomandazione operativa: documenta sempre la sequenza temporale dei comandi eseguiti, perché il blue team dovrà correlarli per costruire le proprie regole di detection.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo