Indice
Abstract 4
1 Introduzione 5
1.1 Organizzazione della tesi . . . . 5
2 Panoramica sugli Attack Graph 7 2.1 Cosa sono e a cosa servono . . . . 7
2.2 Quali informazioni occorrono per generarli . . . . 8
2.3 Tipologie di Attack Graph . . . . 9
2.3.1 Rete di riferimento . . . . 9
2.3.2 Full Attack Graph . . . 10
2.3.3 Host-Compromised Attack Graph . . . 12
2.3.4 Predictive Attack Graph . . . 13
3 Haruspex v2: Full Attack Graph 15 3.1 Il Simulatore . . . 15
3.2 Attack Graph Dinamico . . . 16
3.3 Rappresentazione per Livelli . . . 17
3.3.1 Struttura Livello . . . 17
3.3.2 Struttura Nodo . . . 18
3.3.3 Struttura Arco . . . 18
3.3.4 Esempio di una Implementazione . . . 19
3.4 Costruzione del Grafo . . . 19
3.5 Inserimento dei Nodi . . . 20
3.5.1 Criteri di Ordinamento . . . 22
3.6 Strategie di Selezione . . . 22
3.7 Java: dettagli implementativi . . . 23
4 Hash Full Attack Graph 25 4.1 Strutture Dati . . . 25
4.1.1 Rappresentazione con Liste di Adiacenza . . . 25
4.1.2 Tavole Hash . . . 26
4.1.3 Insiemi . . . 27
4.2 Definizione di Univocità dei Nodi . . . 27
4.3 Implementazione del Grafo . . . 28
4.3.1 Chiave Nodo . . . 28
4.3.2 Uso della Tavola Hash come Cache . . . 29
i
4.3.3 Struttura Nodo . . . 29
4.3.4 Struttura Arco . . . 30
4.3.5 Esempio di una Implementazione . . . 30
4.4 Costruzione del Grafo . . . 31
4.5 Inserimento dei nodi . . . 32
4.5.1 Criteri di Ordinamento . . . 33
4.6 Strategie di Selezione . . . 34
5 Java: Dettagli implementativi 35 5.1 Strutture Dati . . . 35
5.1.1 Liste di Adiacenza . . . 35
5.1.2 Stato dei Nodi . . . 35
5.1.3 Chiave dei Nodi . . . 37
5.1.4 Cache . . . 37
5.1.5 Coda . . . 39
5.2 Criteri di Ordinamento degli Attacchi . . . 39
5.3 Diagramma delle Classi . . . 40
5.3.1 Produzione del grafo . . . 40
5.3.2 Visita del grafo . . . 42
6 Test e Simulazioni 44 6.1 Infrastruttura di esempio: laboratorio di Cybersecurity di Enel . . . . 44
6.1.1 Minacce e obiettivi . . . 46
6.2 Haruspex v2: Simulazioni . . . 46
6.3 Test . . . 47
6.3.1 Misure Grafo . . . 48
6.3.2 Attack Graph vs Hash Attack Graph . . . 48
6.3.3 Attacchi Ridondanti . . . 50
6.4 Simulazioni . . . 52
6.4.1 Minaccia 1 . . . 53
6.4.2 Minaccia 20 . . . 54
6.4.3 Minaccia 31 . . . 54
6.5 Confronto delle prestazioni . . . 55
6.6 Considerazioni finali sulla soluzione proposta . . . 55
Ringraziamenti 57
Bibliografia 58
ii