PILLOLE DI #MALWAREANALYSIS
I laboratori per la malware analisi
Per analizzare un #malware è fondamentale avere un proprio laboratorio pronto all’utilizzo. La scelta ricade sempre tra un laboratorio “bare metal” oppure una macchina virtuale, ma è indubbio che la seconda è estremamente più flessibile da utilizzare soprattuto per la facilità con cui si può ristabilire la condizione preinfezione.
Infatti, un laboratorio durante un’analisi dinamica viene infettato volutamente dal malware da studiare per consentire all’analista di scoprirne gli effetti. Una vola terminata l’analisi è necessario ristabilire il laboratorio alla fase preinfezione, cosa estremamente semplice con gli snapshot.
Esistono diverse VM disponibili gratuitamente online ma nel mio corso di Dynamic Malware Analyst utilizzo #Flare VM, la macchina virtuale basata su Windows fornita dal famoso team #Mandiat di #FireEye. Dentro FlareVM troviamo tutto ciò che può servire ad un malware analyst da debugger, a disassembler, decompilatori, utilities per l’analisi statica e dinamica, Floss, Fakenet-NG etc…
PILLOLE DI #MALWAREANALYSIS
APC injection
Una delle tecniche utilizzate dai malware per infettare un device in ambiente windows è la #APCinjection.
APC è l’acronimo di Asyncronous Procedure Call e si riferisce ad una funzione che viene eseguita asincronamente nel contesto di uno specifico thread.
Quando una APC viene inserita nella coda di attesa di un thread viene inviata una interrupt da parte del sistema.
Quando il thread passa da uno stato alertable allo stato running, la APC viene eseguita.
Affinchè un #malware possa eseguire una APC injection per prima cosa deve individuare il thread target ed aprirlo con la funzione OpenThread().
Parlando di una APC injection in user mode, una volta ottenuto l’id del thread viene chiamata la funzione QueueUserAPC().
Questa ha 3 differenti parametri:
1) L’handle del thread target
2) Un puntatore alla funzione da iniettare
3) Una struttura contenente i parametri da passare alla funzione
Tipicamente un malware che esegue questa azione utilizza le seguenti funzioni:
1) Ottiene lo snapshot della memoria (CreatToolHelp32Snapshot)
2) cerca il processo target (Process32First e Process32Next
3) Lo apre (OpenProcess)
4) inietta la routine malevola con WriteProcessMemory
5) cerca il thread target (Thread32First e Thread32Next)
6) Lo apre con OpenThread
7) Inserisce la funzione nella coda APC con QueueUserAPC
8) Infine fa entrare il processo in uno stato alertable con Sleep (o funzioni simili).
Questa tecnica viene identificata con l’id T1055.004 all’interno della #Mitre Att&ck.