WEBVTT

00:00.000 --> 00:10.000
Ciao e bentornato. Questo è il nostro quinto campione di malware, che è Simda Trojan.

00:13.000 --> 00:27.000
Gli obiettivi di apprendimento: analisi del Trojan Simda, identificazione dei file, identificazione del packer personalizzato con PE Studio, identificazione

00:28.000 --> 00:39.000
dell'epilogo di funzioni anomale, utilizzo di Ghidra e x64dbg per analizzare l'epilogo anomalo, decompressione e dump

00:40.000 --> 00:44.000
del codice incorporato.

00:45.000 --> 00:54.000
Questa sarà un'alternativa al metodo di disimballaggio virtuale, che abbiamo studiato nelle sezioni precedenti.

00:57.000 --> 01:09.000
Una funzione normale avrà il seguente prologo e il seguente epilogo.

01:10.000 --> 01:19.000
Avrà un EBP di spinta nel prologo, seguito da un EBP di spostamento, ESP.

01:19.000 --> 01:30.000
Questo sarà seguito da più righe nel corpo della funzione e termina con l'epilogo della funzione, che

01:31.000 --> 01:43.000
si presenta come segue: un pop EBP seguito da un ret. Quindi ogni funzione avrà un prologo e un epilogo.

01:44.000 --> 01:47.000
Questa è la cosiddetta funzione normale.

01:47.000 --> 01:55.000
Nel malware, a volte possiamo trovare epiloghi di funzioni anomale.

01:56.000 --> 02:06.000
Lo spacchettamento del codice è spesso unidirezionale. Cercheremo il codice con un controllo di trasferimento anomalo.

02:06.000 --> 02:20.000
A questo codice mancherebbe un epilogo standard. Ci sarà un salto invece di un ret, a volte un push-ret e altre deviazioni.

02:21.000 --> 02:33.000
E questo accade spesso alla fine di una funzione, quindi non bisogna farsi prendere da tutti i dettagli nel corpo della funzione.

02:33.000 --> 02:43.000
Falsi ritorni: questo è un esempio di epilogo di una funzione anomala.

02:44.000 --> 02:54.000
A volte si vede un push, che spinge un indirizzo nello stack, seguito da un'istruzione ret.

02:55.000 --> 03:03.000
Di solito, non troviamo una spinta appena prima di una ret. Dovevamo bere una bibita prima di una ret.

03:04.000 --> 03:12.000
Tuttavia, in questo codice malware anomalo, a volte si nota un push prima di un ret.

03:13.000 --> 03:19.000
E la ret restituirà qualsiasi indirizzo presente nello stack.

03:20.000 --> 03:25.000
Quindi questa ret non ha intenzione di tornare al chiamante di questa funzione.

03:26.000 --> 03:35.000
Invece, il ret è un meccanismo per saltare direttamente all'indirizzo dello stack, quello che si trova in cima allo stack.

03:36.000 --> 03:43.000
E ciò che si trova in cima allo stack è il codice incorporato stesso, che contiene istruzioni dannose.

03:44.000 --> 03:53.000
Quindi tutto questo è unidirezionale, unidirezionale perché la ret non ha intenzione di tornare al chiamante di questa funzione.

03:54.000 --> 03:57.000
Ecco perché diciamo che è a senso unico.

03:58.000 --> 04:09.000
Salti inaspettati: a volte si verificano delle spinte, seguite da un salto diretto alla ret.

04:10.000 --> 04:18.000
Perché? Perché la ret conterrà l'indirizzo delle istruzioni o del codice maligno incorporato.

04:19.000 --> 04:24.000
Quindi il salto arriverà inaspettatamente direttamente al ret.

04:25.000 --> 04:33.000
Quindi la ret salterà direttamente al codice incorporato, a cui fa riferimento l'indirizzo in cima allo stack.

04:34.000 --> 04:37.000
Si tratta quindi di salti inaspettati.

04:38.000 --> 04:46.000
A volte il malware utilizza codici di shell per cercare di mettere in difficoltà gli analisti.

04:46.000 --> 04:48.000
Cosa sono gli shellcode?

04:49.000 --> 04:57.000
Storicamente, i codici di shell sono codici macchina che generano una shell di comando, ad esempio cmd o bash.

04:58.000 --> 05:08.000
I codici shell vengono tipicamente iniettati nei programmi vulnerabili, ad esempio nell'exploit dell'overflow del buffer, dove l'indirizzo di ritorno

05:09.000 --> 05:15.000
viene sovrascritto per puntare a un nuovo indirizzo contenente il codice shell.

05:16.000 --> 05:26.000
Se i codici di shell vengono utilizzati nel modo sopra descritto, sono noti come exploit perché in genere sfruttano il programma vulnerabile.

05:27.000 --> 05:36.000
Nel malware, tuttavia, i codici di shell possono fare qualsiasi cosa, non necessariamente generare una shell di comando.

05:37.000 --> 05:44.000
Ad esempio, può scompattare istruzioni dannose o inserire falsi ritorni o salti inaspettati.

05:45.000 --> 05:55.000
Per ulteriori informazioni su come scrivere i codici di shell e su cosa sono i codici di shell, potete fare riferimento a questa pagina.

05:56.000 --> 06:04.000
Questo è un esempio di malware complesso che contiene tecniche di spacchettamento.

06:04.000 --> 06:16.000
Ad esempio, il malware nell'epilogo stesso potrebbe spingere un indirizzo sullo stack, seguito da un ritorno.

06:17.000 --> 06:27.000
Quindi il ritorno salterebbe all'indirizzo sullo stack e andrebbe allo shellcode in memoria.

06:28.000 --> 06:42.000
E lo stesso shellcode in memoria conterrebbe un epilogo anomalo, in cui si trova un indirizzo push sullo stack seguito da un ritorno anomalo.

06:43.000 --> 06:48.000
E questo ritorno sarebbe all'indirizzo dello stack dello shellcode.

06:49.000 --> 06:55.000
E questo indirizzo sarebbe un indirizzo contenente il codice maligno incorporato.

06:55.000 --> 06:59.000
Si tratta quindi di un meccanismo di disimballaggio a due livelli.

07:00.000 --> 07:16.000
Nella prossima lezione inizieremo ad analizzare il malware noto come Simda Trojan, che utilizza questo meccanismo di disimballaggio a due livelli.

07:17.000 --> 07:21.000
Grazie per aver guardato. Ci vediamo alla prossima.

07:25.000 --> 07:27.000
Grazie.
