Abbiamo spesso presentato HijackThis, applicazione che Trend Micro ha acquistato e che consente di stabilire quali applicazioni e quali servizi vengono avviati ad ogni ingresso in Windows.
HijackThis non si esprime sull’identità dei programmi caricati all’avvio del sistema operativo quindi, mentre un utente esperto avrà poche difficoltà a riconoscere eventuali malware, una persona meno smaliziata potrebbe non riuscire a stabilire a che cosa serve ciascun elemento in elenco.
Come già ricordato un servizio come SystemLookup offre un valido aiuto in fase di riconoscimento delle varie applicazioni. Una guida all’uso di HijackThis può essere consultata in questa pagina.
Hijack Hunter è un’applicazione gratuita, sviluppata da una software house italiana, che si propone un po’ come l’evoluzione di HijackThis. Il software (noi abbiamo provato la versione “portable“, che non necessita di installazione sul sistema) si occupa di effettuare una scansione del contenuto del personal computer organizzando, in maniera ordinata, i vari dati raccolti. Hijack Hunter si propone come un programma molto utile nella fase di riconoscimento delle minacce eventualmente presenti sul sistema oggetto di analisi: durante il suo funzionamento, infatti, il software è capace di estrapolare solo i dati più importanti, quelli che consentono di stabilire in quali aree del sistema operativo si fosse insediato un componente dannoso.
Rispetto ad HijackThis, Hijack Hunter è dotato di una serie di abilità che consentono al programma di “esprimersi” e mettere in allerta l’utente nel caso dovessero essere rilevati i sintomi di un’infezione da malware noti ed, in particolare, la presenza di rootkit.
Affinché Hijack Hunter mostri tutti i risultati, è indispensabile avviarlo con i diritti di amministratore (ad esempio, da un account di tipo amministrativo in Windows XP e cliccandovi con il tasto destro del mouse quindi su “Esegui come amministratore” in Vista e Windows 7).
Prima di avviare una scansione con Hijack Hunter consigliamo di accedere alla finestra delle opzioni del programma. Per aprirla, dopo aver eseguito il software facendo doppio clic su HijackHunter.exe
(previa estrazione di tutto il contenuto del file Zip in una cartella di propria scelta), si dovrà cliccare su Settings. A questo punto, suggeriamo di tradurre subito l’interfaccia dell’applicazione in italiano agendo sulla scheda Language quindi sul menù Select language.
La scheda forse più interessante è quella che reca il titolo “Scan“: qui è possibile personalizzare la “profondità” delle scansioni effettuate da Hijack Hunter. Per impostazione predefinita (scelta consigliata), il programma provvede ad escludere dal report prodotto tutti quei file che sono strettamente correlati al funzionamento del sistema operativo o che sono comunque componenti noti legati ad applicazioni Microsoft (opzione Escludi Microsoft System Files).
Questa casella, se spuntata, evita che Hijack Hunter mostri, nel file di log generato al termine della scansione sotto forma di file di testo, processi noti come explorer.exe oppure svchost.exe.
Il programma può mostrare i moduli caricati da cartelle che, per il loro posizionamento e lo loro caratteristiche, appaiono sospette ed è poi in grado di effettuare un controllo a livello “kernel mode“. Attivando l’opzione “Kernel Mode Info“, Hijack Hunter installerà un proprio driver .sys che fungerà da trampolino di lancio per l’analisi di quanto accade a livello kernel.
Cerchiamo di spiegare, brevemente, a cosa serve questo controllo. Le informazioni presenti in memoria, possono essere suddivise, grosso modo, in due categorie: “dati” e “codice”.
I “dati” si riferiscono ai byte che non vengono eseguiti. Alcuni esempi possono essere strutture dati direttamente correlate al funzionamento del kernel del sistema oppure dati relativi ad un documento Word in corso di stesura. I dati sono solitamente conservati in regioni della memoria dette “heap”, “stack” o “pool”.
Con il termine codice, invece, ci si riferisce alle “istruzioni” eseguibili che il processore deve gestire per svolgere il suo lavoro.
I moderni rootkit sviluppati per i sistemi operativi Windows, riescono a guadagnarsi l’”invisibilità” alterando il contenuto della memoria con l’obiettivo di modificare il comportamento del sistema operativo o le modalità con cui i dati vengono presentati all’utente. I rootkit “lavorano” sul codice, sui dati o su entrambe le categorie di informazioni conservate in memoria. L’operazione che ha come scopo quella di manipolare il contenuto della memoria è solitamente identificata con l’espressione “memory patching”.
Quando ci si riferisce al livello di privilegi con cui viene eseguita un’applicazione, gli esperti spesso usano il termine “ring”. Con “ring 0” vengono identificati i processi in esecuzione in modalità kernel mentre con “ring 3” le applicazioni in “user mode” quali il browser, il Blocco Note e così via.
Quando il processore opera in modalità kernel, esso ha accesso a tutti i registri ed all’intera memoria di sistema.
Di contro, allorquando la CPU operi in modalità utente (livello 3), viene permesso l’accesso esclusivamente a quelle aree di memoria che sono utilizzabili in “user mode”.
Poiché il codice che viene eseguito in modalità kernel può avere accesso indiscriminato a tutte le aree del sistema, riuscire ad eseguire programmi in questo contesto è l’obiettivo a cui guardano con estremo interesse tutti gli autori di rootkit.
Si supponga di volere ottenere l’elenco dei processi in esecuzione sul proprio sistema Windows. Il primo passo che di solito si compie, è quello di aprire il Task Manager. Quest’applicazione di sistema, tuttavia, opera in modalità utente pur eseguendo del codice “kernel mode” che si occupa di recuperare la lista dei processi in esecuzione. Per questo tipo di attività, il Task Manager di Windows invoca una funzione denominata NTQuerySystemInformation
e presente nella libreria NTDLL.DLL
. Una routine operando in modalità kernel riceve la richiesta ed attinge ad un’apposita struttura kernel denominata System Service Descriptor Table (SSDT).
Ogniqualvolta il sistema si interfaccia con il kernel per eseguire delle operazioni richieste da applicazioni od attraverso l’utilizzo della shell, si potrebbe avere a che fare con un potenziale punto di attacco, sfruttabile da un rootkit con l’obiettivo di alterare il normale flusso delle informazioni e quindi minare al corretto funzionamento di Windows.
Prima che una funzione in grado di interfacciarsi con il kernel del sistema operativo possa essere invocata (si pensi, per esempio, ad una funzione che consenta la creazione di un nuovo file), è necessario che sia preventivamente importata da parte dell’applicazione che intende farne uso. Ciò significa che la libreria (file DLL) contenente la funzione deve essere caricata nello spazio di memoria utilizzato dall’applicazione ed aggiunta in una speciale tabella denominata Import Address Table. Si tratta, questa, di un’ulteriore opportunità che un rootkit ha per modificare il normale flusso delle informazioni.
Un altro metodo ampiamente usato dagli aggressori, sviluppatori di rootkit, per alterare la procedura di esecuzione del codice in modalità utente (“user mode”), viene spesso definita come inline (function) patching od inserting a trampoline. Il rootkit, in questo caso, modifica i primi bytes che caratterizzano la funzione presa di mira. Così, il rootkit diventa in grado di filtrare i dati resituiti, in uscita, dalla funzione. Le possibilità sono infinite: il rootkit può così, ad esempio, rimuovere un file da una lista di file contenuti in una data cartella. In questo modo, si potrà nascondere agli occhi dell’utente, al sistema operativo ed alle applicazioni installate dei file dannosi, collegati al funzionamento del rootkit o di altri malware.
L’API NtQueryDirectoryFile è spesso oggetto di attacco proprio per la peculiarità di restituire l’elenco dei file e delle cartelle memorizzati in una qualsiasi directory sul disco.
Hijack Hunter, grazie alla funzionalità “Kernel Mode Info” consente di andare a lavorare a livello kernel (nella regione di memoria riservata al kernel ed accessibile solo a privilegi elevati: “ring 0“) evidenziando eventuali “attività” sospette legate, ad esempio, all’azione di malware (rootkit).
Il kernel esporta delle funzioni per poter interagire con il sistema operativo ma tali funzioni non sono immediatamente raggiungibili da un programma “user mode” poiché stanno “girando” con due privilegi sperati (ring 3 in “user mode“). Il sistema operativo, allora, mette a disposizione delle funzioni aggiunive in “user mode” (spesso esportate da librerie quali Kernel32.dll, ntdll.dll, advapi32.dll,…) che fungono da “ponte” tra l’applicazione in esecuzione in modalità utente ed il kernel di Windows.
Qualunque programma fa uso delle API in “ring 3“: si tratta dell’unico modo disponibile per interagire con il sistema operativo (.Net di Microsoft, Java e qualunque altro framework in circolazione creano un “livello astratto” per rendere la vita più semplice ai programmatori). La funzionalità “Ring3 API Hooks” di Hijack Hunter consente di controllare che le funzioni esportate in “ring 3” non siano state “intercettate” da parte di qualche malware.
Quando si esamina il resoconto finale prodotto da Hijack Hunter, nella sezione “Ring3 API Hooks“, è bene tener presente che non tutti gli elementi indicati sono da ritenersi “maligni”. Anzi, la maggior parte di essi è assai probabilmente del tutto legittima. Questo tipo di analisi, combinata con “Kernel Mode Info“, però, può aiutare l’utente nel verificare ciò che sta accadendo sul sistema in uso.
L’unico punto “a sfavore” della versione “portable” di Hijack Hunter consiste nel fatto che, chiudendo l’applicazione, in alcune situazioni (lo abbiamo riscontrato su un sistema Windows XP SP3), il driver nhdrv.sys
– impiegato dall’applicazione – resta presente all’interno del registro di sistema di Windows. Trattandosi di una versione “portabile” dell’applicazione, sarebbe auspicabile che le prossime release del prodotto risolvessero questa lacuna.
Il driver viene aggiunto solamente quando si spunta la casella Kernel Mode Info (attivata per default) nelle opzioni di Hijack Hunter.
Chi volesse eliminare il driver (che viene comunque ricreato ogniqualvolta si effettui un’analisi kernel mode), può seguire la procedura illustrata in questa pagina. Dopo aver aggiunto la variabile di sistema devmgr_show_nonpresent_devices
, accedendo alla finestra “Gestione periferiche” di Windows e scegliendo la voce “Mostra periferiche nascoste” dal menù “Visualizza“, nella sezione “Driver non Plug and Play” si troverà “NoVirusThanks Kernel Driver (Hijack Hunter)“. Cliccandovi con il tasto destro del mouse e scegliendo il comando “Disinstalla“, il driver aggiunto da Hijack Hunter sarà immediatamente rimosso.
L’opzione Files creati/modificati 15 giorni fa consente di individuare tutti quei file, presenti sul sistema, che sono stati creati oppure modificati negli ultimi quindici giorni. Si tratta di un’informazione molto utile perché, nel caso di un’infezione da malware avvenuta in tempi recenti, è possibile capire quali file di sistema sono stati variati.
Infine, Files sconosciuti con estensione .SYS e Files sconosciuti in CLSID permettono, rispettivamente, di mettere a nudo elementi sconosciuti che non sono strettamente correlati al corretto funzionamento del sistema operativo. Hijack Hunter compila una lista dei driver WDM (“Windows Driver Model”, estensione .sys) che non sono noti. Nella sezione Files sconosciuti con estensione .SYS, Hijack Hunter può elencare driver assolutamente legittimi, collegati al funzionamento di applicazioni assolutamente benigne (è cosa comune trovare in lista, per esempio, driver sfruttati da suite antivirus ed antimalware, da soluzioni per la virtualizzazione, da alcune periferiche hardware e così via). Per ciascun oggetto viene comunque abbinato il nome del produttore e la relativa firma MD5. In questo modo è possibile discernere gli eventuali componenti dannosi da quelli legittimi.
Per quanto riguarda i “Files sconosciuti in CLSID”, Hijack Hunter indica quei file – “dichiarati” nel registro di sistema – ai quali è stato abbinato il codice identificativo detto CLSID. Il CLSID è un codice di 128 bit che viene usato da Windows per la gestione di uno specifico file. I codici CLSID possono essere sfruttati per “mascherare” il nome reale di un file (maggiori informazioni sono disponibili in questi articoli). Anche in questo caso, viene specificato il nome del produttore e firma MD5 del file.
Gli utenti più smaliziati, lo ricordiamo, possono copiare la firma MD5 indicata – nel report di Hijack Hunter – tra parentesi tonde e copiarla in questa pagina sul servizio VirusTotal: se il file è già noto, si otterranno così le informazioni elaborate durante l’ultima scansione antivirus effettuata sul medesimo elemento. Scorrendo la pagina di VirusTotal, quasi in calce alla stessa, è generalmente possibile trovare nome del produttore e nome originale del file.
Tornando alla scheda Analizza quindi clicca sul pulsante Scan, verrà avviata la procedura di analisi del sistema.
Al termine della procedura, che potrebbe richiedere diversi minuti per poter essere completata (soprattutto se si sono lasciate attivate tutte le opzioni di scansione), Hijack Hunter produrrà un resoconto finale (che sarà salvato, per impostazione predefinita sia nella cartella Logs dell’applicazione, sia sul desktop di Windows).
E’ bene ricordare che il report generato deve essere analizzato da un esperto perché contiene sì le chiavi per individuare la presenza di un malware sul sistema in uso ma ospita anche molteplici riferimenti a componenti assolutamente legittimi.
Interessante la sezione Restorer di Hijack Hunter che, con un semplice clic del mouse, consente di ripristinare la configurazione predefinita di Windows nel caso in cui alcuni componenti dannosi avessero applicato delle restrizioni.
Alcuni malware, ad esempio, disattivano la modalità provvisoria di Windows, altri (ved. la parte conclusiva di questo articolo) sogliono rendere inaccessibile il prompt dei comandi, il “task manager” o l’Editor del registro (REGEDIT). In queste situazioni, è possibile sfruttare Hijack Hunter per ripristinare i valori corretti ed eliminare qualunque limitazione imposta.
Le varie possibilità di ripristino sono suddivise, in Hijack Hunter, in sei aree: System Hijacks, Altri Hijacks, Startup Hijacks, Safe mode, IE URLs e IE Hijacks.
Hijack Hunter offre anche alcuni strumenti per interagire immediatamente con i programmi eseguiti all’avvio di Windows (Autoruns), con i file di boot (sezione (Boot Files; file impiegate dalle versioni più vecchie del sistema operativo di Microsoft che sono conservati solo per motivi di compatibilità ma che talvolta sono utilizzati dai malware), con il file HOSTS (per sapere di cosa si tratta, suggeriamo di consultare questa pagina).
Cliccando su BHO, Hijack Hunter permette di verificare gli eventuali oggetti BHO installati in Internet Explorer offrendo gli strumenti per la loro eliminazione (vedere sempre questa pagina).