Ciao e bentornato. Questo è il nostro quinto campione di malware, che è Simda Trojan.
Gli obiettivi di apprendimento: analisi del Trojan Simda, identificazione dei file, identificazione del packer personalizzato con PE Studio, identificazione
dell'epilogo di funzioni anomale, utilizzo di Ghidra e x64dbg per analizzare l'epilogo anomalo, decompressione e dump
del codice incorporato.
Questa sarà un'alternativa al metodo di disimballaggio virtuale, che abbiamo studiato nelle sezioni precedenti.
Una funzione normale avrà il seguente prologo e il seguente epilogo.
Avrà un EBP di spinta nel prologo, seguito da un EBP di spostamento, ESP.
Questo sarà seguito da più righe nel corpo della funzione e termina con l'epilogo della funzione, che
si presenta come segue: un pop EBP seguito da un ret. Quindi ogni funzione avrà un prologo e un epilogo.
Questa è la cosiddetta funzione normale.
Nel malware, a volte possiamo trovare epiloghi di funzioni anomale.
Lo spacchettamento del codice è spesso unidirezionale. Cercheremo il codice con un controllo di trasferimento anomalo.
A questo codice mancherebbe un epilogo standard. Ci sarà un salto invece di un ret, a volte un push-ret e altre deviazioni.
E questo accade spesso alla fine di una funzione, quindi non bisogna farsi prendere da tutti i dettagli nel corpo della funzione.
Falsi ritorni: questo è un esempio di epilogo di una funzione anomala.
A volte si vede un push, che spinge un indirizzo nello stack, seguito da un'istruzione ret.
Di solito, non troviamo una spinta appena prima di una ret. Dovevamo bere una bibita prima di una ret.
Tuttavia, in questo codice malware anomalo, a volte si nota un push prima di un ret.
E la ret restituirà qualsiasi indirizzo presente nello stack.
Quindi questa ret non ha intenzione di tornare al chiamante di questa funzione.
Invece, il ret è un meccanismo per saltare direttamente all'indirizzo dello stack, quello che si trova in cima allo stack.
E ciò che si trova in cima allo stack è il codice incorporato stesso, che contiene istruzioni dannose.
Quindi tutto questo è unidirezionale, unidirezionale perché la ret non ha intenzione di tornare al chiamante di questa funzione.
Ecco perché diciamo che è a senso unico.
Salti inaspettati: a volte si verificano delle spinte, seguite da un salto diretto alla ret.
Perché? Perché la ret conterrà l'indirizzo delle istruzioni o del codice maligno incorporato.
Quindi il salto arriverà inaspettatamente direttamente al ret.
Quindi la ret salterà direttamente al codice incorporato, a cui fa riferimento l'indirizzo in cima allo stack.
Si tratta quindi di salti inaspettati.
A volte il malware utilizza codici di shell per cercare di mettere in difficoltà gli analisti.
Cosa sono gli shellcode?
Storicamente, i codici di shell sono codici macchina che generano una shell di comando, ad esempio cmd o bash.
I codici shell vengono tipicamente iniettati nei programmi vulnerabili, ad esempio nell'exploit dell'overflow del buffer, dove l'indirizzo di ritorno
viene sovrascritto per puntare a un nuovo indirizzo contenente il codice shell.
Se i codici di shell vengono utilizzati nel modo sopra descritto, sono noti come exploit perché in genere sfruttano il programma vulnerabile.
Nel malware, tuttavia, i codici di shell possono fare qualsiasi cosa, non necessariamente generare una shell di comando.
Ad esempio, può scompattare istruzioni dannose o inserire falsi ritorni o salti inaspettati.
Per ulteriori informazioni su come scrivere i codici di shell e su cosa sono i codici di shell, potete fare riferimento a questa pagina.
Questo è un esempio di malware complesso che contiene tecniche di spacchettamento.
Ad esempio, il malware nell'epilogo stesso potrebbe spingere un indirizzo sullo stack, seguito da un ritorno.
Quindi il ritorno salterebbe all'indirizzo sullo stack e andrebbe allo shellcode in memoria.
E lo stesso shellcode in memoria conterrebbe un epilogo anomalo, in cui si trova un indirizzo push sullo stack seguito da un ritorno anomalo.
E questo ritorno sarebbe all'indirizzo dello stack dello shellcode.
E questo indirizzo sarebbe un indirizzo contenente il codice maligno incorporato.
Si tratta quindi di un meccanismo di disimballaggio a due livelli.
Nella prossima lezione inizieremo ad analizzare il malware noto come Simda Trojan, che utilizza questo meccanismo di disimballaggio a due livelli.
Grazie per aver guardato. Ci vediamo alla prossima.
Grazie.