Pillole di #MalwareAnalysis
Il processo Explorer.exe
Come ho detto più volte la fase di analisi dinamica del Malware, necessita di una approfondita conoscenza dei processi attivi all’interno del sistema operativo Host.
Naturalmente Windows è il principale bersaglio, quindi è necessaria una conoscenza dei processi legittimi che girano nel SO Windows e del loro comportamento per poter scovare poi quelli ‘illegittimi’.
Tra i processi legittimi abbiamo sicuramente la shell di #Windows eseguita dal processo #Explorer.exe.
E' fondamentale notare che Explorer è un processo orfano, non ha padre. Infatti, viene lanciato dal processo Userinit.exe che ha il compito di lanciare tutti i programmi della shell utente, compresa la shell stessa ed una volta adempiuta la sua funzione termina la sua esecuzione, lasciando così Explorer orfano.
Un’altra peculiarità di Explorer è che NON segue traffico di rete. Avete capito bene, Explorer non manda in rete neanche un bit! Lo fanno invece i suoi processi figli, come potrebbe essere ad esempio un browser.
Quindi ricapitolando, analizzando i processi con Process Explorer, dobbiamo notare che Explorer non ha PPID (PID del processo padre) e non fa traffico il rete.
Il vostro Explorer non risponde a queste caratteristiche? Probabilmente è stato alterato o sostituito, in ogni caso avete un problema!
Pillole di #MalwareAnalysis
La #persistenza
Quasi tutti i #malware per raggiungere il proprio scopo necessitano di ottenere la persistenza sui sistemi infettati. Dico quasi tutti perché a volte quelli nati per infettare i server non la implementano.
Per persistenza si intende la capacità del malware di resistere ai reboot. Se spengo il sistema e poi lo riaccendo, questo rimane infetto.
I modi per ottenerla sono molteplici, ma di questi sicuramente il più utilizzato è la scrittura nelle chiavi di registro di windows, e tra queste la più bersagliata è HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run dove vengono inseriti tutti i processi da attivare allo startup.
In un’analisi statica del malware è necessario ricercare le primitive che consentono la scrittura di queste chiavi e l’api incriminata è RegSetValueEx nelle versioni Ascii (RegSetValueExA) e Unicode (RegSetValueExW).
Questa primitiva è sempre preceduta da una #RegOpenKeyEx.
In pratica il malware prima utilizza RegOpenKeyEx per aprire la chiave da modificare e poi la modifica con #RegSetValueEx
Utilizzando tools come #Strings di #Sysinternals o #Floss di #FireEye è possibile andare ad analizzare le stringhe contenute nei malware (se questi non sono offuscati) ed il ritrovamento delle API che vi ho citato è un forte indicatore della ricerca della persistenza.
Generalmente se riusciamo a trovare queste API saremo in grado anche di vedere la stringa che identifica la chiave modificata.