Spiegazione del fenomeno del “DLL hijacking”
Il “DLL Hijacking”, comunemente noto come “load order hijacking” o “search order hijacking”, è una tecnica di persistenza del malware ampiamente documentata che continua a sfuggire al rilevamento e a rappresentare una sfida significativa per gli investigatori. Per chi non avesse familiarità con questa tecnica, non si preoccupi! In questo articolo illustreremo brevemente il contesto relativo al fenomeno dell’“hijacking dell’ordine di carico” e presenteremo una nuova funzionalità di Tanium per il rilevamento su larga scala.
Windows non richiede che le applicazioni specifichino il percorso completo delle librerie di collegamento dinamico (DLL) caricate in fase di esecuzione. Qualora non venga specificato un percorso completo, Windows tenta di individuare la DLL effettuando una ricerca in posizioni prestabilite secondo un ordine prevedibile. Pertanto, è possibile che un malintenzionato sovrascriva tale ordine aggiungendo una DLL dannosa, con lo stesso nome della versione legittima, in una posizione precedente rispetto alla libreria legittima; ciò induce il sistema operativo a caricare inavvertitamente la DLL dannosa. Se un’applicazione carica una DLL (ad esempio ntshrui.dll) indicando solo il nome, Windows segue un ordine definito pubblicamente per identificare e caricare la prima libreria trovata con il nome “ntshrui.dll”.
Supponendo che la “Modalità di ricerca DLL sicura” sia abilitata (come avviene per impostazione predefinita), il sistema operativo verificherà innanzitutto se una DLL con lo stesso nome sia già caricata in memoria oppure se la DLL sia definita nella chiave di registro “KnownDLLs” (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs). Se nessuna di queste condizioni è soddisfatta, Windows caricherà le librerie secondo il seguente ordine:
- La directory da cui è stata avviata l'applicazione
- La directory di sistema (C:\Windows\System32)
- La directory di sistema a 16 bit (C:\Windows\System)
- La directory “ Windows ”
- La directory corrente
- Directory definite nelle variabili PATH
L'ordine di caricamento è descritto in modo più dettagliato da Microsoft qui:
Libreria delle DLL note
Su qualsiasi sistema Windows , la superficie di attacco, rappresentata dal numero di punti potenzialmente vulnerabili, è molto più ampia di quanto si possa immaginare. Come regola generale, le applicazioni eseguite al di fuori di “C:\Windows\System32” ” che caricano una libreria senza specificarne il percorso completo costituiscono potenziali obiettivi. Nota: la libreria in questione non deve inoltre essere già presente in memoria né figurare nel valore di registro KnownDLLs. È stato dimostrato che anche i file binari del sistema di base, in particolare explorer.exe, presentano delle vulnerabilità (https://capec.mitre.org/data/definitions/471.html (si apre in una nuova scheda)).
Una libreria dannosa progettata in modo adeguato può fungere da “canale di transito” per la libreria legittima, preservando la stabilità dell’applicazione vulnerabile che la carica. Il semplice elenco delle applicazioni in esecuzione o delle posizioni di archiviazione più comuni non costituisce un metodo efficace per individuare l’attacco. Nel complesso, l’ampia gamma di applicazioni potenzialmente vulnerabili e di DLL caricate ha messo in difficoltà molti ricercatori che hanno tentato di Detect questa tecnica.
Tanium'Modulo di risposta agli incidenti (versione 2,3,1)
L'ultima versione del modulo Incident Response (versione 2,3,1) di Tanium include un nuovo sensore denominato “DLL Load Order Hijacking Search”. Questa funzionalità è stata progettata per aiutare le organizzazioni a Detect prevenire il dirottamento dell’ordine di caricamento delle DLL su larga scala. Il sensore opera esaminando le DLL caricate dai processi in esecuzione e applica diverse strategie euristiche e fasi di filtraggio per individuare le situazioni in cui potrebbe essersi verificato un dirottamento. Quando viene individuato un processo potenzialmente compromesso, il sensore fornisce informazioni relative al processo e alla DLL per aiutare l’analista a determinare la legittimità del risultato rilevato. Nello specifico, il sensore fornisce le seguenti informazioni:
- Nome e percorso del processo
- Percorso della DLL
- Hash DLL MD5
- Se la DLL è firmata digitalmente
- Motivo per cui si sospetta che la DLL sia dannosa
Tanium completa l’intero processo, dalla ricerca alla generazione dei risultati, in pochi secondi, indipendentemente dalle dimensioni dell’ambiente.
La schermata riportata di seguito mostra un esempio dei risultati forniti dal sensore “DLL Load Order Hijacking” in un’implementazione su piccola scala in ambiente di laboratorio. Abbiamo creato un sistema di rilevamento graduale in cui “Explorer.exe” caricava il file “ntshrui.dll” dalla directory “C:\WINDOWS”, anziché da “C:\WINDOWS\system32” ”, su un singolo sistema “infetto”.
Negli ambienti aziendali di grandi dimensioni, questo sensore potrebbe generare un certo numero di falsi positivi. Le applicazioni spesso caricano copie di librerie legittime presenti nella stessa directory seguendo l’ordine di ricerca delle DLL previsto, al fine di garantire che possano funzionare in modo coerente su diverse installazioni e versioni di Windows. Tanium fornisce automaticamente e in tempo reale i dati relativi alla frequenza di occorrenza per ciascun risultato, consentendo agli analisti di escludere facilmente i risultati ricorrenti sulla base dei dati relativi all’hash e alla firma digitale forniti dal sensore. La schermata riportata di seguito mostra un esempio di falso positivo che avrebbe potuto essere escluso applicando un filtro basato sulla firma digitale o sui dati relativi al conteggio delle frequenze.
Per contribuire a ridurre ulteriormente i falsi positivi, il sensore consente inoltre agli utenti di definire una lista bianca di librerie note come affidabili. Infatti, i sensori aggiuntivi di Tanium possono facilmente interrogare tutte le DLL caricate o presenti su disco e i rispettivi hash su gruppi di sistemi noti come sicuri, per aiutare gli utenti a creare e mantenere liste bianche su misura per il proprio ambiente.
Il sensore “DLL Load Order Hijacking” rappresenta un esempio dell’impegno profuso dal nostro team Endpoint Detection and Response per semplificare le indagini sugli incidenti e aiutare le organizzazioni a individuare in modo proattivo gli “elementi sconosciuti” presenti in un ambiente.
Nei prossimi mesi pubblicheremo regolarmente sul nostro blog articoli relativi a ulteriori nuove funzionalità e casi di studio.
Restate sintonizzati!
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 “ ”.
