• Non ci sono risultati.

Simulatore per l'analisi di attacchi complessi

N/A
N/A
Protected

Academic year: 2021

Condividi "Simulatore per l'analisi di attacchi complessi"

Copied!
89
0
0

Testo completo

(1)

UNIVERSITA DEGLI STUDI DI PISA

LAUREA MAGISTRALE IN SICUREZZA INFORMATICA: INFRASTRUTTURE E APPLICAZIONI

Simulazione di attacchi contro infrastrutture ict:

applicazione a casi reali

Tesi di laurea specialistica

RELATORE

Prof. Fabrizio Baiardi

CONTRORELATORE

Prof. Carlo Montangero

ANNO ACCADEMICO 2012/2013

CANDIDATO

Roberto Bertolotti

(2)

Sommario

La crescente complessità delle infrastrutture ICT ha reso evidenti i limiti degli

approcci attuali all’analisi del rischio basati su metodologie qualitative o

semiqualitative. Oggi gli analisti sono interessati a conoscere quanto i costi per la

scelta di una contromisura siano effettivamente giustificati da una aumento della

sicurezza complessiva del sistema considerato. La elevata complessità nell'ottenere

buone indicazioni sulla efficacia unita alla mancanza di dati storici, suggerisce

l'adozione di un approccio basato su simulazioni MonteCarlo anziché di una

metodologia analitica esatta.

Questa tesi descrive l’implementazione di Haruspex2, la seconda versione di

Haruspex, un simulatore Monte Carlo di attacchi di minacce intelligenti goal

oriented. Queste minacce implementano attacchi complessi formati da più atttacchi

elementari. Gli attacchi complessi possono essere studiati tramite valutazioni

statistiche d'interesse per la valutazione del livello di sicurezza di un sistema e la

conseguente analisi del rischio.

Il simulatore utilizza gli attack graph, un formalismo che permette di descrivere

attacchi complessi contro un’infrastruttura informatica. L'adozione di tale formalismo

è dovuta alla complessità delle infrastrutture IT odierne, dove una minaccia può

definire piani di attacco alternativi combinando un numero anche elevato attacchi

elementari per ottenere il controllo dei componenti del sistema.

Dopo aver descritto la nuova versione di Haruspex, vengono illustrati e discussi i

risultati prodotti dalla sua applicazione ad un sistema reale, una sottorete

dell'infrastruttura informatica dell'Università di Pisa

(3)

Ringraziamenti

A mia madre, mio padre e mio fratello per l'infinita pazienza.

Al professor Telmon il cui apporto è stato fondamentale per la comprensione dell'argomento. A chi ha risposto prontamente alle continue richieste come la dott.sa Caputo.

(4)

Indice generale

1 Introduzione...6

2 Analisi del rischio: minacce, vulnerabilità e attacchi... 7

2.1 Gli asset ...9

2.2 Identificazione delle minacce ... 9

2.3 Identificazione delle vulnerabilità... 10

2.4 Determinazione dell'impatto... 12

2.5 Determinazione del rischio ... 12

2.6 Identificazione delle contromisure...12

2.7 Metodologie di analisi... 13 2.7.1 CVSS...14 2.7.2 Metodologia NIST... 17 2.7.3 OCTAVE... 17 2.7.4 MAGERIT... 18 2.7.5 MEHARI...20 2.8 Standard di sicurezza... 22 3 Haruspex2...25 3.1 Specifiche...27

3.2 Comportamento dello strumento... 28

3.3 Descrizione dello strumento... 34

3.4 Attack graph...35

3.4.1 Implementazione degli attack graph... 36

3.4.2 Esempio di generazione di un attack graph...37

3.5 Descrizione dell'implementazione dello strumento ... 38

3.5.1 Interfaccia ...39 3.5.2 Model... 41 3.5.3 Item ... 42 3.5.4 Engine ... 43 3.5.5 Simulazione...44 3.5.6 Grafo... 45

4 Descrizione del database... 46

5 Analisi di un caso reale...49

5.1 Descrizione del sistema... 49

5.2 Produzione dei dati di input... 50

5.2.1 Componenti...50

5.2.2 Vulnerabilità...51

5.2.3 Attacchi... 53

5.3 Risultati delle simulazioni... 57

5.4 Caso base... 57

5.4.1 Input di partenza...57

5.4.2 Output delle simulazioni... 58

5.5 Altri casi: variazione dei parametri di simulazione... 69

5.5.1 Strategia di scelta... 69

5.5.2 Lookahead della minaccia...69

5.5.3 Minaccia tenace...70

5.5.4 Probabilità di successo degli attacchi...72

5.5.5 Probabilità di scoperta delle vulnerabilità...72

5.5.6 Livello della minaccia... 73

(5)

5.5.8 Doppio monitoraggio... 78

5.5.9 Monitoraggio controllato... 79

5.5.10 Patch delle vulnerabilità...79

5.6 Analisi del rischio del sistema ... 86

6 Conclusioni generali...87

(6)

1 Introduzione

L'analisi del rischio di un sistema informatico è una disciplina estremamente complessa ed in continua evoluzione. Infatti l'elevato numero di componenti, la frenetica ricerca di nuove vulnerabilità e l'abilità crescente delle minacce fa si che il campo sia estremamente dinamico. Inoltre, l'assenza di dati certi e di uno storico adeguato ed affidabile rende l'analisi ancora più complessa ed incerta.

L'analista ha perciò bisogno di uno strumento automatico che, fornendo informazioni statistiche significative, lo aiuti nel processo di analisi.

Haruspex2 è il prototipo del simulatore sviluppato per questo scopo.

Esso permette di raccogliere valori utili per l’analisi simulando uno scenario in cui un certo insieme di minacce intelligenti implementa i propri attacchi ad un sistema. La descrizione di questo scenario costituisce l'input dello strumento. La significatività dello scenario considerato è responsabilità, ovviamente, dell'analista e non dello strumento.

Utilizzando i dati raccolti nelle varie simulazioni dello scenario, lo strumento può permettere di produrre una serie di statistiche sulle variabili d’interesse per l’analisi come:

• gli attacchi più utilizzati • i componenti più vulnerabili • le minacce più pericolose • i piani delle minacce

Tali valori permettono quindi un'approccio più quantitativo ed oggettivo alla valutazione della sicurezza offerta, alla individuazione delle contromisure ed, infine, ad una validazione del rapporto costo -prestazioni delle contromisure proposte.

Questa tesi oltre a produrre la seconda versione di Haruspex, ne discute l'applicazione ad un sistema reale, un sottoinsieme della infrastruttura informatica dell'Università di Pisa, dimostrando come l'uso interattivo dello strumento possa essere utile non solo per l'analisi del rischio ma anche come strumento di progetto.

Nei prossimi capitoli verranno approfonditi gli argomenti precedenti.

Il capitolo 2 presenta le metodologie standard attualmente utilizzabili dagli analisti per l'analisi dei rischio di un sistema informatico. Il capitolo 3 introduce Haruspex, presentando inizialmente le motivazioni che hanno spinto alla creazione di un nuovo strumento. Lo strumento è poi descritto approfonditamente in ogni sua parte. Il capitolo 4 illustra la struttura del database da cui lo strumento ricava le informazioni sul sistema da analizzare ed sulle minacce. Il capitolo 5 descrive l'applicazione di Haruspex ad un sistema reale, un sottoinsieme dell' infrastruttura informatica dell'Università di Pisa. Viene presentata la metodologia di lavoro e i risultati ottenuti.

L'applicazione dello strumento ad un sistema reale ne ha dimostrato l'utilità confermata sia dalla qualità dei risultati restituiti che dalla possibilità di usare tali risultati per intervenire su un sistema migliorandone la sicurezza. In quest'ottica lo strumento non è quindi solo uno strumento di analisi ma anche uno di progetto, per migliorare la sicurezza di un sistema prima di utilizzarlo in un contesto reale.

(7)

2 Analisi del rischio: minacce, vulnerabilità e attacchi

In un mondo reale complesso e dominato dalla incertezza, esiste un numero quasi illimitato di eventi e cause, alcune note altre no, che possono far si che un obiettivo di interesse possa essere raggiunto solo parzialmente o non sia raggiunto affatto. In generale, questo mancato

raggiungimento, totale o parziale, viene indicato come il rischio associato all'obiettivo considerato. Mentre esistono numerose definizioni di rischio, tutte concordano che esso sia funzione della probabilità che alcuni eventi avversi si verifichino e del danno associato a tali eventi.

Con analisi del rischio si indica l'insieme di attività che permettono di identificare e valutare i rischi cui un sistema (impianto, processo produttivo, servizio) è esposto.

L'analisi del rischio ha avuto le sue prime applicazioni in settori in cui i danni associati agli eventi avversi sono di particolare rilevanza come l'industria chimica e quella nucleare. Attualmente però esso è parte integrante di quasi tutti i processi aziendali sia per la necessità di proteggere con le adeguate misure gli asset aziendali sia perché espressamente richiesto dalle normative vigenti. Anche l'informatica ha iniziato ad interessarsi a questa disciplina ed esistono norme e metodologie affermate. Ad esempio, in Italia qualunque azienda che debba gestire, per i propri fini commerciali, dati sensibili o giudiziari di terzi, deve prevedere un processo di gestione del rischio come

richiesto dal decreto legislativo 196/2003.

L'analisi del rischio è una attività formata da più attività integrate che ha come obiettivo la scoperta dei valori necessari per riconoscere e valutare il rischio associato ad un processo aziendale. Le attività integrate sono :

1. Identificazione degli asset; 2. Identificazione delle minacce; 3. Identificazione delle vulnerabilita ; 4. Identificazione degli attacchi; 5. Analisi degli impatti;

6. Determinazione del rischio; 7. Identificazione delle contromisure;

E' ovvio che l'analisi dei rischi sia un processo complesso che deve tener conto di un gran numero di fattori, tecnici ed umani, ed è impossibile pensare di riuscire ad includere e caratterizzare tutte le possibili fonti di danno. E' perciò fondamentale stabilire il livello di astrazione dell'analisi perché se troppo elevato produce un documento inutilmente complesso, mentre d'altra parte un approccio troppo superficiale rischia di omettere parti significative.

Supponendo sia stato definito il livello di astrazione dell'analisi del rischio, vediamo ora le varie attività che lo compongono.

(8)

da cosa mi voglio proteggere

cosa voglio proteggere

perché mi voglio proteggere

quanto costa non proteggermi

Come posso proteggermi

Vulnerabilità Asset

Perdita

Minaccia

Contromisura

(9)

2.1 Gli asset

Gli asset sono le entità che si desidera proteggere perché portano valore all'azienda.

I beni più rilevanti sul piano del rischio informatico possono essere distinti in almeno due categorie: • le risorse tecnologiche :

• sistemi e dispositivi che trattano le informazioni (sistemi informatici o telematici); • sistemi e dispositivi di supporto ai primi (sistemi di controllo accessi alle sale che

contengono i sistemi informatici o telematici, sistemi ausiliari per l'energia elettrica, condizionamento);

• supporti che custodiscono le informazioni (dischi, nastri, documenti cartacei); • contenitori di supporti ( faldoni, armadi, casseforti);

• processi e procedure che elaborano le informazioni (procedure informatiche, spedizione e ricezione di fax/e-mail per l’attivazione di servizi) e processi e

procedure che, pur non trattando direttamente le informazioni, possono influire sulle medesime ( tool di sviluppo applicativo, manutenzione delle procedure

informatiche).

• le informazioni: occorre considerare sia le informazioni possedute da un ente e che sono necessari per i processi aziendali sia le informazioni che sono gestite per conto dei clienti.

2.2 Identificazione delle minacce

Le minacce sono le potenziali sorgenti di danno per il processo. Possibili minacce possono essere le persone o eventi artificiali o naturali .

Per ogni minaccia è necessario determinare: • l'origine;

• i prerequisiti in termini di risorse e diritti perché la minaccia possa attaccare il sistema; • le azioni che la minaccia deve eseguire per perseguire il proprio obiettivo;

L'identificazione delle minacce richiede l'analisi di tutte le potenziali sorgenti di danno agli asset aziendali. Casi possibili sono, ad esempio:

• il dipendente licenziato che utilizza il suo account non disattivato come richiesto dalla politica di sicurezza aziendale,

• un'azienda concorrente interessata ai segreti aziendali,

• il dipendente che inavvertitamente elimina delle informazioni vitali per l'operatività dell'azienda,

• la mancanza prolungata di energia elettrica • le catastrofi naturali.

Esistono siti specializzati e repository di minacce che possono essere utilizzati per costruire un documento base da estendere con le minacce specifiche del settore e dell’azienda che sta implementando l'analisi del rischio .

Attributi fondamentali di una minaccia sono la sua intelligenza e la sua adattività. Queste sono gli attributi che distinguono le minacce umane da quelle naturali. Una minaccia intelligente ha un obiettivo che cerca di raggiungere minimizzando i costi delle varie attività necessarie. Essa può

(10)

modificare le proprie attività in risposta a contromisure che modifichino il processo oggetto dell'analisi per minimizzare il rischio.

2.3 Identificazione delle vulnerabilità

Ricordiamo che una vulnerabilità è un errore o un difetto nella progettazione, implementazione o uso di un componente o dei controlli di sicurezza che può essere utilizzata da una minaccia per violare la sicurezza del sistema.

Quindi, una vulnerabilità permette ad una minaccia di eseguire un insieme di azioni, che le

permettono di acquisire dei diritti illegali sul sistema ed invalidare gli attributi che ne costituiscono il valore come la riservatezza, l’integrità, la disponibilità.

In generale quali siano i diritti legali su un sistema viene stabilito dalla politica di sicurezza stabilita dal proprietario del sistema.

L'output di questa fase è l’elenco delle vulnerabilità dei componenti del sistema, delle minacce che potrebbero servirsene e delle azioni necessarie per sfruttare la vulnerabilità.

Il processo di individuazione delle vulnerabilità può variare in base allo stato d’implementazione del sistema: in fase di progettazione l’analisi è eseguita a partire dalla definizione delle future politiche di sicurezza e dei requisiti. Se, invece, il sistema è in fase di realizzazione o è già in funzione occorre analizzare i controlli, le procedure di sicurezza adottate ed eventuale

documentazione esistente su risk assessment e certificazioni.

Per individuare le vulnerabilità nei componenti standard, l'analista può utilizzare i repository di vulnerabilità presenti in rete (SecurityFocus, NVD, FedCIRC, NIST ICAT), delle mailing list per il tracking delle vulnerabilità del software installato nei propri sistemi e di vulnerability scanner come Nessus.

Inoltre una sessione di penetration test può permettere di verificare se e in quale misura, le vulnerabilità permettono di violare le procedure di sicurezza implementate.

Determinazione delle probabilità di scoperta della vulnerabilità

Poiché una minaccia intelligente può sfruttare solo le vulnerabilità di cui è conoscenza, è necessario che l'analista valuti la probabilità che una minaccia riesca a scoprire le varie vulnerabilità.

Esistono diversi tipi di approccio per questa valutazione : • Quantitativo;

• Qualitativo;

Il primo approccio prevede la valutazione precisa tramite valore numerico puntuale.

In mancanza di dati certi un approccio qualitativo è preferibile, infatti esso si limita a valutare il rischio usando una scala di riferimento (es. HIGH, MEDIUM, LOW).

Una volta stabilito l'approccio da utilizzare per stimare la probabilità di scoperta della vulnerabilità è necessario tenere conto di molti fattori, quali ad esempio:

• le capacità tecnologiche della minaccia • le disponibilità finanziarie

(11)

• le motivazioni e gli obiettivi delle minacce • i controlli adottati dal sistema

L'identificazione delle vulnerabilità di un sistema prevede una fase successiva in cui l'analista deve scoprire quale impatto tale vulnerabilità avrà sul sistema stesso in base allo stato della vulnerabilità e al suo potenziale d'attacco.

Il potenziale d’attacco rappresenta la “barriera” che una minaccia deve superare per poter sfruttare una vulnerabilità ed eseguire quindi l'attacco. Esso dipende tipicamente da alcuni fattori come:

• Il tempo necessario per sfruttare la vulnerabilità • le risorse materiali necessarie

• Le capacità che una minaccia deve possedere • La conoscenza del sistema

• L’accesso al sistema

Con il progredire delle tecnologie e l’aumento dell’attenzione alla sicurezza i nuovi attacchi hanno un insieme di caratteristiche comuni e sempre più diffuse:

• penetrano in una rete sfruttano sempre di più porte tcp/ip associate a servizi standard. Essi quindi possono essere fermati solo da firewall e contromisure di tipo applicativo (web application vulnerabilities) ;

• sono tendenzialmente basati su tecniche di social engineering;

• tendono spesso al furto dell’identità digitale dell’utente (carte di credito, dati personali e sensibili ecc.) oppure alla creazione di migliaia di “zombie” (botnet), cioè di computer infettati che possono agire in determinate circostanze in base ai piani della minaccia e lanciare attacchi massicci contro una vittima determinata.

Illustrazione 2: Stato della vulnerabilità:

1. La vulnerabilità viene scoperta (scoperta) 2. Il primo exploit viene rilasciato (exploit)

3. Il grande pubblico viene a conoscenza della vulnerabilità (divulgazione) 4. Viene sviluppata la patch che elimina la vulnerabilità

(12)

2.4 Determinazione dell'impatto

L’impatto è la perdita che si verifica quando la minaccia raggiunge l'obiettivo. Esso può essere determinato in base al valore dell’asset colpito oppure, se esso non disponibile o difficilmente calcolabile, può essere valutato in base alla perdita in termini di integralità, confidenzialità e disponibilità del sistema e delle informazioni da esso memorizzate e gestite.

E' necessario ricordare che il danno ha diverse componenti, ad esempio può essere talora rilevante la perdita di immagine o di credibilità di un ente o una istituzione.

2.5 Determinazione del rischio

A questo punto è possibile ricavare il valore finale del rischio. Nella maggior parte degli standard questo è determinato dalla funzione che associa il rischio all'impatto e la probabilità , eg

Rischio = Impatto x Probabilità

La maggior parte delle metodologie preferisce utilizzare una valutazione discreta e basata su un numero finito di intervalli . Generalmente ,ogni metodologia definisce una propria matrice di rischio per determinare il rischio a partire dall'intervallo dell'impatto e da quello della probabilità. Le dimensioni della matrice dipendono dal numero di intervalli utilizzati per impatto e probabilità, ad esempio è possibile utilizzare matrici 3x3, 4x4 o 5x5. Generalmente non vengono usati più di 7 intervalli.

2.6 Identificazione delle contromisure

Una contromisura è una modifica statica o dinamica di un sistema che ha come obiettivo quello di eliminare una o più vulnerabilità. Se si trascurano eventuali vincoli di costo, per ogni vulnerabilità esiste almeno una contromisura in grado di eliminarla. Le contromisure permettono di ridurre il rischio associato ad un certo processo o sistema e possono operare in modi diversi e non esclusivi: il rischio può essere ridotto

• riducendo la probabilità di occorrenza delle minacce • riducendo gli impatti

(13)

Esistono diversi tipi di contromisure:

• fisico: un cancello, un badge, un estintore,

• procedurale : il dover mostrare un documento all’ingresso, un giro di sorveglianza fatto a orari diversi e non regolari ,

• tecnico: l’installazione di un RAID, un backup ,

• personale: corsi di formazione sulla sicurezza, training specializzato. Le contromisure possono essere anche:

• preventive . prevengono un attacco,

• dissuasive : riducono la probabilità che l'attacco si verifichi, • palliative : cercano di diminuire l'impatto ,

• rivelatrici : cercano di scoprire l'attacco prima che esso provochi un impatto , • protettrici : riducono la vulnerabilità per limitare l'impatto di un attacco .

Visto che ogni contromisura ha un costo, conviene adottare una contromisura se, una volta applicata, il rischio si è ridotto più del costo della contromisura.

Una singola contromisura può essere condivisa ovvero può fermare più attacchi, occorre quindi valutare l'effetto di un insieme di contromisure su un insieme di vulnerabilità e sul rischio

conseguente. Nel caso di minacce intelligenti ed adattive, valutare l'efficacia di una contromisura è estremamente complesso perché se si riduce la probabilità di successo o l'impatto di un attacco la minaccia può ottenere gli stessi obiettivi implementando un diverso attacco.

2.7 Metodologie di analisi

Da quando la sicurezza informatica è divenuta un aspetto realmente importante per le aziende, sono stati sviluppate alcune metodologie atte a semplificare la valutazione del rischio di un sistema ICT. Nel seguito riassumiamo brevemente le principali:

• cvss (Common Vulnerability Scoring Sistema → http://www.first.org/cvss) è uno standard per la valutazione della gravità delle vulnerabilità di un sistema informatico che stabilisce una misura di confronto tra vulnerabilità, in modo da avere una priorità per l'eliminazione delle stesse.Essa utilizza una serie di misure, le metriche, sviluppate in base alla valutazione di esperti.

• Nist Il National Institute of Standards and Technology (http://www.nist.gov) è un'agenzia del governo degli USA che si occupa della gestione delle tecnologie. Il suo compito è

sviluppare standard, tecnologie e metodologie che favoriscano la produzione e il commercio. Una di queste metodologie è quella per l'analisi del rischio.

• octave(Operationally Critical Threat, Asset and Vulnerability Evaluation →

http://www.cert.org/octave/). È una delle metodologie emergenti specificamente dedicate al rischio informatico. OCTAVE è concettualmente compatibile con BS7799 e con ITSEC con riferimento ai livelli di assurance e alle funzionalità di sicurezza.

• Magerit (http://rm-inv.enisa.europa.eu/methods_tools/m_magerit.html) è una metodologia open sviluppata inizialmente dal ministero della pubblica amministrazione spagnola. Data la sua natura aperta viene usata anche al di fuori della pubblica amministrazione.

• Mehari (Méthode Harmonisée d'Analyse de Risques →

http://www.clusif.asso.fr/fr/production/mehari/) è un metodo per l'analisi dei rischi

sviluppato dalla CLUSIF (French association of information security professionals) basato su scenari.

(14)

2.7.1 CVSS

CVSS è nato come linguaggio universale per indicare la severità di una vulnerabilità e aiutare a

determinare l’urgenza e la priorità della risposta.

L’idea è di stabilire un ordinamento tra le vulnerabilità associando ad ognuna una valutazione del rischio da essa generato, il CVSS score, per stabilirne la priorità e quindi un tempo limite entro cui eliminarla.

Il CVSS Score viene determinato in base a tre insiemi di caratteristiche Base, Temporale e

Ambientale della vulnerabilità. Ogni insieme genera un punteggio diverso.

Il punteggio Base rappresenta la severità della vulnerabilità, il punteggio Temporale l'urgenza della sua eliminazione, il punteggio Ambientale la priorità nella risposta entro l’ambiente dell’utente finale.

(15)

Espansioni del CVSS

Le metodologie presentate in questa tesi non sono mutualmente esclusive, anzi l'analista è incoraggiato non solo ad usarle, ma anche a svilupparle secondo le proprie necessità.

In questo contesto si inserisce il lavoro dell'università di Pau, che utilizza la classificazione del CVSS insieme al concetto di attack graph per fornire una stima dell'impatto degli attacchi su una rete di host.

Un attack graph rappresenta l'insieme dei possibili attacchi complessi ad un sistema (vedi paragrafo 3.4).

Uno dei principali problemi posti dall'utilizzo di attack graph è che non forniscono nessuna stima della severità degli attacchi complessi che modellano.

Per questo motivo, viene introdotta la classificazione delle vulnerabilità del CVSS modificata tramite danno cumulativo: l'impatto prodotto da un attacco singolo viene visto in relazione degli attacchi eseguiti in precedenza. In questo modo si vuol definire un impatto cumulativo per l'unione dei singoli attacchi effettuati .

Il danno cumulativo può essere definito per ogni host della rete, in modo da conoscere il danno dell'intera rete.

Per calcolare il danno, vengono modificati i campi di valutazione (Exploitability Score) del CVSS, considerando i privilegi conquistati dalle minacce.

Esempio di utilizzo di CVSS con attack graph

Illustriamo un esempio di applicazione del metodo. Il sistema preso in considerazione è il seguente:

HA, minaccia

H0, web server

H1, Windows domain server

(Windows 2000 SP1)

H2, client (Windows xp SP2)

H3, linux Server (Red Hat 7.0)

(16)

Si trovano le vulnerabilità dei componenti e si descrivono tramite i punteggi del CVSS. Inoltre si studiano precondizioni e postcondizioni degli attacchi relativi alle vulnerabilità, in modo da poter creare l'attack graph.

Una volta costruita la classificazione è possibile generare l'attack graph e avere una indicazione della pericolosità di ogni nodo, che rappresenta una possibile combinazione di attacchi, tramite il valore del danno cumulativo.

Illustrazione 6:tabelle riguardanti le vulnerabilità sugli host del network. La prima contiene i punteggi CVSS, la seconda descrive le pre e le postcondizioni degli attacchi relativi.

(17)

L'illustrazione 7 rappresenta il “CVSS attack graph”, in cui l'obiettivo della minaccia è dato dalla proprietà “guadagnare privilegi root sull host h3”.

I nodi (raffigurati tramite cerchi) contengono lo stato del network dopo l'esecuzione di un attacco. I nodi marchiati in grassetto indicano lo stato finale della sequenza di attacchi: la minaccia ha

raggiunto l'obiettivo.

Il danno cumulato per ogni nodo è contenuto nel rettangolo blu. Tale danno è espresso tramite 4 valori [hdH0 hdH1 hdH2 hdH3 ] dove con hd si intende il danno espresso in punteggio CVSS e hn è l'host (illustrazione 4).

2.7.2 Metodologia NIST

Quella definita dal NIST non è una metodologia vera e propria ma solo un supporto tecnico all'analista che definisce il modo e l'ordine con cui eseguire l'analisi. Questo supporto infatti aiuta l'analista nella produzione della documentazione necessaria all'analisi.

Rispetto ad altre metodologie, la proposta del NIST focalizza l'attenzione prima sulle minacce e poi sulle vulnerabilità dei componenti: la giustificazione è che se nessuno è interessato a sfruttare una determinata vulnerabilità allora essa è necessariamente di poco interesse.

Le fasi individuate sono le seguenti: • Fase 1: Individuazione dei Sistemi

• Fase 2: Individuazione Minacce (obiettivi, motivazioni, capacità, azioni) • Fase 3: Individuazione Vulnerabilità

• Fase 4: Analisi dei controlli esistenti

• Fase 5: Individuazione delle probabilità (che una minaccia sfrutti una vulnerabilità) • Fase 6: Analisi degli Impatti

• Fase 7: Analisi dei rischi

• Fase 8: Individuazione dei controlli • Fase 9: Documentazione

(18)

La metodologia OCTAVE prevede di identificare gli asset del sistema e le loro minacce per poi passare allo studio delle vulnerabilità. Infine produce la documentazione per la scelta della strategia da adottare per eliminare le vulnerabilità.

Fase 1: Build Asset-Based Threat Profiles - coinvolge la valutazione della strategia di sicurezza aziendale e la determinazione delle risorse possedute. Durante questa fase,gli analisti devono essere a conoscenza delle risorse possedute dalla società e quali di esse richiedono una protezione speciale. Gli analisti devono descrivono le misure di sicurezza applicate dalla società e cercano di

determinarne i punti deboli. Questa fase si basa principalmente sulle interviste con i dipendenti. La fase 1 rende il personale consapevole dell'importanza della protezione dei dati, in quanto

descrive le perdite potenziali che potrebbero emergere in caso di perdita di dati di vitale importanza. Fase 2: Identify Infrastructure Vulnerabilities - prevede la valutazione del sistema di gestione delle informazioni, basandosi principalmente sui dati raccolti durante la fase 1. Si rilevano vulnerabilità sulla protezione dei dati focalizzando l'attenzione su questioni tecnologiche. Si determinano questioni chiave per la strategia futura. Questa fase prevede la raccolta di dati dai dipendenti del reparto IT, i dirigenti e altro personale. Si sviluppa una soluzione comune che non ostacoli l'attuale modello di business della società.

Fase 3: Develop Security Strategy and Plans - questa è la fase di analisi dei rischi. Le informazioni raccolte nella fase 1 e fase 2 sono utilizzate per valutare il rischio di compromissione dei dati in azienda e il rischio connesso con l'attività di business dell'azienda. Si sviluppano la strategia di sicurezza e i sistemi per minimizzare il rischio di perdita di dati . Grazie alle informazioni riguardanti il modello di business della società, si è in grado di determinare i tipi di attacco che possono verificarsi in futuro. La fase 3, deve creare le procedure di gestione dei rischi. La squadra che conduce il processo di OCTAVE deve verificare il rispetto dei vincoli introdotti dalle varie legislazioni di riferimento.

Una peculiarità di questa metodologia è che non considera la probabilità che ha una minaccia di scoprire la vulnerabilità: “la probabilità è comunque imprecisa e troppo dinamica per essere utilizzata in un analisi realistica, se c’è una vulnerabilità qualcuno la può sfruttare”.

2.7.4 MAGERIT

Metodologia molto simile alle altre però interessante per alcune caratteristiche: -open source

- le classificazioni e le scale discrete che utilizza -introduce il concetto di dipendenza tra asset Magerit vuole raggiungere i seguenti obiettivi:

• porre i responsabili dei sistemi informativi a conoscenza dell'esistenza dei rischi e della necessità di trattarli in tempo.

• offrire un metodo sistematico per l'analisi di tali rischi.

• aiutare a descrivere e pianificare le opportune misure per tenere sotto controllo i rischi. • preparare l'organizzazione per processi di valutazione, controllo, certificazione e di

(19)

Come metodo per l'analisi dei rischi e di gestione, MAGERIT copre solo una fase della gestione della sicurezza globale di un sistema di informazione. La sicurezza gestione è un processo ciclico permanente e ricorrente (in altre parole, essa deve essere riavviato continuamente a causa di cambiamenti nel sistema e il suo ambiente).

• Risk Analysis and Management : Questa è la fase centrale di "misura" e di calcolo all'interno del ciclo di gestione della sicurezza. È il punto di partenza di gestione della sicurezza, e richiede

speciali tecniche di processo (nell'ambito della sicurezza).

• Objectives, Strategy and Policy for Information Systems Security : Questa fase si basa e contribuisce alla fase di analisi e gestione dei rischi. Nel primo ciclo contribuisce a determinare gli obiettivi, la strategia e la politica, che a sua volta influenzerà l'analisi dei rischi più dettagliata dei cicli successivi.

• Security Planning for Information Systems : utilizza tecniche di pianificazione generali (risultati, progressioni, e tappe decisionali).

(20)

• Security Organization for Information Systems: utilizza tecniche organizzative generali

(impegno gestionale, i ruoli, le responsabilità, la documentazione regolamentare).

• Implementation of Safeguards and Other Security Measures in Information Systems: utilizza

tecniche generali per la gestione dei progetti e la gestione della configurazione.

• Awareness about Security in Information Systems: tiene conto del ruolo fondamentale delle

risorse umane interne in qualsiasi progetto di sicurezza, e si avvale di tecniche generali per la gestione del progetto, la formazione, la comunicazione e la gestione delle risorse umane.

• Reaction to Incidents, Handline and Reporting of Incidents, and Recovery of Acceptable Security States: questa fase è fondamentalmente operativa e descrive tecniche di gestione dei

servizi di emergenza.

• Monitoring and Management of Configuration and Changes in the Security of Information Systems: questa fase è fondamentalmente di manutenzione e si avvale di tecniche generali di

controllo, gestione della configurazione e gestione del cambiamento.

2.7.5 MEHARI

MEHARI è una metodologia diversa da quelle descritte in precedenza, essa infatti introduce il concetto di scenario: uno scenario rappresenta una potenziale situazione di rischio dovuta ad attacchi o malfunzionamenti.

L'analista può scegliere se creare nuovi scenari o utilizzare uno degli scenari predefiniti che sono raccolti in un database.

Per ogni scenario si valutano le contromisure -che esistono per prevenire gli attacchi

-che si possono inserire per ridurre frequenza ed impatto degli attacchi In Mehari, vengono individuati 4 livelli di gravità o di criticità.

• Livello 4 (Vitale):

a questo livello di malfunzionamento l’esistenza stessa dell’asset o delle sue attività principali è messa in pericolo.

• Livello 3 (Molto Grave):

malfunzionamenti molto gravi che non pregiudicano un ripristino delle funzionalità • Livello 2 (Importante):

malfunzionamenti che hanno un impatto sulle funzionalità che restano globalmente sopportabili

(21)

Ogni scenario di rischio è legato a due parametri importanti: • Probabilità di accadimento

• Impatto

Per valutare l’impatto finale il metodo Mehari suggerisce prima di valutare il cosiddetto impatto intrinseco e poi l’azione delle contromisure o del trasferimento del rischio su terzi, ad esempio come quando si stipula un’assicurazione.

L’impatto intrinseco rappresenta la gravità massima delle conseguenze dello scenario di rischio.

(22)

Le contromisure da considerare e da aggiungere all’impatto intrinseco sono:

• misure di protezione che portano al confinamento del rischio (una porta tagliafuoco) • misure palliative che attenuano le conseguenze indirette (training adeguato del personale) • misure di recupero che consistono nel trasferimento di rischio verso terzi (assicurazioni o

ricorso alla giustizia)

2.8 Standard di sicurezza

Lo Standard UNICEIISO/IEC 27001:2006 (Tecnologia delle informazioni - Tecniche di

sicurezza - Sistemi di gestione della sicurezza delle informazioni - Requisiti) è una norma internazionale che definisce i requisiti per impostare e gestire un Sistema di Gestione della

Sicurezza delle Informazioni ed include aspetti relativi alla sicurezza logica, fisica ed organizzativa.

Caratteristiche

La Norma è stata creata a fini di certificazione, in modo da costituire un sistema completo per garantire la gestione della sicurezza nella tecnologia dell'informazione

La norma ISO 27002:2007 è una raccolta di "best practices" che possono essere adottate per soddisfare i requisiti della norma ISO 27001:2005 al fine di proteggere le risorse informative; ISO 27001:2005 è il documento normativo di certificazione al quale l'organizzazione deve fare

riferimento per costruire un Sistema di Gestione della Sicurezza delle Informazioni che possa essere certificato da un ente indipendente. La norma ISO 27002:2007 non è certificabile in quanto è una semplice raccolta di raccomandazioni.

(23)

Poiché l'informazione è un bene che aggiunge valore all'impresa e visto che ormai la maggior parte delle informazioni è custodita su supporti informatici, ogni organizzazione deve essere in grado di garantire la sicurezza dei propri dati in un contesto dove i rischi informatici causati dalle violazioni dei sistemi di sicurezza sono in continuo aumento. L'obiettivo del nuovo standard ISO 27001:2005 è proprio quello di proteggere i dati e le informazioni da minacce di ogni tipo, al fine di assicurarne l'integrità, la riservatezza e la disponibilità, e fornire i requisiti per adottare un adeguato sistema di gestione della sicurezza delle informazioni (SGSI) finalizzato ad una corretta gestione dei dati sensibili dell'azienda.

La norma è applicabile a imprese operanti nella gran parte dei settori commerciali e industriali, come finanza e assicurazioni, telecomunicazioni, servizi, trasporti, settori governativi.

L'impostazione dello standard ISO/IEC 27001 è coerente con quella del Sistema di Gestione per la Qualità ISO 9001:2000 ed il risk management; si basa sull'approccio per processi strutturato in: politica per la sicurezza, identificazione, analisi dei rischi, valutazione e trattamento dei rischi, riesame e rivalutazione dei rischi, modello PDCA, utilizzo di procedure e di strumenti come audit interni, non conformità, azioni correttive e preventive, sorveglianza, nell'ottica del miglioramento continuo.

La norma Standard ISO 27001:2005 stabilisce i requisiti per il Sistema di Gestione della Sicurezza delle Informazioni (ISMS). L’ obiettivo principale e quello di stabilire un sistema per la gestione del rischio e la protezione delle informazioni e degli asset ICT. La norma è applicabile a tutte le

imprese private o pubbliche in quanto prescinde da uno specifico settore di business o

dall'organizzazione dell'azienda. Però bisogna tener presente che l'adozione e gestione di un ISMS richiede un impegno di risorse significativo e quindi deve essere seguito da un ufficio specifico che in genere coincide con l’ufficio Organizzazione e Qualità. “Essa specifica i requisiti per impostare, mettere in opera, utilizzare, monitorare, rivedere, manutenere e migliorare un sistema documentato all’interno di un contesto di rischi legati alle attività centrali dell’organizzazione. Dettaglia inoltre i requisiti per i controlli di sicurezza personalizzati in base alle necessità di una singola

organizzazione o di una sua parte. Il sistema è progettato per garantire la selezione di controlli di sicurezza adeguati e proporzionati.”

Lo standard ISO 27001:2005 che, come detto, presenta molti punti in comune con la ISO 9001, che definisce i requisiti di un sistema di gestione della qualità (es. adozione modello PDCA, filosofia del miglioramento continuo ecc.), si differenzia in quanto segue un approccio basato sulla gestione del rischio.

Quindi lo standard prevede:

• Pianificazione e Progettazione • Implementazione

• Monitoraggio • Mantenimento • Miglioramento.

(24)

In modo simile a quanto previsto dai sistemi per la gestione della qualità, però nella fase di progettazione richiede lo svolgimento di un risk assessment schematizzabile in:

• Identificazione dei rischi • Analisi e valutazione

• Selezione degli obiettivi di controllo e attività di controllo per la gestione dei rischi • Assunzione del rischio residuo da parte del management

• Definizione dello Statement of Applicability

L’ultimo punto specifica gli obiettivi di controllo adottati e i controlli implementati

dall’organizzazione rispetto ad una lista di obiettivi di controllo previsti dalla norma. Analogamente alla norma sui sistemi di qualità è richiesta ampia documentazione riguardo l’analisi del rischio e le procedure e i controlli a supporto dell’ISMS.

(25)

3 Haruspex2

Haruspex2 è uno strumento software di simulazione di attacchi complessi ad un sistema informatico da parte di minacce intelligenti ed adattive che permette a chi conduce l'analisi del rischio di

migliorare la propria comprensione del sistema da analizzare. Inoltre esso fornisce dei risultati statistici a supporto delle decisioni prese come risultato dell'analisi.

Lo strumento è l'evoluzione diretta di HARUSPEX a cui apporta significativi miglioramenti. Prima di descrivere nel dettaglio il funzionamento dell'algoritmo alla base dello strumento è necessario rivedere su alcuni concetti base.

Consideriamo inizialmente i valori in input allo strumento che descrivono: • sistema target dell'assessment

• componenti del sistema • vulnerabilità dei componenti • attacchi elementari

• minacce

Sistema

Un sistema è definito come un insieme di componenti connessi, dove per connessione si intende la possibilità di invocare un’operazione definita dal componente da parte di un utente o di un altro componente.

Componente

L' insieme di componenti forma il sistema da analizzare. Ogni componente è caratterizzato da

1. un insieme di operazioni che definisce

2. un insieme di vulnerabilità che si possono scoprire

Vulnerabilità

Una vulnerabilità è un difetto di un componente ed è necessaria per poter eseguire un attacco. Ogni vulnerabilità v è caratterizzata da una probabilità p(v) di essere scoperta ad ogni istante.

Possono esistere delle correlazioni tra vulnerabilità: ogni correlazione è una tripla (v1, v2, delta) che denota che la scoperta della vulnerabilità v1 aumenta di delta la probabilità di scoprire v2 .

(26)

Un altra caratteristica importante è il livello di una vulnerabilità. Esso indica la complessità necessaria per sfruttare la vulnerabilità tramite un attacco.

Livello

Descrizione

Alto Esistono condizioni di accesso specializzate. Per esempio: in molte configurazioni la minaccia deve avere privilegi elevati o deve aver compromesso altri sistemi (es. DNS hijacking).

L'attacco dipende da metodi di social engineering che possono essere facilmente rilevati da persone competenti.

Medio La condizione di accesso è in qualche modo specializzata: per esempio un attacco ad un gruppo di sistemi o di utenti con un certo livello di

autorizzazioni, possibilmente untrusted.

Sono richieste alcune informazioni prima che l'attacco possa essere lanciato. L'attacco richiede una piccola dose di social engineering che potrebbero ingannare persone incaute (phishing per esempio)

Basso Non ci sono particolari condizioni di accesso. Per esempio un sistema in cui gli utenti non sono autenticati. L'attacco non prevede particolari skill né informazioni aggiuntive.

Definizione Complexity del CVSS

Attacco

Un attacco elementare o attacco semplice è un azione che, in caso di successo, permette ad una minaccia di incrementare illegalmente (cioè violando la politica di sicurezza) i propri diritti sul sistema.

Un attacco è caratterizzato da:

1. una precondizione = un insieme di diritti + un insieme di vulnerabilità di alcuni componenti 2. una postcondizione = un insieme di diritti

3. un livello di risorse 4. un livello di informazioni 5. un livello di rischio

6. una probabilità di successo

I livelli indicano l'abilità e le risorse di cui una minaccia deve poter disporre per eseguire l'attacco. La probabilità di successo è la probabilità che l'attacco venga concluso con successo. Generalmente tale valore è legato alla complessità della vulnerabilità.

Un attacco complesso è una sequenza di attacchi elementari concatenati: data una sequenza di attacchi elementari , la sequenza è concatenata se considerando un qualunque attacco appartenente ad essa si verifica che le precondizioni di tale attacco sono soddisfatte se la minaccia esegue con successo gli attacchi che lo precedono nella sequenza.

Minaccia

Una minaccia è un utente del sistema interessato ad incrementare illegalmente i propri diritti sui componenti.

Ogni minaccia è contraddistinta dalle risorse possedute (competenze tecniche, le disponibilità economiche e le conoscenze sul sistema) e da un obiettivo, ovvero da un insieme di diritti sul sistema che la minaccia vuole ottenere.

(27)

La minaccia è caratterizzata da

1. un insieme di diritti iniziali 2. un livello di abilità generale 3. un livello di risorse

4. un livello di informazioni su attacchi 5. un livello di rischio

6. un insieme di obiettivi, ognuno dei quali è un insieme di diritti 7. un livello di informazioni sul sistema

8. una strategia di scelta

La strategia di scelta determina il comportamento della minaccia quando essa può eseguire più attacchi. Haruspex2 mette a disposizione alcuni algoritmi (vedi par. 3.1) per risolvere questa scelta.

3.1 Specifiche

Produzione delle simulazioni

Ogni simulazione prevede più esperimenti. Ogni esperimento ripete per un certo intervallo di tempo, uguale per ogni esperimento, i seguenti passi:

1. scoperta delle vulnerabilità 2. esecuzione degli attacchi 3. terminazione

A partire dal database che contiene in valori in input che descrivono il sistema e le minacce,

vengono realizzati gli esperimenti. Ogni esperimento simula gli attacchi delle minacce per un certo intervallo di tempo fissato. Il tempo della simulazione varia ad intervalli discreti e ad ogni minaccia è associato uno stato che definisce i nodi dell'attack graph che essa ha raggiunto.

Ad ogni istante di tempo simulato, Haruspex

1. determina quali tra le vulnerabilità non ancora scoperte sono scoperte.

2. considera tutte le minacce che non hanno ancora raggiunto tutti i loro obiettivi (cioè quelle

in cui un nodo finale non appartiene allo stato della minaccia) e per ogni minaccia, in base alle vulnerabilità scoperte fino all'istante considerato, sceglie un attacco da eseguire. In generale la minaccia può scegliere un attacco solo se tutte le vulnerabilità ad esso associate sono state tutte scoperte. Se non può scegliere nessun attacco attende. Se più attacchi possono essere eseguiti, ne sceglie uno e lo esegue.

La scelta dell'attacco dipende dalla strategia associata ad una minaccia ed al livello di informazioni che essa ha a disposizione sull'attack graph. Tali informazioni sono definite in base al livello di informazioni sul sistema o ahead associato alla minaccia. Il look-ahead specifica la distanza massima di un attacco: ad esempio look-look-ahead=3 vuol dire che nella scelta la minaccia tiene conto di tutte le possibili combinazioni di attacchi che prevedono al più 3 attacchi successivi a partire dallo stato attuale.

(28)

La minaccia può scegliere l'attacco mediante strategie diverse, ad esempio la minaccia può scegliere l'attacco:

1. che corrisponde al max incremento dei diritti

2. che minimizza la differenza tra diritti attuali e quelli dell'obiettivo 3. che avvicina di più ad un obiettivo

4. in modo del tutto casuale

5. massimizza la probabilità di successo.

Inoltre, la minaccia può scegliere in modo deterministico o probabilistico. Ad esempio se un attacco aumenta di d diritti ed un altro di 3d diritti allora

a) una minaccia deterministica sceglie sempre il secondo

b) una minaccia probabilistica sceglie il primo con probabilità ¼ ed il secondo con probabilistà ¾

3. Gli esperimenti possono terminare

• quando si è raggiunto un certo limite fissato dall'utente

• quando una misura statistica, in generale una media, ha raggiunto la stabilità (e.g. La differenza max tra le medie complessive degli ultimi k esperimenti è inferiore ad una soglia)

• quando una misura statistica, ancora una media, ha raggiunto un intervallo di confidenza prefissato.

Salvataggio dei risultati nel database

Lo strumento produce come output un database per calcolare statistiche sugli attacchi eseguiti (tempo, successo/fallimento), gli obiettivi che sono stati raggiunti (tempo) e la scoperta delle vulnerabilità. Inoltre esso contiene anche informazioni sulle varie simulazioni (tempo, successo e altre).

Analisi dei risultati

Quando gli esperimenti sono terminati, lo strumento calcola alcuni valori scelti dall'utente del database prodotto, e.g. tempo medio di una minaccia per raggiungere un obiettivo, numero medio di esecuzioni di un attacco, e quindi termina. Ulteriori statistiche possono essere calcolate dall'analista utilizzando opportuni package statistici. Ad esempio, è possibile calcolare delle statistiche sul numero di attacchi con successo ad un certo componente.

3.2 Comportamento dello strumento

Prima di descrivere in dettaglio la realizzazione dello strumento ed il codice sviluppato vediamo quali sono le operazioni che l'utente può compiere.

Creazione dei dati di input

Come prima cosa l'utente inserisce la struttura del sistema che verrà visualizzata nell'interfaccia ad albero.

(29)

Una volta noti i componenti del sistema da analizzare, l'utente potrà inserire le loro vulnerabilità mediante i seguenti campi.

Vulnerabilità

Nome Descrizione Livello Probabilità Delta

Nome: identificativo della vulnerabilità.

Descrizione: descrizione della vulnerabilità. Può anche essere omessa.

Livello: livello degli attacchi abilitati dalla vulnerabilità. Può essere basso, medio o alto. Probabilità: probabilità che la vulnerabilità sia presente nel componente

Delta: correlazione con un altra vulnerabilità

(30)

A questo punto è possibile creare gli attacchi:

Attacchi

Nome Descrizione Probabilità successo Precondizione Postcondizione Risorse Informazioni Rischio

Nome: nome dell'attacco

Descrizione: descrizione dell'attacco. Può anche essere omesso.

Probabilità successo: probabilità che l'attacco eseguito abbia successo. Precondizioni: diritti necessari alla minacci per eseguire gli attacchi. Postcondizioni: diritti acquisiti dalla minaccia tramite l'attacco.

Risorse: livello (basso,medio, alto) di risorse necessarie alla minaccia per eseguire l'attacco. Informazioni: livello (basso,medio, alto) di informazioni sul sistema necessarie alla minaccia per

eseguire l'attacco.

Rischio: livello (basso,medio, alto) di rischio a cui la minaccia si espone eseguendo l'attacco.

(31)

Per descrivere le minacce occorre fornire le seguente informazioni: Minaccia

Nome Diritti iniziali Informazioni Risorse Rischio Livello

Nome: nome della minaccia.

Diritti iniziali: diritti posseduti inizialmente dalla minaccia. Tipicamente sono i diritti concessi agli

utenti di un servizio.

Informazioni: livello (basso,medio, alto) di informazioni sul sistema possedute dalla minaccia. Rischio: livello (basso,medio, alto) di rischio tollerato dalla minaccia.

Risorse: livello (basso,medio, alto) di risorse posseduto dalla minaccia.

Livello: livello (basso, medio, alto) degli attacchi che può sfruttare la minaccia. Si riferisce al

campo livello delle vulnerabilità.

(32)

Produzione delle simulazioni

A questo punto l'utente ha fornito tutti i dati necessari per eseguire le simulazioni.

E' possibile eseguire una simulazione singola, l'interfaccia con timeline permette di avere una schermata di facile lettura della simulazione oppure di eseguire e registrare su database un insieme di simulazioni.

L'utente deve solo scegliere alcuni parametri in base ai propri interessi. • minaccia: esegue le simulazioni per la minaccia scelta.

• lookahead: stabilisce il grado di intelligenza della minaccia.

• tipo di simulazione: stabilisce in che modo vengono scelti gli attacchi da parte del software. E' anche possibile scegliere tra il tipo deterministico e quello probabilistico.

• criterio interruzione: stabilisce i criteri di interruzione della produzione delle simulazioni. • tipo gruppo di simulazioni: gruppo in base al quale vengono prodotte le simulazioni

MaxIncremento la minaccia cerca di massimizzare il numero di diritti acquisiti

MinDifferenza la minaccia cerca di minimizzare la differenza di diritti con il suo obiettivo

MaxProbabilità la minaccia sceglie gli attacchi più probabili

Simple La minaccia sceglie tra gli attacchi possibili (in modo random se probabilistica)

Tipi di simulazione

Illustrazione 12: simulazione singola con timeline. L'icona del bug rappresenta un evento di scoperta di una vulnerabilità, la croce rossa l'esecuzione di un attacco, mentre il quadrato rosso con croce bianca il raggiungimento di un obiettivo.

(33)

criterio\tipo Obiettivo

Numero Esegue il numero in input di simulazioni

Limite Esegue simulazioni fino ad un massimo di maxSimulazioni. Interrompe se limit minacce hanno raggiunto gli obiettivi

Stabilità Esegue simulazioni fino ad un massimo di maxSimulazioni. Interrompe se soglia minacce hanno raggiunto k simulazioni consecutive con successo

criterio\tipo Giorni

Numero Esegue il numero in input di simulazioni

Limite Esegue maxSimulazioni. Limit è il numero di giorni dalla quale si desidera fare partire le simulazioni

Stabilità Esegue maxSimulazioni per periodo. K è il valore del quale viene aumentato il periodo della simulazione. Soglia è il tempo massimo del periodo

Il tipo di simulazione giorni è molto utile perchè permette di avere informazioni su cosa succede nel sistema al variare del periodo di simulazione e se il periodo ha influenza sulla probabilità di

scoperta della vulnerabilità (vedi par 5.2.2)

criterio\tipo Attacchi

Numero Esegue il numero in input di simulazioni

Limite Esegue simulazioni fino ad un massimo di maxSimulazioni. Limit è la media del numero di attacchi. Si eseguono simulazioni fino a che la media non supera limit.

Stabilità Esegue simulazioni fino ad un massimo di maxSimulazioni. K è il numero di simulazioni di cui si considera la media del numero di attacchi. Si eseguono simulazioni fino a che la media non supera limit.

criterio\tipo Time

Numero Esegue il numero in input di simulazioni

Limite Esegue simulazioni fino ad un massimo di maxSimulazioni. Limit è la soglia di durata della simulazione. Si eseguono simulazioni fino a che la soglia non viene superata

Stabilità Esegue simulazioni fino ad un massimo di maxSimulazioni. K è il numero di simulazioni di cui si considera la media del tempo della simulazione. Si eseguono simulazioni fino a che la differenza tra i tempi di simulazione non è più grande di soglia

(34)

3.3 Descrizione dello strumento

La parte più interessante dello strumento riguarda sicuramente la creazione delle simulazioni. Una simulazione comprende gli eventi che rappresentano le fasi di un attacco complesso da parte di una minaccia:

1. scoperta delle vulnerabilità: la minaccia scopre la presenza di vulnerabilità nel sistema 2. esecuzione attacchi: la minaccia esegue uno o più attacchi elementari ed ottiene nuovi diritti

sul sistema

3. raggiungimento obiettivo: la minaccia raggiunge i diritti alla quale è interessata

(35)

Ad ogni intervallo di simulazione:

• si calcolano le vulnerabilità scoperte dalla minaccia,

• viene trovato un attacco (se possibile) che la minaccia può eseguire in base alle vulnerabilità scoperte sino a quell'intervallo,

• si controllano le condizioni di terminazione (raggiungimento dell'obiettivo o dell'intervallo massimo di simulazione) e nel caso la simulazione viene conclusa.

Gli eventi di scoperta degli attacchi sono restituiti da una delle strategie di scelta predefinite. Tali strategie implementano un interfaccia, in modo che sia possibile crearne in futuro nuovi tipi in base alle esigenze.

Funzionamento delle visite

Attualmente sono presenti 4 strategie di scelta predefinite::

1. MaxIncremento: la minaccia cerca di massimizzare il numero di diritti acquisiti.

2. MinDifferenza: la minaccia cerca di minimizzare la differenza di diritti con il suo obiettivo. 3. MaxProbabilità: la minaccia sceglie gli attacchi più probabili.

4. Simple: la minaccia sceglie un attacco tra tutti quelli possibili.

Ad ogni istante le strategie:

• generano l'attack graph derivato dagli attacchi possibili • scelgono un nodo in base alla strategia di scelta

• restituiscono l'attacco che porta dal nodo attuale a quello scelto

Nella versione precedente di Haruspex l'attack graph veniva costruito staticamente, cioè prima di iniziare le simulazioni, e comprendeva tutte le possibili combinazioni di attacchi.

La versione attuale prevede una soluzione dinamica in cui si espande il grafo in base ai nodi raggiunti. Questa soluzione:

• è più veloce : la generazione dell'attack graph dinamica prevede l'impiego di qualche millisecondo per ogni istante di simulazione, mentre la statica si aggira sull'ordine di qualche decina di minuti.

• riduce l'occupazione di memoria: un attack graph generato in modo dinamico ha pochi nodi e archi, tipicamente al più un centinaio, mentre la versione statica si aggira intorno al milione. Questo comporta una drastica riduzione dell'occupazione di memoria, si passa dal gigabyte al megabyte.

• è più adatta al tipo di problema: la versione statica è sicuramente preferibile solo in quei casi in cui tutte le vulnerabilità sono note a priori.

3.4 Attack graph

L'Attack graph è lo strumento utilizzato per scegliere quali attacchi verranno eseguiti dalla minaccia. In questo grafo nodi e archi tipicamente rappresentano le azioni che la minaccia esegue e i relativi cambiamenti di stato che esse provocano nel sistema target.

Le azioni sono attacchi elementari che sfruttano le vulnerabilità del software e dei protocolli. L'obiettivo di questi attacchi è raggiungere l'obiettivo della minaccia

considerata. Un attack graph di tipo full mostra tutte le possibili sequenze di azioni di una minaccia che le permettono di raggiungere il suo obiettivo.

Alcuni ricercatori utilizzano i nodi per rappresentare gli stati della rete e gli archi per gli attacchi, altri in cui sia le azioni che gli stati della rete possono essere sia archi che nodi.

(36)

3.4.1 Implementazione degli attack graph

La versione di attack graph implementata prevede un grafo in cui i nodi rappresentano lo stato dell'attacco complesso, in particolare i diritti acquisiti tramite gli attacchi effettuati. Gli archi rappresentano gli attacchi ed ogni grafo considera una singola minaccia con più obiettivi.

Dato un insieme di attacchi possibili e un nodo root contenente i diritti iniziali della minaccia, si creano tutti i possibili nodi: per ogni nodo da visitare si valutano tutti gli

attacchi.Se l'attacco può essere eseguito dalla minaccia nello stato corrispondente al nodo allora si considera il nodo destinazione a cui è associato l'insieme di diritti dato dall'unione dei diritti del nodo origine e dalla postcondizione dell'attacco considerato:

◦ se tale nodo esiste già in memoria viene aggiunto l'arco tra il nodo origine e il nodo destinazione trovato

◦ altrimenti si crea il nuovo nodo e poi lo si connette con l'arco al nodo origine I nodi che permettono alla minaccia di raggiungere l'obiettivo vengono contraddistinti come finali.

La procedura precedente viene ripetuta per un numero di volte pari al lookahead della minaccia prima di scegliere l'attacco.

Descrizione algoritmo ad alto livello:

Questo algoritmo produce un grafo che è una versione di full attack graph che considera tutte le possibili combinazioni di attacchi che la minaccia può eseguire. Nel caso peggiore, la complessità dell'algoritmo è molto elevata: O(N!).

Condizioni di inserimento nodi*:

1. l'insieme dei diritti del percorso deve contenere le precondizioni dell'attacco 2. l'attacco deve aggiungere diritti all'insieme dei diritti del percorso

3. il livello di rischio della minaccia deve essere maggiore o uguale a quello

dell'attacco

4. il livello di risorse della minaccia deve essere maggiore o uguale di quello richiesto

dall'attacco

5. il livello di informazioni sugli attacchi della minaccia deve essere maggiore o uguale

di quello richiesto dall'attacco

for all nodi in setNodi{

for all attacco in setAttacchi{

if(hadDiritti(attacco.precondizioni)) and if(addDiritti(attacco.postcondizioni)) and if(checkCondizioni(attacco, nodo.diritti)) insertAttacco();

(37)

Tale complessità è accettabile per i seguenti motivi:

1. le condizioni di inserimento dei nodi* sono molto restrittive e consentono di tagliare

ampie parti di combinazioni inutili.

2. Il basso numero di nodi possibili dovuto alla generazione dinamica di attack graph 3. il basso numero di attacchi possibili in quanto filtrati preventivamente: tutti gli

attacchi che non servono né a raggiungere gli obiettivi né a poter eseguire altri attacchi non sono considerati.

4. Il numero di nodi è comunque limitato dal lookahead della minaccia. I cammini non

possono essere più lunghi del lookahead.

3.4.2 Esempio di generazione di un attack graph

Illustriamo un esempio di produzione di un attack graph. Le vulnerabilità del sistema consentono i seguenti attacchi:

Descrizione attacchi

Precondizioni Postcondizioni Livello rischio

Livello risorse Livello informazioni Attacco 1 Diritto 1 Diritto 2 Basso Basso Basso

Attacco 2 Diritto 2 Diritto 3 Basso Basso Basso

Attacco 3 Diritto 1 Diritto 3 Basso Basso Basso

Attacco 4 Diritto 1 Diritto 2 Medio Medio Medio

La minaccia ha una pericolosità media:

Descrizione minacce

Livello rischio Livello risorse Livello informazioni

Minaccia 1 Medio Medio Medio

La generazione dell'attack graph relativo prevede tutte le possibili condizioni di inserimento degli attacchi descritte nel paragrafo 3.4.1:

• creazione nuovo nodo (passo 1, passo 3, passo 5) • inserimento in nodo esistente (passo 6)

(38)

Generazione attack graph per la minaccia 1

passo Minaccia 1

1 Aggiungo Attacco 1

2 Non inserisco Attacco 2 (mancano precondizioni)

3 Aggiungo Attacco 3

4 Non inserisco attacco 4 (livello minaccia non adeguato)

5 Aggiungo attacco 2

6 Aggiungo Attacco 3 n Passi successivi

Attack graph parziale del sistema di esempio

3.5 Descrizione dell'implementazione dello strumento

Il programma è composto da 6 package: interfaccia, model, simulazione, grafo, engine, item. Il ruolo dei vari package è il seguente:

• Item modella tutti gli oggetti che vengono letti o inseriti nel database.

• Simulazione contiene le classi dei thread e dei gruppi di thread che eseguono le simulazioni. • Model ha metodi generali che possono essere usati dagli altri package (es. gestione Vettori,

stringhe)

• Grafo permette la creazione e la visita degli attack graph utili per le simulazioni. • Engine viene utilizzato per produrre le simulazioni

• Interfaccia gestisce l'interfaccia grafica con l'utente.

Nodo iniziale Diritto 1 Diritto 1 Diritto 3 Attacco 1 Attacco 3 Diritto 1 Diritto 2 Diritto 1 Diritto 2 Diritto 3 Attacco 2 Attacco 3 Passo 1 Passo 3 Passo 5

(39)

In seguito verranno descritti i vari package focalizzando l'attenzione sulle classi che li compongono.

3.5.1 Interfaccia

Il package Interfaccia

è composto dalle classi che gestiscono l'interfaccia grafica dell'utente: • UtenteGui: interfaccia principale. Permette l'inserimento e la modifica degli attacchi, delle

minacce e dei componenti del sistema (sistema, componenti, vulnerabilità) e la produzione di simulazioni degli attacchi,

• TimeLine: consente una elementare visualizzazione dei tempi di una simulazione di attacco da parte della minaccia: gli eventi (scoperta vulnerabilità, esecuzione attacco,

raggiungimento obiettivo) vengono ordinati in ordine cronologico. I singoli eventi possono essere visualizzati tramite l'interfaccia EventGui.

• CheckBoxList: insieme a CheckBoxNodeEditor,

CheckBoxNodeRenderer e checkBoxNode permette la

creazione di una lista di checkBox selezionabili.

• NewAttaccoGui: finestra per inserire un nuovo attacco nel database.

• NewItemGui: finestra per inserire un nuovo componente o una vulnerabilità nel database.

• DynamicTree: struttura ad albero raffigurante il sistema analizzato

Illustrazione 15: esempio di CheckBoxNode

Illustrazione 14: Diagramma UML dei package del software

(40)
(41)

3.5.2 Model

Model

mantiene al suo interno le classi di utility utilizzate negli altri package e permette la comunicazione con il database:

Classi:

• StringUtil: ha metodi utility per la gestione dei vettori, degli array, delle stringhe

• Constants: contiene tutti i valori costanti, come i nomi delle tabelle e dei campi delle tabelle del database.

• DBProcedure: gestisce l'inserimento e la modifica degli item nel database.

• DBConnector: implementa le operazioni di query, insert e modify del database specificate nell'interfaccia DBConnectorInterface.

• Random: fornisce il software di numeri casuali. Usa il metodo Math.random() o la classe che implementa il generatore di numeri casuali Mersenne Twister.

(42)

3.5.3 Item

Item

comprende le classi che mantengono i metodi bean per le tabelle presenti nel database:

Classi:

• ItemMinaccia: descrive la minaccia. • ItemAttacco: descrive l'attacco elementare.

• ItemGroupSimulazioni: descrive un gruppo di simulazioni. • ItemSimulazione: descrive una simulazione.

• ItemSistema: descrive un sistema. Un sistema è un insieme di componenti. • ItemComponente: descrive un componente.

• ItemVulnerabilità: descriva una vulnerabilità.

(43)

3.5.4 Engine

Il package

Simulatore

permette la produzione di simulazioni di attacchi composti da parte di una minaccia.

• EngineVuln: motore della simulazione per la creazione degli eventi di scoperta della vulnerabilità (EventVulnerabilità).

• Engine: dato l'engineVuln calcola il tempo di creazione degli eventi di esecuzione degli attacchi (EventAttacco) e di conseguenza il raggiungimento degli obiettivi

(EventObiettivo).

• Event: superclasse dei tipi di evento (EventObiettivo, EventVulnerabilità, EventAttacco) • EngineAttackInterface: interfaccia per il motore di creazione degli eventi di attacco.

(44)

Le seguenti classi implementano l'interfaccia EngineAttackInterface e sono state sviluppate sia per la versione deterministica che per quella deterministica.

• EngineAttackSimpleS : la minaccia sceglie uno tra gli attacchi possibili.

• EngineAttackRandomS : la minaccia sceglie l'attacco in modo del tutto casuale.

• EngineAttackMinDifferenza : la minaccia cerca di minimizzare la differenza di diritti con il suo obiettivo.

• EngineAttackMaxProbabilità : la minaccia sceglie gli attacchi più probabili.

• EngineAttackMaxIncremento : la minaccia cerca di massimizzare il numero di diritti. • EngineAttackStandard : mantiene metodi utili a tutte le classi del package.

3.5.5 Simulazione

Simulazione mantiene le classi utili alla creazione dei thread che implementano le simulazione.

• GroupSimulazioniInterface: permette la produzione di simulazioni multiple che terminano in base ad un determinato criterio (numero di simulazioni, stabilità, confidenza).

• GroupSimulazioneNAttacchi: gruppo di simulazione che ha come criterio di interruzione il numero di attacchi per simulazione.

• GroupSimulazioneGiorni: gruppo di simulazione che ha come criterio di interruzione il periodo iniziale di partenza delle simulazioni.

• GroupSimulazioneTime: gruppo di simulazione che ha come criterio di interruzione il numero di intervalli delle simulazioni.

• GroupSimulazioneObiettivo: gruppo di simulazione che ha come criterio di interruzione il numero di obiettivi raggiunti.

• ThreadSimulazione: esegue una simulazione

• GroupEventVector: mantiene gli eventi successi in un determinato intervallo.

(45)

3.5.6 Grafo

Grafo

fornisce classi per la produzione dell'attack graph e per la sua visita : • Arco: attacco elementare.

• Nodo: mantiene lo stato dei diritti raggiunti dalla minaccia grazie all'attacco. Un nodo si definisce finale se non è possibile aggiungere nessun altro attacco.

• Percorso: insieme di nodi e archi a partire da un nodo radice sino ad un nodo finale. • GrafoAttacco: implementazione di attackGraph

• LivelloGrafo: restituisce i nodi distanti un certo numero di passaggi dal nodo radice root • NodoVisita: mantiene le informazioni in ogni nodo sulla visita dell'attack graph

Figura

Illustrazione 1: 2 schemi sulla descrizione dei rischi
Illustrazione 2: Stato della vulnerabilità:
Illustrazione 3: esempio di matrice di rischio usata nella metodologia Mehari
Illustrazione 4: schema del processo di valutazione secondo la metodologia CVSS
+7

Riferimenti

Documenti correlati

Nel paesaggio del lago la Colonia Ettore Motta è un intervento di architettura moderna ascrivibile tra quelli minori in grado di palesare le potenzialità espressive del nuovo

Nelle colture in pieno campo diversi campioni sono risultati positivi: su cucurbitacee sono stati rinvenuti i virus CMV, WMV-2 e ZYMV, mentre su po- modoro, in diverse aziende

Allo stato attuale le infestazioni di questo fi- tofago non sembrano in grado di provocare la morte delle piante ma, la completa defogliazio- ne degli olmi per diversi anni di

Nuovi virus emergono, come il recente e temutissimo coronavirus, per il quale l’Organizzazione mon- diale della sanità ha dichiarato l’emergenza sanitaria globale.. I vecchi

Riducendo i parlamentari a una voce di costo, anziché favorire l’identificazione tra eletti ed elettori fine ultimo della rappresentanza ne acuisce la contrapposizione, in tal

2011, signed into Law by the President of the Federal Republic of Nigeria on the 10th day of January, 2011; renumbered but unaltered from sections 25 to 27 of the constitution

Dal momento che la tipologia della minaccia, sebbene non più “nuova”, può comunque essere considerata recente, le possibilità di contrasto dei droni duali devono sperimentare