AI & Controlli di Sicurezza
Spesso mi chiedo quali vantaggi concreti possano offrire in ambito di “offensive security” l’utilizzo di tecnologie come il Machine/Deep Learning (o più ampiamente di Artificial Intelligence) e quali possano essere le reali applicazioni per consentirci di raggiungere migliori risultati in termini di controllo utilizzando invece che persone cicli macchina.
Con l’aumento delle superfici di rischio dovuto all’avvento di nuove frontiere tecnologiche come IoT, Cloud, e in generale 3rd platform, molte realtà che oggi si occupano di sicurezza si trovano impreparate e stentano a mantenere il passo con l’incredibile aumento della domanda per poter misurare con efficacia il rischio del proprio cyberspace.
L’avvento dell’intelligenza artificiale, come ogni altra nuova tecnologia per noi addetti alla Sicurezza informatica, rappresenta immediatamente una minaccia. Ma subito dopo risulta evidente che questa minaccia può introdurre enormi benefici nella Cyber Security stessa e che questi potranno essere l’unica strada per garantire un controllo efficace di tutte le direttrici di rischio, sperando anche ad un incremento della percentuale di LMC (livello massimo di confidenza) cosa che in grandi aziende, per motivi di tempo, risorse, costi e complessità dei sistemi sta diminuendo di anno in anno.
Quindi da non addetto ai lavori mi sono chiesto, se si possano automatizzare una serie di attività che svolgiamo ad elevato costo e skill come ad esempio i pentest. Ma prima di andare avanti ad immaginare un nuovo libro di Asimov mi chiedo, cosa è oggi un hacker e concedetemi di farlo con un po’ di poesia.
Cosa è un hacker
Un hacker o (nel nostro caso un “ethical-hacker” nel senso di “cattivo ma buono”) porta con se un ampio bagaglio culturale di anni basato su metodo, tecnica, intuito, genio e creatività. Questo lo porta a superare problemi di natura complessa utilizzando modelli euristici (spesso completamente empirici) oltre ad essere mosso da una folle “curiosità” e “passione” che lo spinge a “smontare” le cose per poi “ricostruirle” avendo cura di capire bene come sono fatte dentro, mettendo in dubbio il certo con l’incerto dove alcune volte, di incerto, non c’è proprio nulla.
Sono artisti del nuovo secolo che non portano con se un pennello e una tavolozza di colori ma tools informatici, grande conoscenza trasversale dei sistemi e la voglia costante di vincere una sfida infinita che non li porterà mai a nessun beneficio tangibile (nel caso di ethical) se non alla sola affermazione di essere capaci di arrivare a vedere oltre, dove gli altri non riescono a farlo.
Persone speciali con le quali può risultare difficile comunicare in un primo momento perché si aspettano altissime competenze e grande professionalità. Non sono le persone che si vedono nei film grasse con gli occhiali, con le maglie unte di grasso e patatine fritte appiccicate sulle t-shirt. Sono persone normali, ma piene di risorse e di capacità nascoste che solo trovando le giuste corde consentono di raggiungere traguardi impossibili sia a livello umano che a livello lavorativo.
AI applicata alla CyberSecurity
Come visto un ethical-hacker è una persona complessa che poco si sposa con un automa. Pensando di automatizzare attraverso un tool l’attività di un hacker con una concreta efficacia mi vengono in mente una serie di possibili problemi data l’attività poco modellizzabile perché fortemente abbinata ad intuito e genialità.
- Una vista semplice. Un pentest di fatto è testare se sono presenti exploit utilizzabili su un sistema, provarli fino ad arrivare a trovare una breccia, trovare le successive falle concatenandole tra loro fino ad arrivare ad acquisire un accesso amministrativo capace di accedere ai dati e compromettere l’intero sistema. Detta così è automatizzabile, anzi, per questioni di tempo non tutte le vulnerabilità “exploitabili” vengono testate, per un hacker una volta trovato il “buco” è finito il gioco, un automa sicuramente farà sicuramente di meglio.
- Una vista più complessa: e se l'”exploit” non è pubblico ma è una POC e occorre quindi costruirlo, se invece occorre analizzare il comportamento del sistema e i dati applicativi scambiati per poi scrivere del codice per ingegnerizzare il download dei dati. Se invece occorre capire tra tanti scenari “difficili” quale sia quello più fruttuoso in termini di exploit quando dai risultati di scansione sono presenti tutte vulnerabilità con criticità bassa? Probabilmente le cose si complicano.
Ora proviamo a descrivere un ipotetico modello: per “vulnerability-gate” verranno descritti gli Hop dell’assessment che consentiranno attraverso la loro combinazione di raggiungere il “Gold-gate” ovvero l’impatto finale.
- Percorso di attacco: modellare un percorso di attacco è semplice, partendo da un tool di scansione si recuperano le vulnerabilità exploitabili in modo da percorrerle fino al prossimo vulnerability gate. Comporta un’infinità di combinazioni che hanno una pre-condizione e una post-condizione che risulta direttamente proporzionale alla pervasività dell’assessment. Inoltre tecnicamente è possibile abbinare più tool di scansione per rilevare vulnerabilità exploitabily dove alcuni scanner falliscono (ad es. Drupal e Joomla-Scan avviato a seguito della rilevazione della porta 80 dall’NMap).
- Scelta dell’exploit: ogni vulnerabilità rilevata in discovery ha i suoi exploit che devono essere ricercati, scaricati, testati e sfruttati; pertanto è necessario un database degli exploit che si aggiorni costantemente per permettere il recupero e la scelta del miglior exploit presente sulla base delle “pre-condizioni” determinate dalla scansione e dalla potenziale minaccia in modo da guadagnare il prossimo vulnerability-gate.
- Produzione e utilizzo dell’Exploit: il tester per generare un impatto potrebbe scrivere codice e testarlo all’interno del sistema una volta individuata la vulnerabilità per passare al prossimo vulnerability-gate. Non abbiamo oggi strumenti automatici che scrivono codice sfruttando delle pre-condizioni e delle post-condizioni di contorno, che testino in esercizio tale exploit in maniera silente e non intrusiva. Questo risulta a mio avviso molto difficile da modellare.
- Genio, intuito e creatività: il tester spesso guadagna un Golden-Gate con eleganza e “singolarità”. Lo fa alcune volte in modo empirico e creativo, riuscendo sulla base della sua esperienza ad identificare rapidamente una soluzione, utilizzando proprio quelle informazioni che prima riportavo come “pre-condizioni” e “post-condizioni” che variano di volta in volta sulla base delle configurazioni dei sistemi e dei vulnerability-gate precedenti. La creatività è un reale problema di modellazione in quanto mette in discussione il certo per l’incerto, cosa che fanno gli esseri umani e non le macchine. Gli algoritmi possono provare una infinità di combinazioni, in forza bruta e con pattern complessi, ma le black-box in apprendimento non supervisionato riusciranno a mettere in discussione l’incerto e le condizioni di contorno come fa un hacker?
Quello che penso è che in questo dominio, arrivare al risultato di un hacker sarà quasi impossibile (ma forse mi sbaglio). Sicuramente avremo dei grandissimi risultati anche in tempi brevi sugli strumenti automatizzati di scansione, che a mio avviso sono molto indietro rispetto ai tempi e alle minacce che ogni giorno affliggono i nostri sistemi. Ad esempio, riallacciando il punto 3, molti software oggi (in particolare i vunerability Scanner Web) consentono di rilevare vulnerabilità exploitabili (se le rilevano) e molto spesso la loro pervasività è direttamente proporzionali ai possibili “deface” che possono essere fatti sui sistemi. Questo un hacker non lo fa perché conosce bene cosa vuol dire preservare il servizio e ha la giusta sensibilità nel farlo.
In un lontano “futuro” probabilmente si riuscirà in tutto questo (e spero anche a breve detto tra noi). Oggi è vero, riusciamo a pitturare bene una foro attraverso un algoritmo di Deep learning che sa come si riproduce un quadro impressionista di Van Gogh, ma riusciamo a creare Van Gogh?
Io credo che il genio umano rimarrà per lungo tempo indisturbato.
A cura di: Massimiliano Brolli
Attualmente responsabile delle funzione di monitoraggio dei piani di sicurezza e delle attività di risk Assessment sui sistemi TIM e società partecipate, ha rivestito diversi incarichi manageriali in Telecom Italia e TIIT (Telecom italia information tecnology) spaziando da attività di governance e Audit di sicurezza ad attività di gestione applicativa di piattaforme centralizzate con un passato nello sviluppo del software in società come IBM, 3inet, Praxi e Bnl oltre a numerose attività di docenza svolte su ambiti come uml, object oriented e differenti framework e linguaggi di programmazione.