Aggiornare il sistema operativo, il browser e tutti i plugin che si utilizzano durante la navigazione in Rete (ad esempio Flash Player, Java, Adobe Reader, QuickTime e così via) è uno dei passaggi fondamentali per evitare di correre rischi. Gli aggressori, per eseguire codice nocivo sul sistema dell’utente, sono soliti bersagliare vulnerabilità conosciute presenti nel browser web e nei plugin.
In Rete sono disponibili numerosi pacchetti exploit kit che sono comunemente usati dai criminali informatici. Il codice malware alla base del funzionamento di questi pacchetti viene caricato a partire da una porzione di codice JavaScript “offuscato” ed inserito in pagine web preparate ad arte oppure caricato, previo attacco andato a buon fine, sulle pagine che compongono siti web famosi. Talvolta il codice JavaScript “offuscato” può essere caricato su alcuni circuiti di advertising che svolgono un controllo più superficiale sul materiale immesso da parte degli inserzionisti.
Di norma, quando si visita una qualsiasi pagina web utilizzando il browser, è possibile anche visionare il codice HTML sorgente. Solitamente, il codice HTML è immediatamente comprensibile ed è semplice verificarne la struttura (per accedere al sorgente HTML di una qualunque pagina, è possibile ricorrere alla combinazione di tasti CTRL+U
).
Quando un aggressore (anche mediante una procedura automatizzata) riesce in qualche modo ad infettare un sito web (ad esempio, sfruttando vulnerabilità del sistema operativo installato sul server, dei software lato server in uso, lacune nella configurazione di permessi utente, attacchi del tipo “SQL injection“), spesso cerca di inserire nelle pagine codice HTML aggiuntivo.
La tendenza non è più quella di “defacciare” completamente un sito web; gli aggressori preferiscono piuttosto aggiungere, in modo silente, del codice nocivo.
Questo tipo di attacco viene generalmente condotto nei confronti di siti web affermati che vengono quotidianamente visitati da migliaia di persone.
In questo modo, inserendo del codice nocivo nelle pagine di un sito che viene ritenuto, dai visitatori, fidato, l’aggressore può diffondere molto più facilmente l’infezione sui sistemi client degli utenti.
La tendenza è inoltre quella di aggiungere codice in forma “oscurata”: l’obiettivo è quello di fare in modo che l’amministratore del sito non si insospettisca subito e che software di sicurezza non si mettano subito “a strillare”.
La pratica dell'”offuscamento” trae le sue radici dal fatto che qualsiasi indirizzo Internet, rappresentato sotto forma di link nelle pagine web, può essere rappresentato in più modi differenti (“escaping” o “uri-encoding”).
Il singolo carattere “.” (punto) può essere quindi espresso con la sua rappresentazione esadecimale “2E” anteponendo il simbolo percentuale (%).
Com’è facile intuire, questa possibilità viene sovente sfruttata da malintenzionati che desiderino celare testi od indirizzi.
Se abbiniamo l’utilizzo delle rappresentazioni alternative a quello di Javascript, ecco che l’aggressore ha in mano un potente espediente per nascondere il proprio codice dannoso.
Ricorrendo all’uso di JavaScript, infatti, è possibile celare un intero documento all’interno dello script, comprese tag od, addirittura, altri codici JavaScript.
Decodificando lo script, è spesso possibile accorgersi di come l’aggressore, tipicamente, stia tentando di sfruttare alcune vulnerabilità insite nei sistemi Windows, nel browser, nei plugin Java, Flash, QuickTime e così via. Generalmente, tutte le falle di sicurezza che vengono prese di mira sono state precedentemente risolte mediante il rilascio, da parte dei rispettivi produttori, di aggiornamenti correttivi.
Per inciso, aggiungiamo che per verificare rapidamente qual è il codice de-offuscato che viene caricato dal browser insieme con la pagina web, una volta identificato lo script JavaScript “maligno”, è sufficiente sostituire tutte le istruzioni eval
e document.write
con alert
. La funzione JavaScript eval()
, infatti, si occupa di valutare una stringa ed eventualmente di eseguirla qualora si tratti di codice vero e proprio. Effettuando una sostituzione con alert
, il codice nocivo verrà visualizzato “in chiaro”, sotto forma di finestra di dialogo, senza però essere eseguito.
Gli exploit kit che abbiamo citato in precedenza solitamente permettono di caricare codice JavaScript offuscato su una qualunque pagina web. Tale codice, una volta elaborato dal browser, innescherà una serie di verifiche tese a stabilire l’esatta configurazione software adoperata dall’utente.
Nel caso in cui dovesse essere rilevato l’utilizzo di una versione obsoleta del browser o dei plugin, l’exploit kit provvederà automaticamente a bersagliare la vulnerabilità presente nella specifica versione del software usata dall’utente. Obiettivo? Quello di provocare l’esecuzione di codice dannoso sulla sua macchina ed aprirla a numerose tipologie d’attacco.
Navigare con una configurazione software non aggiornata, quindi, può significare correre seri rischi di veder eseguito codice malevolo sul proprio sistema. Nel nostro articolo Navigazione sicura e protezione del browser: controllare, aggiornare e rimuovere i plugin, abbiamo illustrato tutte le verifiche del caso che è bene effettuare per assicurarsi di utilizzare una configurazione software sicura.
Nell’articolo Controllare se un sito è sicuro. Effettuare la scansione antivirus di un file senza scaricarlo abbiamo presentato cinque strumenti che permettono di verificare se un sito è infetto o meno.
Ai servizi già presentati aggiungiamo urlQuery, un utilissimo strumento che agisce in maniera un po´ diversa.
urlQuery, infatti, ricevuto in ingresso l’indirizzo di una qualunque pagina web, provvede a visitarla come se facesse un normale utente.
Di default urlQuery visita il sito web indicato servendosi di una vecchia versione di Mozilla Firefox, di una versione superata di Adobe Reader (la 8.0) e di una versione del pacchetto Java altrettanto obsoleta (la 1.6.0_26).
Il concetto è semplice: simulando la visita della pagina web con una configurazione software “datata”, urlQuery può stabilire se sul sito di destinazione vi sia del codice nocivo che cerca di sfruttare le vulnerabilità presenti.
Come si comporta urlQuery è facile stabilirlo cliccando su Advanced settings nella home page del servizio:
Come si vede, l’user-agent (la stringa con cui un browser si presenta al momento del collegamento con ciascun sito web) può essere eventualmente modificato mentre le altre impostazioni sono fisse.
Per analizzare un qualunque sito web, è sufficiente inserirne l’URL nella casella Profile URL. Se si hanno dubbi sul comportamento di una specifica pagina web, è bene specificarne l’URL completo e non limitarsi ad introdurre solamente il dominio del sito.
Dopo aver cliccato su Go, urlQuery inizierà ad analizzare l’indirizzo indicato riportando messaggi d’allerta nel caso in cui dovesse essere rilevata la presenza di codice dannoso. Appoggiandosi anche ad un paio di software IDS (Intrusion Detection Systems) quali Snort e Suricata, urlQuery può riconoscere codici potenzialmente sospetti ed elementi dannosi sfruttati per provocare il caricamento di altri codici nocivi (sezione Intrusion Detection Systems).
Nella sezione urlQuery Alerts si potranno veder comparire messaggi come detected malicious IFRAME injection nel caso in cui il sito indicato dovesse aver subìto un attacco con l’aggiunta di codice dannoso (in questo caso inserito entro una tag HTML IFRAME).
Messaggi come Detected xxxx exploit kit URL pattern indicano la presenza del codice nocivo caricato da parte di aggressori utilizzando l’exploit kit indicato.
La tabella Recent reports on same IP/ASN/Domain consente di ottenere una lista di scansioni, già effettuate su urlQuery, relative a siti Internet presenti sulla stessa macchina, sullo stesso ASN (vedere Google lancia un servizio antimalware per grandi reti) o sul medesimo dominio.
La seconda parte della pagina riassume i codici JavaScript caricati e le transazioni HTTP effettuate: con un colore diverso vengono evidenziati gli elementi sospetti, già indicati nella parte iniziale del resoconto.