La superficie d’attacco

Ragioniamo per gradi nel percorrere la strada verso una strategia di difesa, partiamo da un tema semplice quanto ignorato: la superficie d’attacco.

Mentre eseguiamo il compitino della security “standard” installando firewall, proxy, anti-malware e compagnia briscola (tutte cose utili, anzi, necessarie!) dovremmo anche interrogarci su cosa stiamo proteggendo. Concetto estremamente banale ma largamente ignorato.

Di solito si procede con una serie di assessment di varia natura per comprendere l’as-is dell’infrastruttura e, sulla base dati raccolti, si prova a costruire un perimetro difensivo. Il risultato è però incompleto: spesso viene completamente ignorato il punto di vista dell’attacker, ovvero cosa un potenziale invasore vede del proprio obiettivo, cosa è realmente esposto ad un attacco informatico.

Osservando un target dal punto di vista dell’attacker (che in un contesto professionale di consulenza chiamiamo spesso Hacker Etico) emergono aspetti che gli assessment non mettono in evidenza. Tra le fasi iniziali della progettazione di un attacco vi è la raccolta di informazioni sul target, informazioni tecniche – indubbiamente – ma anche di contesto. Internet, social network e media sono ottime fonti di informazioni che si sommano a quanto possiamo raccogliere da scansioni, indagini e attività di social engineering. Il quadro completo che l’attacker va a definire costituisce la reale superficie d’attacco del target.

Tra queste informazioni troviamo dati come le competenze del team IT dell’azienda target, le eventuali partnership con i vendor IT, alcune procedure interne… un vero tesoretto sotto forma di dati, talvolta sensibili. Alcune informazioni le possiamo proteggere, celare, gestire così come possiamo “indurire” le infrastrutture direttamente esposte alla rete tramite specifiche attività di hardening. Questo contribuisce sensibilmente a ridurre la superficie d’attacco e, ovviamente, a ridurre la possibilità di esporre il fianco ad un attacker.

E’ utopistico pensare di poter proteggere tutto o di azzerare la superficie di attacco. E’ indispensabile considerare la possibilità di una falla e gestire sistemi e processi di conseguenza. Questo comporta la creazione di specifiche procedure (e relativi strumenti) per identificare un attacco, tracciarne il comportamento e agire delle contromisure… in definitiva a definire una strategia di difesa.

Mentre addestriamo i nostri utenti a “non cliccare sull’allegato sospetto” dovremmo anche far notare loro quanto siano sensibili le informazioni che, sempre più spesso, vengono divulgate sui social network, talvolta anche sulle pagine ufficiali delle aziende. Essere “addestrati” a riconoscere un potenziale malware sfuggito al sistema di mail protection non è sufficiente o quanto meno non è adeguato alla tipologia di attacchi mirati a cui le aziende sono sottoposte. Ovviamente questo non significa bannare i social come strumento o smettere di comunicare a livello massivo per paura di diffondere informazioni, ci mancherebbe. Basta un po’ di cautela e, quanto meno, essere consapevoli di ciò che si condivide.

Rendersi conto di quanto, della nostra azienda, sia realmente esposto ad un attacco non è banale. Farlo internamente sarebbe abbastanza sciocco, si tende a dare molto per scontato e non si è obiettivi. Sicuramente un assessment eseguito da terzi è molto più efficace, ma ritengo ancora insufficiente. L’occhio di chi è “allenato” alla realizzazione di un attacco è sicuramente lo strumento più efficace per questo tipo di analisi.

L’attitudine all’attacco consente, ad esempio, di trasformare un sistema di protezione in uno strumento di attacco… In occasioni passate mi è capitato di individuare sistemi di mail protection con precisi dati (vendor, versione, ecc) a filtro della posta elettronica del mio target (ovviamente in un contesto lecito e professionale), le informazione raccolte sono state utilizzate per creare un’apposita campagna di phishing camuffata da notifica del sistema anti-spam con un’ottima percentuale di successo grazie al formato noto della comunicazione.

La tecnica è spesso utilizzata anche per la sua semplicità e di solito porta buoni risultati dal punto di vista dell’attacker. Uso spesso questo esempio per sottolineare quanto sia errato limitarsi alla fase di “protezione” delle nostre infrastrutture. Non esistono scatole magiche, è indispensabile ragionare anche sui processi e sulle persone; uno dei modi migliori per rendersi conto di cosa potenzialmente non va è metterlo alla prova, provare a rompere il sistema per capire come migliorarlo.

Questo tipo di attività risulta essere molto efficacie e, se fatta correttamente, produce un reale report dello stato di sicurezza del sistema target. Non stiamo parlando del solo pen-test che fa indubbiamente parte di questo percorso, il tema è però più ampio e va affrontato nella sua interezza.

Happy hacking.

Approccio alla “cyber-defense”

Il tema sta rapidamente maturando anche fuori dai contesti degli addetti ai lavori. Il paradigma della “protezione” non regge più (da parecchio tempo in realtà) e bisogna cambiare strategia.

Chi ha fatto parte di quel “sottobosco” dell’internet popolato da acari conosce molto bene la questione e forse la evangelizza da anni: proteggere non basta, è necessario avere una strategia di difesa per far fronte agli attacchi informatici.

Partiamo dagli assunti di base. Ritengo meriti molta attenzione il trend crescente di attacchi mirati, ovvero di quella tipologia di attacchi studiati appositamente per colpire uno specifico target allo scopo di sottrarre informazioni sensibili o per azioni di sabotaggio. Il campo da gioco, in queste casistiche, non è identificato dal vastissimo terreno (fertile) dei malware da massima diffusione, il gioco diventa un po’ più complesso e tocca le aziende (cyber-espionage) e gli enti governativi (cyber-warfare).

Siamo ancora nel periodo storico in cui non tutti sono consapevoli del livello di impatto che questo tipo di attacchi può portare, ma si tratta di situazioni estremamente attuali:

Mentre con cyber-crime ci riferiamo ad una vastissima gamma di reati perpetrati tramite l’uso di strumenti informatici, dal malware alle truffe online, gli attacchi a scopo “spionaggio” e “guerra” sono di tutt’altra pasta e l’impatto non ha nulla a che vedere con la perdita di dati a causa di un qualsivoglia ransomware.

Avere una strategia di difesa – e tra poco spiego a cosa mi riferisco – ha senso sempre e purtroppo è raramente un tema preso in considerazione. E’ il caso di iniziare a valutare cosa accadrebbe al nostro business se informazioni sensibili dovessero cadere in mani sbagliate, per non parlare degli obiettivi infrastrutturali considerati critici (centrali elettriche, sistemi di controllo delle infrastrutture, strutture militari, ecc), quali sarebbero le conseguenze di un sabotaggio? E come le fronteggeremmo?

Il concetto di cyber-defense (che Ramilli spiega molto bene in suo recente post) si riferisce alla necessità di avere un piano in caso di attacco. Il punto di partenza non è quindi quello di bloccare/evitare un attacco ma si suppone un attacco possa andare a buon fine ed è quindi necessario avere gli strumento (nel senso più ampio) per comprende l’attacco in corso e agire al fine di arginarlo e riprendere il controllo del sistema.

E’ evidente che per ottenere tutto ciò non basta un software, per quanto ci siano prodotti meravigliosi su cui spendere un sacco di quattrini. La strategia di difesa passa da altri fattori ben più importanti.

Consapevolezza: dobbiamo, noi e la nostra azienda, renderci conto dell’esistenza della minaccia.

Cultura (della sicurezza): ovviamente ci sono cose nuove da imparare sul piano tecnico quanto sul piano procedurale ed organizzativo.

Attitudine: una volta appresi i “buoni principi” dobbiamo metterli in pratica in modo pervasivo.

Questo è l’inizio del viaggio, sono i prerequisiti che ci consentiranno, adeguatamente accompagnati da chi la materia la padroneggia davvero, di implementare una strategia di difesa sia essa basata sulle sole forze interne o, ritengo con maggiore probabilità, in cooperazione con strutture ed aziende specializzate.

E’ mia opinione personale che la delega completa della materia ad un partner sia inefficiente, ritengo più funzionale ed efficacie una collaborazione anche molto stretta.

E’ un tema complesso. Va preso in considerazione e rapidamente.

HackTheWire

Sabato 4 novembre, dalle 17:00 circa in avanti, sarò presso Padova Fiere assieme agli amici di HackTheWire. All’interno della manifestazione sono stati organizzati laboratori e talk per lo più in relazione al mondo dell’hacking e della cyber security.

Oltre a presenziare per discutere con un po’ di amici acari, porto il mio talk “Cyber Security Analytics” in una versione di 30′ dove vorrei porre l’accento sul tema dell’analisi delle “tracce” di un possibile attacco informatico.

Il talk è ormai molto legato al progetto #init1 cove stiamo seguendo alcune ricerce specifiche sul tracciamento degli attacchi e sulle modalità di intercettazione, ricerca che si sta portando oggi in una nuova fase… ma ne parleremo più avanti.

CisCon 2017

Il 29 presso Cosmo Hotel Torri di Vimercate, vicino alla sede di Cisco Italia, sarò uno dei relatori di CisCon2017: http://www.ciscon.net.

In questa occasione riprendo il tema della Cyber Security con un approccio un po’ meno frequente di quello che osservo negli eventi di questo tipo: vorrei raccontare (in estrema sintesi e molto semplificati, abbiamo solo 30 minuti) quali sono i passi che precedono un’attacco, come si progetta e quali sono le principali attività dell’attacker in queste fasi “preliminari”.

Ovviamente il tema è vasto e l’intervento ha lo scopo di dare un’indea generale di ciò che accade, quali sono le possibili tracce che queste attività lasciano e come possono essere analizzate per identificare precocemente un potenziale attacco.

Per chi è interessato: CisCon 2017

WPA2 cracked

Da qualche ora circola la new che il protocollo WPA2 è stato forzato con lo scopo di ottenere un MITM: https://www.krackattacks.com. Sul sito è disponibile il video dimostrativo e la demo di un attacco in laboratori.

Dalla documentazione disponibile si evince che l’attacco sfrutta diverse vulnerabilità ma è sufficiente avere il client correttamente aggiornato per tornare ad una situazione “protetta”.

No, luckily implementations can be patched in a backwards-compatible manner. This means a patched client can still communicate with an unpatched access point, and vice versa. In other words, a patched client or access points sends exactly the same handshake messages as before, and at exactly the same moments in time. However, the security updates will assure a key is only installed once, preventing our attacks. So again, update all your devices once security updates are available.

Il video dimostrativo è abbastanza chiaro: https://www.youtube.com/watch?time_continue=1&v=Oh4WURZoR98.

End Point Protection: il punto di vista dell’attacker

Per decenni l’utente è stato terrorizzato dai malware e ha imparato ad installare un buon anti-malware. Da qualche anno si è preda dei ransomware e ci si sta attrezzando con nuovi strumenti di intercettazione di questa nuova generazione di malware. L’approccio tipico è quello di ricorrere a cure istantanee e ci si dimentica che è molto più efficace prevenire.

Per prima cosa dobbiamo realizzare che i nuovi attacchi che stiamo osservando sono ben mirati, sono programmati da attacker che hanno progettato e realizzato una tecnica più efficace delle precedenti, una tecnica che ha come specifico target l’End Point (PC, Laptop, Tablet, Smartphone, ecc).

Per prevenire un attacco così specifico è ovviamente necessario conoscere la tecnica utilizzata e proteggere le vie di accesso potenzialmente vulnerabili e utilizzabili. Spostiamoci, per qualche minuto, dall’altra parte della barricata e ragioniamo su come potremmo prendere il controllo di un End Point target, ad esempio una qualsiasi Workstation da ufficio.

Ragionare come un attacker

Come si “affaccia” al mondo il nostro target? Quali punti di accesso mette a disposizione?

Il potenziale punto di accesso è identificato da tutto ciò che consente un “contatto” con il mondo esterno alla workstation. Una qualsiasi comunicazione è potenzialmente un punto di accesso al sistema vittima. Ad esempio quando navighiamo in internet i nostri browser instaurano delle sessioni di comunicazione con altri sistemi e creano dei “collegamenti” per dialogare; la comunicazione avviene tramite il protocollo HTTP (o HTTPS) e al suo interno vengono veicolate le nostre richieste di accedere ad una determinata pagina o contenuto. Le stesse sessioni vengono utilizzare per scaricare e visualizzare le pagine web che, sempre più spesso, oltre ai contenuti statici contengono istruzioni di alto livello per i nostri browser.

Di fatto quello che avviene ormai spessissimo è che il nostro browser esegue del codice (tipicamente javascript) per mostrare all’utente dei comportamenti o delle automazioni all’interno del sito web visitato. Diventa così tecnicamente fattibile sfruttare eventuali falle del browser o semplicemente la disattenzione dell’utente per installare un malware o un trojan sulla macchina vittima usando come vettore d’attacco una vulnerabilità nota.

Vettori e superficie d’attacco

Restiamo nei panni dell’attacker. Per portare il nostro malware sul sistema della vittima abbiamo più di una strada: i sistemi moderni hanno molti modi per scambiare dati.

La citata vulnerabilità a livello browser e/o la disattenzione dell’utente sono molto semplici da sfruttare (per chi è del “mestiere” ovviamente) per guadagnare una posizione sul PC target. “Spiando” il comportamento della vittima, ad esempio osservandola sui social network, è possibile carpire informazioni utili per creare una comunicazione contraffatta molto dettagliata e portare l’utente a visitare un sito web appositamente creato per tentare di installare un malware sul PC target. In questo caso, oltre alla vulnerabilità del browser, sfruttiamo un mezzo di comunicazione ampiamente diffuso come l’e-mail.

Le informazioni che derivano dall’analisi dell’intera superficie d’attacco – sistemi, reti, persone, social network, fitapp, ecc. – è determinante per selezionare poi il vettore d’attacco più efficiente.

Minacce e contromisure

È possibile accedere ai PC anche fisicamente e le analisi condotte nel 2017 mostrano che la più grande minaccia viene dall’interno (Insider Threats as the Main Security Threat in 2017). Il panorama impone di non limitarsi alla protezione “perimetrale” dai malware o all’utilizzo di una buona soluzione anti-malware, i dati possono essere trafugati in molti altri modi.

Su questo fronte ovviamente la situazione è più complessa in quanto gli utenti sono in una posizione comoda per accedere ad un dato sensibile. Dall’osservazione del comportamento degli utenti si è appreso che vi sono delle tecniche, semplici quanto efficaci, ben definite:

  • USB drive per salvare file da portare fuori dalla rete aziendale
  • Allegati via e-mail
  • Personal Cloud Storage (Dropbox, ecc)
  • Web Application per la condivisione di file
  • Printing

Ovviamente il software anti-malware da solo non può far fronte a queste minacce ed è necessario mettere in campo qualcosa che, almeno a livello End Point, protegga il dato su tutti i potenziali fronti di attacco e ci consenta di tracciare eventuali tentativi di accesso a dati sensibili. In tal senso non è sufficiente avere una rete con un buon sistema di autenticazione, utenti ben profilati e GPO eccezionali… al di là dell’effort che gli strumenti richiedono, soprattutto in contesti non piccoli, l’impiego di più strumenti specifici rischia di complicare l’analisi di ciò che accade nella nostra rete e, laddove possibile, è bene scegliere soluzioni che consentano di aggregare un po’ di funzionalità ed informazioni.

Partendo dal presupposto che non esiste la soluzione software che risolve magicamente tutti i problemi, possiamo cominciare da quelle che ne risolvono almeno una parte. Le soluzioni di End Point Protection che oggi sono sul mercato offrono spessissimo funzionalità molto eterogenee con l’obiettivo di mettere al centro il dato. E’ quindi facile trovare soluzioni che, oltre al classico anti-malware e anti-exploit (requisiti minimi), mettano a disposizione sistemi di controllo dei “canali di comunicazione” (mail, usb storage, file server, ecc.), funzionalità di cifratura dei file e dischi e funzionalità di analisi per comprendere come si è propagata la minaccia nella rete.

Se poi riusciamo ad affiancare anche un buon sistema di logging ed auditing… non saremo invulnerabili ma almeno renderemo la vita molto difficile agli attacker che, solitamente, tengono ben in considerazione il rapporto “costo/beneficio”.

Il comportamento dei sistemi informatici: behaviour analysis, machine learning e caffè.

Piccolo focus sul tema dell’analisi del comportamento dei sistemi.

A cosa ci serve l’ho accennato nel precedente post, in questa occasione scendiamo un po’ nel tecnico per capire come si analizza un comportamento e quali paradigmi/algoritmi possiamo utilizzare.

Ovviamente tutto parte dai dati che possiamo collezionare da un sistema informatico: spesso ho parlato di logs, ovvero i registri degli eventi che le applicazioni compilano durante la loro operatività, ma si tratta di una delle molte fonti di dati. Possiamo infatti prendere in considerazione le metriche prestazionali (carico CPU, utilizzo RAM, impegno di banda, ecc) o il traffico di rete che il sistema genera/riceve.

Tutti i dati citati solo utili a definire un comportamento del sistema: se mettiamo in forma grafica il carico delle CPU di un server o di uno switch vedremo un certo andamento che si ripete nel tempo. Il traffico TCP a cui un sistema è sottoposto è strettamente legato al tipo si servizio che il server eroga, analizzando quindi il traffico di un File Server vedremo per lo più sessioni CIFS o NFS con i vari client della rete e l’intensità del traffico è legata alla presenza di utenza in rete. Anche in questo caso le “conversazioni” tra client e server possono essere quantificate nel tempo a produrre un grafico dove vedremo, ancora una volta, l’andamento delle sessione CIFS del nostro File Server MS.

L’analisi dei comportamenti dei sistemi informatici (behaviour analysis) ci aiuta ad imparare quale sia il comportamento tipico di un sistema complesso (applicazioni, server, reti, persone) e di individuare variazioni sensibili nei trend registrati. Questo consente di poter individuare rapidamente comportamento diversi dall’ordinario senza impostare delle soglie di allarme come si farebbe in un sistema di monitoraggio.

L’analisi comportamente non prevede statiche impostazioni di policy o soglie di funzionamento, in primo luogo perché non necessariamente i dati raccolti possono essere trattati in questo modo ma soprattuto perché il focus non è il raggiungimento di una soglia critica ma la presenza di comportamenti non consueti e quindi degni di interesse.

Esempio: osservando l’immagine allegata si vede una CPU che tendenzialmente lavora tra il 20% e il 60% di carico e ad una precisa ora il carico varia assestandosi poco sotto il 20%. Un sistema di monitoraggio ci avviserebbe probabilmente solo se la CPU raggiunge il 90-100% del carico (a seconda delle impostazioni scelte) per un certo periodo di tempo, in questo caso quindi nulla sarebbe accaduto. L’analisi comportamentale ci dice che la CPU sta lavorando in un modo in cui di solito non lavora. Questo diverso approccio porta ad individuare situazione dove le soglie non agirebbero ma dove evidentemente è successo qualcosa che ha avuto un impatto sul carico della CPU.

Il modello di machine learning che personalmente trovo più interessante per individuare un comportamento o pettern è quello dell’apprendimento non supervisionato: il programma, dato un input, cerca di trovare uno schema nei dati collezionati senza che questi vengano etichettati a priori. In questo modo è possibile scrivere algoritmi generici in grado di cercare schemi strutturati in eterogenee fonti di informazioni come possono essere i sistemi informatici di cui si vuole eseguire l’analisi.

La particolarità di questo modello sta nella capacità della macchina di migliorarsi nell’attività di riconoscimento dei pattern e delle relative anomalie. Questo è possibile in quanto con l’aumentare dei campioni di input è possibile istruire l’algoritmo affinché vengano considerati i dati nel loro insieme e non solo in intervalli di tempo definiti aprioristicamente. (maggiori informazioni qui)

In ICT esistono due principali campi di applicazione di questo modello.

Indubbiamente l’analisi di questi dati è utile per comprendere se un sistema complesso, composto da diversi software che collaborano, sta performando correttamente e, in caso contrario, è estramemente utile all’individuazione delle anomalie che impattano sulle prestazioni del sistema.

Sul fronte della sicurezza informatica l’utilità è forse più lampante: malware e attacker generano tipicamente comportamenti inattesi all’interno dei sistemi informatici e tali comportamenti spesso passona inosservati ai classici sistemi di sicurezza che basano il loro funzionamento su specifiche firme o soglie.

In generale è più utile sapere se un utente sta eseguendo attività che di solito non esegue (es: copia massiva dei dati dal File Server) più che bloccare aprioristicamente tutti i canali di cominicazione verso l’esterno, tali azioni possono invece essere eseguite dal sistema che individua l’anomalia (remediation). In questo modo se il sistema ha imparato che l’utente Mario Rossi tipicamente lavora su 50 file al giorno e scambia 2 GB di dati con il File Server, potremmo istruirlo nel limitare il suo accesso ai servizi nel caso in cui il suo comportamento evidenzi una sensibile variazione… e in caso sarà possibile allertare il team competente.

In questo caso potremmo scoprire che la workstation di Mario Rossi è stata compromessa ed è in corso un tentativo di furto di informazioni, o che Mario Rossi stesso sta prelevando massivamente informazioni dal File Server senza apparante ragione che verrà puntualmente indagata.

Concludo con una nota non tecnica: esistono diverse soluzioni che mettono a disposizione queste potenzialità, alcume molto verticali dove sono già pronte alcune specifiche funzionalità, altre molto generaliste che richiedono molte configurazioni per lavorare correttamente. Ho avuto modo di notare che spesso ci si sofferma sulla rete con il paradigma Network-as-a-Sensor, sistema che trovo valido ma che reputo un po’ limitato rispetto alla visione più ampia in cui posso mettere a confronto il traffico di rete con i logs delle applicazioni e le metriche di funzionamento dei sistemi.

Diciamo che, come spesso capita, non c’è una soluzione che spicca particolarmente e il focus deve essere la specifica esigenza.

Tabula rasa

Come qualche anno fa sento la necessità di ricorrere ad un nuovo inizio con questo mio luogo ludico. In una decade si cambia molto e cambiano anche gli interessi, gli argomenti, i ritmi. Assecondo il cambiamento cestinando il vecchio blog.

Continuerò ad utilizzare il mio spazio personale per condividere idee e valutazioni personali, appunto. Sposto su LinkedIn Pulse i contenuti di carattere divulgativo: non mi piace mescolare tutto nella stessa piattaforma.