Tecniche di evasione dei malware come splitter, binder e offuscamento del codice per aggirare gli antivirus e proteggere i dati personali e aziendali.

Tecniche di evasione degli Antivirus. Veil e TheFatRat. Ecco perché l’uomo costituisce la difesa più importante contro il Malware

Per proteggerci dai pericolosi, innumerevoli e quotidiani attacchi Malware (Virus, Trojan, Ransomware, …) sentiamo dire sempre più spesso che da solo l’antivirus, non basta più. Non c’è cosa più vera. In questo articolo vorrei far comprendere come sia proprio “l’utente” la difesa più importante per la sicurezza dei dati aziendali e di quelli personali quando parliamo di software malevolo. Ebbene sì, sappiamo da sempre che l’uomo è l’anello più debole della catena della sicurezza. Ma inevitabilmente guardando la cosa dalla prospettiva opposta, dobbiamo anche ammettere però, come capiremo dagli esempi che vedremo, che rimane la difesa ultima e più importante contro il Malware e su di lui occorre investire.

L’evoluzione delle minacce Malware

Del resto nonostante la tecnologia porti nelle aziende soluzioni anti-Malware sempre più complete a protezione dei dati aziendali, l’utilizzo del Malware come vettore di attacco è in costante crescita. Secondo il Rapporto Clusit 2018 (relativo all’anno 2017) tale crescita è del 95% in relazione al 2016, anno in cui era cresciuto addirittura del 116% rispetto al 2015. Inoltre sono aumentate di circa il 7% anche le tecniche APT (Advanced Persistent Threat) e Multiple Techniques, entrambe definite come le forme più sofisticate di minaccia. Evidentemente, e quanto appena detto ne è la prova, la tecnologia da sola non è sufficiente a proteggere i nostri dati.

Nell’articolo che segue cercherò di spiegare alcune delle cause che favoriscono l’efficacia degli attacchi malevoli sui sistemi target e illustrerò, tra queste, alcune tecniche utilizzate dai criminali per evadere la protezione dei sistemi anti-Malware. Come si sarà capito è più giusto parlare di Malware e non solo di virus, in quanto le tipologie di minacce a cui siamo sottoposti ormai non sono solo Virus, anzi, anche Trojan, Backdoor, RAT, Ransomware, … che fanno tutti parte della categoria generica chiamata Malware (Malicious+Software). È anche vero che al giorno d’oggi si definiscono Antivirus, per semplicità e abitudine, prodotti che in realtà sono Anti-Malware a tutti gli effetti.

Le cause della proliferazione del Malware

Tra i principali fattori di proliferazione del Malware possiamo annoverare, in primis e il più scontato, quello monetario. Direttamente tramite il malware o indirettamente rivendendo i dati che il malware riesce a “rubare” sui computer delle vittime, i criminali si arricchiscono notevolmente.

Pensiamo soprattutto al Ransomware, il malware che cifra tutti i dati e chiede il riscatto, o ai nuovissimi malware di Mining, cioè quei malware che, una volta infettato un sistema o un sito web, sfruttano la potenza di calcolo del computer della vittima, o della macchina del visitatore del sito web compromesso, per produrre cryptovaluta che finisce nelle tasche del criminale. I Malware saranno sempre più sofisticati e complessi da combattere proprio perché sono fonte di notevole arricchimento per la criminalità informatica.

Sappiamo poi che, ancora oggi, uno dei principali metodi di funzionamento degli Antivirus si basa sulle “firme” dei virus, ossia sulla comparazione del loro codice (di norma i primi byte, l’hash del file, …) con il database di firme che l’antivirus conosce. Se all’interno del database ritrova il codice analizzato, l’Antivirus saprà di essere di fronte ad un codice malevolo.

L’incremento esponenziale del numero degli esemplari di minacce fa sì che il database di firme diventi sempre più grosso e di conseguenza sempre più lungo sarà il tempo che occorrerà all’Antivirus per analizzarlo e individuare la minaccia. Tecnologie recenti come analisi euristica e utilizzo di “sandbox” all’interno del sistema anti-Malware mitigano solo questo problema di fronte ai malware di ultima generazione che sono polimorfi e metamorfi.

Gli Antivirus che si basano solo sulle firme (chiamate anche signature, definizioni, …) possono essere inoltre aggirati da semplici tecniche e strumenti a disposizione della criminalità. Ormai questa ha capito bene come modificare i file eseguibili e la firma dei file malevoli in modo da sfuggire agli strumenti di sicurezza. Un Antivirus basato su firme deve prima conoscere il malware per poterlo rilevare, e questo è un grosso difetto.

Tecniche di evasione degli Antivirus

Di seguito illustrerò sinteticamente alcune delle tecniche utilizzate nel corso degli anni per evadere i software di protezione anti-malware, soffermandomi in particolar modo sulle tecniche più recenti di Offuscamento, capendo come vengono realizzati payload malevoli che non saranno bloccati da alcuni attuali Antivirus.

Splitters e Binders

Gli Splitters sono programmi che permettono di dividere in più parti un file malevolo rendendo di fatto più complessa la rilevazione da parte dell’Antivirus. La controindicazione è che occorre lo stesso programmino che ha diviso il file per riaccorparlo sulla macchina dove il malware deve attivarsi. Questo rende poco popolari gli Splitters tra i software di evasione.

Con i Binders potremmo, invece, unire due programmi eseguibili in un unico file. L’esecuzione del primo avvierà in background anche il secondo. In questo modo potremmo unire un malware in un file innocuo.

Verrà generato un nuovo file che conterrà alla fine del file (EOF) il codice malevolo e che sarà grande, in termini di byte, quanto la somma di entrambi i file. A quel punto l’antivirus crederà di trovarsi di fronte a un file innocuo, in quanto la firma del file che l’AV legge non è quella del file malevolo, e non si attiverà. All’atto pratico la firma del file malevolo si trova in realtà in un’altra posizione essendo alla fine del file innocuo. Un binder gratuito è “Hotfusion”, ma se ne trovano un sacco nella rete.

Come funziona un Binder. Fonte https://securitydocs.com

Molto simili ai Binders, sono i Packers (Compressors), ossia dei programmi che permettono, prima di unire il file malevolo a quello innocuo come fanno i Binders, di comprimere il file malevolo. In questo modo non solo la firma del file malevolo si trova in un’altra posizione, ma risulta anche compressa, quindi ancora più difficile da rilevare.

Conversione di un .exe malevolo in uno script eseguibile lato client

Convertendo, ad esempio, un file eseguibile malevolo in uno script vb (Visual Basic) potremmo eludere il software Antivirus. Risulterà possibile far circolare e diffondere il malware che passerà inosservato attraverso vari sistemi Antivirus in quanto dopo la conversione la firma del file malevolo risulta diversa. Scegliamo di convertire il malware in un file .vbs perché tale file viene eseguito senza necessità di alcun compilatore sulle macchine Windows. Se siamo in grado possiamo utilizzare Net Framework creando progetti con estensione .vbs e importando il file .exe malevolo nel progetto, oppure potremmo utilizzare software automatici come “exe2vbs”. Altre popolari tecniche prevedono la conversione dei file malevoli in .scr, .swf, … anche se la conversione in .vbs sembra la più sicura.

Offuscamento del Codice

Queste sono le tecniche di evasione più sofisticate e recenti, che vengono migliorate ed integrate con nuove giorno dopo giorno. L’offuscamento può essere dato dal metamorfismo del codice, dal polimorfismo (un virus poliforme è difficile da esser individuato dagli Antivirus in quanto si crittografa da solo cambiando la sua firma), ma quella maggiormente utilizzata per impedire all’antivirus di rilevare il codice malevolo è chiamata “Code Morphing”. In questo caso il codice dannoso viene crittografato e nel file finale viene incorporata anche la routine che serve per decodificare il codice prima di eseguirlo. Il codice riceve anche una serie di trasformazioni che impediscono il disassemblaggio e il debugging evitando così di essere scoperto.

Sebbene i risultati più sicuri si ottengano con le tecniche appena citate e modificando manualmente i payload malevoli, esistono tuttavia moltissimi tool gratuiti e tecniche che permettono di creare payload che evadono molti degli Antivirus che si basano sulle firme.

È bene precisare a questo punto che quanto vedremo di seguito ha solo scopo didattico e di sensibilizzazione verso questa materia ancora troppo poco conosciuta. Non mi assumo alcuna responsabilità, ed esorto anzi a non farlo, qualora queste tecniche venissero utilizzate illecitamente. Ricordo che utilizzare quanto vedremo su sistemi altrui costituisce reato.

VEIL – FRAMEWORK e VEIL Evasion

Veil-Framework, giunto alla release 3.1.4 nel momento in cui scrivo, è un insieme di strumenti da poter utilizzare durante le attività di Penetration Testing. Lo strumento che prenderemo in esame, ma anche quello più utilizzato dalla comunità di pentester, si chiama Veil Evasion e serve a generare payloads capaci di evadere i rilevamenti da parte degli antivirus comuni. Una volta installato il Veil- Framework ed avviato (non è incluso in Kali Linux ma può essere scaricato e installato su varie piattaforme seguendo queste indicazioni) ci apparirà la seguente maschera.

Come dicevamo poco fa, noi utilizzeremo Veil Evasion, quindi basterà scrivere nel menu di scelta “use Evasion” e confermare con l’invio per trovarci nella giusta applicazione.

A questo punto scegliendo “list”, vedremo la lista di tutti i payloads disponibili. Si potranno generare molti tipi diversi di payloads, per fare Reverse TCP, Reverse HTTP, Bind TCP, … Scritto in Python può generare in output in altri linguaggi come ad esempio PowerShell, C, Perl, e molti altri…

Vediamo nell’immagine in alto la lista (parziale) di tutti i payloads disponibili. Per la nostra prova scegliamo il numero 39, scrivendo “use 39” e dando invio. Con questa opzione avvieremo la creazione di un codice malevolo che una volta eseguito dalla vittima ci permetterà di avere una shell molto potente attraverso il protocollo TCP, e poter eseguire molti comandi fino a poter prendere il controllo completo della macchina vittima.

Entrati nella generazione del payload possiamo digitare “options” per vedere tutti i campi della configurazione e poter aggiungere i dati che mancano. In questa fase dovremmo dire a Veil Evasion qual è l’indirizzo IP della macchina attaccante e su quale porta deve restare in ascolto.

Questo serve perché quando la vittima aprirà il file malevolo, senza che se ne accorga, la sua macchina si collegherà con la nostra e ci offrirà una shell su di essa. Impostiamo l’indirizzo IP dell’attaccante (la nostra macchina) con “set LHOST indirizzoIP” e la porta in ascolto con “set LPORT nporta”. Premendo di nuovo “options” vedremo se i campi che mancavano e che abbiamo impostato ora ci sono. Nell’immagine sopra, del mio esempio, vedete che come LHOST c’è 192.168.245.130 e come LPORT la porta 4444.

Una volta che avremo impostato questi parametri possiamo generare il payload malevolo con “generate”. Veil Evasion compirà un po’ di operazioni, ci chiederà il nome del file da generare, e genererà il file .exe da far eseguire alla vittima. Apparirà alla fine una maschera che ci avvisa del buon esito dell’operazione e ci riepiloga dove si trovano vari file, a noi interessa dove si trova il file eseguibile .exe. Di solito si trova indicato nel campo “Executable written to:” come si vede nell’immagine in basso.

Il nostro “virus” si chiama “payload2.exe” e si trova nella cartella indicata. Ora potremmo farlo eseguire in tantissimi modi alla vittima. Rinominandolo e mandandolo per posta magari zippato, inserendolo in un programma all’apparenza legittima, facendolo scaricare da una pagina web (magari di phishing) che creeremo all’occorrenza. Non c’è limite alla fantasia. L’importante è che la vittima lo esegua così si infetterà e noi potremmo prendere il controllo del suo pc. E il suo antivirus?? Ebbene se rientra in uno dei 34 che non lo rilevano su 66 interrogati da Virus Total (indica infatti di averne rilevati 32 su 66), come da immagine in basso, non se ne accorgerà nemmeno e il nostro piano avrà successo. Come abbiamo visto, utilizzando Veil-Evasion, in questo esempio, siamo stati in grado di generare un malware che riesce a evadere circa il 50% degli antivirus in circolazione. Cambiando impostazioni o tipologia di attacco, l’evasione potrebbe anche essere superiore.

The Fat Rat

Un altro potente strumento di Penetration Testing capace di generare backdoor, e codici malevoli offuscati che evadono gli antivirus è The Fat Rat. Nemmeno questo tool è compreso nella distribuzione Kali ma è facilmente installabile seguendo le indicazioni del seguente link.

Appena avviato il programma salta subito all’occhio questo imponente Warning (immagine in alto). È un avvertimento molto conosciuto nel mondo underground criminale. I payload malevoli generati non andrebbero mai testati su web scanner come Virus Total in quanto questo condivide i codici scoperti con la comunità di sicurezza tra cui ci sono ovviamente anche i produttori antivirus. Vuol dire che poche ore dopo aver testato un file potrebbero già essere disponibili le firme per gli antivirus. In una mia prova l’Antivirus locale che avevo testato su un payload dava esito negativo la sera (la sera lo provavo anche su Virus Total), poi a metà mattinata successiva dopo aver aggiornato l’antivirus locale, mi veniva rilevato il file malevolo.

Un Antivirus online che non condivide con la comunità i codici che testa è ad esempio NoDistribute.com

In alto vediamo come si presenta la maschera iniziale del programma “The Fat Rat” dopo il messaggio di Warning. Guardando le varie scelte ci si rende conto già della potenza dello strumento. Per i nostri scopi selezioniamo 01, cioè scegliamo anche qui di creare una backdoor, cioè una porta di accesso al computer della vittima. Il programma ci propone quindi una maschera in cui scegliere che tipo di file generare.

Scelto di generare un file .exe per windows anche questo programma ci chiede di impostare l’indirizzo IP dell’attaccante e la porta che deve restare in ascolto. Basta inserire i dati richiesti e confermare.

La maschera successiva ci chiede il nome del file (foto in alto) e che tipo di attacco da utilizzare. Dovreste aver riconosciuto il 3 (windows/meterpreter/reverse_tcp), in quanto è lo stesso di prima. Scegliamo per semplicità quello che già conosciamo e diamo l’invio. A questo punto verrà generato il payload come vediamo nell’immagine in basso.

Anche in questo caso ci viene indicato il percorso dove troveremo il file malevolo creato. Ad un controllo su Virus Total troviamo un risultato peggiore rispetto al malware generato prima. Sono infatti 48 su 66 gli antivirus che hanno identificato come malevolo il nostro file.

Più uno strumento è conosciuto più è facile che le case produttrici anti-malware abbiano già inserito le firme prodotte dallo strumento all’interno dei loro database e quindi è più facile che maggiori antivirus le identificheranno. La capacità del criminale è quella di generare sempre nuovi e diversi payload, con strumenti moderni e utilizzando tutte le varie opzioni di quelli classici.

MSFVENOM + Modifica Manuale Payload

Senza utilizzare software aggiuntivo, la distribuzione di Penetration Tester “Kali Linux”, che sto utilizzando per le dimostrazioni, già dispone di strumenti di creazione di payload malevoli e loro offuscamento. Molto comune è “Metasploit Community Edition” il framework per eccellenza per la creazione di exploit e backdoor e utile anche per i nostri scopi.

Metasploit permette di utilizzare dalla shell i comandi di creazione di payload malevoli e al contempo offuscarli attraverso lo strumento “msfvenom” (che ha preso il posto dell’ormai vecchietto “mafpayload”).

Come accennato poco fa, più sono conosciuti i tool di creazione di payload, più è facile che siano conosciute anche le firme che questi generino e quindi più difficile diventa evadere gli antivirus. Ho accennato anche al fatto che i risultati migliori, in fatto di evasione, si hanno con la modifica manuale dei payload. Quello che vedremo di seguito unisce entrambi gli aspetti.

Illustrerò come creare un payload con lo strumento “msfvenom” ma non offuscandolo poi con lo stesso strumento, bensì offuscandolo modificando manualmente la firma del malware generato.

Iniziamo con la creazione del payload malevolo. Il comando che si vede nell’immagine in alto non fa altro che generare un malware in linguaggio python chiamato cattivo.py utilizzando lo strumento msfvenom. Il payload crea una connessione reverse_tcp (come i payload degli esempi precedenti, cioè quando sarà eseguito dalla vittima farà in modo che sia la sua macchina a collegarsi con la nostra che sarà in ascolto e sulla quale a quel punto si genererà una shell avanzata per poter controllare la vittima). Direttamente nel comando inseriamo l’indirizzo IP della macchina attaccante (la nostra) e la porta che sarà in ascolto.

A questo punto avremo il malware creato che si chiama cattivo.py. Lo apriamo con un text editor e copiamo, selezionandolo, tutto il codice in rosa compreso tra le parentesi e l’apice della seconda riga dell’immagine in alto. È un codice in base64.

Poi ci colleghiamo al sito https://www.base64encode.org/ e incolliamo il testo copiato, nella finestra in alto della pagina web. Quindi premiamo DECODE, questo farà apparire nella finestra in basso (come si vede nell’immagine sopra) il testo decodificato. Come si vede sono le istruzioni del nostro malware e all’interno troviamo infatti il nostro indirizzo IP e la porta sulla quale la vittima ignaramente si collegherà quando avvierà il file. Selezioniamo e copiamo il testo decodificato presente nella finestra in basso.

A questo punto passiamo alla sezione Encode della pagina web e incolliamo il testo decodificato nella finestra in alto della pagina. A questo punto in quel testo andiamo a scrivere dei commenti liberi in qualsiasi punto e in più punti, facendo attenzione a mettere sempre il simbolo # all’inizio di ogni commento come vedete nell’immagine in alto. Questa cosa non cambierà l’esecuzione del file (quello che c’è dietro il # non viene eseguito dal computer) ma permetterà di cambiare la firma del file malevolo.

Quando abbiamo terminato di aggiungere commenti al testo premiamo il tasto ENCODE. Nella finestra in basso apparirà il testo della finestra sopra (con i nostri commenti) codificato in base64. Ovviamente sarà maggiore rispetto a quello di prima. Selezioniamo questo testo codificato e lo incolliamo, sostituendolo, al posto di quello rosa che avevamo preso nel file cattivo.py. Salviamo il file cattivo.py che ora conterrà anche i nostri commenti e rendendo il file diverso da quello precedente

Ora dobbiamo convertire il file cattivo.py in cattivo.exe, in quanto vogliamo creare un payload eseguibile su Windows. Per fare questo ci sono varie possibilità, utilizzando strumenti come PyInstaller oppure rivolgendosi comodamente al web sul sito PyToExe. Per questa prova mi porto sul sito di pytoexe e procedo con la conversione del file .py in .exe.

Si inserisce sulla maschera grande in alto il file.py e se non ci sono moduli o librerie da aggiungere (come nel nostro caso) si preme direttamente il bottone blue in basso “convert .py to .exe now”.

Abbiamo pertanto ottenuto un file malevolo eseguibile su Windows su cui abbiamo messo mano (meglio “commenti”) anche noi. Che grado di evasione avrà sugli antivirus? Fatta la prova con Virus Total il risultato è mostrato nell’immagine in basso. Con grande soddisfazione il nostro virus è rilevabile solo da 15 su 66 antivirus, cioè solo da circa il 20%.

Utilizziamo il nostro payload contro Windows 10 Professional protetto da Windows Defender e nessun altro antivirus (ma con l’80% di essi sarebbe la stessa cosa). Windows Defender non lo rileva come malware nemmeno con la scansione a richiesta (anche se Virus Total aveva indicato che Microsoft lo rileverebbe). Allora eseguo il payload sul computer vittima e con gioia vedo che viene eseguito senza problemi e sulla macchina attaccante si crea la connessione, tutto sarebbe pronto ora per prenderne il controllo.

Cosa e chi potrebbe difenderci da malware di questo tipo che riesce ad evadere i sistemi anti-malware?

Antivirus, Firewall di nuova generazione, IPS, IDS, sistemi di filtraggio avanzati, tutto quello che è tecnologia, da sola non basta. C’è sempre qualcosa che può evaderli. È piuttosto l’uomo che quando una mail con un Ransomware ha superato il firewall, l’IPS e l’anti-malware sul computer, ha la possibilità di salvare la situazione, non aprendo l’allegato, o ancora non visitando un sito sospetto su cui magari è presente un malware zero-day.

È ora che le aziende capiscano che è fondamentale investire oltre che sulle tecnologie a difesa delle informazioni, anche e soprattutto sul “fattore umano” con formazione e informazione continua, addestramento e verifiche, il tutto inserito in un programma completo di gestione del rischio.

A cura di: Antonio Sagliocca

Profilo Autore

Red Team Manager, certificato “Ethical Hacker Master” e “Penetration Tester Professional”, ha una grande passione ed esperienza nella Sicurezza Informatica e la fortuna di lavorare in tale ambito.
Socio CLUSIT scrive su alcune riviste online ed è relatore a eventi pubblici di sensibilizzazione sulla sicurezza in Internet oltre a formatore nelle aziende. Dal 2016 collabora con le Cattedre di “Informatica Giuridica” e “Informatica Giuridica Avanzata” dell’Università degli Studi di Milano.
Per la rivista Internazionale “Ciberspazio e Diritto” vol. 18 n.57 (1-2017) edito da STEM Mucchi Editore, ha scritto la pubblicazione “Open Source Intelligence e Deep Web: scenari moderni delle Investigazioni Digitali”.
Ha scritto i capitoli “Le minacce più comuni: difendersi da malware e da altri attacchi” e “La protezione dalle frodi, dal phishing e dalle estorsioni online” di alcuni volumi per studenti universitari a cura di Giovanni Ziccardi e Pierluigi Perri pubblicati nel 2017 e 2019 ed editi da Giuffrè Editore.

Condividi sui Social Network:

Articoli simili