L’elevazione dei privilegi (privilege escalation) è una tecnica utilizzata dagli aggressori per acquisire livelli più elevati di autorità o controllo su un sistema. Il caso più comune è l’attacco che consente l’ottenimento dei privilegi di amministratore da un account utente dotato di diritti limitati. Questo tipo di aggressione è utilizzata dai malintenzionati per ottenere accesso e controllo su risorse protette o per eseguire azioni dannose che richiedono autorizzazioni elevate.
Ci sono diverse vie attraverso le quali un attaccante può tentare di effettuare un’elevazione dei privilegi in un sistema Windows: è possibile sfruttare vulnerabilità di sicurezza, bug presenti all’interno delle applicazioni che permettono l’esecuzione di comandi facendo leva su un ventaglio di diritti più ampio rispetto a quelli posseduti, manipolazione dei diritti e delle autorizzazioni.
I ricercatori di Deep Instinct hanno messo a punto l’innovativo software NoFilter che facilita l’acquisizione di privilegi elevati sui sistemi Windows permettendo l’esecuzione di comandi con i diritti SYSTEM.
Cos’è Windows Filtering Platform (WFP)
Windows Filtering Platform (WFP) è un framework di filtraggio e controllo dei pacchetti introdotto da Microsoft con Windows Vista e confermato nelle successive versioni del sistema operativo. È progettato per consentire ai programmatori di sviluppare applicazioni di sicurezza, firewall, antivirus e altri software di rete che possono interagire direttamente con il livello di filtraggio dei pacchetti in Windows.
WFP offre un’interfaccia di programmazione (API) che consente agli sviluppatori di scrivere applicazioni che possono ispezionare, filtrare, modificare o bloccare il traffico di rete in entrata e in uscita. Questo livello di controllo granulare rende più semplice ed efficace l’implementazione di soluzioni di sicurezza avanzate e personalizzate.
Elevazione dei privilegi possibile facendo leva su WFP
Gli esperti di Deep Instinct spiegano che NoFilter fa leva proprio sul funzionamento di WFP per mettere l’utente nelle condizioni di elevare i privilegi associati al suo account Windows.
Il primo metodo adoperato da NoFilter consiste nella duplicazione dei token di accesso ovvero le porzioni di codice che identificano gli utenti e i loro permessi nel contesto di sicurezza dei vari thread e processi. Quando un thread esegue un’attività privilegiata, appositi identificativi di sicurezza permettono di accertarsi che il token abbia davvero il livello di accesso necessario.
La funzione NtQueryInformationProcess
consente di ottenere la tabella degli handle, con tutti i token associati a un processo. Un handle è un tipo di dato che rappresenta una risorsa di sistema o un oggetto che può essere utilizzato da un’applicazione o da un processo per interagire con quella risorsa o oggetto. Gli handle sono utilizzati per identificare e gestire risorse come file, socket di rete, finestre, processi, thread, registri e molte altre entità del sistema, tra cui – appunto – i token autorizzativi.
Come spiegano i ricercatori, gli handle associati ai token possono essere duplicati per consentire a un altro processo di acquisire i privilegi SYSTEM. Lo strumento NoFilter abusa di WPF per duplicare un token e ottenere così un’escalation dei privilegi sul sistema della vittima.
Evitando qualunque chiamata diretta alla funzione DuplicateHandle
, normalmente utilizzabile per duplicare un handle, l’attacco con NoFilter si fa ancora più furtivo e silenzioso tanto che la maggior parte delle soluzioni per la sicurezza non riescono a cogliere e neutralizzare il comportamento sospetto.
Connessione IPSec e abuso del servizio Spooler di stampa
Il secondo metodo di aggressione utilizzato da NoFilter prevede l’attivazione di una connessione IPSec e l’abuso del servizio Spooler di stampa per inserire un token SYSTEM nella tabella degli handle.
L’applicazione usa dapprima la funzione RpcOpenPrinter
per recuperare l’handle di una stampante configurata sul sistema quindi si serve di una serie di richieste I/O per recuperare un token SYSTEM. A questo punto, il token viene sfruttato per eseguire codice arbitrario.
I ricercatori osservano che questa seconda modalità di attacco è ancora più difficile da rilevare rispetto alla prima, vista in precedenza, poiché la configurazione di una policy IPSec è un’azione tipicamente eseguita da utenti privilegiati legittimi, come gli amministratori di rete.
Manipolare il servizio di gestione degli utenti in Windows
Una terza modalità di attacco, spiegano da Deep Instinct, consiste nell’ottenimento del token di un altro utente già connesso alla macchina. In questo caso si cercano i server RPC (Remote Procedural Call) in esecuzione e associati a ciascun utente che espongono un’interfaccia con la quale risulta possibile dialogare.
Per ottenere il token e avviare un processo arbitrario con le autorizzazioni di un account configurato sulla macchina, i ricercatori hanno quindi fatto leva sul servizio OneSyncSvc
e sulla libreria SyncController.dll
, da oggi diventati a pieno titolo componenti di sistema che eventuali aggressori possono sfruttare.
Come rilevare le tattiche poste in essere da NoFilter
È improbabile che, considerato lo strettissimo legame con il funzionamento di un componente come WFP, che lavora a basso livello, Microsoft possa intervenire sul codice di Windows.
Nonostante gli attacchi perpetrabili con NoFilter siano “poco rumorosi” rispetto ad altri metodi, Deep Instinct suggerisce comunque alcuni approcci per rilevare i tre attacchi e consiglia agli amministratori di sistema di dotarsi di procedure automatizzate in grado di rilevare i seguenti eventi:
- Configurazione di nuovi criteri IPSec che non corrispondono alla configurazione di rete già nota.
- Rilevamento di chiamate RPC a Spooler/OneSyncSvc mentre è attivo un criterio IPSec.
- Riconoscimento di tentativi di attacchi brute force sul LUID di un token tramite chiamate ripetute alla funzione
WfpAleQueryTokenById
. Il LUID (Local Unique Identifier) è un identificativo univoco associato a un token di sicurezza. - Rilevamento delle richieste I/O dirette al componente WfpAle (WFP Application Layer Enforcement) effettuate da processi diversi dal BFE (Base Filtering Engine), ovvero il servizio di Windows che gestisce le regole di filtraggio del firewall di sistema.
Credit immagine in apertura: iStock.com/LumerB
Le immagini nell’articolo sono tratte dalla nota tecnica di Deep Instinct.