Enumerazione Processi: Process Discovery (T1057)
La tecnica T1057 - Process Discovery appartiene alla tattica TA0007 (Discovery) del framework MITRE ATT&CK e rappresenta una delle attività post-compromissione più diffuse. Un attaccante che ha ottenuto accesso a un sistema cerca di enumerare i processi in esecuzione per comprendere il software installato, identificare soluzioni di sicurezza, individuare processi target per injection o semplicemente orientarsi nell'ambiente prima di decidere le mosse successive.
La portata di questa tecnica è ampia: 40 gruppi APT documentati, oltre 255 famiglie di malware e 9 campagne di rilievo la utilizzano. In ambiente Windows si affidano tipicamente a tasklist, Get-Process o alle API native come CreateToolhelp32Snapshot. Su sistemi Unix-like (Linux, macOS, ESXi) prevale il comando ps o l'enumerazione diretta della pseudo-filesystem /proc. Sui network device i comandi CLI come show processes offrono visibilità equivalente.
L'impatto operativo è indiretto ma strategico: l'informazione raccolta guida decisioni successive come la scelta del processo per Process Injection, l'identificazione di EDR da evadere o la selezione di credential store da attaccare. La detection è complicata dal fatto che questi comandi sono nativi e legittimamente utilizzati da amministratori, richiedendo analisi comportamentale contestuale piuttosto che semplice pattern matching.
In un ingaggio red team, l'enumerazione dei processi è tra le prime azioni post-exploitation. Su Windows il comando canonico è tasklist /v che restituisce nome, PID, sessione e utente proprietario. La variante tasklist /svc mappa i servizi ai processi ospitanti, utile per identificare svchost specifici, mentre tasklist /m elenca i moduli caricati per ogni processo — informazione preziosa per individuare DLL di EDR o hook di sicurezza.
In PowerShell il cmdlet Get-Process offre output oggetto-orientato integrabile in pipeline. Per ottenere anche il path dell'eseguibile e la command line completa conviene interrogare WMI: Get-WmiObject Win32_Process | Select Name, ProcessId, ParentProcessId, CommandLine. Questo approccio rivela argomenti sensibili passati a linea di comando, come password o token.
Per operazioni più stealth, l'invocazione diretta delle API native tramite C# o C++ evita di spawnare processi figli sospetti. La sequenza CreateToolhelp32Snapshot → Process32First → Process32Next replica l'enumerazione senza toccare binari LOLBAS. Alternative moderne come NtQuerySystemInformation con la classe SystemProcessInformation forniscono l'elenco completo bypassando alcuni hook user-mode.
Su Linux la scelta ricade su ps aux o ps -ef per output completo. L'enumerazione diretta di /proc — iterando le directory numeriche e leggendo /proc/[PID]/cmdline, /proc/[PID]/exe e /proc/[PID]/status — è più silenziosa e permette filtri custom senza dipendere dal binario ps (che potrebbe essere sostituito da rootkit). Su macOS ps aux funziona identicamente e AppleScript può interrogare le applicazioni GUI con System Events.
In ambiente ESXi il comando esxcli system process list fornisce dettagli su tutti i processi del VMkernel, mentre su router Cisco IOS il classico show processes cpu aiuta a identificare processi ad alto consumo, potenziale target per interferenza operativa.
Strumenti da laboratorio utili includono Sliver (open source), Mythic (open source) e Cobalt Strike (a pagamento) che integrano moduli di process discovery nel loro post-exploitation toolkit. SharpHound (open source) e PowerSploit (open source) offrono cmdlet dedicati all'enumerazione arricchita. Per simulazioni realistiche, Atomic Red Team (open source) include atomici mappati esplicitamente su T1057, riproducibili in lab per validare la copertura di detection.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo