Vai al contenuto principale
Approfondimenti

Ritorno alle basi: individuazione dei servizi dannosi Windows con Tanium

«Il messaggio che vorrei davvero che portaste con voi [da questa presentazione] è: se volete davvero proteggere la vostra rete, dovete conoscerla a fondo». Responsabile TAO, NSA, USENIX Enigma 2016

Una parte fondamentale del “conoscere la propria rete” consiste nel monitorare i meccanismi di persistenz endpoint i, ovvero la miriade di modi in cui un sistema operativo può caricare ed eseguire automaticamente del codice. Da oltre un decennio, i servizi in background rappresentano una delle posizioni di persistenza più comunemente utilizzate in Windows. Disponibili fin dall’epoca di Windows NT e XP, i servizi offrono un metodo affidabile per caricare in modo discreto processi e librerie in background all’avvio del sistema, all’accesso dell’utente o in seguito al verificarsi di determinate condizioni. Sebbene spesso si presti molta attenzione all’individuazione di tecniche di persistenza innovative e occulte, è importante non perdere di vista gli aspetti fondamentali, soprattutto considerando quanto sia ancora diffuso il malware basato su servizi.

In passato, monitorare attentamente i servizi di sistema in esecuzione in tutta l’azienda era un compito impossibile. Due anni fa, lo stato dell’arte consisteva in una verifica mensile accompagnata da un’approfondita analisi manuale volta a individuare eventuali anomalie. Oggi ciò può essere effettuato in modo continuo e automatizzato utilizzando la piattaforma Tanium e il suo modulo Incident Response.

Gli strumenti di accesso remoto (RAT) e altri malware possono persistere come servizi in tre modi diversi: come file eseguibili di servizio autonomi, come moduli di servizio ospitati e come componenti COM+. In questo articolo esaminerò i diversi modi in cui gli autori degli attacchi sfruttano i servizi Windows e come Tanium possa aiutarvi a Detect .

Servizi autonomi

I servizi autonomi eseguono un file eseguibile o un comando da riga di comando specificato nel valore “ImagePath” all’interno delle rispettive chiavi di registro di configurazione. Il registro di sistema Windows contiene le impostazioni di configurazione di tutti i servizi attivi presenti sotto la chiave principale “HKLM\System\CurrentControlSet\Services”.

Tanium offre da tempo la possibilità di monitorare i servizi Windows su larga scala (nell’intero inventario Windows ). Il sensore “Stato del servizio con hash MD5 ”, ad esempio, raccoglie e confronta il nome del servizio, lo stato (in esecuzione, arrestato, ecc.), la riga di comando, l’hash di ImagePath e il contesto utente in cui il servizio è in esecuzione. Ciò significa che i servizi autonomi risulteranno evidenti con un basso numero di occorrenze qualora la loro configurazione o il loro stato risultino insoliti, oppure differiscano tra istanze con lo stesso nome. Tanium Gli utenti hanno utilizzato questo sensore per identificare servizi configurati in modo errato ma legittimi in base al loro stato (come i servizi antivirus arrestati), nonché servizi non autorizzati in base al loro nome, al contesto utente, alla riga di comando o a hash ImagePath diversi per istanze di servizio con lo stesso nome.

Dal punto di vista di un malintenzionato, i servizi autonomi non sono particolarmente diffusi poiché il percorso dell’eseguibile è facilmente individuabile tramite il Gestore attività, il comando tasklist.exe o le query del Gestore dei servizi. Si consideri un malintenzionato che intenda mascherare un malware sotto il nome di un servizio legittimo, ovvero “Print Spooler”. Il percorso del file eseguibile di questo servizio è “c:\windows\system32\spoolsv.exe”. Un’istanza manomessa del servizio potrebbe caricare un file binario dannoso da un percorso o con un nome che presenta lievi variazioni, come ad esempio “c:\windows\spoolsv.exe” o “c:\windows\system32\spoolsvc.exe”. Questa tecnica è in grado di nascondere efficacemente il malware da un’analisi “a prima vista”, ma può essere facilmente aggirata mediante l’analisi statistica dell’ImagePath o della riga di comando. Tanium Sensori come “Stato del servizio con hash MD5 ” individueranno rapidamente questi valori anomali, isolandoli dal resto del gruppo per consentire ulteriori analisi e indagini.

Servizi in hosting e applicazioni COM+

I servizi in hosting sono implementati come librerie – in genere librerie di collegamento dinamico (DLL) – anziché come file eseguibili autonomi. In genere vengono caricati dal processo di hosting del servizio “ Windows ”, “svchost.exe”. La schermata riportata di seguito mostra i risultati forniti dal sensore “Service Status with MD5 Hash” di Tanium per diversi servizi in hosting, quali “Application Management” e “Base Filtering Engine”. Per ciascun servizio, l'hash fornito è quello di “svchost.exe” anziché quello della DLL ospitata.

In che modo “ Windows ” sa quale DLL caricare per un determinato servizio ospitato? La configurazione del Registro di sistema per ciascuno di questi servizi include una sottochiave e un valore, “\Parameters\ServiceDLL”, che indicano la DLL da caricare. Per motivi di efficienza e sicurezza, Windows carica inoltre i servizi ospitati in gruppi all’interno di istanze condivise del processo di hosting (anziché avviare un’istanza separata di “svchost.exe” per ciascuno di essi).

I gruppi di servizi ospitati sono configurati nella chiave di registro “HKLM\Software\Microsoft\Windows NT\CurrentVersion\Svchost”. Ciascun gruppo offre diversi livelli di accesso; “netsvcs” è uno dei gruppi con i privilegi più elevati per i servizi con accesso alla rete e, pertanto, viene spesso utilizzato dagli autori degli attacchi. Il valore “netsvcs” è un array di stringhe contenente i nomi dei servizi da caricare in questo gruppo, come illustrato nella schermata riportata di seguito.

Gli autori degli attacchi possono sfruttare i servizi in hosting per caricare una DLL dannosa in diversi modi. Un approccio consiste nello scegliere un nome di servizio ospitato che sia “non utilizzato”, ovvero per il quale non sia configurato alcun servizio nella directory “HKLM\SYSTEM\CurrentControlSet\services”. I dropper di malware potrebbero scorrere queste voci inutilizzate, creare le chiavi di registro necessarie (compreso un parametro ServiceDLL) e mantenere così la propria persistenza come servizio ospitato. Ad esempio, nelle versioni precedenti di Windows , gli autori degli attacchi prendevano spesso di mira il servizio “6to4” , presente nel gruppo “netsvcs” ma spesso inattivo in assenza di una configurazione corrispondente. L'autore dell'attacco potrebbe configurare questo servizio in modo che rimandi a un nome di DLL apparentemente plausibile, come ad esempio “c:\windows\system32\6to4svc.dll”, riuscendo così probabilmente a superare un'ispezione visiva. Un altro approccio consiste semplicemente nel modificare il parametro ServiceDLL di un servizio esistente ma disabilitato, Windows , e successivamente configurarlo in modo che si avvii automaticamente.

I servizi di sistema COM+ rappresentano un’ulteriore variante del tema dei servizi ospitati in grado di caricare DLL dannose. In questo caso, il processo “dllhost.exe” carica l’applicazione COM+, che può comprendere più componenti sotto forma di DLL. Ad esempio, il servizio ComSysApp riportato nella schermata qui sotto è responsabile dell’hosting delle applicazioni COM+. La riga di comando mostra il percorso di “dllhost.exe” e un “Processid” GUID che identifica l’applicazione COM+, mentre all’interno del codice è possibile enumerare i “componenti”. I componenti sono DLL utilizzate per l'implementazione dell'applicazione.

In sintesi, i servizi ospitati e i servizi COM costituiscono un mezzo discreto e ampiamente utilizzato per garantire la persistenza dei RAT e di altri malware. Gli analisti devono andare oltre il semplice monitoraggio dei processi o la verifica dei nomi dei servizi e degli ImagePath, per individuare i servizi che caricano DLL dannose ( Detect ).

Identificazione delle DLL di servizio non autorizzate con l' Tanium

Tanium mette a disposizione diversi sensori che consentono di monitorare Detect e analizzare facilmente le DLL di servizio su scala aziendale. In primo luogo, presenteremo un nuovo sensore, denominato “Service Module Details”, che sarà incluso nella prossima versione 3,0 della nostra soluzione di risposta agli incidenti, prevista per la fine del mese. La schermata riportata di seguito mostra un estratto dei dati forniti da questo sensore (la colonna “count” è stata omessa).

Questo sensore offre una visione integrata di tutti e tre i tipi di servizi sopra descritti. Si noti la presenza della colonna “Percorso del modulo”, oltre a quelle relative al nome del servizio e al percorso dell’immagine. Le prime due righe di questo esempio riportano il percorso di due DLL componenti per l'applicazione COM+ denominata “COMSysApp”. Gli altri risultati sono tutti gestiti da “svchost.exe” e includono il percorso della rispettiva DLL di servizio. L'analisi dello stack di questi dati, come per tutti i sensori Tanium , avviene in tempo reale. Ciò significa che è possibile individuare casi anomali di servizi che caricano DLL dannose in pochi secondi su decine o centinaia di migliaia di sistemi.

Identificazione dei membri non autorizzati dei gruppi di servizi in hosting

Nell’ultimo trimestre, l’aggiornamento relativo alla risposta agli incidenti di Tanium ha incluso un ulteriore sensore di analisi dei servizi denominato “Hosted Service Name Audit”. La schermata riportata di seguito mostra un esempio del risultato ottenuto per il gruppo “netsvcs”.

I dati forniti da questo sensore sono utili per ispezionare rapidamente l'insieme dei servizi all'interno dei gruppi di servizi su larga scala. Per ciascun gruppo, la colonna “Elenco ordinato dei nomi dei servizi ospitati” fornisce un elenco in ordine alfabetico dei nomi dei servizi. Ciò garantisce che i risultati di ciascun sistema si “sommino”; i sistemi che contengono un servizio non comune all’interno di un gruppo vengono così individuati come valori anomali. Naturalmente, i sistemi possono presentare insiemi di servizi diversi a seconda del sistema operativo e del ruolo, ma abbiamo riscontrato che i dati forniti dal sensore si raggruppano in base alla versione del sistema operativo e al tipo di piattaforma. Tanium Gli utenti possono avvalersi della funzione “drill-down” per analizzare facilmente i sistemi che presentano risultati anomali, oppure passare a “ Tanium Trace ” per esaminare i dati forensi storici relativi alla creazione di un servizio non autorizzato.

Le interessa vedere “ Tanium ” in azione? Fissate un appuntamento con per una dimostrazione individuale oppure partecipate al nostro webinar settimanale. Si rivolga ai nostri esperti di “ Tanium” in occasione dei nostri prossimi eventi “ ”.