Risk Assessment di ambienti applicativi: Servizi Web
Transcript
Risk Assessment di ambienti applicativi: Servizi Web
UNIVERSITÀ DI PISA Facoltà di scienze matematiche fisiche e naturali Dipartimento di Informatica Risk Assessment di ambienti applicativi: Servizi Web Laurea Magistrale in Informatica Lorenzo Isoni Relatore Esterno: Lucio Machetti Relatore Interno: Fabrizio Baiardi Anno Accademico 2013/14 Sommario Applicazioni e servizi web sono diventati lo strumento più popolare attraverso cui un numero sempre crescente di organizzazioni decide di interfacciarsi con il mondo esterno. La complessità delle applicazioni web più moderne, che integrano un numero sempre più vasto di tecnologie a livelli di astrazione differenti, genera un insieme di problemi relativi alla sicurezza che non può essere trascurato. I più recenti attacchi informatici non si limitano alla ricerca di una singola vulnerabilità ed all’utilizzo della stessa, ma cercano di concatenare delle sequenze più o meno complesse di attacchi che permettano ad un attaccante di raggiungere un obbiettivo di suo interesse. Questa tesi propone una soluzione per integrare le vulnerabilità di servizi web nell’analisi del rischio di un sistema ICT. Dopo una analisi teorica del problema, viene sviluppato un approccio che integra tali vulnerabilità con quelle dei livelli inferiori e viene condotto uno studio di un sistema per la gestione di smart meters della distribuzione di gas. Ringraziamenti Ai miei genitori, Per il supporto e la fiducia che mi hanno dato in tutti questi anni. A Roberta, Per il sostegno e l’incoraggiamento, per avermi dato la forza di andare sempre avanti. Al Prof. Baiardi, A Federico, Alessandro e Roberto, Per la pazienza, la disponibilità e l’aiuto durante la preparazione e la stesura della tesi. Indice 1 Introduzione ....................................................................................... 8 1.1 Stato dell’arte ......................................................................................................... 9 1.2 Analisi del Rischio ................................................................................................. 12 1.2.1 Identificazione delle minacce e delle vulnerabilità ....................................... 13 1.2.2 Determinazione delle probabilità, dell’impatto e del rischio........................ 14 2 Strumenti per l’analisi di vulnerabilità ............................................... 15 2.1 Standard vulnerability scanner ............................................................................. 15 2.1.1 Nessus ............................................................................................................ 15 2.1.2 Classificazione di vulnerabilità standard: CVE ............................................... 19 2.2 Web vulnerability scanner .................................................................................... 21 2.2.1 Security AppScan ........................................................................................... 21 2.2.2 Owasp ZAP ..................................................................................................... 25 2.2.3 Classificazione di vulnerabilità non standard ................................................ 28 3 Haruspex ........................................................................................... 30 3.1 Definizioni base .................................................................................................... 30 3.2 Descrizione dello scenario .................................................................................... 32 3.3 Descrizione delle minacce .................................................................................... 34 3.4 Simulazioni ............................................................................................................ 36 3.5 Risultati ................................................................................................................. 37 3.6 Stato dell’arte ....................................................................................................... 39 4 Ambienti applicativi ........................................................................... 41 4.1 Modello ad ambienti ............................................................................................ 42 1 4.1.1 Classificazione di ambienti applicativi ........................................................... 43 4.2 Modello ad ambienti: servizi web ........................................................................ 44 4.2.1 Classe Web..................................................................................................... 44 4.2.2 Classe Database ............................................................................................. 46 4.3 Implementazione del modello web ...................................................................... 47 4.3.1 Web Builder ................................................................................................... 47 4.3.2 Ulteriori estensioni ad Haruspex ................................................................... 52 5 Caso di studio .................................................................................... 53 5.1 Generalità ............................................................................................................. 54 5.2 Architettura del Sistema ....................................................................................... 55 5.2.1 RepartoB ........................................................................................................ 56 5.2.2 RepartoA ........................................................................................................ 56 5.2.3 Rete SSM ........................................................................................................ 57 5.3 Assessment del sistema ........................................................................................ 59 5.3.1 Output dello standard assessment................................................................ 60 5.3.2 Assessment Haruspex .................................................................................... 62 5.4 Considerazioni finali ............................................................................................. 73 Bibliografia ............................................................................................... 75 2 Elenco delle figure Figura 1.1 Vulnerabilità più diffuse secondo l’OSVDB ...................................................... 8 Figura 1.2 Confronto fra vulnerabilità web e vulnerabilità standard ............................... 9 Figura 1.3 Esempio di sequenza di attacchi ................................................................... 11 Figura 1.4 Metodologia OCTAVE .................................................................................... 12 Figura 2.1 Metriche CVSS ............................................................................................... 20 Figura 2.2 Schermata principale di AppScan .................................................................. 22 Figura 2.3 Flusso di esecuzione di una scansione AppScan ........................................... 24 Figura 2.4 Schermata principale di ZAP .......................................................................... 25 Figura 3.1 Esempio di curva di stress ............................................................................. 37 Figura 3.2 Curva di stress che confronta 3 sistemi differenti ......................................... 38 Figura 3.3 Descrizione modulare di Haruspex ................................................................ 39 Figura 4.1 Esempio di tipologie di relazione................................................................... 41 Figura 4.2 Esempio di modellazione ad ambienti .......................................................... 42 Figura 4.3 Modellazione di servizi web .......................................................................... 44 Figura 4.4 Modellazione Escape to OS ........................................................................... 45 Figura 4.5 Modellazione SQL Injection ........................................................................... 46 Figura 4.6 Web Builder ................................................................................................... 47 Figura 4.7 Esempio di alert generato da Owasp ZAP ..................................................... 48 Figura 4.8 Esempio di descrizione WASC ....................................................................... 49 Figura 4.9 Scope CAPEC .................................................................................................. 50 Figura 4.10 Valori d'impatto CAPEC ............................................................................... 51 Figura 5.1 Panoramica delle reti RepartoA e RepartoB ................................................. 55 Figura 5.2 Rete SSM, su Cloud Provider ......................................................................... 57 3 Figura 5.3 Resoconto vulnerabilità Nessus..................................................................... 60 Figura 5.4 Impatto vulnerabilità Nessus ......................................................................... 60 Figura 5.5 Resoconto vulnerabilità Owasp ZAP .............................................................. 61 Figura 5.6 Impatto vulnerabilità Owasp Zap .................................................................. 61 Figura 5.7 Curva di stress della Minaccia 1 .................................................................... 65 Figura 5.8 Curve di stress della Minaccia 2 .................................................................... 66 Figura 5.9 Curve di stress della Minaccia 3 .................................................................... 68 Figura 5.10 Curve di stress della Minaccia 4 .................................................................. 69 Figura 5.11 Curve di stress della Minaccia 5 .................................................................. 70 Figura 5.12 Curve di stress della Minaccia 6 .................................................................. 71 Figura 5.13 Confronto fra le strategie migliori ............................................................... 72 4 Elenco delle tabelle Tabella 3.1 Acronimi Haruspex ....................................................................................... 32 Tabella 5.1 Reti analizzate con Nessus ........................................................................... 59 Tabella 5.2 Riepilogo delle minacce simulate ................................................................ 63 Tabella 5.3 Report Minaccia 1 ........................................................................................ 65 Tabella 5.4 Report minaccia 3 ........................................................................................ 66 Tabella 5.5 Report Minaccia 3 ........................................................................................ 68 Tabella 5.6 Report Minaccia 4 ........................................................................................ 69 Tabella 5.7 Report Minaccia 5 ........................................................................................ 70 Tabella 5.8 Report Minaccia 6 ........................................................................................ 71 Tabella 5.9 Risultati con integrazione Web .................................................................... 73 Tabella 5.10 Riepilogo simulazioni web totale ............................................................... 74 5 Organizzazione della tesi Capitolo 1: Introduzione Questo capitolo introduce la problematica affrontata nella tesi, ovvero la necessità di integrare le vulnerabilità web nella valutazione del rischio di un sistema ICT. Il capitolo presenta inoltre alcuni richiami e definizioni base relative all’analisi del rischio. Capitolo 2: Strumenti per l’analisi di vulnerabilità Questo capitolo presenta alcuni vulnerability scanner, strumenti automatizzati per l’analisi di vulnerabilità standard e non. Vengono inoltre presentati gli standard di riferimento adottati dagli strumenti per la classificazione delle vulnerabilità. Capitolo 3: Haruspex Questo capitolo presenta Haruspex, un insieme di strumenti software il cui scopo è quello di valutare e gestire il rischio di un sistema ICT. A partire dalla descrizione di uno scenario, Haruspex simula il comportamento di un attaccante che cerca di raggiungere i suoi obiettivi mediante la composizione di una sequenza di attacchi. Capitolo 4: Ambienti applicativi Questo capitolo presenta l’estensione apportata ad Haruspex per modellare gli ambienti applicativi. Nella prima parte si descrive il modello teorico, nella seconda parte si descrive come questo sia stato istanziato per modellare gli ambienti web. Capitolo 5: Caso di studio Questo capitolo descrive il caso di studio svolto in collaborazione con Terranova Software. Nella prima parte viene descritto il sistema target dell’assessment. Nella seconda parte viene descritta la modellazione realizzata con Haruspex, e vengono presentati i risultati ottenuti tenendo conto dell’estensione web introdotta nel 4° capitolo. 6 7 1 INTRODUZIONE A partire dagli anni ‘90 applicazioni e servizi web sono diventati lo strumento più popolare attraverso cui un numero sempre crescente di aziende ed organizzazioni ha deciso di interfacciarsi con il mondo esterno. Dai più semplici servizi di e-commerce, che consentono di effettuare comodamente acquisti online, alle università che offrono ai propri studenti la possibilità di iscriversi agli esami, o alle aziende che offrono servizi di consulenza e supporto, i servizi web rappresentano oggigiorno una delle tecnologie maggiormente affermate ed impiegate nella rete Internet. La complessità delle applicazioni web più moderne, che integrano un numero sempre più vasto di tecnologie a livelli di astrazione differenti, genera un insieme di problemi relativi alla sicurezza che non può essere trascurato. A testimoniare un sempre crescente interesse verso i servizi web anche da parte degli attaccanti vi sono un importante numero di studi recenti, ad esempio [1], che mostrano come la maggior parte delle vulnerabilità che affliggono i sistemi informatici siano oggigiorno relative alle tecnologie web. Figura 1.1 Vulnerabilità più diffuse secondo l’OSVDB Il grafico della figura 1.1, estratto dal Cyber Risk Report [1], mostra come ben 4 sulle 6 più diffuse vulnerabilità (cross-site scripting, cross-site request forgery, remote file inclusion, SQL injection) riguardino esclusivamente i servizi web. 8 In accordo con l’Open Source Vulnerability DataBase (OSVDB) le sole vulnerabilità lato web rappresentano ad esempio il 40% di tutte le vulnerabilità scoperte e riportate nel 2012. Figura 1.2 Confronto fra vulnerabilità web e vulnerabilità standard 1.1 Stato dell’arte Nel corso degli anni sono nate diverse organizzazioni quali Open Web Application Security Project (OWASP) e Web Application Security Consortium (WASC), per offrire un punto di riferimento per la comprensione dei problemi di sicurezza inerenti ai servizi web. I siti gestiti da queste organizzazioni permettono di accedere ad una notevole quantità di informazioni sulle più diffuse vulnerabilità, i principali attacchi che consentono di sfruttarle e quali sono le contromisure che dovrebbero essere adottate per limitarli. Esistono inoltre guide alla prevenzione dei problemi di sicurezza, con l’ambizioso obiettivo di istruire i programmatori ad acquisire uno stile di programmazione più sicuro. Alcune di queste organizzazioni, in particolare WASC, cercano di definire anche uno standard di riferimento per la classificazione delle vulnerabilità. 9 Informazioni come le precedenti rappresentano un essenziale punto di partenza per la gestione della sicurezza lato web. E’ tuttavia importante essere consapevoli della necessità di una ulteriore elaborazione di questi dati nel momento in cui si desidera considerare il web come una componente integrante di un sistema informatico. Cerchiamo di comprenderne al meglio le ragioni attraverso un esempio. 1.1.1 Esempio Consideriamo un’azienda che fornisca un certo servizio e che abbia integrato nella propria rete aziendale un servizio web, accessibile attraverso internet, a cui i clienti possono collegarsi per monitorare i costi loro addebitati. Se il sito è affetto da una vulnerabilità che consente di bypassare l’autenticazione (1° attacco), un exploit ad essa associato garantirebbe ad un agente esterno l’accesso a dei contenuti altrimenti irraggiungibili. Consideriamo come esempio un caso relativamente semplice di una form HTML, che permette all’utente di inserire una data relativa al periodo dei consumi di suo interesse. Le informazioni inserite in questo campo vengono utilizzate dal Web Server per generare un’istruzione SQL. L’assenza di opportuni controlli sui valori trasmessi in ingresso può consentire all’attaccante di trasmettere dati inattesi e realizzare una SQL Injection (2° attacco), che gli può permettere di accedere a tutte le informazioni memorizzate sul Database. Consideriamo un ulteriore passo da parte dell’attaccante, che dopo aver guadagnato l’accesso alla base di dati può scoprire e sfruttare una vulnerabilità che gli consente di eseguire del codice a livello del sistema operativo (3° attacco). Considerando che il database potrebbe trovarsi anche su una macchina fisicamente differente dal servizio web, in questo modo l’attaccante è stato in grado di compromettere più nodi del sistema guadagnandone il totale controllo. L’esempio discusso mostra come sfruttando una sequenza di due vulnerabilità relative al servizio web, in composizione con una terza dipendente dall’ambiente applicativo, un attaccante esterno possa realizzare una escalation dei propri privilegi tale da consentire l’accesso nell’infrastruttura ICT. I privilegi ottenuti possono inoltre essere visti non solo 10 come punti di arrivo ma anche come un nuovo punto di partenza che permette di eseguire nuove sequenze di attacchi. 1° attacco 3° attacco 2° attacco Figura 1.3 Esempio di sequenza di attacchi L’esempio illustrato descrive uno scenario estremamente realistico: i più recenti attacchi informatici non si limitano alla ricerca di una singola vulnerabilità ed all’utilizzo della stessa, ma cercano di concatenare delle sequenze più o meno complesse di attacchi che permettano ad un attaccante di raggiungere un obbiettivo di suo interesse. Questo esempio evidenzia la necessità di integrare la classificazione delle vulnerabilità di un servizio web con le vulnerabilità di un’intera infrastruttura informatica. E’ solo attraverso una loro correlazione, infatti, che diventa possibile descrivere con un’adeguata accuratezza uno scenario che modelli la realtà di un attuale sistema ICT. In particolar modo diventa essenziale la capacità di modellare attaccanti intelligenti, in grado di spostarsi da un ambiente applicativo ad un altro in base agli obiettivi che vogliono raggiungere. 11 1.2 Analisi del Rischio L’analisi e la gestione del rischio sono parte integrante dell’attività umana; l’intraprendere un’attività commerciale, guidare una macchina, attraversare la strada nel bel mezzo di una via trafficata, sono tutte attività che comprendono l’analisi e la valutazione del rischio, ovvero l’eventualità di subire un danno a causa di circostanze più o meno prevedibili. Il processo di analisi del rischio per un sistema ICT ha il compito di individuare le vulnerabilità presenti e di proporre delle contromisure per limitarne gli effetti. Il termine sistema comprende un insieme eterogeneo di elementi: può riguardare un impianto, un processo produttivo, un servizio; da questa definizione risulta chiaro come l’analisi del rischio non sia legata al solo settore informatico, bensì costituisca un’attività trasversale a tutti i settori. Figura 1.4 Metodologia OCTAVE La figura 1.4 descrive graficamente il processo ciclico che caratterizza la gestione del rischio, così come è definito secondo la metodologia OCTAVE (Operationally Critical Threat, Asset, and Vulnerability Evaluation) [2]: dopo una fase preliminare di analisi, si passa ad una fase di implementazione ed in seguito al controllo delle misure di sicurezza. Il processo di analisi del rischio può essere suddiviso in una sequenza di passi: 12 1. Identificazione degli asset 2. Identificazione delle minacce 3. Identificazione delle vulnerabilità 4. Determinazione delle probabilità degli eventi associati alle minacce 5. Analisi degli impatti 6. Determinazione del rischio. Nei paragrafi successivi saranno discusse in maggiore dettaglio le singole fasi. 1.2.1 Identificazione delle minacce e delle vulnerabilità Nella fase preliminare è fondamentale analizzare l'intera infrastruttura: l’hardware, il software, la topologia della rete, i dati trattati, fino ad arrivare alla sicurezza fisica ed alle persone che gestiscono e s’interfacciano con il sistema. Tutte le informazioni ricavate sono fondamentali per: Identificazione degli asset: con asset si definisce tutto ciò che ha valore o rappresenta utilità per l’azienda, e deve essere dunque protetto. Descrive quelle componenti che, se attaccate con successo, generano una perdita. Si può parlare sia di risorse fisiche (ad esempio la potenza di computazione o la banda di rete) che logiche (ad esempio servizi o applicazioni). Stabilire il valore di una risorsa è un’attività non banale; un possibile approccio potrebbe essere quello di considerare il costo di ricostruzione qualora una risorsa venga compromessa. Identificazione delle minacce: deve individuare un insieme di eventi in grado di causare un danno all’azienda. Esempi possibili sono la perdita di dati sensibili, l’alterazione od il blocco dei servizi. Per ogni minaccia è importante identificare il punto di origine, i prerequisiti di cui ha bisogno in termini di diritti e risorse, le azioni che deve eseguire per raggiungere i propri obiettivi e le conseguenze in caso di successo; Identificazione delle vulnerabilità: una vulnerabilità rappresenta un difetto nella progettazione, nell’ implementazione di un componente o nei controlli di sicurezza del sistema che può essere sfruttata, intenzionalmente o meno, da una minaccia per violare il sistema. L'output di questa fase è l’elenco delle 13 vulnerabilità dei componenti del sistema, delle minacce che potrebbero utilizzarle e delle azioni necessarie per sfruttare la vulnerabilità. 1.2.2 Determinazione delle probabilità, dell’impatto e del rischio La determinazione del rischio considera due parametri fondamentali: L’impatto generato da un evento negativo; La probabilità che l’evento occorra. Una stima dell’impatto può essere ottenuta mediante una valutazione della perdita in termini di integrità (la risorsa colpita è stata alterata o distrutta), di confidenzialità (la risorsa diventa nota all’attaccante) e di disponibilità (l’accesso alla risorsa viene negato). Lo standard ISO27001 ad esempio associa una scala di valori low, medium ed high a ciascuno dei parametri; la somma di questi parametri fornisce il valore dell’asset. La valutazione della probabilità deve tener conto di diversi fattori, quali ad esempio le capacità e le motivazioni dell’attaccante, la natura della vulnerabilità e le contromisure adottate per proteggere il sistema. Il valore della probabilità può essere stabilito secondo una scala di riferimento: il modello NIST [3] stabilisce ad esempio i valori low, medium e high. 14 2 STRUMENTI PER L’ANALISI DI VULNERABILITA Questo capitolo presenta alcuni dei più noti vulnerability scanner, ovvero strumenti per automatizzare la scoperta delle vulnerabilità di un sistema. 2.1 Standard vulnerability scanner 2.1.1 Nessus Nessus è un security scanner nato nel 1998 e sviluppato da Teenable Network Security. In origine era distribuito come software libero attraverso la licenza GNU (General Public License), ma a partire dal 2005 è diventato software proprietario e viene distribuito attraverso due licenze: Gratuita, limitata al solo utilizzo privato e senza alcun supporto tecnico. E’ possibile scansionare un numero limitato di host servendosi di un numero limitato di plugin; A pagamento, attraverso sottoscrizione annuale, priva di limitazioni di sorta. 2.1.1.1 Come funziona Nessus effettua l’analisi di un sistema da remoto grazie all’utilizzo dei plugin, programmi di dimensione ridotta il cui compito è quello di rilevare un insieme noto di vulnerabilità. I plugin sono scritti in NASL (Nessus Attack Scripting Language), un linguaggio di scripting specializzato per le comunicazioni su una rete TCP/IP ed in grado di compiere attacchi a diversi livelli della pila ISO/OSI. L’analisi effettuata da Nessus è formata da una sequenza di passi: 15 1. Verifica degli host attivi sulla rete, nel caso in cui non venga fornita una lista di indirizzi IP da analizzare; 2. Esecuzione di un port scanning completo per ogni host attivo; 3. Esecuzione dei plugin selezionati nella fase di configurazione dall’utente; 4. Generazione di un report, esportabile, che descrive nel dettaglio ogni vulnerabilità rilevata. 2.1.1.2 Architettura Nessus adotta un’architettura client-server. Il client si presenta come un’interfaccia web, utilizzabile dall’utente per configurare la scansione e visualizzare i risultati. Il server è composto invece da: Un interprete NASL, che traduce i plugin in istruzioni per l’engine; L’engine, che riceve le istruzioni dall’interprete ed esegue la scansione vera e propria; Un knowledge base, un componente che memorizza e condivide le informazioni rilevate dai vari plugin. Memorizza indicazioni quali il tipo di servizio identificato, la porta su cui è in ascolto, lo stato di funzionamento etc. 2.1.1.3 Configurazione della scansione Nessus consente all’utente di configurare la politica di scansione specificando un insieme di parametri. La configurazione è ottenuta in base ad un insieme di scelte per raggiungere un compromesso tra rischi e benefici. Poiché Nessus esegue una serie di operazioni indistinguibili da un attacco reale, i rischi da considerare sono, ad esempio, il blocco dei servizi di rete o degli host, l’alterazione dei percorsi di rete o la stampa incontrollata di dati casuali. Queste motivazioni possono portare ad escludere una tipologia di servizi o un gruppo di host dalla scansione. La scelta di escludere parte del sistema può essere influenzata anche dalla necessità di ridurre il tempo per realizzare la scansione. Questo compromesso non riguarda solo la scelta degli host da includere nella scansione, ma anche quella dei plugin da eseguire e la loro modalità di esecuzione. Infatti, tale 16 modalità può essere prudente, safe mode, o aggressiva. La modalità di esecuzione determina quali istruzioni possono essere eseguite in un plugin. Un attacco aggressivo invia una o più richieste all’host, anche malformate, per analizzare le risposte ricevute e capire se è vulnerabile. Un attacco safe mode, invece, si limita ad una semplice interpretazione delle informazioni recuperate dai messaggi di presentazione ottenuti durante una connessione ad un servizio di rete. Altri parametri interessanti consentono la memorizzazione di credenziali di accesso a diversi servizi quali Samba, o i database. E’ possibile inoltre bilanciare l’utilizzo delle risorse, definendo ad esempio il numero di thread da istanziare od il numero di richieste da inviare in caso di fallimento. 2.1.1.4 I plugin Nessus mette a disposizione più di 60000 plugin diversi, che l’utente seleziona nella fase di configurazione della scansione a seconda delle esigenze. Poiché i plugin possono condividere informazioni attraverso il knowledge base, la loro esecuzione viene regolata da 2 vincoli: Per garantire la consistenza occorre che i plugin siano eseguiti nell’ordine in cui accedono al knowledge base. Deve essere rispettata la regola per cui ogni plugin che fa uso di un’informazione condivisa deve essere eseguito dopo il plugin che fornisce tale informazione; Non si deve verificare un’interferenza tra i vari plugin. Questo vincolo è soddisfatto quando, per ogni host e per ogni servizio, vengono eseguiti inizialmente quei plugin che implementano attacchi che non causano malfunzionamenti e, solo successivamente, tutti gli altri in ordine di aggressività crescente. Questo comportamento cerca di evitare interferenze tra diversi attacchi, ad esempio un plugin che potrebbe causare il riavvio di un host non deve essere eseguito prima di tutti quegli attacchi che, pur interagendo con l’host, non ne alterano lo stato. L’esecuzione di ogni plugin prevede i seguenti passi: 17 1. Controlla che tutti i plugin da cui dipende siano già stati eseguiti; 2. Controlla se i servizi che deve analizzare sono attivi sull’host; 3. Se non vengono trovati servizi attivi, il plugin può procedere con l’esecuzione utilizzando impostazioni di default o può terminare la propria esecuzione; 4. Analisi delle risposte raccolte da un precedente port scan e del loro contenuto per determinare se vi siano vulnerabilità riconoscibili. Questa fase può utilizzare, ad esempio, il nome e la versione del software che fornisce il servizio; 5. Se consentito dalla configurazione safe mode, verifica dell’esistenza della vulnerabilità. Tipicamente vengono inviate delle richieste appositamente generate ed analizzate le risposte ricevute. In base alle risposte si determina se la vulnerabilità esiste; 6. Assegna all’eventuale vulnerabilità scoperta un valore che ne determina il livello di rischio. Tale valore è deciso dall’autore del plugin. E’ possibile che un plugin generi informazioni parzialmente corrette o incomplete. Questo può trarre in inganno l’utente generando falsi positivi o anche falsi negativi. Alcuni esempi: Backporting: si verifica quando un servizio non modifica la propria risposta in seguito all’applicazione di un aggiornamento che corregge una vulnerabilità. In questo caso il knowledge base contiene un’informazione non aggiornata e favorisce il verificarsi di falsi positivi, soprattutto in caso di scansione non invasiva; Ricerca di malware: l’analisi condotta per rilevare un cavallo di troia potrebbe segnalare l’apertura della porta ad esso associata anche se il servizio in ascolto sulla porta è legittimo. In questo caso il plugin potrebbe segnalare la presenza di un software sospetto in ascolto che in realtà non esiste. Ancora un volta è una situazione che potrebbe verificarsi in caso di scansione non invasiva. 18 2.1.1.5 Risultati della scansione Al termine della scansione è possibile visualizzare i risultati attraverso l’interfaccia del client, oppure esportando dei report. Per comprendere correttamente l’output è necessario conoscere le definizioni di vulnerabilità, di rischio e capire la logica adottata da Nessus nel valutare la loro presenza. Una vulnerabilità in una rete TCP/IP può essere dovuta ad un errore di programmazione, configurazione o amministrazione che abilita attacchi contro il sistema. Le proprietà critiche per la sicurezza di un sistema sono la confidenzialità, l’integrità e la disponibilità. Un report di Nessus contiene una lista delle vulnerabilità, ma uno strumento automatizzato come Nessus non è in grado di valutare correttamente se una vulnerabilità che è presente su un host possa mettere a rischio anche gli altri host presenti nella rete. In altre parole, non è in grado di valutare quali attacchi complessi sono abilitati da vulnerabilità nei singoli nodi. 2.1.2 Classificazione di vulnerabilità standard: CVE Il CVE (Common Vulnerabilities and Exposures) [4] è un database pubblico di vulnerabilità note. Si tratta di uno standard emergente utilizzato da diverse organizzazioni nell’ambito della sicurezza informatica. Ogni vulnerabilità CVE è associata ad uno score CVSS (Common Vulnerability Scoring System) [5], descritto da 3 tipi di metriche: Base: rappresenta le caratteristiche di una vulnerabilità che sono costanti nel tempo ed indipendenti dal contesto in cui si trovano. Informazioni di questo tipo sono ad esempio l’impatto generato dalla vulnerabilità in termini di confidenzialità, integrità e disponibilità. Temporal: rappresenta le caratteristiche di una vulnerabilità che cambiano nel tempo, come ad esempio la possibilità di sfruttare la vulnerabilità mediante un exploit pubblico, oppure la presenza di una patch in grado di risolvere la vulnerabilità. 19 Environmental: rappresenta le caratteristiche di una vulnerabilità che sono rilevanti rispetto al contesto utente in cui vengono considerate. Informazioni di questo tipo comprendono l’impatto collaterale che la vulnerabilità genera se sfruttata da un attaccante, come ad esempio una perdita finanziaria. Figura 2.1 Metriche CVSS I vulnerability scanner standard quali Nessus associano a ciascuna vulnerabilità scoperta, se disponibile, un identificativo CVE di riferimento al database pubblico. 20 2.2 Web vulnerability scanner I web vulnerability scanner sono software specializzati nell’analisi di siti ed applicazioni web. Esiste un numero molto elevato di scanner web, sia gratuiti che open source. Nel seguito saranno presentati due di essi: AppScan e ZAP. 2.2.1 Security AppScan AppScan è uno strumento proprietario sviluppato da IBM che automatizza la ricerca di vulnerabilità note, quali Cross-site Scripting e SQL Injection, di siti ed applicazioni web. Attualmente vengono commercializzate diverse versioni del software, ognuna delle quali richiede una licenza a pagamento: AppScan Standard Edition: rappresenta la versione base del prodotto. Consente di effettuare un’analisi di tipo glass box, che combina l’analisi dinamica del black box con l’analisi statica del white box. Per effettuare quest’ultima è necessario installare un agente lato server; AppScan Enterprise Edition: versione client-server del prodotto, per favorire la scalabilità dei test e delle scansioni; AppScan Source Edition: versione specializzata nell’analisi white box, assiste durante le fasi di sviluppo degli applicativi web, intervenendo prima della loro pubblicazione. Esistono inoltre ulteriori versioni del prodotto, relative ad esempio ad applicativi di tipo mobile. E’ possibile ottenere una versione di prova illimitata della versione standard, con la quale è tuttavia possibile scansionare un solo sito web predefinito e non modificabile. 2.2.1.1 Come funziona La scansione effettuata da AppScan è divisa in due passi principali, chiamati stage: Explore stage: AppScan esplora il sito web simulando il comportamento di un utente, cliccando sui link presenti nelle pagine, completando i campi delle form. 21 Per ogni richiesta inviata nel corso della navigazione analizza la risposta ottenuta, generando automaticamente dei test qualora rilevi la possibile presenza di una vulnerabilità. In questa fase vengono inviate numerose richieste sia malformate che legittime. Il risultato prodotto da questa fase è un albero che descrive l’organizzazione di file e cartelle del sito web, associato all’insieme di test da eseguire. Test stage: tutti i test generati nella fase di esplorazione vengono eseguiti. Ad ogni vulnerabilità rilevata vengono associate delle informazioni, quale il livello del rischio, una descrizione ed i riferimenti alle componenti affette. La fase di esplorazione e testing definiscono insieme una fase. Poiché l’esecuzione di un test può permettere di scoprire componenti da analizzare, AppScan esegue un numero prefissato di 4 fasi, in cui ripete ogni volta sia la fase di esplorazione che la fase di testing. Se al termine di una singola fase lo scanner non ha potuto scoprire nuove componenti da analizzare, la scansione viene arrestata. Nella configurazione dello scanning è possibile modificare il numero massimo di fasi che devono essere eseguite. Figura 2.2 Schermata principale di AppScan 22 La fase di esplorazione del sito web può essere effettuata anche manualmente, attraverso l’utilizzo di un browser opportunamente configurato. 2.2.1.2 Configurazione della scansione AppScan mette a disposizione dell’utente dei template, ovvero configurazioni predefinite che possono essere selezionate per le scansioni. E’ possibile creare dei template nuovi o personalizzare quelli già esistenti. Alcune informazioni che è possibile inserire o manipolare sono le seguenti: Explore stage o URL del sito web da analizzare, o file WSDL nel caso di servizio web; o Credenziali per l’accesso, metodo di autenticazione; o Eventuali domini esterni da considerare; o Url e percorsi da ignorare; o Definizione dell’ambiente, come ad esempio il tipo di server web (apache, asp.net) o di database (MYSQL, SQL Server); Test Stage o Severità dei test (livello basso, medio o alto), a seconda che si voglia adottare un approccio più o meno aggressivo; o Numero di test da effettuare, priorità di esecuzione; o Tipologia di test da effettuare; Numero massimo di fasi per la scansione. Al termine della configurazione AppScan esegue un’utility nominata “Scan Expert”, che valuta la configurazione generata e suggerisce eventuali modifiche per migliorare le performance di esecuzione della scansione. 2.2.1.3 Risultati della scansione Al termine della scansione AppScan visualizza un elenco delle vulnerabilità web riscontrate. Per ciascuna di essa riporta informazioni quali la tipologia, una descrizione 23 della problematica, l’impatto da essa generato, il componente che ne è affetto ed eventuali riferimenti a classificazioni quali WASC[6] o CWE[7]. Per ciascuna vulnerabilità vengono inoltre proposte contromisure ed eventuali rimedi. I risultati possono essere esportati in diversi formati quali pdf, xml o html. E’ inoltre possibile generare report che rispettano determinati standard di settore, come ad esempio l’ISO 27002 [8] o NIST 800-53 [9]. Figura 2.3 Flusso di esecuzione di una scansione AppScan 24 2.2.2 Owasp ZAP Zed Attack Proxy (ZAP) è un web vulnerability scanner open source rilasciato nel 2010 da OWASP. Il software è sviluppato principalmente nel linguaggio Java, è gratuito e multipiattaforma. E’ disponibile per sistemi operativi Windows, Linux e Mac OS. Viene presentato anche come strumento per il penetration testing di siti ed applicazioni web. La distribuzione open source del software rende ZAP uno scanner estendibile: è integrato infatti nell’applicazione un marketplace dove è possibile scaricare degli addon, ovvero componenti applicativi pubblicati da sviluppatori per aggiungere funzionalità allo scanner. E’ possibile ad esempio arricchire i dizionari utilizzati per effettuare attacchi di brute force, oppure facilitare l’interazione dello scanner con programmi sviluppati da terzi, rendendo esportabili i parametri od i risultati prodotti dallo scanner. Figura 2.4 Schermata principale di ZAP 25 2.2.2.1 Come funziona La scansione condotta da ZAP è composta da due passi principali: Spidering, dove lo scanner esplora l’intero sito web a partire da un url di riferimento. La fase di spidering può essere eseguita manualmente dall’utente attraverso un browser oppure automatizzata. Nel secondo caso lo scanner segue tutti i link presenti nelle pagine web che riesce a raggiungere. I risultati prodotti dalla fase di spidering possono essere arricchiti avviando uno spider AJAX, presente di default nell’applicazione: si tratta di un add-on che consente di effettuare il crawling di pagine dinamiche che fanno utilizzo di AJAX (Asynchronous JavaScript And Xml) per la generazione delle richieste. Active Scanning, dove ZAP sfrutta le informazioni raccolte nella fase di spidering per attaccare il sito web alla ricerca di vulnerabilità note come ad esempio Path Traversal o Code Injection. La rilevazione avviene attraverso l’esecuzione di attacchi veri e propri. E’ possibile configurare ZAP in modo che esegua uno scanning di tipo passivo, privo cioè di attacchi diretti verso il sito web. Questo scanning deduce la presenza di vulnerabilità analizzando lo scambio di messaggi che avviene fra il browser ed il sito web. E’ possibile inoltre specificare dei breakpoints, ovvero punti di arresto nella comunicazione tra lo scanner ed il sito web, per dar modo all’utente di analizzare e modificare manualmente il contenuto dei messaggi inviati da ZAP prima che questi vengano inoltrati. Ad ogni scansione ZAP associa la definizione di contesto, che definisce l’insieme delle URL che fanno parte dell’applicazione web che si intende analizzare. E’ possibile associare una configurazione differente ad ogni contesto, ed è possibile associare più di un contesto allo stesso applicativo web. 26 2.2.2.2 Configurazione della scansione In ZAP è possibile definire due configurazioni diverse: una relativa allo scanner ed una relativa al contesto. La configurazione del contesto consente di specificare: Le credenziali di accesso degli utenti (username e password); Il tipo di autenticazione da implementare (HTTP authentication, form based authentication); Eventuali domini esterni da considerare o ignorare nella fase di spidering. La possibilità di associare delle credenziali ad un contesto consente di effettuare scansioni del sito web secondo la prospettiva di utenti differenti. E’ possibile ad esempio specificare per lo stesso contesto credenziali appartenenti ad un utente di tipo amministratore e ad un utente di tipo “guest”. Ciò permette di indicare allo scanner di analizzare il sito web in accordo con quelle che sono le risorse accessibili dall’utente specificato. La configurazione dello scanner comprende invece informazioni di carattere più generale, quali ad esempio: Il tipo di elementi su cui condurre attacchi che prevedono iniezione di codice (parametri presenti nell’URL, header HTTP, attributi xml etc); Selezione degli add-on da utilizzare; Numero massimo di link da seguire nella fase di spidering; Numero di thread massimo da utilizzare nell’esecuzione della scansione; Livello di aggressività da considerare per gli attacchi condotti durante fase di active scan. 2.2.2.3 Risultati della scansione Al termine dalla scansione ZAP genera degli alert, ovvero degli avvisi che associano ad ogni vulnerabilità scoperta delle informazioni in grado di classificarla. Per ciascuna vulnerabilità vengono riportati il tipo di attacco che è stato identificato, in che modo è stato testato, la URL di riferimento, la gravità della vulnerabilità, una 27 descrizione del problema, una possibile soluzione e gli identificativi di riferimento per la classificazione WASC e CWE. E’ possibile esportare i risultati della scansione in un report, sotto forma di file HTML o XML. 2.2.3 Classificazione di vulnerabilità non standard Le vulnerabilità scoperte da uno scanner web appartengono alla categoria delle vulnerabilità non standard, ovvero vulnerabilità per le quali non esiste un database di riferimento, come il CVE, a cui potersi ricondurre per una loro classificazione. In rete esistono tuttavia diversi progetti indipendenti, quali WASC e CAPEC, che hanno come obiettivo la definizione di uno standard di riferimento per la classificazione delle vulnerabilità e degli attacchi web. 2.2.3.1 WASC Threat Classification Il WASC Threat Classification [6] è un progetto sviluppato dal gruppo WASC (Web Application Security Consortium) per promuovere una terminologia standard con cui classificare le vulnerabilità e gli attacchi web. Il progetto definisce un totale di 49 classi mediante cui vengono descritte le vulnerabilità e gli attacchi web. Per ciascuna classe, WASC fornisce le seguenti informazioni: Una descrizione testuale della vulnerabilità e degli attacchi da essa abilitati; Una lista di esempi, che mostrano il funzionamento di un attacco che sfrutta la vulnerabilità associata; Eventuali referenze a siti esterni, ovvero indirizzi di siti web in cui è possibile trovare ulteriori approfondimenti ed integrazioni. 2.2.3.2 CAPEC CAPEC (Common Attack Pattern Enumeration and Classification) [10] è progetto realizzato dall’organizzazione MITRE, con l’obiettivo di stabilire una classificazione di riferimento per la descrizione di attacchi web noti. 28 Per ciascuno degli attacchi classificati, CAPEC definisce le seguenti informazioni: Una descrizione testuale dell’attacco; Una possibile sequenza di passi che deve essere implementata dall’attaccante per realizzare l’attacco; I prerequisiti che l’attaccante deve possedere per effettuare l’attacco; La probabilità di successo dell’attacco; Le abilità richieste dell’attaccante per realizzare l’attacco; Le risorse richieste per realizzare l’attacco; Un elenco di soluzioni che è possibile implementare per risolvere le vulnerabilità che abilitano l’attacco; L’impatto generato da un attacco che termina con successo nei confronti dell’integrità, della confidenzialità e della disponibilità del componente attaccato. 29 3 HARUSPEX Haruspex è una suite sviluppata dal gruppo di sicurezza del Dipartimento di Informatica dell’Università di Pisa. L’obiettivo degli strumenti della suite è quello di valutare e gestire il rischio di un sistema ICT complesso utilizzando un metodo probabilistico, quantitativo e formale [11] [12] [13] [14] [15] [16]. Haruspex applica il metodo Monte Carlo ad uno scenario dove una minaccia intelligente, a partire da un insieme di diritti iniziali, compone una sequenza di attacchi per raggiungere i suoi obiettivi. La suite opera sulla definizione di uno scenario, che descrive il sistema target dell’assessment, le sue vulnerabilità e gli attacchi che possono essere effettuati. A partire da tale descrizione il metodo Monte Carlo simula passo per passo il comportamento di un attaccante. 3.1 Definizioni base Di seguito verranno introdotte alcune definizioni utili per comprendere il funzionamento di Haruspex. Componente: rappresenta un modulo hardware o software del sistema analizzato. Il livello di astrazione scelto nella descrizione determina il numero di componenti che possono essere presenti e le operazioni da loro svolte. Agente: rappresenta una minaccia, un attaccante che ha l’interesse e la capacità di violare la sicurezza di un sistema ICT. Obiettivi: ogni obiettivo, o goal, comprende i diritti che l’attaccante desidera acquisire nel sistema attaccato. Ogni diritto permette di invocare un’operazione di un qualche componente. Vulnerabilità: ogni componente può essere affetto da vulnerabilità, difetti od errori in grado di abilitare attacchi elementari. 30 Attacco elementare: definisce un’azione indivisibile che può essere effettuata dall’attaccante e che sfrutta una o più vulnerabilità per ottenere illegalmente dei diritti. Un attacco elementare è associato ad un insieme di attributi: o Probabilità di successo: rappresenta la probabilità che l’attacco abbia successo. Un attacco può fallire a causa di fattori fuori dal suo controllo. Ad esempio, un azione potrebbe avere successo solo se eseguita in un preciso istante temporale che l’attaccante non controlla. o Pre-condizioni: rappresentano i diritti che l’attaccante deve possedere per potere eseguire l’azione. Ad esempio, l’attaccante può inviare un parametro corrotto ad un metodo vulnerabile solo se possiede il diritto di invocare l’operazione coinvolta. o Post-condizioni: rappresentano i diritti che l’attaccante acquisisce se l’attacco ha successo. o Tempo di esecuzione: rappresenta il tempo necessario all’attaccante per eseguire le azioni dell’attacco. Attacco complesso: rappresenta la composizione sequenziale di attacchi elementari. Consente di modellare una privilege escalation, in cui un attaccante esegue l’attacco elementare i per acquisire i diritti necessari per l’esecuzione di dell’attacco i+1. 31 3.2 Descrizione dello scenario Il primo passo di Haruspex costruisce il modello che descrive il sistema. Le informazioni che descrivono un sistema S possono appartenere ad uno dei due sottoinsiemi seguenti: Componenti del sistema, vulnerabilità ed attacchi; Topologia di rete ed interconnessioni. S c op ag res(ag) g at v v(at) pre(at) res(at) post(a) succ(at) AttGr(S,ag) n r(n) λ(ag, na(ag) il sistema target dell’assessment un component di S un’operazione definita da un componente un agente le risorse che ag ha a disposizione l’obiettivo di un agente un attacco elementare una vulnerabilità le vulnerabilità che abilitano at i diritti per eseguire at le risorse per eseguire at i diritti acquisiti se at ha successo la probabilità di successo di at l’attack graph con il piano di ag contro S un nodo di AttGr(S,ag) i diritti associati al nodo n il look-ahead di ag il numero di attacchi che ag esegue prima di cambiare attacco Tabella 3.1 Acronimi Haruspex Haruspex utilizza un approccio modulare che decompone il sistema in componenti (hardware e software) fra loro interconnessi. Ogni componente è descritto da un insieme di attributi, fra cui: Un elenco di porte di rete aperte; Un insieme di vulnerabilità; Gli attacchi abilitati dalle vulnerabilità; Le interfacce di rete; Il tipo di componente. 32 La scoperta dei componenti e la definizione delle sue caratteristiche avviene attraverso il vulnerability scanning, o scansione del sistema, che in una prima fase rileva tutti i componenti presenti, ed in seguito associa ad ognuno le informazioni che lo definiscono. Il campo “tipo” specifica se il componente è un host, un firewall, uno switch o un hypervisor. La definizione del tipo consente di modellare i diritti acquisiti con un attacco rivolto verso tale componente. Ad esempio, un attaccante che controlla un componente di tipo firewall può alterare la tabella di routing o la topologia logica della rete. Il modello definito da Haruspex considera due tipi di vulnerabilità: Effettive: si tratta di vulnerabilità già scoperte attraverso una scansione. La loro classificazione e descrizione può essere ricavata mediante un database di vulnerabilità note, come ad esempio il CVE. Potenziali: si tratta di vulnerabilità sospette, e vengono associate alla probabilità di venir scoperte in un certo istante temporale. La scoperta delle componenti e delle vulnerabilità presenti in un sistema viene realizzata da Haruspex utilizzando Nessus. Questo scanner produce una lista di CVE associati ad un insieme di host presenti all’interno di una sottorete. Ad ogni attacco at abilitato da una vulnerabilità, Haruspex associa gli attributi descritti nella tabella 3.1 classificando gli attacchi in un insieme di finito di classi. Per associare un attacco ad una classe, Haruspex confronta la descrizione del CVE con un insieme predefinito di pattern. Per descrivere completamente un sistema S è importante considerare la topologia logica che definisce le connessioni fra gli host del sistema. Per questo motivo il modello di S costruito da Haruspex include il numero di sottoreti presenti, i componenti presenti in ciascuna sottorete, le tabelle di routing, la presenza di switch, router, firewall e le regole di filtraggio del traffico di rete. 33 3.3 Descrizione delle minacce La descrizione di uno scenario Haruspex prevede la modellazione di minacce intelligenti. Si tratta di attaccanti in grado di penetrare all’interno di un sistema sfruttando percorsi a più passi, ognuno dei quali realizzato mediante un attacco elementare che sfrutta difetti nelle singole componenti. Alla descrizione di una minaccia sono associate informazioni quali: Le risorse che l’attaccante ha a disposizione per effettuare gli attacchi; L’insieme dei diritti iniziali, come ad esempio il controllo di un nodo all’interno della rete o la possibilità di inviare messaggi ad un host; Gli obiettivi, ovvero l’insieme dei diritti che l’attaccante desidera acquisire al termine dei suoi attacchi. Ad esempio, una minaccia potrebbe voler diventare l’amministratore di un database del sistema. Per raggiungere i propri obiettivi un attaccante seleziona ed implementa degli attacchi complessi in funzione dei diritti in suo possesso e delle vulnerabilità a lui note. In particolare, un attaccante può: Implementare diversi attacchi complessi alternativi per raggiungere lo stesso obiettivo; Cambiare la sua sequenza di attacchi quando i suoi attacchi falliscono o vengono scoperte nuove vulnerabilità nel sistema. Haruspex seleziona gli attacchi che un agente esegue attraverso l’analisi di un Attack Graph. AttGr(S, g) è un grafo diretto, etichettato e aciclico che rappresenta gli attacchi ed i piani che una minacca ag può selezionare utilizzando i diritti in suo possesso. Ogni nodo del grafo rappresenta un insieme di diritti r(n) che ag può possedere. Le transizioni fra i nodi rappresentano gli attacchi elementari: esiste un arco etichettato at fra un nodo n1 ed un nodo n2 se r(n1) include le precondizioni pre(at), e r(n2) è uguale all’unione fra r(n1) e post(at). Un nodo n si definisce iniziale se descrive l’insieme dei diritti posseduti dalla minaccia ag prima che esegua un qualunque attacco. Un nodo si definisce finale se contiene 34 l’insieme di tutti i diritti che ag desidera acquisire attaccando il sistema. Il percorso che va da un nodo iniziale ad un nodo finale definisce una sequenza di attacchi elementari che consentono alla minaccia di raggiungere il suo obiettivo. Per descrivere la quantità di informazioni che un agente considera nella selezione di un attacco complesso, Haruspex associa ad ag un parametro λ(ag), definito look-ahead, un intero non negativo. Per selezionare un percorso da implementare, un agente considera solo cammini dell’attack graph lunghi al massimo λ(ag). Tipici valori assegnati al lookahead sono 0, 1 o 2. Per definire il comportamento dell’attaccante Haruspex definisce un insieme di strategie che stabiliscono il criterio secondo cui la minaccia seleziona l’attacco da eseguire in un certo istante. Le strategie modellate da Haruspex sono: Max Probability: la minaccia seleziona l’attacco complesso con la più alta probabilità di successo; Max Increment: la minaccia seleziona l’attacco complesso che garantisce, in caso di successo, l’acquisizione del più grande insieme di diritti; Max Efficiency: la minaccia seleziona l’attacco complesso con il miglior rapporto fra probabilità di successo e tempo di esecuzione; Smart Subnet First: la minaccia seleziona uno qualsiasi degli attacchi disponibili con la stessa probabilità, dando priorità agli attacchi che le consentono di passare da una sottorete all’altra e, qualora si trovasse nella stessa sottorete dell’obiettivo, agli attacchi verso l’obiettivo stesso. Un altro parametro importante che definisce un agente è il numero di volte che tenta di ripetere un attacco fallito prima di selezionare un attacco diverso. 35 3.4 Simulazioni Partendo dalla definizione di uno scenario Haruspex applica il metodo Monte Carlo, ed esegue un esperimento che comprende un numero elevato ed indipendenti di run. Ciascun run simula il comportamento di una o più minacce che, a partire dai loro diritti iniziali, seguendo la strategia associata, cercano di raggiungere il loro obbiettivo sfruttando le vulnerabilità e gli attacchi che esse abilitano. Ad ogni passo della simulazione, il simulatore considera il modello S ed i vari agenti. Se l’agente ag non ha ancora raggiunto almeno un suo obiettivo e non è impegnato nell’eseguire un attacco, il simulatore esegue l’attacco at successivo nella sequenza selezionata. Per simulare la strategia di selezione di un agente ag, Haruspex analizza un sottoinsieme del grafo AttGr(S,ag) che include tutti i cammini di lunghezza λ(ag) a partire dal nodo che ag ha raggiunto in quel dato istante temporale. Il sottoinsieme viene costruito dinamicamente considerando i cammini in funzione dell’obiettivo che la minaccia desidera raggiungere. Il tempo che ag impiega per selezionare una sequenza dipende dalle informazioni in suo possesso. Infatti, per poter valutare le varie sequenze, un agente deve impiegare del tempo per scandire alcuni nodi del sistema e scoprire nuove vulnerabilità in grado di abilitare degli attacchi. Al termine di un singolo run tutte le informazioni collezionate durante l’esecuzione vengono memorizzate in un database. 36 3.5 Risultati Le simulazioni effettuate da Haruspex producono in output un database che contiene un campione statistico. Fra le informazioni che comprende il campione risultano di particolare interesse i seguenti dati: La sequenza degli attacchi effettuati da ciascun agente; Gli obiettivi che ciascun agente ha raggiunto; Il tempo impiegato dall’agente per raggiungere gli obiettivi; I piani di attacco utilizzati dagli agenti; Le vulnerabilità più sfruttate dalle varie minacce; Gli host che sono stati maggiormente attaccati; Le curve di stress, definite in maggiore dettaglio nel paragrafo successivo. 3.5.1 Le curve di stress Le curve di stress definiscono una misura sintetica attraverso cui è possibile esprimere la robustezza di un sistema S bersaglio degli attacchi di un attaccante ag. Figura 3.1 Esempio di curva di stress Nel grafico le ascisse rappresentano il tempo che la minaccia ha a disposizione per raggiungere il proprio obiettivo, sulle ordinate invece è rappresentata la probabilità di successo nel tempo corrispondente. Osservando la figura 3.1 è possibile individuare due istanti temporali principali: 37 T0: rappresenta l’istante in cui la probabilità di successo dell’agente ag diventa maggiore di zero. E’ il momento in cui la robustezza del sistema inizia ad essere compromessa dagli attacchi. L’istante T0 dipende dal tempo di esecuzione di ogni singolo attacco elementare e dalla lunghezza dell’attacco complesso più corto che consente di raggiungere l’obbiettivo g. T1: rappresenta l’istante temporale a partire da cui la probabilità di successo dell’attaccante è sempre uguale a 1. Questo valore dipende dalla probabilità di successo di ogni singolo attacco effettuato dalla minaccia. Questa probabilità determina in media il numero di volte che l’agente deve eseguire un attacco prima che questo abbia successo. Il valore t1 – t0 esprime quanto a lungo il sistema è in grado di resistere agli attacchi prima di cedere completamente. Le curve di stress consentono di confrontare la robustezza del sistema in funzione delle varie strategie adottate dalle minacce. Nel grafico della figura 3.1, ad esempio, è possibile verificare come un agente che implementa la strategia MaxIncrement con look-ahead 2 riesca a compromettere più velocemente il sistema analizzato rispetto allo stesso agente che si muove in accordo con la strategia MaxProbability con look-ahead 2. Le curve di stress possono inoltre essere utilizzare per mettere a confronto sistemi differenti. Figura 3.2 Curva di stress che confronta 3 sistemi differenti Ad esempio, il grafico della figura 3.2 mette a confronto la robustezza di 3 versioni differenti dello stesso sistema. Una prima configurazione che prevede 6 sottoreti con 49 38 host al suo interno, una seconda che prevede 6 sottoreti con 98 host, ed una terza che prevede 7 sottoreti con 98 host. Un’analisi del grafo consente di identificare facilmente la configurazione del sistema che garantisce una maggiore robustezza: nel caso della figura 3.3 è possibile verificare come la linea gialla risulti sempre al di sotto delle altre curve, indicando una maggiore resistenza del sistema agli attacchi. 3.6 Stato dell’arte Prima degli interventi apportati nel corso di questa tesi, la struttura logica di Haruspex era descritta dall’immagine seguente. Figura 3.3 Descrizione modulare di Haruspex Il sistema può essere considerato come due macro-moduli distinti: un primo modulo relativo al risk assessment, comprendente un Builder, un Thread Descriptor, un Engine ed uno Scout, ed un modulo relativo al risk management che comprende il solo manager. Di seguito viene illustrato brevemente il ruolo di ciascun componente della suite: 39 Builder: riceve in input l’output prodotto dai vulnerability scanner e costruisce il modello del sistema analizzato. Il builder è logicamente suddiviso al suo interno in 3 sottomoduli: o Host Builder: analizza il report degli scanner per identificare i componenti del sistema. Ad ogni componente vengono associati i vari attributi quali le interfacce di rete, le porte aperte etc. o Vulnerability Builder: analizza il report degli scanner per estrapolare le vulnerabilità presenti nel sistema. Ognuna di esse viene classificata in accordo con le informazioni presenti nel CVE ad essa associato. Queste informazioni definiscono parametri quali le pre e le post condizioni degli attacchi, l’impatto che ha la vulnerabilità sul sistema, la presenza di eventuali exploit pubblici etc. o Topology Builder: costruisce la topologia logica del sistema. Definisce le interconnessioni fra le varie sottoreti così come le connessioni fra i singoli host all’interno delle reti. Threat Descriptor: è il modulo che consente di modellare i vari agenti che attaccano il sistema negli scenari di interesse. Permette di specificare parametri quali i diritti iniziali di un agente, gli obiettivi che desidera raggiungere, la strategia che definisce il suo comportamento etc. Engine: è il simulatore del sistema. A partire dalla descrizione definita attraverso il Builder ed il Threat Descriptor applica il metodo Monte Carlo e colleziona i campioni statistici che restituisce in un database. Scout: il compito di questo modulo è di simulare il comportamento di più agenti in un singolo run, in condizioni ideali per l’attaccante dove tutti gli attacchi non falliscono mai e tutte le vulnerabilità sono già note e scoperte. Lo scout restituisce come output un limite inferiore al tempo richiesto ad un attaccante per raggiungere i suoi obiettivi. Manager: utilizzando i risultati prodotti dal risk assessment, si occupa di identificare delle contromisure che possono essere applicate al sistema per aumentarne la robustezza. 40 4 AMBIENTI APPLICATIVI La descrizione dello scenario Haruspex introdotta nel terzo capitolo consente di modellare un sistema ICT come un insieme di componenti interconnessi. A partire da tale definizione, questo capitolo presenta un’estensione del modello che consente di specializzare le relazioni fra i vari componenti di un sistema, rendendo la definizione dello scenario più precisa e versatile. La definizione proposta prende considera due nuove tipologie di relazioni: Gerarchiche: sono relazioni che stabiliscono un legame di tipo padre-figlio fra una coppia di componenti; Trasversali: sono relazioni tra figli dello stesso padre oppure tra componenti con padre diverso. Figura 4.1 Esempio di tipologie di relazione La figura 4.1 mostra un esempio in cui i collegamenti rossi e blu definiscono, rispettivamente, relazioni di tipo padre-figlio e di tipo trasversale. E’ importante evidenziare come il legame gerarchico possa essere astratto ulteriormente ed esteso 41 verso l’alto senza alcuna limitazione: il componente figlio F1, ad esempio, può essere padre di altri figli, e così via. 4.1 Modello ad ambienti Le relazioni introdotte nel paragrafo precedente possono essere utilizzate per definire una nuova modellazione del sistema. Consideriamo una definizione dello scenario in cui un sistema S è descritto come un insieme di host organizzati in una o più sottoreti. Ciascun host viene definito nel modello come la relazione tra più ambienti: Un ambiente principale, che definisce il componente sistema operativo; Un insieme di ambienti figli, che rappresentano gli ambienti applicativi presenti sull’host corrispondente. Figura 4.2 Esempio di modellazione ad ambienti L’esempio mostrato nella figura 4.2 descrive la modellazione di un singolo host, in cui il componente principale sistema operativo è il padre di due ambienti applicativi di tipo figlio: un servizio RDP di connessione a desktop remoto, ed un applicativo di tipo database. 42 4.1.1 Classificazione di ambienti applicativi Per definire il ruolo che assume un ambiente all’interno del sistema modellato vengono definite un insieme di classi predefinite. Ciascuna classe descrive i diritti associati all’ambiente e le relazioni che questo assume nei confronti degli altri componenti del sistema. Definire la relazione tra un ambiente ed un altro permette di definire quali diritti può acquisire una minaccia che acquisisce il controllo dell’ambiente applicativo in questione. Le relazioni che si possono definire per ciascun ambiente sono: Gerarchica verso i figli: acquisire il controllo di un ambiente padre permette alla minaccia di acquisire diritti nei confronti degli ambienti figli. Ad esempio, in riferimento alla figura 4.1, acquisire il controllo dell’ambiente P1 fornisce alla minaccia anche dei diritti nei confronti degli ambienti F1 e F2. Gerarchica verso il padre: controllare un ambiente figlio permette alla minaccia di acquisire diritti nei confronti dell’ambiente padre. In riferimento alla figura 4.1, acquisire il controllo dell’ambiente F1 fornisce diritti nei confronti dell’ambiente P1. Trasversale: controllare un ambiente che può avere una relazione con un figlio discendente dallo stesso padre, oppure con un ambiente appartenente ad un padre diverso, permette alla minaccia di acquisire solamente i diritti nei confronti dell’ambiente con cui ha la relazione. In riferimento alla figura 4.1, prendere il controllo dell’ambiente F2 fornisce diritti nei confronti dell’ambiente F3 (figli di padri diversi), oppure prendere il controllo dell’ambiente F4 fornisce diritti verso l’ambiente F5 (figli dello stesso padre). Inoltre, la relazione fra 2 ambienti è una relazione non commutativa. La classificazione di un ambiente in una delle classi predefinite consente pertanto di stabilire automaticamente come l’ambiente si inserisce all’interno del modello del sistema, specificandone i diritti e le relazioni con gli altri ambienti. 43 4.2 Modello ad ambienti: servizi web Questa sezione mostra come il modello ad ambienti descritto nel paragrafo 4.1 possa essere istanziato per modellare i servizi web. Figura 4.3 Modellazione di servizi web Come mostrato dalla figura 4.3, la modellazione dei servizi web prevede la definizione di due nuove classi di ambienti, collegate da relazioni: La classe web; La classe database. 4.2.1 Classe Web La classe Web modella ambienti applicativi di tipo web, quali ad esempio i web server. L’ambiente così definito associa tutte le vulnerabilità relative ai siti, alle applicazioni web ed ai loro utenti. Le relazioni generiche definite nel paragrafo 4.1.1 possono dunque essere specializzate per modellare lo scenario web come segue: Relazione gerarchica verso i figli: viene istanziata per modellare attacchi di tipo “escape to OS”. Si tratta di attacchi abilitati da vulnerabilità presenti su siti web 44 e che consentono ad un attaccante di acquisire diritti nei confronti dell’ambiente sistema operativo. Figura 4.4 Modellazione Escape to OS La figura 4.4 evidenzia in rosso la relazione sfruttata dall’attaccante. Appartengono a questo tipo attacchi quali: o Buffer Overflow [17]: in questo attacco una minaccia invia un input costruito in modo tale da generare un overflow di memoria. Questo può portare all’esecuzione di codice arbitrario a livello del sistema operativo, che può permettere all’attaccante di acquisire diritti di amministratore della macchina. o Path Traversal [18]: quest’attacco consente ad una minaccia di accedere a file o directory memorizzati al di fuori dell’ambiente web. Questo consente all’attaccante di acquisire diritti di lettura ed eventualmente di scrittura sul file system, a livello dell’ambiente sistema operativo. Relazione traversale: viene istanziata per modellare il caso specifico delle SQL Injection [19]. 45 Figura 4.5 Modellazione SQL Injection Si tratta di un attacco in cui una minaccia sfrutta un input non opportunamente validato dal servizio web per alterare la composizione delle query SQL inviate dal server web al database. Questo consente all’attaccante di acquisire dei diritti di lettura e scrittura verso il componente appartenente alla classe database. Come mostrato nella figura 4.5, la modellazione così definita consente di descrivere lo scenario in cui una minaccia è in grado di raggiungere un suo obiettivo (la scrittura nel database) anche senza acquisire dei diritti nel componente che ospita il servizio. L’esempio della figura 4.3 modella invece lo scenario in cui il web server ed il database si trovano sullo stesso componente. 4.2.2 Classe Database La classe Database modella ambienti applicativi di tipo database, quali ad esempio Microsoft SQL server o MySQL server. Le relazioni generiche definite nel paragrafo 4.1.1 possono essere specializzate nel seguente modo: Relazione gerarchica verso i figli: viene istanziata per modellare attacchi che consentono ad un attaccante di sfruttare vulnerabilità presenti sul database per acquisire diritti nei confronti dell’ambiente del sistema operativo. 46 4.3 Implementazione del modello web Questa sezione descrive l’estensione implementata in Haruspex per supportare il modello ad ambienti. L’attenzione sarà focalizzata in particolar modo sull’implementazione degli ambienti web. 4.3.1 Web Builder Le vulnerabilità web scoperte mediante l’analisi condotta con un web vulnerability scanner appartengono alla categoria delle vulnerabilità non standard, ovvero vulnerabilità per le quali non esiste un database di riferimento, come ad esempio il CVE, a cui poter fare riferimento per una loro classificazione. La prima estensione necessaria ad Haruspex è la definizione di un nuovo modulo, nominato Web Builder, il cui compito è quello di analizzare e classificare l’insieme delle vulnerabilità rilevate dagli scanner web. Figura 4.6 Web Builder Il Web Builder si integra nella suite come un nuovo modulo del Builder, e si affianca ai già presenti Vulnerability Builder, Host Builder e Topology Builer, per la costruzione del modello del sistema. 47 Il comportamento implementato dal Web Builder può essere riassunto in 3 passi principali: 1. Analisi dell’input; 2. Classificazione delle vulnerabilità non standard; 3. Aggiornamento del database delle vulnerabilità. 4.3.1.1 Analisi dell’input Il Web Builder riceve in input i report generati dai web vulnerability scanner. Nel caso di Owasp Zap, lo strumento di riferimento utilizzato per il caso di studio, si tratta di file xml organizzati come una sequenza di alert. Ciascun alert contiene informazioni utili per descrivere una sola vulnerabilità web. Figura 4.7 Esempio di alert generato da Owasp ZAP La figura 4.7 mostra un esempio di alert che può apparire in un report ZAP. Fra le informazioni utili per classificare una vulnerabilità abbiamo: Il tipo di vulnerabilità rilevato, indicato nel campo alert; L’impatto generato dalla vulnerabilità, indicato nel campo riskdesk; Il componente affetto dalla vulnerabilità, indicato nei campi uri e param; 48 Gli identificatori di riferimento al CWE e WASC, indicati nei campi cweid e wascid. L’output prodotto dalla fase di analisi genera una lista di vulnerabilità, descritte dagli attributi sopraelencati. 4.3.1.2 Classificazione delle vulnerabilità Il passo successivo implementato dal Web Builder utilizza le informazioni raccolte nella prima fase per classificare le vulnerabilità web, mediante la definizione delle precondizioni e delle post-condizioni ad esse associate. Nel capitolo 2 sono stati introdotti due standard di riferimento per la definizione delle vulnerabilità web: WASC e CAPEC. Come è possibile verificare nella figura 4.7, i web scanner come ZAP e Appscan associano alle vulnerabilità il solo identificativo WASC. Le informazioni contenute su tale sito sono tuttavia insufficienti per una adeguata classificazione delle vulnerabilità, poiché le informazioni che il sito associa alle vulnerabilità sono troppo informali. Figura 4.8 Esempio di descrizione WASC La figura 4.8 contiene un estratto della descrizione di una vulnerabilità di tipo cross-site scripting, così come riportata sul sito WASC. Come si può vedere si tratta di una 49 descrizione testuale dell’attacco abilitato dalla vulnerabilità, con esempi che ne dimostrano il funzionamento. La descrizione degli vulnerabilità presentata su CAPEC, invece, fornisce una definizione più formale degli attacchi, che vengono classificati in funzione dell’impatto da essi generato nei confronti dell’integrità, della confidenzialità e della disponibilità dei componenti attaccati. Presso il sito CAPEC [20] è possibile scaricare il file xml che definisce tali valori per ciascun attacco. Oltre al file xml è presente anche un documento xsd che stabilisce l’insieme predefinito dei valori utilizzati per definire l’impatto. Figura 4.9 Scope CAPEC Nella figura 4.9 vengono mostrati i campi utilizzati da CAPEC per definire l’impatto generato da un attacco. La figura 4.10 definisce invece i valori che possono essere assunti da tali campi. Analizzando i valori della figura 4.10 è possibile identificare quali siano le post-condizioni che consentono ad una minaccia di acquisire dei diritti nei confronti dell’ambiente sistema operativo a partire dall’ambiente web. Tali valori sono: Read/Modify files or directory; Read/Modify memory; Execute unauthorized code or commands; Sebbene i progetti WASC e CAPEC siano indipendenti, entrambi i siti web mettono fra loro in relazione la definizione degli attacchi [21] [22]. Questo consente di poter 50 utilizzare l’identificativo WASC riportato dai web scanner per ricondursi alla classificazione più formale definita da CAPEC. Figura 4.10 Valori d'impatto CAPEC 4.3.1.3 Estensione ed aggiornamento del database Il database utilizzato da Haruspex è stato esteso con delle nuove strutture dati, in cui vengono memorizzate le informazioni relative alle vulnerabilità classificate dal Web Builder. Ad ogni esecuzione, prima di procedere con la classificazione delle vulnerabilità web individuate nei report, il Web Builder interroga il database per verificare se le vulnerabilità siano già state classificate per non ripetere attività precedenti. 51 4.3.2 Ulteriori estensioni ad Haruspex La definizione del Web Builder ha introdotto un meccanismo per classificare le vulnerabilità web non standard in Haruspex. Per supportare la definizione del modello ad ambienti, istanziato in particolar modo per modellare ambienti web, sono stati estesi due moduli già esistenti nella suite: l’host builder e l’engine. Per quanto riguarda l’host builder, sono state definite delle specifiche di configurazione che consentono di associare ad un host, identificato a partire dai report generati da Nessus, le vulnerabilità web presenti nei report generati da Owasp Zap. Questo consente di specificare in un host la relazione che lega l’ambiente principale del sistema operativo con l’ambiente web. Le specifiche di configurazione permettono di definire le relazioni tra l’ambiente web ed uno o più database. Le estensioni implementate sull’engine consentono al sistema di arricchire l’insieme degli attacchi a disposizione di una minaccia, prendendo in considerazione anche le nuove vulnerabilità web classificate dal Web Builder. 52 5 CASO DI STUDIO Il caso di studio della tesi è stato svolto in collaborazione con Terranova Software, una società nata nei primi anni del 2000 e che supporta l’automazione dei processi business delle aziende che operano in svariate aree della distribuzione, come gas, energia elettrica ed acqua. L’attenzione del caso di studio è rivolta in particolar modo verso il sistema RETISSM (Software di Smart Metering), una soluzione per il supporto e l’automazione dei processi legati alla telemisura e la telegestione dei gruppi di misura nel contesto Smart Gas Metering. Il software di Terranova, oggetto dello studio, è una soluzione industrializzata e come tale ampiamente utilizzata in diverse realtà produttive, il cui campo specifico di applicazione richiede una sensibilità particolare verso i temi della sicurezza informatica. Proprio a causa del particolare campo di applicazione, Terranova ha deciso di valutare ulteriori scenari di sicurezza in collaborazione con l'Università di Pisa, concordando con il gruppo di sicurezza del Dipartimento di Informatica la verifica della robustezza del del proprio software in alcuni di scenari considerati come estremi. Lo specifico oggetto dello studio, infatti, prevede l'attacco ad un ambiente di hosting del software, collegato in VPN con due Reparti, A e B. L'ambiente è direttamente accessibile dalle rispettive LAN client in modo da agevolare il lavoro del personale dell’azienda. Di conseguenza, l'obiettivo dello studio non sarà quello di valutare la robustezza rispetto ad un attacco ai servizi esposti sugli IP pubblici dal software e, quindi, a valutare la robustezza dei servizi offerti direttamente dal sistema. Interessa invece verificare l'impatto di un attacco al sistema che parta dall'interno di una rete "trusted”. In particolare, vengono considerati due scenari di attacco alla rete fidata: attacchi di Outsider alla Trusted LAN (TLAN) e di Insider (alla TLAN). Gli Outsider utilizzano i servizi esposti su internet dei Reparti A e B per tentare di accedere alla TLAN e, quindi, ai vari componenti software. Gli Insider sfrutteranno 53 l'acquisizione di diritti di una risorsa autorizzata nella TLAN per tentare l'accesso al software. La compartimentazione dei Reparti A e B aumenta la complessità del confronto dei risultati ottenuti dagli Outsider con quelli ottenuti dagli Insider. Infatti gli obiettivi degli Outsider riguardano servizi esposti su LAN demilitarizzate (DMZ) e in quanto tali in grado di comunicare con la TLAN solo tramite alcuni servizi autorizzati e verso determinati host. La presenza di firewall compartimentali e di Intrusion Prevention System (IPS) rendono la probabilità di successo degli outsider decisamente bassa soprattutto perché prima di raggiungere l'obiettivo, l’attaccante deve guadagnare l'accesso alla TLAN. Per semplificare e uniformare le condizioni di valutazione, è stato considerato uno scenario in cui, contrariamente alla realtà, non siano presenti restrizioni di comunicazioni tra le sottoreti e le TLAN, in modo tale che un Outsider venga posto nelle stesse condizioni di un Insider. Allo scopo, si è assunto che gli attaccanti conoscessero tutte le informazioni richieste in input da Haruspex. Le analisi svolte mediante Haruspex si basano quindi sulla ipotesi semplificativa che un Outsider riesca ad effettuare una scansione dei sistemi target a partire dalla propria posizione. Inoltre, si è assunto che una tale minaccia possa sfruttare le vulnerabilità scoperte ignorando volutamente i meccanismi di protezione adottati da Terranova e che nella realtà renderebbero estremamente più bassa la probabilità di successo dei vari attacchi. 5.1 Generalita Lo smart meter è un dispositivo elettronico di controllo per il monitoraggio in tempo reale dei consumi di luce, acqua e gas. Sfruttando una rete di sensori wireless, gli smart meter possono interagire con il sistema centrale di controllo per lo scambio di informazioni utili per il monitoraggio della distribuzione, come i valori dei consumi registrati. Gli smart meter permettono inoltre di intervenire sugli impianti in caso di guasti o situazioni anomale senza la necessità di ricorrere ad un intervento sul posto. Gli smart meter considerati nel caso di studio sono composti da un correttore, dotato di sensori di pressione, sensori di temperatura e di impulsi, un misuratore ed un modem alimentato a batteria. 54 5.2 Architettura del Sistema Il sistema analizzato è costituito da 3 macro reti principali, a cui si farà riferimento nel seguito con il nome di RepartoA, RepartoB e SSM. Figura 5.1 Panoramica delle reti RepartoA e RepartoB Lo schema della figura 5.1 descrive l’organizzazione delle reti RepartoA e RepartoB. Le due reti sono collegate da una VPN MPLS (Virtual Private Network, Multi Protocol Label Switching). Il collegamento tra il RepartoA ed il RepartoB ha come estremi 2 firewall. L’accesso alla rete internet avviene attraverso il solo RepartoA. La rete SSM è realizzata su un sistema cloud fornito e gestito da un provider esterno ed è connessa direttamente con la rete del RepartoA attraverso una VPN. 55 5.2.1 RepartoB La rete del RepartoB è organizzata in 4 sottoreti principali: Una rete LAN, dove sono presenti server e database utilizzati per lo sviluppo del software dell’azienda. In questa rete sono collocati anche i computer utilizzati dai dipendenti. Una rete VC e VOIP, dove sono installati i software per la gestione e l’organizzazione delle videoconferenze. Una rete DMZ, dove sono collocati i server di posta, alcuni server interni per il testing, e due servizi web esposti verso l’esterno: o Extplorer, si tratta di un file manager PHP basato su un’interfaccia web; o HelpDesk, descritto nel paragrafo successivo. 5.2.1.1 HelpDesk L’Helpdesk è un servizio web di tipo OTRS (Open-Source Ticket Request System) [23]. Si tratta di un servizio software open source che consente alle aziende di gestire le richieste di assistenza da parte dei propri clienti mediante l’assegnazione di ticket. Il servizio web è esposto verso la rete la internet. E’ possibile autenticarsi all’Helpdesk con 2 profili utenti differenti: Cliente, utilizzato dai clienti dell’azienda per inviare delle segnalazioni; Operatore, utilizzato internamente da un dipendente dell’azienda per rispondere alle segnalazioni inviate dai clienti. 5.2.2 RepartoA La rete del RepartoA comprende 4 sottoreti principali: Una rete LAN, dove sono presenti database, dispositivi NAS (Network Attack Storage), server di backup e documentazione accessibile agli sviluppatori. Una rete DMZ, dove sono collocati alcuni server di sviluppo dell’azienda. Una rete VOIP ed una rete VC, dove sono presenti applicazioni e dispositivi per videoconferenze e VOIP (Voice Over IP). 56 5.2.3 Rete SSM Figura 5.2 Rete SSM, su Cloud Provider La figura 5.2 descrive l’organizzazione logica della rete SSM situata su cloud gestito da un provider. Di seguito vengono descritti i componenti di rilievo: MDM (Meter Data Management), è un componente che si occupa dei processi di gestione dei dati di misura e dei consumi. Oltre a ciò gli sono demandati la gestione degli allarmi, la validazione dei dati ed il calcolo delle curve di consumo. Le informazioni gestite dall’MDM vengono memorizzate nel database DB2. SW - noto anche come MDR (Meter Data Reading), è il sistema di acquisizione centrale dei dati. NM (Network Manager), è un componente dedicato alla gestione efficiente della rete di concentratori, necessari alla creazione della rete radio per il collegamento con gli smart meter. 57 PW (Portale Web), è un servizio web che espone l’interfaccia utilizzata dagli operatori per comunicare con l’MDM. E’ possibile autenticarsi al servizio con 2 profili differenti, uno di tipo Operatore ed uno Amministratore. Gli smart meter comunicano direttamente con il SW mediante protocollo DLMS (Device Language Message Specification) su connessione GPRS. Qualora la connessione GPRS non sia attiva, gli smart meter inviano i dati mediante SMS. La connessione fra gli smart meter ed il SW avviene una sola volta al giorno, in cui vengono inviate tutte le informazioni necessarie. Il SW invia i dati all’MDM ogni ora mediante protocollo WCF (Windows Communication Foundation). I componenti della rete SSM esposti verso la rete esterna sono SW e PW. All’interno della rete SSM è presente un servizio interno, nominato Iomega, utilizzato come NAS (Network Attached Storage). 58 5.3 Assessment del sistema In un’ottica di responsible disclosure, nel seguito vengono fornite solo alcune informazioni sui valori in ingresso all’analisi ed ai risultati prodotti. Di conseguenza, ad esempio, non verranno forniti gli identificatori delle vulnerabilità scoperte. Per la valutazione del rischio della rete Terranova sono stati utilizzati i seguenti software: Nessus Free Edition; Owasp ZAP; Haruspex. Utilizzando lo scanner Nessus sono state analizzate tutte le reti elencate nella tabella 5.1. RepartoA DMZ, LAN, VC, VOIP RepartoB DMZ, LAN, VC Cloud SSM Tabella 5.1 Reti analizzate con Nessus Utilizzando lo scanner Owasp ZAP sono stati analizzati i seguenti servizi web: RepartoB o Extplorer, utilizzando un account con diritti utente di sola lettura e scrittura dei file condivisi e dei file personali; o HelpDesk, utilizzando un account di tipo Utente ed un account di tipo Operatore; Cloud o Iomega, utilizzando un account con diritti utente di sola lettura e scrittura sui file condivisi ed i file personali; o PW, utilizzando un account di tipo Operatore ed un account di tipo Amministratore. 59 5.3.1 Output dello standard assessment Il vulnerability scanning dei vari componenti ha evidenziato un numero elevato di vulnerabilità, suddivise come segue fra le reti del sistema. 5.2.2.1 Nessus Figura 5.3 Resoconto vulnerabilità Nessus Il numero di vulnerabilità segnalate da Nessus non è il numero totale di vulnerabilità presenti nel sistema, ma quello delle vulnerabilità distinte che sono state scoperte nelle singole reti. Il grafico della figura 5.4 mostra invece una distribuzione delle vulnerabilità classificate secondo il valore d’impatto loro assegnato dal CVE. Nell’asse delle ordinate il numero di riferimento è la totalità della vulnerabilità riscontrate nel sistema Terranova. 300 250 200 150 100 50 0 Critico Alto Medio Basso Figura 5.4 Impatto vulnerabilità Nessus 60 5.2.2.2 Owasp ZAP Figura 5.5 Resoconto vulnerabilità Owasp ZAP Il numero di vulnerabilità riportato da ZAP è quello totale delle vulnerabilità riscontrate. Nel caso delle vulnerabilità web, il grafico della figura 5.6 mostra una distribuzione delle vulnerabilità secondo la scala di impatto assegnata da CAPEC. Alto Medio Basso Figura 5.6 Impatto vulnerabilità Owasp Zap Un’analisi preliminare condotta sui risultati prodotti dallo standard assessment fornisce delle indicazioni interessanti: come è possibile vedere nel diagramma della figura 5.6, le vulnerabilità web con un valore d’impatto alto sono un numero estremamente basso. In particolar modo, si tratta di vulnerabilità relative al solo ambiente web, che non consentono l’acquisizione di diritti nei confronti dell’ambiente sistema operativo. Questo consente di anticipare che le vulnerabilità web non standard riscontrate da ZAP avranno un ruolo marginale nelle simulazioni. 61 5.3.2 Assessment Haruspex Nel seguito viene descritto lo scenario modellato da Haruspex, ed i risultati prodotti dall’assessment. 5.3.2.1 Creazione del modello delle minacce Gli esperimenti condotti con Haruspex hanno considerato 6 minacce diverse per le quali sono state fornite tutte le informazioni che Haruspex richiede e che sono descritte nel seguito. Le minacce sono suddivise in 2 categorie diverse in base ai diritti iniziali a loro assegnati: Outsider: definiscono agenti esterni al sistema Terranova, che cercano di raggiungere i loro obiettivi a partire dai soli servizi esposti sulla rete internet. I diritti assegnati a questo tipo di minaccia sono: o Connessione remota verso i componenti SW, PW, Helpdesk, Extplorer; o Utenti web dei servizi PW, Helpdesk, Extplorer; Insider: si tratta di agenti interni al sistema Terranova, ovvero minacce che hanno diritti su risorse interne ad una delle reti del sistema. In genere questa minaccia rappresenta un dipendente intenzionato ad attaccare l’azienda o una minaccia che è riuscita mediante social engineering o phishing ad impersonare il dipendente. I diritti assegnati a questo tipo di minaccia sono: o Amministratore locale di un host appartenente alla rete LAN del RepartoA; o Amministratore locale di un host appartenente alla rete LAN del RepartoB. Gli obiettivi assegnati ad entrambe le categorie di minacce sono i seguenti: Goal1: il controllo del SW con diritti da amministratore, oppure rendere il componente inagibile (Denial Of Service); Goal2: il controllo del database DB2 della rete SSM con diritti da amministratore, oppure i diritti di lettura e scrittura sul database DB1; 62 Goal3: il controllo del SW con diritti di amministratore, e quello dei 2 database della rete SSM con diritti di amministratore. La tabella 5.2 riassume le 6 minacce simulate. Minaccia Diritti Iniziali Obiettivi 1 OUTSIDER ADMIN SW or DOS SW ADMIN DB2 2 OUTSIDER or READ/WRITE DB1 3 OUTSIDER ADMIN SW + DB1 + DB2 4 INSIDER ADMIN SW or DOS SW ADMIN DB2 5 INSIDER or READ/WRITE DB1 6 INSIDER ADMIN SW + DB1 + DB2 Tabella 5.2 Riepilogo delle minacce simulate 5.3.2.2 Simulazioni Per ciascuna delle 6 minacce è stato eseguito un esperimento Haruspex con 50000 run, raggiungendo un livello di confidenza del 95% sui componenti attaccati. Per coprire tutti i vari livelli di competenza e di strategie di scelta dell’attacco, per ciascuna delle 6 minacce sono state impiegate tutte le seguenti strategie: Max Increment con look-ahead 1 e 2; Max Probability con look-ahead 1 e 2; Max Efficiency con look-ahead 2; Subnet First con look-ahead 0. Il tempo limite delle simulazioni è stato impostato a 10 giorni. 63 5.3.2.3 Risultati prodotti da Haruspex Per ciascuna delle minacce considerate illustriamo nel seguito alcune informazioni ed alcune statistiche utili per valutare il rischio che ognuna di esse genera. Le informazioni illustrate sono: Il numero dei piani di attacco scoperti; Il numero medio di passi effettuati nei piani di attacco; Il numero medio di host attaccati nei piani di attacco; Le curve di stress. 64 5.3.3.1 Minaccia 1 Punto di partenza: Outsider Obiettivo: ADMIN SW or DOS SW SubnFirst MaxIncr 1 MaxIncr 2 MaxProb 1 MaxProb 2 MaxEff N. Piani 2 1 2 2 2 2 N. Passi 4 2 5 5 5 5 N. Host 1 1 1 1 1 1 Tabella 5.3 Report minaccia 1 La minaccia 1 rappresenta un caso particolare: come è possibile vedere nella tabella 5.3, nella maggior parte delle simulazioni i suoi attacchi hanno come obiettivo un solo host. Il risultato è giustificato dal fatto che la minaccia possiede dei diritti iniziali nei confronti dell’obiettivo, che risulta esposto verso l’esterno. Di conseguenza la minaccia cerca di prendere immediatamente il controllo del nodo che costituisce il suo obiettivo. Figura 5.7 Curva di stress della Minaccia 1 Le curve di stress della figura 5.7 mostrano come la minaccia sia in grado di raggiungere il suo obiettivo dopo circa 3 ore e 30 minuti, utilizzando la strategia MaxIncrement con look-ahead 1. Questa strategia genera un rischio predominante rispetto alle altre, quali ad esempio MaxIncrement con look-ahead 2, poiché nel caso specifico la sequenza di attacchi selezionata dalla strategia presenta una probabilità di successo circa 3 volte superiore alle altre. 65 5.3.3.2 Minaccia 2 Punto di partenza: Outsider Obiettivo: ADMIN DB2 or READ/WRITE DB1 SubnFirst MaxIncr 1 MaxIncr 2 MaxProb 1 MaxProb 2 MaxEff N. Piani 4181 4 2 40 8 64 N. Passi 37 34 20 28 20 24 N. Host 3 3 2 3 2 3 Tabella 5.4 Report minaccia 3 In questo caso la minaccia ha un obiettivo non raggiungibile direttamente dall’esterno, pertanto il numero minimo di host che deve attaccare per raggiungere il suo obiettivo è sicuramente maggiore o uguale a 2. Ad esempio, il primo host è sempre necessario per entrare all’interno del sistema. La strategia Subnet First, vista la selezione meno intelligente degli attacchi da effettuare, genera un numero di piani di gran lunga superiore a quello delle altre minacce. Questo comportamento è dovuto al fatto che, una volta che la minaccia è entrata all’interno del sistema, non è in grado di vedere immediatamente il suo obiettivo. In questo caso l’insieme degli attacchi fra cui deve scegliere è molto grande a causa della dimensione del sistema. Figura 5.8 Curve di stress della Minaccia 2 66 Le curve di stress mostrano come la minaccia sia in grado di raggiungere il suo obiettivo dopo circa 48 ore. Le strategie che garantiscono una probabilità di successo superiore sono la MaxProbability e la MaxIncrement con look-ahead 2, mentre la strategia Random risulta essere la peggiore. Ad esempio, dopo 10 ore di attacchi la minaccia più potente è migliore di circa il 30% rispetto alla peggiore. 67 5.3.3.3 Minaccia 3 Punto di partenza: Outsider Obiettivo: ADMIN SW + DB1 + DB2 SubnFirst MaxIncr 1 MaxIncr 2 MaxProb 1 MaxProb 2 MaxEff N. Piani 2972 48 24 981 1005 12 N. Passi 45 44 44 42 35 26 N. Host 3 5 4 3 3 3 Tabella 5.5 Report minaccia 3 La tabella della minaccia 3 mostra un numero di piani superiore rispetto a quelli delle minacce precedenti. Il comportamento è dovuto alla definizione dell’obiettivo, che prevede l’acquisizione di diritti di tipo amministratore nei confronti di 3 componenti distinti. Invece, le minacce precedenti prevedevano l’acquisizione di diritti su 1 o al massimo 2 componenti. Le possibili combinazioni di attacchi che la minaccia ha a disposizione risultano dunque superiori. Figura 5.9 Curve di stress della minaccia 3 Le curve di stress evidenziano come la minaccia possa raggiungere i suoi obiettivi dopo circa 60 ore di attacchi. La strategia che converge più velocemente ad uno stress uguale a 1 è la MaxEfficiency poiché, confrontata con le altre strategie, seleziona la combinazione di attacchi più efficiente per guadagnare i diritti sui 3 componenti. 68 5.3.3.4 Minaccia 4 Punto di partenza: Insider Obiettivo: ADMIN SW or DOS SW SubnFirst MaxIncr 1 MaxIncr 2 MaxProb 1 MaxProb 2 MaxEff N. Piani 4 1 1 2 1 2 N. Passi 5 18 14 5 14 5 N. Host 1 1 1 1 1 1 Tabella 5.6 Report minaccia 4 La minaccia 4, come la minaccia 1, nella maggior parte delle simulazioni cerca di raggiungere l’obiettivo attaccando un solo host. La ragione di questa scelta è dovuta alla struttura della rete dei Reparti A e B che, per facilitare il lavoro di sviluppo e test, consentono l’accesso diretto ai vari compartimenti. Poiché i computer dei dipendenti possono raggiungere tutte le sottoreti dell’infrastruttura, essi hanno una visione immediata del loro obiettivo, e cercano di prenderne il controllo in maniera diretta. Figura 5.10 Curve di stress della minaccia 4 Le curve di stress evidenziano come la minaccia 4 possa raggiungere il suo obiettivo dopo circa 13 ore. Le strategie che possono raggiungere più velocemente l’obiettivo sono la MaxEfficiency e la MaxProbability con look-ahead 2. La Subnet First segue le due strategie più potenti perché spostandosi rapidamente fra le varie sottoreti raggiunge più velocemente il suo obiettivo. 69 5.3.3.5 Minaccia 5 Punto di partenza: Insider Obiettivo: ADMIN DB2 or READ/WRITE DB1 SubnFirst MaxIncr 1 MaxIncr 2 MaxProb 1 MaxProb 2 MaxEff N. Piani 4 1 1 1 2 1 N. Passi 18 14 14 14 14 14 N. Host 1 1 1 1 1 1 Tabella 5.7 Report minaccia 5 La tabella della minaccia 5 descrive un comportamento analogo alla minaccia 4: i diritti iniziali della minaccia le consentono di vedere immediatamente gli host che definiscono il suo obiettivo. Di conseguenza entrambe le minacce cercano di raggiungerlo mediante attacchi diretti. Figura 5.11 Curve di stress della minaccia 5 Le curve di stress della figura 5.11 mostrano un comportamento molto simile delle varie minacce poiché le probabilità di successo degli attacchi per conquistare gli obiettivi sono molto alte. 70 5.3.3.6 Minaccia 6 Punto di partenza: Insider Obiettivo: ADMIN SW + DB1 + DB2 SubnFirst MaxIncr 1 MaxIncr 2 MaxProb 1 MaxProb 2 MaxEff N. Piani 657 12 12 48 48 552 N. Passi 41 25 25 93 89 97 N. Host 3 3 3 4 4 3 Tabella 5.8 Report minaccia 6 Come la minaccia 3, anche la minaccia 6 ha a disposizione un numero superiore di piani. La ragione è dovuta ancora una volta alla complessità dell’obiettivo da raggiungere. Cambiano tuttavia i diritti iniziali della minaccia che, a causa della struttura piatta della rete Terranova, ha una visione immediata dei suoi obiettivi. Figura 5.12 Curve di stress della minaccia 6 Le curve di stress mostrano come la minaccia sia in grado di raggiungere i suoi obiettivi in circa 60 ore adottando una strategia di tipo Max Increment con look-ahead 1 e 2. Le due strategie sono equivalenti poiché esistono sequenze di attacchi lunghe 1 che garantiscono il massimo dei diritti con una buona percentuale di successo. Queste sequenze vengono dunque selezionate da entrambe le strategie. 71 5.3.3.7 Confronto delle minacce Le curve di stress mostrate nella figura 5.13 mettono a confronto la migliore strategia per ciascuna minaccia, quella che le permette di raggiungere più velocemente il suo obiettivo. Figura 5.13 Confronto fra le strategie migliori Come è possibile vedere nel grafico, la minaccia 1 raggiunge il suo obiettivo per prima utilizzando una strategia di tipo MaxIncrement con look-ahead 1. Segue la minaccia 2 con MaxEfficiency, mentre la più lenta risulta essere la minaccia 3 con strategia MaxEfficiency. Come detto più volte, questo è dovuto al fatto che la minaccia 1 ha come obiettivo l’acquisizione di diritti verso 1 solo componente, mentre la minaccia 3 e 6 devono conquistare diritti su 3 componenti distinti. 72 5.4 Considerazioni finali Il vulnerability scanning del sistema Terranova ha permesso di identificare un numero elevato di vulnerabilità che affliggono l’intera infrastruttura ICT. La valutazione globale del rischio, condotta attraverso Haruspex, ha evidenziato come in realtà solo un numero estremamente contenuto di vulnerabilità risulti essere rilevante perché le minacce possano raggiungere gli obiettivi stabiliti per l’assessment. Ciò può essere provato, ad esempio, dal fatto che il numero di piani, ovvero il numero di passi ineliminabili per raggiungere un obiettivo è estremamente più piccolo della sequenza. L’estensione relativa all’ambiente web introdotta nel capitolo 4 ha contribuito ad arricchire in maniera significativa gli scenari ed i cammini presi in considerazione dalle minacce simulate. MINACCIA SIM. TOTALI SIM. CON WEB PERCENTUALE 1 300000 18982 6% 2 300000 61849 21% 3 300000 137897 46% Tabella 5.9 Risultati con integrazione Web La tabella 5.9 mostra alcuni numeri che consentono di quantificare l’impatto generato nella suite con l’introduzione del modello web. Come detto in precedenza, per ciascuna minaccia sono state eseguite 300000 simulazioni totali, 50000 per ciascuna delle 6 strategie selezionate. Nel caso della minaccia 1 è possibile vedere come in 18982 simulazioni la minaccia abbia sfruttato vulnerabilità di tipo web nella definizione dei suoi attacchi complessi, circa il 6% delle simulazioni totali. Il numero cresce al 21% per la minaccia 2, sino ad arrivare al 46% per la minaccia 3. Nessun attacco web è stato invece utilizzato dalle altre 3 minacce: il comportamento è coerente con il modello, poiché le minacce 4, 5 e 6 definiscono lo scenario di un attaccante interno al sistema, che non necessita dunque di attaccare i servizi web esposti verso l’esterno per guadagnare l’accesso alla rete. 73 SIM. TOTALI SIM. CON WEB PERCENTUALE 1800000 218728 12% Tabella 5.10 Riepilogo simulazioni web totale La tabella 5.10 mostra un confronto finale: su 1800000 simulazioni totali, in 218728 le minacce hanno considerato attacchi e vulnerabilità web nella composizione degli attacchi complessi. Nell’analisi dei risultati non bisogna tuttavia dimenticare le semplificazioni adottate al sistema, per le quali, contrariamente alla realtà, viene concesso come ipotesi che gli Outsider che guadagnino l’accesso a componenti in zone DMZ riescano ad eseguire un vulnerability scanning del software SSM e a sfruttare gli eventuali exploit disponibili. Nella realtà le poche vulnerabilità significative rilevate hanno bisogno di elevate competenze tecniche per poter essere sfruttate, e anche nel caso di un attaccante che abbia le abilità necessarie le probabilità di successo restano molto basse, anche in virtù dei sistemi di protezioni proattiva presenti nei reparti che, nel caso oggetto di studio, sono stati volutamente disattivati o i cui alert sono stati ignorati per non interferire con lo studio. Lo studio ha fornito indicazioni utili a Terranova per aumentare il livello di sicurezza dei propri sistemi, in quanto contestualmente alla rilevazione delle vulnerabilità di medio/alto rischio, esso ha anche fornito le informazioni necessarie ad eseguire un hardening dei sistemi e servizi afflitti eliminando di conseguenza le vulnerabilità descritte in precedenza. 74 BIBLIOGRAFIA [1] HP 2012 Cyber Risk Report http://www.hpenterprisesecurity.com/collateral/whitepaper/HP2012CyberRiskReport_0213.pdf [2] Christopher J. Alberts, Audrey J. Dorofee, “OCTAVE Criteria Version 2.0”, 2001 [3] Gary Stoneburner, Alice Goguen, Alexis Feringa, “Risk Management Guide for Information Technology System”, NIST SP 800-30. [4] Mitre, “CVE - Common Vulnerabilities and Exposures” https://cve.mitre.org/ [5] NIST, “CVSS - Common Vulnerability Scoring System” http://nvd.nist.gov/cvss.cfm [6] Web Application Security Consortium, “WASC Threat Classification” http://projects.webappsec.org/w/page/13246978/Threat%20Classification [7] Mitre, “CWE - Common Weakness Enumeration” http://cwe.mitre.org/ [8] Standard ISO 27002 http://it.wikipedia.org/wiki/ISO/IEC_27002 [9] Standard NIST 800-53 http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53Ar4.pdf [10] Mitre, “CAPEC - Common Attack Pattern Enumeration and Classification” https://capec.mitre.org/index.html [11] F.Baiardi, F.Corò, F.Tonelli, D.Sgandurra, “Automating the assessment of ICT Risk”, Journal of Internet Services and Applications (JISA), Vol. 19, Iss:3, 2014 75 [12] F.Baiardi, F.Corò, F.Tonelli, A.Bertolini, R.Bertolotti, D.Pestonesi, “Assessing and Managing ICT Risk with Partial Information”, CSS, 2014 [13] F.Baiardi, F.Corò, F.Tonelli, D.Sgandurra, “A Scenario Method to Automatically Assess ICT Risk”, PDP, 2014 [14] F.Baiardi, F.Corò, F.Tonelli, D.Sgandurra, “Attack Plans Against ICT Infrastructures”, ICVRAM, 2014 [15] F.Baiardi, F.Tonelli, “Haruspex: Evaluating Risk without Data”, Computer Fraud & Security, 2014 [16] F.Baiardi, F.Tonelli, A.Bertolini, R.Bertolotti, L.Guidi, “Security Stress: Evaluating ICT Robustness through a Monte Carlo Method”, Critis, 2014 [17] WASC Threat Classification, Buffer Overflow http://projects.webappsec.org/w/page/13246916/Buffer%20Overflow [18] WASC Threat Classification, Path Traversal http://projects.webappsec.org/w/page/13246952/Path%20Traversal [19] WASC Threat Classification, SQL Injection http://projects.webappsec.org/w/page/13246963/SQL%20Injection [20] Classificazione CAPEC XML + XSD https://capec.mitre.org/data/index.html#downloads [21] Mapping WASC -> CAPEC http://projects.webappsec.org/w/page/13246975/Threat%20Classification%20Taxonomy%20Cross%20Reference% 20View [22] Mapping CAPEC -> WASC https://capec.mitre.org/data/definitions/333.html [23] OTRS (OpenSource Ticket Request System) http://it.wikipedia.org/wiki/OTRS 76 [24] F.Baiardi, F.Corò, F.Tonelli, F.Muzio, L.Guidi, “Vulnerability Assessment di Sistemi SCADA. Sperimentazione su di un sistema di automazione di impianti di generazione elettrica”, 2011 [25] Douglas W. Hubbard, “How to Measure Anything: Finding the Values of Intangibles in Business”, 2010 [26] H.Holm, T.Sommestad, J.Almroth, M.Persson, “A Quantitative Evaluation of Vulnerability Scanning”, Information Management & Computer Security, Vol. 19, Iss:4, pp.231-247, 2011 [27] Y.Y.Haimes, “On the definition of vulnerabilities in measuring risks to infrastructures”, Risk Analysis, Vol. 26, no. 2, pp 293296, 2006 [28] C.Sarraute, "On exploit quality metrics and how to use them for automated pentesting," in Proc. of 8.8 Computer Security Conf., 2011. [29] C.Taylor, A.Krings, J. Alves-Foss, “Risk Analysis and Probabilistic Survivability Assessment (RAPSA): An Assessment Approach for Power Substation Hardening”, Proc. ACM Workshop on Scientic Aspects of Cyber Terrorism, (SACT), 2002. [30] C.Phillips, L.P.Swiler. "A graph-based system for network-vulnerability analysis", Proceedings of the 1998 workshop on New security paradigms, ACM, 1998. [31] E.Jonsson, T.Olovsson. “A quantitative model of the security intrusion process based on attacker behaviour”, Software Engineering, IEEE Transactions on 23.4 (1997): 235-245. [32] J.Alves-Foss, S.Barbosa. “Assessing computer security vulnerability”, ACM SIGOPS Operating Systems Review 29.3 (1995): 3-13. [33] Y.Wang, X.Yun, Y.Zhang, S.Jin, Y.Qiao, “Research of network vulnerability analysis based on attack capability transfer”, In: computer and IT, 2012 IEEE 12th international conference on, pp 3844 77