KNOWLEDGE BASE

Knowledge Base
1Backup
Acronis
Antivirus
Email
Firewall
GFI Software
Mail
Monitoring
N-Able
Sicurezza
TSPlus
Diventa Autore per CoreTech | Scopri di più

Vai al Video

Come nasce un malware

Oggi sempre più è sulla bocca di tutti, ma dire che cos’è un malware e spiegare esaustivamente come nasce non è semplice, cioè non è fattibile in poche parole; questo perché dietro a tale termine si celano molte minacce informatiche, tanto che l'argomento è così vasto e complesso che per affrontarlo occorrerebbe molto spazio.

In questo tutorial ci focalizziamo sugli aspetti legati a come si può creare un nuovo malware, in modo da capire non solo che cosa ci si può aspettare, ma anche come difendersi; a tale riguardo va detto che chi progetta malware sa come difendersi perché sa come gli utenti si difenderebbero da tentativi di attacco e studia quindi costantemente soluzioni per evitare le difese.

Faremo un breve riepilogo sui vettori di infezione e su come funzionano gli antivirus, anche quelli moderni (perché per quanto evoluti si possono ingannare) e poi descriveremo nel dettaglio alcune tecniche oggi utilizzate per cercare di ingannare gli antivirus e di passare inosservati, l’offuscamento del codice.

Ci soffermeremo anche sull’architettura dei malware e sul concetto di esfiltrazione (estrazione dal target di dati selezionati durante un attacco) e di server C&C (Control & Command).

Che cos’è un malware?

Viviamo in un’epoca in cui di malware ce n'è di ogni tipo e non si tratta più dei semplici virus informatici che chi ha già qualche annetto sulle spalle ricorda; oggi c’è veramente una notevole varietà di software malevoli, da quelli che provano a spiare gli utenti a quelli che vanno a cifrare i dati per estorcere Bitcoin e denaro in generale. Poi ci sono virus che agiscono al momento dell’attacco ed altri che lavorano in modo silente oppure ritardato (i Trojan, per esempio).

Lo schema proposto nell’immagine seguente fornisce un’idea di cosa c’è in giro, anche se non è neanche esaustivo, perché ci sono tante altre sottocategorie.

Ciò che li accomuna è in generale il fatto che si tratta di software esplicitamente progettati per fare qualcosa di male, per arrecare un danno ai sistemi informativi che vengono vengono attaccati da essi.

Evoluzione dei Vettori di infezione

Inizialmente c'erano i virus e difendersi era relativamente semplice, perché i PC di una volta erano più semplici e in generale l’IT lo era: se pensiamo ai primi PC IBM negli anni 80-90, avevano sistemi operativi semplici, poche volte erano connessi in rete e raramente all’esterno; Internet ancora non esisteva nel mondo dell’IT. Per causare un’infezione bisognava inserire un dischetto infetto nel computer.

C'erano i virus normali, i quali spesso più che essere veramente malevoli erano quasi delle goliardate: per esempio negli anni ottanta e novanta del secolo scorso girava un virus chiamato Walker, che non faceva nulla di particolare, ma semplicemente ogni tanto mentre si stava lavorando appariva un omino sullo schermo che si spostava da una parte all’altra. Ce ne’erano diverse versioni: uno che faceva l'animazione, un altro che flippava lo schermo e lo invertiva così da mostrare tutto sottosopra e via di seguito. Certo, esistevano anche virus in grado di cancellare i dati, compromettere il sistema operativo eccetera, ma non arrecavano i danni che vediamo adesso. Erano più dei proof-of-concept.

Però proprio all'epoca si svilupparono tecniche che ancora oggi vengono sfruttate e questi programmi che si diffondevano senza che l'utente lo sapesse erano stati battezzati virus proprio perché avevano questo comportamento: se si metteva un floppy disk in una macchina infetta, questo veniva scritto con il virus (magari contenuto nel record di avvio del disco rigido, così da non poterlo cancellare) e quando lo si tirava fuori e si inservia in un altro PC si andava ad infettare un'altra macchina; quindi si replicava in modo quasi esponenziale proprio come un virus biologico 

Il vettore d’infezione era comunque un supporto di memorizzazione, quindi un disco floppy o un hard disk collegato o installato in un computer; in seguito, vettori lo sono diventati i CD ROM (ma scritti già infetti) e le prime Pen Drive.

La cosa che proteggeva all'epoca è che i computer non erano tutti connessi come lo sono oggi, sia per volontà delle software house che vogliono PC sempre in Internet per manutenerli e raccogliere informazioni su malfunzionamenti, sia per volontà degli utenti che ormai usano la Rete per fare qualsiasi cosa.

Oggi siamo perennemente connessi, abbiamo molti dispositivi connessi e alcuni sempre addosso a noi e questo fa in modo che si moltiplichino i vettori di attacco; tra essi, siti internet e link malevoli, e-mail infette, vulnerabilità di sicurezza insite nei servizi di rete e nei software applicativi.

Oggi non c'è quasi più bisogno di un'azione diretta da parte di un utente: a volte un software malevolo si replica, pensiamo a un worm, sfruttando una qualche vulnerabilità del software e quindi per esempio se si ha un PC connesso a Internet e in questo è in esecuzione un servizio esposto, potenzialmente si può subire un infezione.

C'è da dire che questo è lo scenario peggiore ed è anche quello che fortunatamente è un po' più raro; nella maggior parte dei casi c'è comunque un'azione da parte dell'utente. Per questo la formazione del personale è fondamentale, perché magari nel 70% dei casi tutti i servizi sono ben protetti e la rete ben configurata, però poi c'è un impiegato che clicca sul link malevolo contenuto in una e-mail e apre le porte all'infezione.

Come si inganna un Antivirus

Una domanda che molti, tecnici e utenti comuni, si fanno spesso è: “ma se ho l'antivirus, perché mi sono comunque preso un malware”? Ebbene, la prima risposta che viene spontanea è che l’antivirus non è aggiornato, perché senza aggiornamenti costanti non è in grado di riconoscere virus scoperti da breve tempo; questo è abbastanza vero perché il problema degli antivirus e degli anti-malware in generale sono software “stupidi” nel senso che non fanno nulla di particolarmente proattivo, ma sono semplicemente dei programmi che al loro interno hanno un database (una lista di firme e di hash di virus di malware noti) e il loro lavoro consiste nell'andare a verificare che non ci sia una corrispondenza tra i virus che loro conoscono e i file scansionati sul computer.

Banner

Quindi se un antivirus non è aggiornato non può riconoscere dei virus nuovi; ma la cosa ancora più importante è che se si crea un malware con l'obiettivo specifico di attaccare un certo target, sicuramente l’antivirus non avrà nel proprio database le firme del nuovo malware perché nessuno lo conosce, quindi affinché sia noto, qualcuno deve prenderselo.

Per fornire un livello maggiore di protezione gli antivirus sono diventati un po' più intelligenti nel corso del tempo, ed hanno iniziato per esempio a monitorare l'attività dei programmi in esecuzione alla ricerca di comportamenti sospetti, quindi sono divenuti capaci di sospettare l’esistenza di virus sconosciuti da attività che possono essere ritenute quelle tipiche di un virus o malware. Però la funzionalità principale dell'antivirus è la costante comparazione tra i file presenti nel computer e quello che esso riconosce come virus; questo espone l'antivirus a tanti possibili vettori di attacco.

Codice polimorfico: aggirare l’antivirus cambiando aspetto

Ci sono anche delle tecniche di creazione di malware che utilizzano virus noti per cercare di cambiare forma: in passato si faceva largo uso di tecniche di re-morfing basate su virus che ad ogni infezione si ricompilavano e si ricifravano in modi diversi o cambiava leggermente le proprie istruzioni per far sì che è apparissero come un qualcosa di diverso agli occhi dell'antivirus. In questo caso si parla di codice polimorfico.

Al'epoca in cui si sviluppavano virus con caratteristiche polimorfiche, spesso i virus si scrivevano in assembly e giravano sul settore d'avvio del floppy; erano codici molto piccoli e leggeri e tale tecnica era fattibile. Oggi è diverso, perché se prendiamo ad esempio Stuxnet, che già è vecchio di una decina di anni, il cui payload era quasi 15 MB, andare a scrivere codice polimorfico di tali dimensioni diventa molto più complicato.

Impacchettamento: cammuffare il virus

Una una tecnica alternativa che si usa spesso è quella dell’impacchettamento, che spieghiamo aiutandoci con il diagramma proposto nell’immagine seguente e che ritrae il funzionamento del packer UPX.

Quando si lancia un eseguibile, di fatto il loader del sistema operativo legg (in questo caso parliamo di Windows) c'è un intestazione (header) nel file e poi una serie di sezioni di codice che vengono caricate ed eseguite; gli antivirus, quando esaminano gli eseguibili e quindi vanno a guardare la sezione di codice alla ricerca di hash simili a quelli presenti nel proprio database, ma vengono ingannati perché con l'impacchettamento si crea un altro eseguibile che contiene il payload (cioè il virus vero e proprio) in qualche modo compresso (zippato, diciamo…) e quello che fa questo nuovo eseguibile è, quando viene avviato, caricare un altro loader in memoria, scompattare direttamente in una pagina eseguibile il pauload ed eseguirlo.

Questo tool che si chiama UPX (Universal Packer) e che abbiamo appena schematizzato fa proprio questo, ma era stato sviluppato con intenzioni assolutamente benevole, con l'idea di ridurre un po' la dimensione degli eseguibili linkati staticamente che tendono ad essere molto grossi; però di fatto gli hacker lo hanno trovato un ottimo strumento per i loro scopi, perché consente di cammuffare i virus agli occhi degli antivirus.

Ormai questa tecnica è così abusata che ci sono degli antivirus che “per partito preso” marchiano come virus qualunque eseguibile cifrato o compresso con UPX; di solito quando succede questo lo identificano come virus generico. Vi sarà capitato di vedere Generic packer per esempio nei nomi risultanti dalle scansioni fatte dagli antivirus; ebbene, questo significa che in realtà il prodotto non ha riconosciuto un virus in particolare ma un eseguibile impacchettato.

Se a questo aggiungiamo la cifratura, quindi non solo andiamo a compattare il payload (quindi presentiamo all’antivirus un file zip ossia compresso) ma eseguiamo una cifratura del payload ogni volta in modo differente, possiamo ulteriormente ingannare gli antivirus. Questo è ciò che fanno alcuni generatori moderni di virus.

L'obiettivo di tale cammuffamento è duplice: da una parte sviluppare un malware che possa infettare il sistema saltando la barriera eretta dall’antivirus, e dall’altra ostacolare il compito degli analisti, ossia dei tecnici che il virus provano a decompilarlo, debuggarlo per cercare di capire cosa faccia e magari trovare il modo di fermarlo. Infatti, tipicamente quando si diffonde una nuova infezione, la prima cosa che gli analisti fanno è un reverse engineering, soprattutto per i ransomware: per esempio iniziano un’analisi dinamica per cercare di trovare delle vulnerabilità nel virus e magari estrarre delle chiavi di cifratura con cui ripristinare i dati che il ransomware ha cifrato e quindi riprenderne la disponibilità.

Adattamento dei malware alle nuove tecnologie

Dunque, con un qualche comportamento polimorfico si può aggirare tutta una serie di meccanismi che gli antivirus utilizzano per riconoscere i virus.

Se è vero che gli antivirus sono “stupidi” oggi lo stanno diventando sempre meno, perché oltre a utilizzare il database delle firme stanno assimilandosi a dei sistemi di monitoraggio sugli host, quindi vanno a vedere qual è l'attività dell'host e questo significa per esempio che quando un nuovo eseguibile viene installato e viene avviato per la prima volta, alcuni antivirus lo fanno girare dentro una Sandbox (uno strumento che isola l’eseguibile confinandolo per evitare che se contiene codice malevolo causi danni e si propaghi) dove il software è convinto di girare normalmente ma in realtà sta girando in un ambiente protetto monitorato dall'antivirus, che controlla se esso si mette a fare qualcosa che non dovrebbe, come per esempio accedere a chiavi di registro che sono privilegiate, scrivere in certe aree del file system dove non dovrebbe e quant'altro, l'antivirus segnala la situazione all'utente e magari blocca l'esecuzione.

Comunque anche tale funzionalità avanzata dell’antivirus può essere aggirata, in quanto un virus può essere scritto per capire se sta girando dentro una Sandbox oppure no; e quindi ci sono virus e malware in generale che si comportano in modo diverso quando stanno girando dentro una Sandbox di un antivirus noto e non appena l'antivirus gli dà via libera, invece fanno quello per cui sono stati creati: danni!

Questo perché esistono delle tecniche che permettono di capire se il codice sta girando in una Sandbox: ad esempio alcune API di sistema permettono di capire per esempio se l'eseguibile è sotto debug, giacché alcune Sandbox sono molto aggressive e di fatto attaccano un debugger al processo in esecuzione ed hanno accesso allo spazio di indirizzamento di quel processo quando lo lo mappano, perché serve per capire che chiamate fa; questo può essere capito dal malware attraverso alcune chiamate fittizie prodotte al solo scopo di vedere le mosse del sistema e capire se sta girando in una Sandbox.

Nel caso di Windows, il kernel mette proprio a disposizione delle API per sapere se è un certo processo sta girando sotto debug; un esempio è  ce n'è una proprio di IDP (Is Debugger Present) e restituisce un booleano, quindi se nel codice si chiama e dà True vuol dire che l'eseguibile sta girando sotto dei bug e allora il virus interrompe la propria azione malevola e prende tempo.

Gli antivirus più “intelligenti” quando fanno un'analisi statica, cioè prima di consentire al processo di essere eseguito, possono controllare quali sono le API di sistema che l’eseguibile utilizza, quindi per esempio se vedono che chiama la Is Debugger Present vanno in allarme, giacché tipicamente un'applicazione normale (un Word processor, per esempio) non avrebbe bisogno di sapere se sta girando sotto debugger oppure no.

Questa del debugger è solo una delle tecniche che si possono usare per capire se si sta girando sotto Sandbox; il problema di fondo è che gli antivirus commerciali sono tutti noti, quindi chi sviluppa un malware si mette a provare (sembra che sul Dark Web ci sono soggetti che offrono proprio il servizio di testing) e verifica se l’eseguibile del malware viene riconosciuto da un determinato software antivirus, quindi può capire come si comporta ogni Sandbox e aggirarla di conseguenza.

Quindi da una parte gli antivirus sono diventati sempre più furbi e dall'altra anche i virus sono diventati sempre più complessi; questo è il motivo per cui oggi un virus non sta più nel 512 Byte dell’MBR (del bootloader) ma ha un payload di decine e decine di MB in alcuni casi, perché sono veramente complicati proprio per aggirare gli antivirus.  

Banner

Offuscamento del codice del malware

Come abbiamo accennato, una semplice analisi statica (quindi prima di lanciare il virus o malware) sull’eseguibile può già fornire alcune indicazioni su quello che fa: per esempio se è o non è stato cifrato, se fa delle chiamate API (chiamate di sistema che fa) ecc.

Ma le tecniche di difesa dei malware non sono tutte qui: in alcuni casi i creatori di questi malware adottano tecniche di offuscamento: ci sono parti che sono scritte in assembly che servono per evitare che un disassembler possa capire come come è scritto il codice e queste sono tecniche fatte soprattutto per virus scritti in linguaggi compilati (tipicamente in C++).

Anche una pagina web può contenere uno script malevolo, però in questo caso l'autore del malware ha dovuto distribuire il codice sorgente, perché di fatto non si compila e lo script è lì nella pagina: ecco che quindi tale codice viene offuscato nei modi più impensabili.

Può essere interessante vedere il codice scritto nell’immagine seguente, perché è uno dei vincitori di una competizione che avviene ogni anno e che si chiama IOCC; è la competizione internazionale di codice C offuscato e chi vi partecipa deve sottostare a tutta una serie di regole. Praticamente vince chi scrive il sorgente meno comprensibile in assoluto, ma che sia compilabile ed effettivamente sia un programma che funziona.

Questo è il codice che implementa il gioco del tris, però lo fai in un modo molto particolare e lo abbiamo preso ad esempio per farvi comprendere come un programmatore di codice malevolo, se vuole, può rendere i propri sorgenti difficili da comprendere e chi scrive un malware sicuramente farà qualcosa del genere per rendere difficile il compito dell'analista e favorire la diffusione del proprio virus.

C'è stato qualche anno fa un ransomware che aveva un meccanismo di disattivazione basato su un certo nome di dominio: in pratica quando si avviava verificava se quel dominio era attivo oppure no e nel caso in cui non fosse stato attivo, il ransomware si disattivava.

Questo meccanismo fu introdotto dagli stessi autori per provare a controllare un po' la diffusione del virus, però grazie all’analisi statica gli analisti trovarono la soluzione. In quel caso il codice era impacchettato più volte, quindi la tecnica di impacchettamento UPX era stata utilizzata più volte, ossia il malware era stato impacchettato, poi impacchettato con un altro packer e così via, quindi per l’analisi è stato necessario prima spacchettarlo più volte fino ad arrivare al vero codice e poi a quel punto eseguendolo in un debugger si è visto che è una delle cose che faceva era andare a vedere se il dominio era attivo. Così si capì che per disattivarlo bastava mettere off-line tale dominio e così si arrestò la diffusione.

Quindi l'analisi statica è fondamentale e grazie ad essa i tempi di risposta alle infezioni sono molto rapidi: ormai quando c'è una nuova infezione gli esperti di sicurezza competenti nel Reverse Engineering si mettono al lavoro e dopo qualche giorno riescono a individuare o quantomeno a tirare fuori delle analisi efficaci che possono servire a tamponare l'infezione, se non arrestarla.

Il problema è il principio generale dell’offuscamento del codice è lo stesso sfruttato per scopi benevoli, ossia si usano tecniche simili: pensiamo alla protezione delle licenze, per esempio, dove di fatto nel programma si devono implementare soluzioni per proteggere l’eseguibile dal Reverse Engineering, perché si vuole evitare che venga modificato per aggirare la licenza.

Esiste un principio generale secondo cui quanto il programmatore si possa sforzare, se il computer deve essere in grado di eseguirle delle istruzioni, alla fine ci riuscirà anche un essere umano; questo è il motivo per cui malgrado si investano tantissime risorse nella protezione, non si è mai al sicuro.

Quando un malware è targetizzato, tipicamente l'obiettivo che si pone l'autore non è quello di renderlo invulnerabile all'analisi statica, ma di nasconderlo quanto più possibile per ritardare il momento in cui sarà svelato e gli analisti cominceranno ad analizzarlo.

Pensiamo al caso di Staxnet, la cui variante principale prima di essere modificata per altri scopi nacque per targettizzare un particolare modello di centrifuga della Siemens, utilizzato in un particolare sito iraniano; però il virus era scritto per potersi diffondere in sistemi Windows Scada in generale. Allora gli autori misero tutta una serie di condizioni che servivano per far sì che il virus si attivasse in un sistema in cui c'era una versione del controller PLC Siemens che aveva una versione specifica e una determinata lingua di sistema: non perché gli autori non volessero compromettere la centrifuga di qualche altro sito nel mondo, ma semplicemente perché non volevano che l'infezione si manifestasse prima è che quindi qualcun altro se ne accorgesse.

Se pensiamo al caso Solarwinds, è passato quasi un anno dal momento in cui l'attacco è iniziato al momento in cui effettivamente i target sensibili sono stati attaccati, eppure per mesi nessuno si è accorto di nulla proprio perché il virus non era stato sviluppato per essere un worm, quindi per attaccare tutti indiscriminatamente, ma per attaccare qualcuno in particolare.

Il fatto che alcuni malware identifichino la lingua del sistema operativo risparmiando le macchine che hanno installato sistemi in lingue come cinese e russo (e qui si sprecherebbe la dietrologia) potrebbe indurre a pensare che se si attiva il supporto multilingue del sistema operativo ci si potrebbe proteggere, però non è certo. Ad esempio in Windows 7 o XP non esiste un supporto multilingua avanzato come quello di Windows 10 ma esisteva proprio l'edizione in una certa lingua e i file binari erano in quella lingua.

Architettura dei malware: la Infection Chain

In generale un malware è un software malevolo, ma parlare di architettura in senso generico sarebbe quasi un errore, perché i diversi tipi di malware hanno architetture molto differenti; se pensiamo a un worm che si diffonde attraverso uno specifico servizio, magari possiamo già immaginare che sia in realtà composto da moduli software differenti, alcuni di rete e poi alla fine ci sia il payload che effettivamente effettua le azioni malevole. Nel caso di un virus si tratta di un unico programma che contiene tutte queste funzionalità.

Però uno degli aspetti più importanti è l’architettura dell'attacco in generale, ossia la cosiddetta catena di infezione (Infection Chain) che proviamo a schematizzare nell’immagine seguente e che definisce il comportamento del malware dal punto di vista dinamico; spiega quindi come avviene l'attacco.

Ormai i malware sono utilizzati come arma e quindi quando si tratta di questo tipo di scenari non si è più di fronte all’appassionato di informatica che vuole scrivere il programma eseguibile che infetterà milioni di computer per fargli vedere un omino che cammina sullo schermo, ma si tratta di enti governativi che vogliono sottrarre informazioni sensibili, magari, o arrecare danni.

A seconda del tipo di malware, la Infection Chain è composta da vari step ma sicuramente ce ne sono sempre almeno tre:

  • diffusione, ossia come il malware arriva da chi l’ha creato ai target;
  • una di installazione vera e propria (di bootstrap) del malware;
  • una di attivazione.

Queste tre tipicamente sono separate da un punto di vista temporale da delle pause: non è detto che il virus si diffonda oggi e causi del danno già a partire dalla mezzanotte di oggi; tipicamente la diffusione, magari mediante attacchi indiretti per esempio alla supply chain, può venire mesi addietro, l'infezione vera e propria (l'installazione) può avvenire molto prima del vero attacco e poi l’attivazione da remoto avviene in un momento specifico, quando effettivamente l'attaccante vuole scatenare la sua azione malevola (sottrarre informazioni, mettere giù un servizio per creare disservizi e via di seguito).

Quindi se pensiamo ad esempio alla diffusione dei malware più “banali” molto spesso tutto parte con delle campagne di e-mail spamming veramente massicce: la classica e-mail di spam dove c'è un link che porta l'utente a scaricare un determinato pacchetto che poi si rivela essere il vettore di infezione oppure un allegato sospetto (tipicamente una fattura che è un file ISO o un .exe).

Peraltro queste e-mail sono, per l’utente medio, difficilmente riconoscibili come minaccia perché se una volta il testo era in un italiano incerto ottenuto da Google Translate, oggi è realistico e spesso le campagne di e e-mail spamming sono legate ad account e-mail che sono stati precedentemente sottratti ai legittimi proprietari, dei quali si è in grado di modellare il profilo. Ciò significa che ad esempio in un attacco di phishing, se un attaccante manda un'e-mail fingendosi un determinato Service provider e probabilmente la invierà solo a quegli indirizzi di posta che sa che sono effettivamente utenti di quel servizio e quindi la probabilità di cadere nella trappola è più alta.

Comunque dalla fase di diffusione in generale a quella d'istallazione possono passare mesi: un ransomware tipicamente si diffonde 5-6 mesi prima dell'attacco a meno che non ci siano dei vettori che permettono di scavalcare questa cosa; per esempio nel caso di un exploit wormabile. Di recente ce n'è stato uno che ha coinvolto i NAS della QNAP: c'era un bug in uno dei servizi che gira su tutti su tutti i sistemi QNAP, per cui questo hai esposto centinaia di installazioni a un attacco wormabile e in alcuni casi gli utenti si sono ritrovati con dei file cifrati perché si sono presi un ransomware senza che avessero mai fatto nulla di male. Quindi c’è sempre un compromesso tra comodità dei servizi e sicurezza dei servizi stessi; ad esempio chi ha un NAS QNAP, è meglio che non utilizzi la condivisione dei file da remoto o la sincronizzazione dei file con il cellulare.

Command & Control - Come il Malware controlla il sistema infetto

Spesso i malware sono costruiti in modo mirato per attaccare qualcuno e quindi l'attaccante che li ha sviluppati li vuole anche controllare: non gli basta che si diffondano ma vuole anche potersi interfacciare direttamente perché vuole lanciare un attacco in un momento specifico (non quando il virus si è diffuso) ma in un secondo momento (le botnet valgono per esempio) oppure perché vuole tirare fuori (esfiltrare) dei dati, come nel caso in cui il malware sia mirato allo spionaggio industriale.

In generale chi scrive malware si dota di un'infrastruttura per poterli controllare, perché c’è stato un cambio di paradigma: dal virus che agiva autonomamente si è passati a strumenti evoluti che una volta introdotti nei sistemi target si connettono in remoto per ricevere istruzioni su cosa fare o trasferire dati su richiesta. Si è anche passati dal virus che faceva solo danni a malware creati per fare business, ossia ricattare il proprietario delle macchine target.

Quindi il malware fa da sé la parte che serve ad infiltrarsi e magari ha un fingerprint piccolo, mettere un piede all'interno di una macchina, poi da lì magari raccoglie informazioni e fa dei log, cioè non fa alcun danno ma viene utilizzato come testa d'ariete per poi fare altri upload di payload che compiono azioni specifiche.

Banner

Quello che sta succedendo adesso è che i virus cercano di entrare nella maniera più silenziosa possibile per non destare attenzione (se infettassero tutta la rete verrebbero certamente scoperti prima) studiano il target cercando di prendere tutte le informazioni possibili e immaginabili, quindi l’operatore si collega da remoto per verificare quali sono le attività illecite che si possono sul target, anche in virtù dell’esistenza di vulnerabilità, si controllano le eventuali soluzioni di difesa (ad esempio se ha il backup o la gestione dei log e del registro degli eventi) per capire come neutralizzarle.

Quindi dietro a certi malware ci sono sistemisti e System Integrator che mettono in campo le stesse risorse in termini di persone e di tecnici dell’azienda target, che poi si collegano negli orari dove non ci sono attività umane e iniziano ad operare, esfiltrando dati, cancellando o sottraendo dei backup, cifrando i dati ed altro ancora. In pratica una volta ottenuto l’accesso, il computer target è come se fosse a disposizione dell’hacker che con una console remota (come fosse TeamViewer) si installerà tutto quello che vuole, magari anche con una Privilege Escalation che fa perché l'utente che trova già loggato sul computer è un utente con privilegi di amministratore locale.

Questo è lo scenario oggi più comune soprattutto per gli attacchi ransomware, spesso portati nel weekend quando in ufficio non si lavora e scoperti il lunedì mattina. Da remoto, gli hacker verificano se sui vari computer della rete sono memorizzate delle password di accesso ad esempio ai sistemi di backup oppure si mettono lì e monitorano con keylogger eventuali accessi da utilizzare in tempi successivi. Per esempio, l’utente ha un backup ed ha utilizzato da uno dei PC la console per accedere al backup, e l’hacker da remoto cattura la password, si collega di notte o nel fine settimana sottraggono tutto.

Banner

Sicuamente una cosa che viene subito verificata è la consistenza dei dati, ossia quanto possano valere; infatti se è vero che un malware del genere può introdursi a caso in un sistema, ovvero che ci arrivi per un attacco indiscriminato e massivo, è vero altrettanto che poi lo strumento cerca di capire  se la rete o il computer target sono interessanti o meno: se si tratta di dati personali e non sensibili, lascia perdere, mentre se intercetta i database di un sito di e-commerce o le informazioni industriali di un’azienda, scatena lìattacco vero e proprio.

Sicuramente oggi nella Infection Chain la fase di Information Gathering è quella più lunga, perché serve a capire l’ambiente target.

Quindi a meno di non trovarsi di fronte a un virus che come infetta si mette a fare “rumore” attuando condotte rilevabili come l’apertura di connessioni IP, l’avvio di console Command & Control che sono in blacklist o l’alterazione del registro di sistema o l’esecuzione di sc.exe per installare un servizio sospetto, il codice malevolo ha tutto il tempo per conoscere il sistema target perché l’antivirus non lo rileva.

Tra le informazioni raccolte c’è anche quella sull’esistenza di personale che rileva gli allarmi e in quanto tempo interviene: è capitato in alcune realtà che gli hacker, pur avendo preso controllo di un sistema abbiano deciso di sacrificare l'accesso a questo sistema facendo scattare un allarme da un'altra parte, giusto per capire quali erano i tempi di risposta. Bisogna stare attenti anche a questo, perché dietro c'è l'ingegneria sociale.

Oggigiorno non si tratta più di un codice grimaldello che porti l’attacco, ma ad esempio dietro i ransomware c’è un'equipe di specialisti che fa anche tutta l'attività di raccolta del riscatto, una chat per la richiesta di informazioni da parte dell’utente attaccato che vuole sapere come avere la chiave di accesso ai propri dati cifrati dal malware, un sito web cui accedere per avere ad esempio una prova dell’autenticità del richiedente il riscatto, dove magari l’hacker rende disponibile un codice demo per sbloccare una piccola parte dei dati e dimostrare all’utente che se paga avrà effettivamente indietro ciò che gli è stato sequestrato. Insomma, c’è dietro un’organizzazione che è quella di un’azienda, sia pur criminale.

I moderni attacchi non sono più costituiti da un software malevolo, ma dietro ci sono delle bande di criminali che entrano nei computer, verificano cosa contengono ed eventualmente agiscono.

Canali di diffusione dei Malware

A proposito di Command & Control è interessante aprire una parenteso riguardante i canali di comunicazione: qualcuno potrebbe pensare che una volta preso un malware, per evitare che possa comunicare con l'esterno basti filtrare tutto quello che passa dallarete; ebbene non è così semplice, perché sempre più spesso si usa il DNS come canale di esfiltrazione.

Facciamo un esempio: il malware ha infettato il computer e deve inviare dei dati a un server di Command & Control dell’hacker, ma questo non vuole che cià avvenga attraverso l’http, overo vuole evitare che ci sia una connessione. Allora una tecnica che si utilizza é lasciare che sia il protocollo DNS a far viaggiare il messaggio per l’hacker, perché questo nasconde l’origine.

Se l’hacker ha registrato un particolare dominio e ha un suo name server per quel dominio, con il login attivo, può avere su quel dominio tutti i subdomain desiderati; se il malware che sta girando sul computer target deve inviare un'informazione, per esempio deve inviare la lettera A, potrebbe semplicemente fare una query DNS su a.miodominio.xxx.

L'informazione arriva perché il dominio è in realtà è un dominio astratto, ossia è una sequenza di caratteri fatta per evitare che qualcuno possa digitarlo per sbaglio; però se si va a vedere i log del name server, si vedrà che qualcuno ha fatto una richiesta per a.miodominio.xxx. Quindi operando dal target, chi volesse tracciare l’attacco non avrà l’IP address del server dell’hacker però l'informazione arriverà ad esso ugualmente. Virtualmente se si registrassero su una certa zona centinaia e centinaia di subdomain differenti, il malware potrebbe utilizzarli per inviare agli hacker delle informazioni. Di fatto esistono malware che hanno usato questa tecnica come canale di esfiltrazione.

Banner

Tutto questo discorso spiega perché per difendersi in casi del genere non basta neanche filtrare solo il traffico di rete, perché una query DNS non può essere filtrata in quanto il malware in esecuzione su un computer fa la richiesta al server DNS relativo alla zona del computer stesso, il quale non conosce il dominio utilizzato dall’hacker quindi la rigira al suo DNS primario di zona e così via, fino ad arrivare al name server utilizzato dall’hacker.

In situazioni del genere, per proteggersi bisogna avere un sistema di filtering DNS e il dominio in questione dev’essere già stato censito e inserito in blacklist.

L’immagine seguente propone la schermata di wireshark relativa al tracciamento del traffico contenente anche gli indirizzi DNS.

La tecnica basata sul DNS è stata anche utilizzata con nomi di dominio che non sono astrusi, a rischio di ricevere un po' di rumore (disturbi) perché magari qualcuno per sbaglio va sul browser esattamente sul dominio di partenza dell’attacco, però se si tratta di un dominio nuovo che non è in nessuna lista di filtering, per un po’ di tempo funziona ed elude anche i filtri DNS di base.