Enumerazione Finestre Applicative: Application Window Discovery (T1010)
La tecnica T1010 - Application Window Discovery rientra nella tattica TA0007 (Discovery) del framework MITRE ATT&CK e descrive il comportamento con cui un attore ostile enumera le finestre applicative aperte su un sistema compromesso. L'obiettivo è duplice: ricostruire il contesto d'uso della macchina — quali applicazioni sta utilizzando l'utente in un dato momento — e identificare la presenza di strumenti di sicurezza da eludere, riconducendosi così anche alla logica di Security Software Discovery.
Si tratta di una fase post-compromissione tipicamente silente, che sfrutta funzioni native del sistema operativo come le API user32.dll su Windows (EnumWindows, GetForegroundWindow, GetWindowText, FindWindow), utility X11 su Linux o API Cocoa/AppleScript su macOS. Proprio perché basata su chiamate legittime, la tecnica genera pochissimo rumore ed è spesso integrata in moduli keylogger per associare il testo digitato all'applicazione di destinazione.
I dati MITRE censiscono 3 gruppi APT e 32 famiglie di malware che implementano questa capacità, tra cui Lazarus Group, HEXANE e Volt Typhoon, insieme a strumenti come PoisonIvy, ROKRAT, QakBot, DarkGate e TONESHELL. L'ampia diffusione e la trasversalità geografica confermano che l'enumerazione delle finestre è un mattone quasi universale nei toolkit offensivi, sia in campagne di cybercrime finanziario sia in operazioni state-sponsored orientate allo spionaggio.
Durante un ingaggio red team, l'enumerazione delle finestre è utile per due obiettivi: profilare l'utente compromesso (individuare browser, client di posta, wallet crypto, console amministrative aperte) e identificare EDR o AV in esecuzione tramite i titoli delle loro finestre di gestione.
Su Windows, l'approccio più basilare passa da PowerShell, che espone la proprietà MainWindowTitle dei processi:
Get-Process | Where-Object {$_.MainWindowTitle} | Select-Object ProcessName, MainWindowTitle
Per un livello più realistico rispetto ai payload malware osservati, si può invocare direttamente user32.dll via P/Invoke in un runner C# o in PowerShell, replicando la logica di ROKRAT e NightClub che usano GetForegroundWindow seguito da GetWindowText per catturare il titolo della finestra attiva. FunnyDream utilizza invece EnumWindows per iterare tutte le top-level window, pattern facilmente riproducibile in un modulo Cobalt Strike (a pagamento) o Sliver (open source).
Framework di post-exploitation come SILENTTRINITY (open source) integrano nativamente moduli tipo GetActiveWindowTitle, utili per keylogger context-aware. Meterpreter (open source, incluso in Metasploit) espone il comando enumdesktops e keyscan_start con enumerazione delle finestre associate. Per operazioni più chirurgiche, NirSoft WinLister (gratuito) restituisce la lista completa delle finestre in formato CSV/HTML, utile in scenari hands-on-keyboard.
Su Linux, in presenza di sessione grafica, le utility X11 sono lo standard: wmctrl -l (open source) elenca le finestre gestite dal window manager, mentre xdotool search --name "."* (open source) consente ricerche pattern-based sui titoli. In ambienti Wayland la superficie è più ridotta e richiede accesso al compositor.
Su macOS, l'equivalente è ottenibile via AppleScript:
osascript -e 'tell application "System Events" to get name of every window of every process'
oppure invocando CGWindowListCopyWindowInfo da un binario Objective-C/Swift, tecnica usata da impianti macOS avanzati.
In un percorso di attacco realistico, l'enumerazione finestre si concatena con Screen Capture (T1113) — come fanno Catchamas e Attor, che decidono quando screenshottare in base al titolo — e con Keylogging (T1056.001) per contestualizzare le sequenze catturate. La chiave per un red team è mantenere il rate delle chiamate API basso e distribuirle nel tempo per non attivare regole basate su enumerazione rapida successiva.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo