No results found
di Eugenio Fontana
La sicurezza informatica è sempre più importante per le aziende, soprattutto perché ormai quotidianamente i loro sistemi IT sono connessi a Internet. Va detto che mediamente la scelta di antivirus, firewall e sistemi di protezione IT è dettata al 50% dalla capacità di marketing del vendor, il 30% dall’abitudine a utilizzare un marchio già provato e solo il 20% della scelta è basato sulla logica e sulla valutazione tecnica del prodotto.
Scopo di questo tutorial è valutare se i prodotti utilizzati in azienda sono adeguati e forniscono la dovuta protezione, ossia di fare luce sulla sicurezza informatica da un punto di vista diverso d quello convenzionale.
Il problema della protezione dalle minacce è che le soluzioni antivirus tradizionali non sono in grado di bloccare alcune tipologie di minaccia e tra queste si annoverano le minacce zero-day; esse sono tutte quelle tipologie di minacce che proprio per loro stessa natura non sono state ancora catalogate, ossia non sono state ancora nel portafoglio dei produttori di antivirus e quindi sono delle minacce che non sono ancora conosciute. È qui che nasce l'esigenza di andare oltre l’antivirus tradizionale e quindi di fare affidamento su tecnologie differenti, che sono in grado di attuare dei comportamenti differenti da quelli che fino adesso sono stati messi in atto.
Ed è qui che si introduce il discorso sulla sicurezza: il limite delle soluzioni antivirus standard è che agiscono solo quando la minaccia è stata rilevata e quello che avviene quindi è che viene rilasciata una signature, ovvero una firma di quella minaccia, questa viene inviata a tutte le soluzioni antivirus legate a un certo produttore e quindi tutte le successive minacce dello stesso tipo che vengono poi rilevate a questo punto saranno neutralizzate.
Nello scenario attuale i creatori di virus utilizzano tecniche in grado di offuscare il codice e quindi di creare ogni volta un malware differente, unico, perciò questo virus fa danni finché non viene classificato e le relative contromisure non vengono implementate negli aggiornamenti rilasciati.
Quindi si rafforza il concetto che le soluzioni antivirus tradizionali non sono sufficienti perché è relativamente semplice creare questi nuovi malware, testarli in laboratorio contro i principali antivirus in commercio per comprovarne l’efficacia. Ecco che è facile riuscire a generare delle minacce Zero-day.
Diventa quindi necessario, se ci si vuole proteggere da queste, fare affidamento solo su una soluzione avanzata che si basa sull’intervenire prima che la minaccia si concretizzi, piuttosto che dopo.
Un altro vantaggio delle nuove soluzioni rispetto a quelle tradizionali e che non è più necessario avere centinaia di megabyte di signature dei virus salvate su ogni PC ma queste nuove soluzioni lavorano attraverso il cloud; quindi c'è un un’intelligenza nel cloud che si occupa di gestire e di analizzare i vari comportamenti e questo non rallenta la nostra infrastruttura e facilita il lavoro.
Il nuovo punto di vista è che si utilizzano combinazioni di tecniche di prevenzione avanzate e un motore di intelligenza globale che risiede nel cloud.
Adesso possiamo passare a vedere un po’ più nella pratica come si costruisce un attacco informatico e in che modo ci si può difendere; la simulazione può essere condotta allestendo una macchina virtuale “attaccante” (nel caso degli esempi proposti è una macchina virtuale Kali Linux) ossia quella che genera le minacce e una seconda macchina che da esse dovrà difendersi (in questo caso è un macchina Windows 10).
Per testare le minacce faremo affidamento su alcuni siti Internet che si occupano proprio di analizzare dei file che gli vengono caricati; si tratta di ambienti che esaminano i file che gli inviamo su tutta una serie di antivirus commerciali (50, 60, 70 antivirus) e così ovviamente ci risparmiano la facciamo la fatica di dover ogni volta, per ogni antivirus, provare manualmente e capire quello che avviene.
Per il test sarà utile affidarsi a dei tool specifici come metasploit, che è un tool che serve a effettuare, come si dice in gergo tecnico, l’exploitation di un sistema; in parole semplici, quello che fa è generare un tipo di exploit a nostra scelta, ossia un attacco che vogliamo effettuare contro una macchina che sia la potenziale vittima, quindi questo strumento genera la sequenza automatica di attuazione dell’attacco informatico. Sono proprio strumenti come questi, che chi genera virus e in generale minacce, utilizza per creare attacchi informatici automatizzati, quindi eseguibili rapidamente e in maniera automatica, perciò difficili da affrontare.
Un secondo tool utile per simulare la risposta a un attacco informatico è Veil: anche questo è uno strumento che serve a generare automaticamente dei virus, in modo tale da offuscarle e renderle difficilmente rilevabili da molte soluzioni antivirus.
Un ultimo strumento per la generazione di minacce informatiche è The fat Rat.
Ovviamente non c'è uno strumento migliore in assoluto, perché ciascuno ha i sui limiti dobbiamo testarne l'efficacia dobbiamo sperimentarlo per a capire quando abbiamo raggiunto un certo un risultato che ci soddisfa.
Ciascuno strumento permette di codificare la nostra minaccia, di creare un file .exe e poi inviarlo al computer di cui testare l’affidabilità dell’antivirus.
Iniziamo a utilizzare Metasploit.
Simuliamo quindi un attacco utilizzando MSF Venom, che è uno strumento di metasploit che ci permette di codificare il nostro payload e poi il file che effettivamente invieremo alla vittima; per esempio possiamo generare una stringa com e quella mostrata nella finestra dell’editor di testo proposta nell’immagine seguente, contenente la codifica shikata_ga_nai, che è un particolare iipo di codifica utilizzato per generare virus.
A questo punto, prima di generare il file .exe impostiamo anche l'indirizzo IP della nostra macchina locale local host e la porta, perché lo scopo è simulare quello che farebbe un potenziale hacker, ossia creare una Reverse Shell: in pratica una Reverse Shell è qualcosa che crea una connessione a rovescio, cioè fa in modo che la macchina che riceve il file eseguibile contenente la minaccia punti alla macchina attaccante.
Come mostrato nell’immagine seguente, dalla shell Linux copiamo la stringa e da questa generiamo il file .exe, che nel caso specifico chiameremo payload1.exe.
L’immagine seguente mostra il risultato della generazione del file, che come da stringa e specifica verrà posizionato sul desktop della macchina kali Linux.
Per la nostra esercitazione andiamo a copiare questo file sulla macchina Windows che subirà l’attacco simulato o lo inviamo come allegato di posta elettronica; diciamo pure che quel che conta, per vedere ciò che accade, è metterlo sulla macchina Windows 10 ed eseguirlo, perché accade esattamente ciò che accadrebbe se il file venisse scaricato dal web e aperto.
Fatto ciò, il file fa avviare una connessione che dalla macchina sotto attacco (Windows 10) arriva alla macchina Kali Linux che l’ha creato e di cui contiene indirizzo e porta; a quel punto la connessione è instaurata.
Per semplificare possiamo caricare il file virus su uno dei motori che analizzano le minacce e lo andiamo a testare. Giusto una precisazione prima di farlo: quando si carica un file virus ad esempio su www.virustotal.com per farne l’analisi, il relativo sito web poi comunicherà a tutti i produttori di antivirus la signatore del file, così che poi essi possano aggiornare le loro definizioni, quindi se state generando un file di prova e non è un virus reale, è meglio evitare, onde non andare a innescare falsi allarmi, ovvero essere poi tracciati come fonte di virus.
Può quindi essere utile sfruttare un altro sito, che è www.nodistribute.com, il quale esegue la scansione della minaccia ma non emette comunicazioni.
Scegliamo il nostro sito, eseguiamo l’upload del file e vediamo a video il risultato della scansione (immagine seguente); siccome il servizio web che stiamo esaminando non è un antivirus ma semplicemente verifica quanti antivirus connessi in Rete sono in grado di rilevare il file caricato come minaccia, otterremo come risultato il numero di antivirus, tra quelli testati, che indicherà il nostro eseguibile effettivamente come un antivirus.
Questo ci fornisce già un’indicazione di come i tradizionali antivirus non siano sempre efficaci nel rilevare minacce appena “costruite”. Nel caso specifico, l’immagine mostra che gli antivirus che hanno rilevato la nostra minaccia sono solo 50/67.
Bene, simuliamo adesso un nuovo attacco metasploit ma utilizzando un numero più elevato di iterazioni e codifiche per variare un po' il tipo di virus generato.
In pratica andiamo a realizzare un incremento del numero di interazioni, perché MSVenom non fa altro che codificare la Reverse Shell in diversi modi che siamo noi a stabilire.
Nello specifico andiamo a impostare che lo strumento faccia 100 iterazioni, quindi almeno 100 processi di codifica e questo in teoria dovrebbe migliorare in qualche modo l'efficacia dell’offuscamento del codice relativo alla minaccia.
Salviamo il file e andiamo a caricarlo nuovamente in uno dei siti di rilevamento delle minacce. Anche in questo caso l’efficacia non è elevata, perché se provate, vedete che il numero di antivirus che rilevano la nostra minaccia non è molto diverso dal caso precedente.
Risultati migliori si ottengono andando a cambiare la codifica, ossia utilizziamo più codifiche, chiamando in causa anche la raw, richiamando più volte lo stesso shikata_ga_nai usato in precedenza. Se ora salviamo questo file (possiamo chiamarlo payload3.exe) e lo carichiamo quindi nel solito sito, siamo a 39 su 66 antivirus che hanno rilevato la nostra minaccia.
Vedete quindi che la capacità di mascherare un virus cresce all’aumentare delle combinazioni utilizzate di codifiche e iterazioni delle stesse.
Passiamo a un altro strumento che è Veil, strumento che nell'ambiente è molto conosciuto perché ha sempre generato dei buoni risultati -se così si può dire- in termine di minacce; si tratta di un tool specifico per costruire dei campioni di questo tipo quindi adesso proviamo a utilizzarlo.
Partiamo dall’interfaccia utente di questo programma, che è molto semplice, come si vede nell’immagine seguente.
Da questa abbiamo alcune voci di menu che ci permettono di accedere alle funzionalità supportate, tra cui List che ci permette di evidenziare la lista di tutti i possibili paylod da utilizzare, Use che indica quale tool utilizzare ecc.
Nello specifico impartiamo il comando use evasion, perché utilizziamo evasion, che è lo strumento che genera le minacce.
Se impartiamo il comando list vediamo la lista di payload disponibili, nella quale troviamo payload codificati in perl, in pytho, in go, in powershell, in ruby ecc.
Prendiamone uno qualsiasi, ad esempio tra quelli codificati in python e nello specifico rev_tcp, che fa praticamente quello che abbiamo fatto prima con MSFVenom , ossia un Reverse Shell dalla macchina vittima verso la macchina attaccante; sarà quindi l’azione dell'utente che scatena l’attacco, vale a dire la connessione con il computer attaccante, che è quello che succede quasi normalmente quando riceviamo allegati di posta oppure clicchiamo su file non fidati. Ormai il 90% degli attacchi avviene con delle Reverse Shell.
In teoria esiste anche un attacco portato per Bind Shell, che è l’opposto, ossia è l’attaccante che va a puntare verso la macchina da colpire.
Tornando alla costruzione della minaccia: in command comunichiamo al sistema che vogliamo utilizzare il file python/meterpreter/rev_tcp.py, quindi selezioniamo il numero 28 e premiamo Invio; siccome è questo il numero della lista ottenuta con List corrispondente al nostro file, questo ci viene aperto nello schermo.
Il sistema ci chiede di inserire L HOST (Local Host) ed L PORT (Local Port) come abbiamo fatto in precedenza con MSFVenom (nell’esempio proposto nell’immagine seguente abbiamo come L Host, il nostro indirizzo IP e la porte settata a 444).
A questo punto digitiamo il comando generate seguito da Invio e nella finestra che appare diamo un nome al file, che chiamiamo payloadveil; premiamo ancora Invio e ci appare la schermata nella quale Veil ci chiede con che cosa deve essere aperto il file minaccia (immagine seguente) ossia l’eseguibile appena creato.
Lasciamo l’impostazione proposta (Pyinstaller) e premiamo ancora Invio, cosicché inizia la compilazione del file, completata la quale il programma propone un report tra cui figura il percorso nel quale il file è stato creato.
Apriamo il solito sito www.virustotal.com e carichiamo il file creato: alla fine dell’analisi, vedremo che stavolta il numero di engine antivirus che è stato in grado di identificare il nostro virus campione si è ridotto sensibilimente: appena 28/67 interpellati dal tool web (immagine seguente.
Anche in questo caso vedete che basta combinare più strumenti e per i tradizionali antivirus basati su signature diviene sempre più difficile rioscire a riconoscere una minaccia Zero Day.
Passiamo adesso a un ultimo esempio fatto adottando lo strumento TheFat Rat, un tool la cui schermata iniziale è mostrata nell’immagine seguente, che ci ricorda di evitare di testare gli esempi con www.virustotal.com per il discorso già fatto, ma di preferire www.nosignature.com.
Da questa, premendo un qualsiasi tasto si passa alla schermata di lavoro, che è l’interfaccia utente dalla quale possiamo scegliere che cosa fare; qui troviamo un menu con le opzioni disponibili per la creazione di minacce ad hoc, tra le quali troviamo la creazione mediante altri tool come quelli già esposti in questo tutorial: per esempio Create backdoor with msfvenom. Il backdoor è la minaccia da generare. La schermata è illustrata nell’immagine seguente.
Per scegliere il tipo di minaccia basta digitale a destra dei due punti in fondo alla schermata il numero della scelta, che nel caso specifico facciamo ricadere su [6] perché il programma la classifica come “Excelent” e quindi molto efficace. Premiamo Invio e passiamo alla schermata successiva (immagine seguente).
Qui specifichiamo, sempre digitandone il numero tra parentesi quadre del menu, il tipo di codifica da utilizzare e il tipo di file, premendo Invio; scegliamo [4] e premiamo Invio, quindi ci si apre la schermata successiva, dove vanno indicati, al solito, l’indirizzo del local Host e il numero della porta del server da cui partirà l’attacco. Notare che anche in questo esempio, come in tutti i precedenti, l’indirizzo del local Host e la porta sono in realtà fittizi e servono solo a spiegare come utilizzare i tool, giacché in nessun caso lo scopo è testare l’attacco in pratica; nulla vieta comunque di farlo, allestendo le due macchine, ma qui interessa solo costruire dei file virus per verificare quanto siano facilmente rilevabili dagli antivirus basati su signature.
Definiti indirizzo e porta, si conferma e si procede alla generazione del file, dove viene chiesto che nome assegnare (chiamiamolo payloadfatrat). Procedendo, il programma propone una nuova schermata in cui chiede quale payload caricare; si va a prendere un payload tra quelli disponibili e lo si conferma. Per uniformità con i test svolti in precedenza, scegliamo la voce [3] che corrisponde a windows/meterpreter/reverse_tcp perché se vogliamo confrontare l’efficacia dei virus creati all’interno dei soliti siti web è necessario creare lo stesso tipo di attacco. Anche in questo caso optiamo per un Reverse Shell (immagine seguente).
Una volta compilato il file, si può provare a testarlo sul solito virustotal.com o nosignature.com: il file così creato, dai test condotti, risulta difficilmente identificabile, perché solo appena 16 antivirus su 59 testati sono in grado di rilevare la minaccia nel file caricato.
L’efficacia di rilevamento aumenta se si opta per un file .exe scritto in C, probabilmente perché a queste minacce gli antivirus sono più preparati; ma giocando con le varie opzioni di TheFatRat si può arrivare a eludere anche 60 antivirus su 67 testati.
Fra i tre tool visti sinora, dunque, TheFatRat è quello che riesce a cammuffare meglio di tutti i virus basati su signature, il che fa vedere, se ancora non è stato chiaro, come con dei tool facilmente reperibili e di semplice utilizzo sia possibile aggirare gli antivirus che operano con l’approccio tradizionale.
Naturalmente sia www.virustotal.com che www.nosignature.com forniscono la lista degli antivirus che hanno passato il test e di quelli che invece si sono fatti sfuggire la minaccia contenuta nei file che gli abbiamo passato, ma non scopo di questo tutorial proporre confronti tra antivirus engine, quanto, casomai, dimostrare quanto dichiarato all’inizio di questo tutorial, ossia che basandosi sulle signature dei virus è difficile proteggersi dagli Zero Day. Infatti, malgrado i migliori antivirus siano in grado di analizzare e smascherare le minacce basandosi su parametri che le possono rivelare anche in file sconosciuti (dei quali, quindi, manca la signature), combinando i tool e le codifiche si riescono a creare virus che passano i controlli.
Riepilogando, come dimostrato gli antivirus il cui motore di ricerca è basato solo sulle signature, siano esse in un database locale o in rete sempre accessibile, non sono particolarmente efficaci nei confronti di minacce sconosciute.
L’ideale è orientarsi verso prodotti capaci di eseguire la cosiddetta “behavioural analisys” ossia l’analisi del comportamento dei file attraverso algoritmi capaci di identificare la struttura delle minacce e non solo la signature.