Per comprendere che cosa sono i malware partiamo dal significato della parola: il termine malware nasce dalla contrazione delle parole “malicious software” e sta a indicare un programma (un eseguibile, una libreria dinamica, uno script, una pagina HTML, un documento con macro ecc.) avente effetti indesiderati e potenzialmente pericolosi per l’utente come il furto di dati sensibili, il controllo dell’attività al PC, il furto di identità, la criptazione dell’hard disk con conseguente richiesta di riscatto (attacco di tipo ransomware) e così via. Procedere ad una attenta analisi dei malware aiuta sicuramente ad adottare le corrette contromisure per difendersi, avendo le conoscenze giuste su come eliminare malware dalle proprie macchine.
Un malware va distinto da una Potentially Unwanted Application (PUA) che indica invece un’applicazione, non malevola, installata senza la precisa volontà dell’utente come adware, dialer, toolbar, non-malicious spyware, remote administration tools e hacking tools. Spesso capita che queste applicazioni arrivino in bundle con altre applicazioni legittime e più famose.
La diffusione dei malware dal 2009 ad oggi.
Indice degli argomenti
Cosa sono i malware: architettura e ciclo di vita
Il ciclo di vita di un malware è composto di quattro fasi:
- A-day: malware creato
- 0-day: il malware viene rilasciato in pubblico ed è in grado di infettare sistemi vulnerabili
- D-day: prima opportunità per la rilevazione (detection)
- R-day: risposta (ad es. aggiornamento della signature del virus, pubblicazione della patch ecc.)
Generalmente un malware prima infetta un sistema vulnerabile e poi si diffonde ad altri sistemi. Inoltre, si attiva sul sistema ospite nelle modalità definite nel suo codice e persegue gli obiettivi desiderati dall’attaccante.
Per questo, l’architettura di un malware si basa su 4 aspetti:
- meccanismo di infezione si riferisce al modo in cui un malware trova una nuova possibile vittima
- Random scanning la potenziale vittima viene scelta a caso e analizzata in cerca di vulnerabilità da sfruttare;
- Permutation scanning è un miglioramento rispetto al random scanning in quanto si evita di sondare lo stesso soggetto più volte e la scansione è più coordinata;
- Localized scanning in questo caso la scansione viene fatta solo sugli host appartenenti alla rete locale;
- Hit-list scanning viene utilizzata dal malware una lista pre-generata di potenziali vittime. La lista di solito contiene gli indirizzi IP di sistemi che eseguono servizi vulnerabili (ad es. si potrebbe partire da un random scanning cercando web server con specifiche versioni di Apache installate e generare così la lista su cui operare successivamente con malware specifici);
- Topological scanning le potenziali vittime sono selezionate a partire dalla macchina locale come, ad esempio, gli indirizzi e-mail nella lista di contatti dell’utente, le URL nella browsing history, la lista degli IP nella cache ARP, i drive di rete mappati e così via;
- Meta server scanning la lista delle potenziali vittime viene selezionata tramite query a un Metaserver, come Google, Shodan o Netcraft, o a una rete peer-to-peer o un instant messaging server. Vedi, ad esempio, qui, qui o qui;
- Passive scanning in questo caso il malware costruisce la sua lista di host potenziali vittime aspettando passivamente connessioni entranti o uscenti;
- meccanismo di propagazione/diffusione
- self-carried propagation il malware si diffonde o trasmette sé stesso durante la comunicazione iniziale con un host vulnerabile;
- embedded propagation il malware sfrutta i normali canali di comunicazione in append o in sostituzione dei normali messaggi;
- secondary channel propagation il malware usa un canale secondario per la sua propagazione. Questi malware infettano gli host vulnerabili in due stadi: prima viene scaricato e installato il programma downloader che poi successivamente scaricherà e eseguirà il resto del malware;
- meccanismo di attivazione
- attivazione umana certi malware dipendono da esseri umani che eseguano materialmente certe operazioni, come fare clic su un link in una e-mail o scaricare un allegato;
- attivato in base all’attività umana in questo caso il malware viene attivato da azioni dell’utente che non dovrebbero di solito costituire operazioni pericolose, come l’inserimento di un CD o una chiavetta USB;
- attivato da processi schedulati il malware viene attivato da un processo legittimo automatico che non è stato reso abbastanza sicuro come ad esempio un programma che scarica patch e aggiornamenti in automatico da un server infetto;
- auto-attivazione di solito questo malware si eseguono immediatamente dopo essere stati trasmessi all’host vulnerabile e sfruttano una o più vulnerabilità presenti;
- Natura dell’attacco una volta che un malware ha attaccato un sistema vulnerabile può mostrare i suoi effetti immediatamente oppure può stare nascosto anche per molto tempo prima di causare i danni per cui è stato disegnato tra cui, ad esempio, furto di dati, controllo della macchina, modifica o criptazione dei file, cancellazione dell’hard disk, del BIOS ecc.
L’architettura di un malware.
Malware, cosa fanno: ecco le principali categorie
Nella fase di analisi del processo di Incident Management, si cerca di identificare o perlomeno capire il tipo di malware che è stato rilevato. I risultati dell’analisi dovrebbero essere degli indicatori di compromissione (IOC, Indicators Of Compromise) e informazioni dettagliate riguardo alle caratteristiche, alle modalità di propagazione e al comportamento del malware, necessarie in una seconda fase per sapere come eliminare il malware stesso. Questi dati permetteranno di posizionare il malware all’interno di un Malware Classification Tree come quello di Kaspersky che vediamo in figura e in cui gli oggetti rilevati sono posizionati in ordine di pericolosità crescente.
La classificazione dei malware secondo i laboratori di ricerca Kaspersky.
In questo schema, gli oggetti sono divisi nelle classi seguenti:
- Malware;
- AdWare;
- RiskWare;
- PornWare.
La classe Malware include le sottoclassi:
- Virus e Worm;
- Trojan;
- Suspicious Packer;
- Malicious Tool.
Le sottoclassi Virus, Worm e Trojan sono mostrate in rosso, mentre le sottoclassi Suspicious Packer e Malicious Tool sono mostrate in giallo, così come nelle classi RiskWare, PornWare e AdWare. I programmi nelle classi RiskWare e PornWare sono categorizzati per comportamento così come quelli in ciascuna delle sottoclassi di Malware.
Nel caso in cui un malware presenti diverse caratteristiche che possano renderne dubbia la collocazione nella gerarchia (ad esempio, Trojan-Downloader o Trojan-Dropper), si procede analizzando la pericolosità di ciascuna di esse e si assegna il malware alla categoria con il grado di pericolosità più alto. Nel caso in cui ci siano due o più funzioni con lo stesso grado di pericolosità (come ad esempio Trojan Ransom, Trojan ArcBomb, Trojan Clicker, Trojan DDoS, Trojan Downloader, Trojan Dropper, Trojan IM, Trojan Notifier, Trojan Proxy, Trojan SMS, Trojan Spy, Trojan Mailfinder, Trojan GameThief, Trojan PSW o Trojan Banker) allora il programma sarà classificato genericamente Trojan.
Come è facile intuire, non è affatto semplice classificare in modo corretto, sia per il fatto che la differenza tra le varie classi non è così netta e marcata, sia perché l’analisi è pur sempre limitata dalla quantità di informazioni che si riescono ad estrarre, dagli strumenti utilizzati e non ultimo dalla bravura dell’analista. Non sarebbe male, inoltre, se si utilizzassero strumenti il più possibile automatici, magari basati su intelligenza artificiale, per la classificazione (come Malheur, impfuzzy for Neo4j o VXClass ad esempio), in modo da inoltrare il malware prima possibile al rispettivo workflow di lavorazione soprattutto in quei laboratori che si trovano ad analizzare migliaia, se non milioni, di tipologie di malware contemporaneamente e nell’ottica di riservare il lavoro dell’analista solo per i compiti meno di routine e più “creativi” o, semplicemente, per capire se un malware appena arrivato può essere ricondotto a qualcosa di già noto o se richiede un’analisi più approfondita.
Più in generale, per capire cosa sono i malware, è possibile definire vari schemi di classificazione:
- classificazione per immagini si tratta di una tecnica automatica descritta in un lavoro del Computer Science Laboratory. Prende spunto dalla classificazione delle normali immagini, intese come blocchi di pixel di intensità variabili, a fronte della identificazione e ripetizione di pattern (Texture), cioè di strutture simili. Il punto di partenza è la conversione del binario di un malware in un’immagine. Fatto questo, è possibile utilizzare le tecniche note per il trattamento delle immagini;
- malware clustering il clustering (raggruppamento) è una ben nota tecnica statistica di analisi dei dati e può essere fatta usando diversi algoritmi per determinare cosa appartiene a un particolare cluster e quanto facilmente è possibile identificare un cluster a partire dai dati grezzi. Ha il vantaggio di mostrare graficamente le relazioni tra i malware (un esempio è lo strumento VirusTotal Graph). Un interessante precursore/fratello di questo tipo di programmi è il software antiplagio. Quest’ultimo è nato in ambito accademico e ha l’obiettivo di rilevare le somiglianze tra i lavori prodotti da studenti diversi. Entrambi, quindi, sono programmati a riconoscere le somiglianze tra due campioni diversi;
- The Antivirus Vendor Naming Convention ad esempio quella usata da Kaspersky che abbiamo visto prima;
- CARO è uno standard de facto per il naming dei malware creato a inizio Anni 90 da CARO (Computer Antivirus Research Organization), un’organizzazione di esperti di sicurezza provenienti sia da ambito industriale che accademico. Vedremo nel dettaglio questa naming convention nel prosieguo;
- MAEC Malware Attribute Enumeration and Characterization (MAEC), pronuncia “mike”, è un linguaggio strutturato community-driven per la codifica delle informazioni relative ai malware basato su attributi come comportamenti (behaviour), manufatti (artifact) e relazioni tra campioni di malware. È simile a STIX o TAXII. Il modello dati è rappresentato come un grafo connesso di nodi e archi in cui gli oggetti definiti in MAEC (Behaviors, Malware Actions, Malware Families, Malware Instances e Collections) costituiscono i nodi e le relazioni tra loro gli archi. MAEC è definito da due documenti di specifica: il documento dei concetti chiave (core concept), in cui troviamo use case di alto livello, tipi di dati, e oggetto di livello alto; il documento dei vocabolari, in cui si definiscono i termini che compaiono nel primo documento;
- Machine-Parsable Malware Classification piattaforme di condivisione di threat intelligence come MISP (Malware Information Sharing Platform) utilizzano schemi di classificazione sia human-friendly che machine-friendly. In questo modo le informazioni riguardanti un malware possono essere sia elaborate da un analista che trasmesse in modo automatico a una eventuale piattaforma IDS (Intrusion Detection System);
Immagini con diversi pattern.
Trasformazione di un malware in un’immagine
I malware vengono di solito classificati in base al loro comportamento come:
- Botnet: l’attaccante usa un server C2 (Command & Control) per inviare istruzioni ai sistemi infettati tramite un software installato sul PC. All’insaputa del proprietario, il computer partecipa ad un enorme gruppo di macchine capaci di lavorare in modo sincrono e scagliare attacchi di tipo DDOS o fare spam con una potenza di fuoco notevole;
- Backdoor: è un mezzo per dare accesso a un computer a un attaccante tramite l’installazione di un software malevolo. L’attaccante lo userà per eseguire ulteriori comandi, normalmente a un livello di privilegio elevato. Talvolta le backdoor sono create dagli stessi programmatori per garantirsi l’accesso in futuro e dare assistenza in caso di malfunzionamenti;
- Information stealer: lo scopo di questa famiglia di malware, che comprende ad esempio keylogger trojan, Sniffers e password hash grabbers è quello di raccogliere informazioni sensibili sulla vittima come dati bancari e finanziari, account online ecc.;
- Downloader: questi software di solito non costituiscono un pericolo di per sé ma si limitano, nella fase iniziale dell’attacco, a scaricare codice malevolo. Spesso si tratta di allegati alle e-mail e scaricati da link web;
- Scareware; si tratta di un tipo di software atto a convincere la vittima, magari intimorendolo, ad acquistare o scaricare qualcosa, come una falsa licenza WhatsApp, un antivirus, una toolbar ecc.;
- Rootkit: si tratta di un tipo di software molto sofisticato che ha lo scopo di far accedere un attaccante da remoto al computer vittima con privilegi molto elevati (root appunto) in modalità nascosta. Sono di solito molto difficili da eradicare soprattutto perché molti lavorano a livello kernel;
- Worm o virus; sono programmi che replicano sé stessi diffondendosi con (virus) o senza (worm) l’aiuto di un operatore umano. Un virus si appoggia a un file host, di solito eseguibile, e richiede l’intervento umano che esegua materialmente il file. Un worm è invece è un software autoconsistente e si diffonde da sé utilizzando i meccanismi di replicazione file e trasporto sulla rete;
- Ransomware: si tratta di un attacco alla disponibilità in quanto ha come bersaglio i file dell’hard disk vittima che rende indisponibili, ad esempio tramite criptazione, a meno che non venga pagato un riscatto;
- Coinminer: utilizza le risorse hardware del sistema per produrre Bitcoin;
- Trojan: si camuffano da programmi apparentemente utili per compiere attività dannose.
Una lista più completa di tipi è visualizzabile qui.
Per quanto riguarda la denominazione, è possibile usare la Computer Antivirus Research Organization (CARO) malware naming scheme mostrata in figura:
- Tipo descrive quello che il malware fa al sistema. Assume uno dei valori della lista dei tipi vista sopra;
- Piattaforma indica il sistema operativo su cui il malware viene eseguito, come Windows (Win32, Win64), Mac OS, Linux e Android. La piattaforma è pure usata per indicare i linguaggi di programmazione (o di scripting) e i formati dei file (es. Microsoft Word/Excel/PowerPoint);
- Famiglia raggruppamento di malware sulla base di caratteristiche comuni, inclusa l’attribuzione allo stesso autore. Bisogna fare attenzione al fatto che produttori di software di sicurezza diversi talvolta usano nomi diversi;
- Variante è una singola lettera ed è usata sequenzialmente per ogni versione distinta di una famiglia di malware;
- Informazione fornisce dettagli ulteriori sul malware, incluso come viene usato nel caso sia parte di una minaccia multicomponente. Nell’esempio in figura “!lnk” indica che il componente della minaccia è un file shortcut usato da Backdoor:Win32/Caphaw.D. Potremmo avere anche .ldr (loader component di un malware), .dll (Dynamic Link Library component di un malware), !rootkit (rootkit component di un malware) e così via. Ulteriori dettagli qui.
La denominazione dei malware usando il naming scheme della Computer Antivirus Research Organization.
Perché un attacco abbia successo, l’attaccante deve far sì che la potenziale vittima richieda una pagina dal web server malevolo. Maggiore è il numero di persone che l’attaccante riesce a far connettere al web server e più alta è la probabilità che l’exploit abbia successo e il malware venga scaricato.
Alcuni dei metodi più usati da un attaccante sono:
- Spam: si sfruttano le e-mail, instant messenger e, più in generale, qualsiasi piattaforma di messaggistica, per far arrivare alla vittima la URL del web server malevolo;
- Phishing: anche in questo caso si sfrutta il sistema di messaggistica ma usando tecniche di social engineering. I messaggi inviati, quindi, saranno il più veritieri possibili (fatture da pagare, home banking, documenti da compilare ecc.);
- Hacking: si sfruttano vulnerabilità di siti web ad alto traffico preesistenti per modificare pagine e inserire link a malware;
- Banner advertising: si usano banner o canali di pubblicità online per ridirezionare potenziali vittime a web server malevoli;
- Search page rank: si manipolano sistemi di page-ranking usati dai motori di ricerca per fare in modo che i web server malevoli compaiano in alto nella pagina dei risultati quando gli utenti ricercano determinate parole o frasi;
- Expired domains: si acquistano i nomi registrati di domini expired relativi a siti molto visitati e famosi sfruttando un eventuale ritardo del rinnovo e si fanno puntare a siti web malevoli;
- Domain Name Server (DNS) hijiacking: si manipolano le entry di server DNS mal protetti per ridirezionare gli utenti a siti web malevoli;
- Forum posting: si lasciano messaggi contenenti URL malevole in forum online e message boards.
Un web server compromesso può, a sua volta, essere utilizzato per compromettere altri suoi simili sfruttando i meccanismi seguenti:
- tickers e contatori: ci sono pagine web che includono o referenziano script di altri siti allo scopo di arricchire i contenuti. Tra i componenti condivisi bili ci sono anche tickers (ad es. quelli azionari, quelli scorrevoli relativi alle news in tempo reale, quelli relativi allo stato del traffico ecc.) e contatori, come quelli che misurano il numero di visitatori a una pagina;
- pagine di errore 404: quando un client richiede una pagina web che non esiste, si verifica l’errore 404 e il server web è progettato per rispondere al richiedente con una pagina di errore. Se l’attaccante riesce a modificare tale pagina inserendo un exploit può ad esempio inviare via spam e-mail un link a una pagina non esistente di un server web legittimo ma con la pagina di errore compromessa. Dopo averlo infettato il client viene rediretto alla pagina legittima e l’attacco passa praticamente inosservato;
- controlli server side dello user agent: lo user agent è una stringa di testo che il client web invia al server contenente alcune informazioni, tra cui la versione del browser e il sistema operativo, per permettergli di servire la richiesta al meglio. Ad esempio se lo user agent specifica che il client è di tipo mobile allora il server web potrà dirottarlo verso la versione mobile del sito, se ve ne è una. L’attaccante può usare questa informazione per capire le vulnerabilità del client e quindi usare gli exploit appropriati e, usando congiuntamente il campo Referer dell’header HTTP, può sapere se il client proviene ad esempio da una pagina web malevola e quindi compiere determinate azioni.
Strettamente collegato al discorso della classificazione e alla tassonomia dei malware è il concetto di librerie di malware. Si tratta, come è facile intuire, di raccolte fatte dai ricercatori per motivi di studio. Maggiore è la dimensione del corpus e maggiore è la probabilità di poter ricondurre un nuovo malware a uno già noto e quindi avere maggiori indicazioni su come eliminare i malware stessi.