Here is my first Security Blog article. It tells about ZeroAccess clever APC, it should been published on Soteha website (www.soteha.it) but for a reason that personally I haven’t already known It doesn’t. I report here. It is in Italian language.
ZeroAccess: A brand new Clever Rootkit
In queste settimane in laboratorio stiamo analizzando un nuovo ritrovato nel campo delle minacce alla sicurezza informatica: il nuovo rootkit ZeroAccess. È stato sviluppato dagli stessi creatori di TDL e possiede parecchie funzionalità molto intelligenti.
Per una analisi globale dettagliata rimando agli articolo scritti da colui che ritengo essere il master della sicurezza Informatica, il collega Marco Giuliani: http://www.prevx.com/blog/171/ZeroAccess-an-advanced-kernel-mode-rootkit.html e http://blog.webroot.com/2011/07/19/zeroaccess-gets-another-update/.
Il rootkit nella sua nuova versione (sono state rilasciati infatti parecchi aggiornamenti dalla versione originale) si installa sostituendo completamente il contenuto di un driver casuale di sistema, e riesce a garantirsi lo stealth creando una propria DEVICE_OBJECT corrotta e modificando un particolate puntatore nella DeviceExtension del Device DR0 del Disk Class driver originale. In questo modo il sistema, e anche i tools antivirus, vedono il driver infetto come regolare.
Figura 1. Modalità di Stealth di ZeroAccess
Fin qua niente di particolarmente innovativo, la caratteristica più interessante è data dalle routine di Self Defense del rootkit. Infatti le nuove release di ZeroAccess implementano un sistema di autoprotezione e difesa: se il rootkit identifica un programma che sta tentando di analizzare le sue funzionalità attive nel sistema, esso viene subito terminato, e inoltre il suo file eseguibile viene reso inaccessibile.
Ma in che modo?
Il driver del rootkit in questi casi (ad esempio se viene aperto un handle al suo processo o al suo device utilizzato per la comunicazione user-mode) cambia le ACL (Access Control List – sono le liste di accesso di un oggetto che determinano chi può accedere all’oggetto e cosa può fare con esso) del file eseguibile del processo in modo tale da bloccarne l’accesso, e infine mette in coda al processo corrente una routine APC user mode (tra breve darò un introduzione di cosa sono le APC).
Il rootkit è davvero intelligente: le ACL vengono modificate in modo tale che una prima occhiata con un editor ACL non rileva nulla di anomalo. Ecco infatti come appare l’ACL del file eseguibile di Process Explorer una volta che viene bloccato dal Rootkit:
Figura 2. ACL Editor di Windows per il file bloccato da ZeroAccess
Come è possibile osservare, sembra che tutti gli utenti possano accedere al file senza problemi. Un investigazione maggiore (fatta con un utility scritta da me ad hoc) invece rileva le vere ACL del file:
Figura 3. ACL Editor proprietario per il file bloccato da ZeroAccess, è possibile notare l’assenza del SYNCHRONIZE access right
Come è possibile notare dalla figura precedente, al file manca il diritto di accesso SYNCHRONIZE. Questo diritto permette proprio di poter aprire un Handle al file (vedi la documentazione MSDN). Come molti lettori sanno, per aprire qualsiasi oggetto in Windows, è necessario ottenere prima un Handle ad esso, e questo impedisce a qualsiasi applicazione di aprire il file modificato da ZeroAccess.
Non è tutto, una volta che il file viene protetto e reso inutilizzabile, ZeroAccess inizializza e mette in coda una APC User Mode che ha lo scopo di terminare istantaneamente il processo vittima. Per chi non lo sapesse le APC sono una funzionalità di Windows che permettono di far eseguire una funzione ad uno specifico thread di un programma o di sistema (nota bene che ho specificato thread, non processo o processore) preventivando qualsiasi operazione in corso dal thread. Ovviamente questa è solo un introduzione. Il lettore interessato può dare un occhiata a questa pubblicazione (pagina 35): http://www.aall86.altervista.org/guide/X64_MBR_Rootkits.pdf.
La routine APC iniettata direttamente dal driver del rootkit nel processo vittima, per prima cosa analizza le strutture dati del loader (struttura PEB_LDR_DATA ricavata a partire dal PEB) per ricavare l’indirizzo dell’API ExitProcess. Una volta trovato l’indirizzo, viene richiamata la suddetta funzione causando un termine immediato del processo vittima, senza la possibilità di salvare alcun lavoro.
Per ora questo è tutto, seguiranno ulteriori aggiornamenti sulle caratteristiche innovative di questo rootkit. Come consiglio personale posso dire che, nel caso osservate che alcuni programmi di diagnostica vengono chiusi senza preavviso sul vostro pc, è opportuno eseguire una scansione gratuita con il nostro tool: http://blog.webroot.com/2011/08/03/new-tool-released-kiss-or-kick-zeroaccess-goodbye/ (che tra l’altro ho ideato e sviluppato io personalmente).
Andrea Allievi
Prevx Advanced Malware Researcher
www.webroot.com