• Non ci sono risultati.

Mining di pattern sequenziali in ambito di sicurezza dei sistemi ICT

N/A
N/A
Protected

Academic year: 2021

Condividi "Mining di pattern sequenziali in ambito di sicurezza dei sistemi ICT"

Copied!
168
0
0

Testo completo

(1)

UNIVERSITÀ DI PISA

Dipartimento di Informatica

Laurea Magistrale in Business Informatics

TESI DI LAUREA

MINING DI PATTERN SEQUENZIALI IN AMBITO DI

SICUREZZA DEI SISTEMI ICT

Relatori:

Prof. Salvatore Ruggieri

Ph. D. Federico Tonelli

Candidato:

Michele D’Andreagiovanni

(2)

1 INTRODUZIONE 4

2 LA VALUTAZIONE DEL RISCHIO NEI SISTEMI ICT 7

2.1 Sicurezza dei sistemi informatici . . . 7

2.2 Valutazione del rischio . . . 13

2.3 Identificazione e valutazione delle vulnerabilità . . . 14

2.4 Haruspex . . . 16

2.5 Modelli di simulazione in Haruspex . . . 17

2.5.1 Il modello del sistema . . . 17

2.5.2 Il modello delle minacce . . . 18

2.5.3 Il modello degli attacchi . . . 20

2.6 Tracciamento delle simulazioni . . . 21

3 IL DATASET DI SIMULAZIONI DI ATTACCHI 23 3.1 Minacce simulate . . . 23

3.2 Topologia del sistema . . . 24

3.3 Struttura del database sorgente . . . 24

3.3.1 La tabella Minacce . . . 25 3.3.2 La tabella Attacchi . . . 27 3.3.3 La tabella Gruppi . . . 28 3.3.4 La tabella Mapping . . . 29 3.3.5 La tabella Host . . . 30 3.3.6 La tabella Run . . . 30 3.4 Fase di ETL . . . 33 3.4.1 La tabella Tipi . . . 34 3.4.2 La tabella Maptipi . . . 35 3.4.3 La tabella Data . . . 35

(3)

4 IL PROCESSO DI KDD 40

4.1 Introduzione . . . 40

4.2 Data Mining . . . 42

4.3 Mining di Sequential Pattern . . . 45

4.4 Formalizzazione di Sequential Pattern Mining . . . 46

4.5 Generalizzazione di Sequential Pattern Mining . . . 49

4.6 Algoritmi per Sequential Pattern Mining . . . 51

4.7 Estensioni di Sequential Pattern Mining . . . 58

4.8 Mining distribuito . . . 60

4.9 Una libreria open source per estrarre pattern sequenziali: SPMF . . 61

5 SEQUENTIAL PATTERN MINING DELLE SEQUENZE DI AT-TACCO 63 5.1 Database delle sequenze di attacco . . . 63

5.2 Pattern sequenziali di attacco . . . 64

5.3 Pre-processing dei dati . . . 65

5.3.1 Considerazioni preliminari . . . 65

5.3.2 Filtraggio degli attacchi “fake” . . . 65

5.3.3 Mappatura degli attacchi . . . 66

5.3.4 Codifica degli item . . . 67

5.3.5 Filtraggio degli item . . . 69

5.3.6 Architettura del sistema per la fase di pre-processing . . . . 72

6 RANKING DI PATTERN SEQUENZIALI E INSIEMI DI CO-PERTURA 74 6.1 Strategie di ranking . . . 74

6.2 Insiemi di copertura . . . 77

6.3 Maximum Coverage Problem . . . 78

6.3.1 Algoritmo per il calcolo dell’insieme di copertura . . . 80

6.4 Supporto incrociato e copertura incrociata . . . 82

6.4.1 Algoritmo per il calcolo del supporto incrociato . . . 84

6.4.2 Algoritmo per il calcolo dell’insieme di copertura incrociato . 85 7 ANALISI DEL DATASET DI SIMULAZIONI 91 7.1 Introduzione . . . 91 7.2 Scenario S1 . . . 93 7.2.1 Mining . . . 94 7.2.2 Copertura . . . 95 7.2.3 Copertura incrociata . . . 101 7.3 Scenario S2 . . . 106 7.3.1 Mining . . . 106

(4)

7.4 Considerazioni finali sui risultati di analisi . . . 109

8 CONCLUSIONI 114 8.1 Considerazioni finali . . . 114

8.2 Problematiche e criticità di analisi . . . 117

A COPERTURA E TIPI DI PATTERN SEQUENZIALI 119 B ARCHITETTURA DEL SISTEMA SOFTWARE 122 B.1 Componenti software . . . 122

B.2 Ambiente di sperimentazione . . . 122

B.3 Ambiente di sviluppo . . . 122

B.4 Multi-threading e multi-processing in Python . . . 123

B.5 File di output . . . 123

C UTILIZZO DEL SISTEMA DI ANALISI 125 C.1 Composizione del sistema . . . 125

C.2 Esecuzione degli script Python . . . 126

D CODICE SORGENTE 129 D.1 Python scripts . . . 129

D.1.1 Script start_analysis.py . . . 129

D.1.2 Script item_distribution.py . . . 131

D.1.3 Script compare.py . . . 133

D.1.4 Script ausiliario mp_measures.py . . . 134

D.1.5 Script ausiliario mp_crossed.py . . . 136

D.1.6 Libreria my_kdd.py . . . 139

D.2 SQL scripts . . . 156

D.2.1 Script ETL.sql . . . 156

Ringraziamenti 158

(5)

Elenco delle tabelle

2.1 Matrice del rischio. . . 11

3.1 Strategie adottate dalle minacce. . . 23

3.2 Struttura del database sorgente. . . 25

3.3 Istanza della tabella Minacce. . . 27

3.4 Istanza della tabella Attacchi. . . 29

3.5 Istanza della tabella Gruppi. . . 29

3.6 Istanza della tabella Mapping. . . 30

3.7 Istanza della tabella Host. . . 30

3.8 Istanza della tabella Run. . . 33

3.9 Tabelle aggiunte con la fase di ETL. . . 34

3.10 Istanza della tabella Tipi. . . 34

3.11 Istanza della tabella Maptipi. . . 35

3.12 Istanza della tabella Data. . . 36

3.13 Statistiche generali. . . 37

3.14 Indicatori statistici della lunghezza della sequenza. . . 37

4.1 Database di sequenze. . . 46

4.2 Patterns trovati nel DB specificando un supporto minmo uguale a 3. 49 4.3 Proiezione verticale del DB. . . 54

4.4 Rappresentazione BitMap delle idList. . . 55

4.5 Proiezione del database di sequenze per il pattern h(a)i. . . 57

4.6 Conteggio dei sequential pattern. . . 59

5.1 Estratto della distribuzione degli item rispetto al numero di attacchi. 72 5.2 Estratto della distribuzione degli item rispetto al numero di sequenze. 72 7.1 Statistiche sul numero di attacchi per sequenza. . . 92

7.2 Parametri degli scenari di analisi. . . 93

7.3 Scenario S1 - Sintesi dei risultati di mining. . . 94

7.4 Scenario S1 - Istanza del report con i pattern estratti. . . 95

(6)

7.8 Estratto delle occorrenze di idAttacco nei top 10 pattern di M0. . . 98

7.9 Scenario S1 - Supporti incrociati di M1 vs M0. . . 102

7.10 Scenario S1 - Primi 10 pattern dell’insiem di massima copertura incrociata di M1 vs M0. . . 103

7.11 Scenario S1 - Sintesi dell’analisi di copertura incrociata. . . 104

7.12 Scenario S1 - Identificatori dei pattern degli insiemi di massima copertura incrociata di M1 . . . 105

7.13 Scenario S2 - Sintesi dei risultati di mining. . . 106

7.14 Scenario S2 - Sintesi del calcolo dell’insieme di copertura. . . 107

(7)

Elenco delle figure

2.1 Relazioni nel modello del rischio. . . 11

2.2 Haruspex work-flow. . . 22

3.1 Topologia del sistema oggetto delle simulazioni d’attacco. . . 24

3.2 Distribuzione del numero di attacchi. . . 38

3.3 Numero totale di Attacchi e Successi per minaccia . . . 38

3.4 I primi 15 attacchi rispetto al numero di occorrenze . . . 39

3.5 Distribuzione degli attacchi sui nodi. . . 39

4.1 Modello KDD. . . 41

4.2 Modello CRISP-DM. . . 42

4.3 Esempio di tassonomia . . . 50

5.1 Architettura del sistema per la fase di pre-processing. . . 73

7.1 Boxplot delle lunghezze delle sequenze. . . 92

7.2 Distribuzione della lunghezza della sequenze. . . 111

7.3 CDF dei rank degli attacchi. . . 111

7.4 Copertura delle sequenze nello scenario S1. . . 112

7.5 Copertura delle sequenze nello scenario S2. . . 112

(8)

D.1 start_analysis.py . . . 129 D.2 item_distribution.py . . . 131 D.3 compare.py . . . 133 D.4 mp_measures.py . . . 134 D.5 mp_crossed.py . . . 136 D.6 my_kdd.py . . . 139 D.7 ETL.sql . . . 156

(9)

Riassunto

La valutazione del rischio, in ambito di sicurezza dei sistemi ICT, si basa sull’ana-lisi dei dati sul comportamento congiunto del sistema e degli agenti malintenzionati che lo attaccano. Il sistema Haruspex modella agenti intelligenti che perseguono i propri obiettivi attraverso sequenze di attacchi pianificati seguendo una strategia. Le sequenze sono generate attraverso il metodo Monte Carlo eseguendo molteplici simulazioni di attacco al sistema. In questo lavoro di tesi presentiamo un’analisi dei pattern sequenziali estratti, con tecniche di data mining, dal database di sequenze simulate. La nostra analisi si propone di soddisfare un duplice obiettivo: utilizzare i pattern sequenziali estratti per la definizione delle contromisure e migliorare il livello di comprensione, per l’analista, del grado di libertà di un attaccante nei confronti del sistema attaccato.

(10)

Claude Elwood Shannon

Any one who considers arithmetical methods of producing random digits is, of course, in a state of sin.

(11)

Capitolo 1

INTRODUZIONE

L’obiettivo del nostro lavoro di tesi consiste nello sviluppo di un sistema di analisi, basato su di un modello di data mining, che applicato ad un database di sequenze di attacchi ad un sistema informatico consenta agli analisti, esperti del dominio della sicurezza dei sistemi ICT, di estrarre informazioni interessanti ed utili al fine di contrastare in maniera efficace, efficiente ed economica le intrusioni di agenti malintenzionati.

La tematica della sicurezza dei sistemi informatici è oggi giorno sempre più pressante e di particolare rilievo per quanto riguarda i danni, economici e d’im-magine, che gli attacchi di agenti malintenzionati producono sulle infrastrutture informatiche di aziende pubbliche e private.

Gli approcci alla valutazione e alla prevenzione del rischio in ambito di sicu-rezza dei sistemi ICT si basano sull’analisi dei dati ottenuti dal monitoraggio del comportamento congiunto del sistema attaccato e degli agenti malintenzionati che lo attaccano. Questi dati sono tipicamente collezionati nel tempo dopo l’avvenuta progettazione e realizzazione di un dato sistema. Questo approccio presenta due principali problematiche. La prima afferisce alla valutazione e alla gestione del rischio che non può avvenire nella fase di design del sistema, ma solo a posterio-ri, con evidenti problematiche per la definizione delle contromisure. La seconda problematica riguarda la scarsità dei dati disponibili sugli attacchi.

Il sistema Haruspex mira a predire il comportamento di un sistema ICT, attaccato da agenti malintenzionati, prima che questo venga messo in produzione. Haruspex modella agenti intelligenti che perseguono obiettivi attraverso diverse strategie con le quali scelgono gli attacchi da effettuare. I dati riguardanti le sequenze di attacco sono generati attraverso il metodo Monte Carlo che esegue molteplici simulazioni di attacco al sistema. Le simulazioni si basano su modelli formali del sistema attaccato e degli agenti attaccanti e producono un ampio campione delle sequenze di attacco. L’analisi di questi dati può rivelare i cammini

(12)

di attacchi attraverso la rete del sistema ICT e suggerire eventuali contromisure per bloccare gli attacchi.

Con il presente lavoro di tesi ci proponiamo di realizzare un modello di estrazione della conoscenza, dai dati sugli attacchi, che vada oltre la semplice analisi statistica del campione. La definizione del nostro modello si basa sul processo di KDD, Knowledge Discovery in Databases, e più specificatamente su di un modello di data mining, i pattern sequenziali, che ci consente di estrarre informazioni di valore dai dati che si presentano in forma sequenziale.

Il nostro modello si prefigge di soddisfare due principali obiettivi:

1. utilizzare i pattern sequenziali estratti dal database per definire un catalogo di contromisure da applicare al sistema per bloccare le sequenze d’attacco; 2. migliorare il livello di comprensione, per l’analista, del grado di libertà di un

attaccante nei confronti del sistema attaccato.

Il primo obiettivo può essere soddisfatto selezionando dall’insieme dei pattern sequenziali estratti un sottoinsieme degli stessi che copra il più possibile le sequenze di attacco di un attaccante. Questo sottoinsieme, formato da un numero ridotto di pattern rispetto a quelli estratti, rappresenta una descrizione globale della strategia di un determinato agente attaccante. Facendo leva su questa caratterizzazione un analista può definire un catalogo di contromisure statiche da applicare già nella fase di design del sistema.

Il secondo obiettivo può essere soddisfatto con la stessa caratterizzazione, modulata su diversi livelli di astrazione, che ci consente di aumentare il livello di comprensione del grado di libertà di un attaccante nei confronti di un sistema. Il grado di libertà di un attaccante quantifica le scelte che lo stesso può compiere nell’attaccare un sistema ed è una proprietà emergente dalla descrizione integrata della strategia dell’attaccante e del sistema.

Per la redazione del presente elaborato sono stati consultati diversi articoli scientifici di cui si darà opportuna menzione nei capitoli che seguiranno. La tesi è composta, oltre che dalla presente introduzione, dai seguenti capitoli:

Cap. 2 - La valutazione del rischio nei sistemi ICT : in questo capitolo viene presentata la tematica della sicurezza dei sistemi informatici e la relativa valutazione del rischio. Inoltre, viene qui introdotto Haruspex, strumento software per la valutazione del rischio di un sistema informatico, sviluppato internamente dai ricercatori dell’Università di Pisa.

Cap. 3 - Il dataset di simulazioni di attacchi: in questo capitolo viene presentato e descritto il database che contiene le sequenze di attacco simulate, prodotte da Haruspex, relative alla valutazione del rischio di un sistema

(13)

CAPITOLO 1. INTRODUZIONE informatico. Questo database contiene i dati di input per il nostro caso di studio.

Cap. 4 - Il processo di KDD: questo capitolo introduce e descrive sinte-ticamente il processo di Knowledge Discovery in Databases. Vengono qui introdotte le tecniche di data mining. In particolare, sono qui descritti gli algoritmi per l’estrazione dei pattern sequenziali. Inoltre viene inoltre qui introdotta la libreria SPMF utilizzata per l’estrazione dei pattern sequenziali dal database.

Cap. 5 - Sequential pattern mining delle sequenze di attacco: viene qui formalizzato il problema di mining di pattern sequenziali dalle sequenze di attacco simulte prodotte da Haruspex. Vengono qui definiti il modello logico dei dati di input e di output. Inoltre, viene qui descritta la fase di pre-processing, necessaria per l’estrazione delle sequenze dal database e per la loro codifica per gli algoritmi di estrazione dei pattern sequenziali.

Cap. 6 - Ranking dei pattern sequenziali e insiemi di copertura: in questo capitolo vengono presentate le strategie adottate per il ranking dei pattern sequenziali estratti. Vengono qui modellate alcune metriche per la valutazione del grado di interesse di un pattern sequenziale. Inoltre, viene qui introdotto e formalizzato il problema dell’insieme di massima copertura.

Cap. 7 - Analisi del dataset di simulazioni: in questo capitolo vengono presentati e discussi i risultati ottenuti dall’analisi dei pattern sequenziali estratti.

Cap. 8 - Conclusioni: questo capitolo contiene le considerazioni finali sui risultati sperimentali ottenuti e sulle problematiche di analisi.

App. A - Copertura e tipi di pattern sequenziali: contiene la dimostrazione formale che stà alla base della motivazione della scelta dei pattern sequenziali massimali per il problema della copertura.

App. B - Architettura del sistema software: contiene la descrizione dell’archi-tettura software del sistema di analisi.

App. C - Utilizzo del sistema di analisi: contiene le istruzioni per l’utilizzo del sistema di analisi

App. D - Codice sorgente: contiene il codice sorgente, in linguaggio Python, del nostro sistema di analisi ed uno script SQL per la fase di ETL.

(14)

LA VALUTAZIONE DEL RISCHIO

NEI SISTEMI ICT

In questo capitolo viene introdotta la tematica della sicurezza dei sistemi ICT e le relative problematiche inerenti alla valutazione del rischio di un sistema. Vieni qui inoltre presentato il sistema Haruspex, software che opera in ambito di valutazione del rischio, sviluppato internamente dai ricercatori dell’Università di Pisa.

2.1

Sicurezza dei sistemi informatici

La sicurezza di una rete informatica non è un tema puramente tecnologico perché interseca altre dimensioni quali ad esempio quella dell’organizzazione aziendale, quella economica e quella giuridico legale tanto per citarne alcune tra le più importanti.

Le aziende moderne (non solo quelle private ma anche quelle a gestione pubblica) sono oggi giorno fortemente dipendenti non solo dal proprio sistema informativo ma anche da quello dei propri partner commerciali (clienti o fornitori) e dal sistema informatico/telematico che li collega.

In un’ottica di certificazione del rispetto di un qualsivoglia standard non è possibile prescindere dalla focalizzazione di questa dipendenza.

Chiaramente, in un contesto così complesso, il concetto di rischio, associato ad un evento probabilistico, assume una rilevanza centrale che ha ormai sostituito quello della sicurezza incondizionata.

Quando si parla di sicurezza informatica si rende necessario introdurre quelli che sono alcuni concetti fondamentali che la caratterizzano, ovvero:

• confidenzialità: le informazioni possono essere lette solo dagli aventi diritto; • integrità: le informazioni possono essere modificate solo dagli aventi diritto;

(15)

CAPITOLO 2. LA VALUTAZIONE DEL RISCHIO NEI SISTEMI ICT • disponibilità: le informazioni possono essere lette o modificate quando e dove

necessario;

• tracciabilità: individuazione di chi ha effettuato una determinata operazione. L’approccio più moderno al problema della sicurezza è l’analisi del rischio che procede attraverso le seguenti fasi:

1. analisi delle risorse da proteggere; 2. analisi delle vulnerabilità;

3. analisi degli attacchi; 4. analisi degli attaccanti; 5. analisi delle impatti;

6. gestione del rischio, ovvero individuazione del rischio accettabile ed introdu-zione delle contromisure.

Ottenere una sicurezza assoluta e totale è purtroppo spesso impossibile. Si cerca quindi di farsi largo attraverso un insieme di metodi e tecniche, da selezionare ed adattare di volta in volta in funzione del caso specifico, guidati da un approccio economico attraverso il quale identifichiamo cosa possiamo difendere e cosa conviene difendere.

L’approccio al tema della sicurezza risulta quindi importante. Se da un lato la sicurezza incondizionata si basa sul principio che qualsiasi sia il difetto nel sistema esista una minaccia in grado di sfruttarla, dall’altro lato la sicurezza condizionata (analisi del rischio) prende in considerazione solo difetti e minacce effettive al fine

di eliminare solo quei difetti che possono essere sfruttati.

Un attacco ad un sistema informatico consiste in una sequenza di azioni eseguite al fine di ottenerne il controllo e si basa sostanzialmente sulle vulnerabilità del sistema informatico stesso. La sequenza di azioni può essere codificata ed auto-matizzata in un programma o script. Una volta ottenuto il controllo del sistema è possibile raccogliere informazioni, modificare informazioni o impedire ad altri l’accesso alle informazioni.

Una vulnerabilità è un difetto di un componente hardware o software di un ele-mento del sistema informatico che permette comportamenti che violano le proprietà di sicurezza. Mentre tutte le vulnerabilità sono sicuramente difetti altrettanto non si può dire del caso inverso ovvero non tutti i difetti sono vulnerabilità.

Molto sommariamente possiamo identificare le fasi di un attacco: 1. raccolta di informazioni sul sistema;

(16)

2. individuazione delle vulnerabilità;

3. ricerca o costruzione di un exploit che sfrutti la vulnerabilità;

4. esecuzione dell’attacco tramite programma/script che implementa l’exploit; 5. installazione di strumenti per il controllo del sistema da remoto;

6. cancellazione delle tracce dell’attacco; 7. accesso e/o modifica alle informazioni.

Una particolare categoria di attacchi molto insidiosa è quella rappresentata dagli attacchi automatizzabili in cui le azioni umane sono ridotte al minimo, poiché è necessario eseguire solo un programma. Questa tipologia di attacchi richiede scarse competenze tecniche dell’attaccante. Un attacco non automatizzabile è strutturalmente meno pericoloso di uno automatizzabile.

Ogni vulnerabilità può essere descritta da uno dei seguenti possibili stati: 1. non si conosce l’esistenza della vulnerabilità (0 day);

2. si conosce l’esistenza della vulnerabilità;

3. si conosce l’esistenza della vulnerabilità e di un attacco che la sfrutta (exploit); 4. si conosce l’esistenza della vulnerabilità e di una contromisura (patch) che la

neutralizza;

5. si conosce l’esistenza della vulnerabilità, di un exploit e di una patch; Purtroppo molto spesso i sistemi vengono attaccati con successo anche se lo stato della vulnerabilità è l’ultimo a causa di tre principali fattori:

• pigrizia e lentezza degli utenti nell’applicare la patch anche se ne è nota l’esistenza;

• asimmetria informativa tra cliente e fornitore (l’utente deve aggiornare da solo il sistema);

• impossibilità di applicare la patch a causa di vincoli come, ad esempio, le certificazioni di impianti.

(17)

CAPITOLO 2. LA VALUTAZIONE DEL RISCHIO NEI SISTEMI ICT Gli attacchi Zero Day exploit sono caratterizzati dal fatto di sfruttare vulnerabi-lità la cui esistenza non è ancora stata resa nota pubblicamente. Questo è possibile in quanto non sempre chi scopre l’esistenza di una vulnerabilità ha interesse nel divulgarla ma trova invece più redditizio mantenere il silenzio.

Il numero di vulnerabilità conosciute ed individuate in un componente software dipende principalmente da quattro fattori:

• disponibilità dei sorgenti;

• diffusione dello strumento/componente; • applicazioni che ne fanno uso;

• numero di persone che le cercano.

Non è detto che un componente, poco diffuso e poco utilizzato, per il quale non si conoscono vulnerabilità ne sia privo.

La soluzione che ottiene la sicurezza eliminando tutte le vulnerabilità (fondata sulla cosiddetta strategia penetrate and patch) ha un costo non ragionevole e non permette di valutare la sicurezza ottenuta. Uno dei problemi principali è quello di considerare quali sono le vulnerabilità da neutralizzare (applicazione di una patch) e quali sono quelle su cui si può accettare il rischio che vengano sfruttate. La valutazione della sicurezza di un sistema richiede quindi un’analisi del rischio. Definiamo Patk come la probabilità di successo di un attacco e Iatk la perdita media

causata dall’attacco eseguito con successo (impatto). Il rischio Ratk è il prodotto dei

dui fattori: Ratk = Patk× Iatk. La probabilità di successo di un attacco dipende da

diversi fattori quali la minaccia che lo esegue, le risorse di cui la minaccia dispone e la complessità dell’attacco (automatizzabile o meno).

Per la stima della probabilità si ricorre in genere alle informazioni storiche sul sistema, al numero di casi complessivo e a quello dei casi di interesse. Il rapporto tra il numero di attacchi verso un certo componente e il numero di attacchi complessivo ci fornisce, ad esempio, una stima della probabilità che un attacco colpisca il componente osservato.

Purtroppo, è estremamente difficile quantificare la probabilità di successo di un attacco a causa dell’assenza di informazioni storiche e alla rapida evoluzione dei sistemi. La stima delle perdite è anch’essa imprecisa perché coinvolge risorse difficilmente quantificabili in termini monetari come, ad esempio, la perdita di immagine o la perdita di clienti. Quindi, si ricorre spesso alla stima della probabilità di un attacco con successo e alla conseguente perdita in maniera qualitativa attraverso la compilazione della matrice di rischio come quella mostrata in tabella 2.1.

(18)

Probabilità Alta Media Bassa

Impatto

Alto Alto Alto Alto Medio Medio Medio Basso Basso Medio Basso Basso

Tabella 2.1: Matrice del rischio.

(19)

CAPITOLO 2. LA VALUTAZIONE DEL RISCHIO NEI SISTEMI ICT In figura 2.1 è riportata una rappresentazione sintetica delle relazioni tra vulnerabilità, attacchi, minacce, impatti, probabilità e rischio.

Le informazioni storiche sul passato sono di fondamentale importanza per la stima della probabilità. Attraverso queste informazioni è possibile prevedere l’evoluzione di scenari futuri in base alla varianza rispetto alla distribuzione storica. Purtroppo il modello può essere facilmente invalidato da una modifica tecnologica dando luogo a quello che è chiamato black swan, ovvero un evento raro ma di grande impatto.

L’analisi del rischio è il modo più moderno di considerare la sicurezza informatica. La sicurezza informatica rientra in un’analisi complessiva che tiene conto del sistema informativo e delle sue relazioni con il resto delle attività aziendali. Questo approccio è volto a superare l’atteggiamento puramente tecnologico per portare il tema in area di analisi più vasta.

L’analisi del rischio è volta a giustificare i costi della sicurezza ovvero i costi delle contromisure introdotte. Le contromisure da introdurre sono essenziali per gli attacchi che hanno una elevata probabilità di essere eseguiti oppure un elevato impatto , ovvero un rischio piu’ alto rispetto al costo dell’applicazione della contro-misura specifica. Un altro concetto legato a quanto detto fino ad ora è il ritorno dell’investimento (ROI). Possiamo formalmente definirlo come la differenza tra il rischio prima dell’adozione delle contromisure e il rischio dopo l’implementazione delle stesse. Le contromisure adottate possono aver eliminato le vulnerabilità e, di conseguenza, neutralizzato i possibili attacchi, oppure ridotto la probabilità di successo degli attacchi aumentando il tempo e le risorse necessarie per la loro esecuzione.

La differenza tra il ROI e il costo delle contromisure, sperabilmente non negativa, rappresenta il guadagno. Analogamente, il rapporto tra le due grandezze descrive il beneficio ottenuto per ogni unità di spesa.

Per la valutazione del rischio derivante da un attacco è altresì necessario individuare le risorse critiche che potrebbero causare perdite se scelte come obiettivo di un attacco. Procedendo oltre, si individuano i processi aziendali che utilizzano tali risorse e si valuta il danno per l’azienda nei casi in cui il processo aziendale venga bloccato (integrità e disponibilità), la risorsa colpita vada rigenerata completamente (integrità) o l’attaccante venga in possesso di informazioni contenute nella risorsa (confidenzialità). Per risorse si intendono informazioni depositate file, applicazioni,

capacità di calcolo e capacità di comunicazione.

La stima del valore di una risorsa danneggiata è molto difficile, pertanto si cerca di stimare quanto costerebbe ricreare la risorsa novo.

La politica di sicurezza è l’insieme delle regole che, se rispettate, riducono il rischio. Fondamentalmente si articola attraverso quattro principi: stabilire gli obiettivi di sicurezza, definire i comportamenti legali, definire i comportamenti

(20)

pericolosi e vietarli, definire concetti quali architettura di sistema, diritti e doveri degli utenti, diritti e doveri degli amministratori, uso legittimo delle risorse, sanzioni, enumerazioni dei componenti e delle applicazioni.

2.2

Valutazione del rischio

La valutazione del rischio nei sistemi ICT può essere effettuata modellando diversi scenari in cui il sistema è attaccato da uno o più agenti malintenzionati chiamati anche minacce. Il rischio globale è stimato prendendo in considerazione la probabilità che un determinato scenario si verifichi e il rischio di tale scenario. Questo approccio consente di produrre stime accurate e dettagliate ma è anche molto complesso dato che le minacce sono modellate sulla base di attaccanti intelligenti che pianificano catene di attacchi in base ad alcuni vincoli di risorse e di diritti.

In questo contesto, una sequenza di attacco, o più semplicemente sequenza, si compone di più attacchi elementari, che sono abilitati dalle singole vulnerabilità del sistema. Per poter implementare una sequenza di attacco una minaccia, eseguendo uno dopo l’altro diversi attacchi elementari, acquisisce dopo ogni attacco eseguito con successo i diritti necessari per effettuare l’attacco elementare successivo fino a che non raggiunge il proprio obiettivo.

Dato l’alto numero di fattori che insistono sulla riuscita di una sequenza, la complessità dei modelli formali, necessari per calcolare la probabilità di successo di una minaccia, è molto alta.

Uno dei metodi per risolvere queste problematiche si basa sull’applicazione del metodo Monte Carlo il quale, attraverso molteplici simulazioni in cui le minacce selezionano ed eseguono sequenze d’attacco, riesce a stimare con un elevato livello di confidenza ogni singola probabilità di successo di una specifica sequenza di attacco. Per ogni simulazione sono raccolti dati campionati per calcolare le statistiche di interesse.

Questo approccio si fonda su due fasi principali: • la descrizione dello scenario da valutare; • le simulazioni d’attacco delle minacce.

Queste fasi possono essere automatizzate attraverso uno strumento software che, identificate le vulnerabilità del sistema, le analizza per scoprire se gli attacchi che queste vulnerabilità abilitano possono essere concatenati in una sequenza d’attacco.

Quindi, partendo da un modello del sistema di cui si vuole calcolare il rischio, un modello delle minacce e un modello degli attacchi è possibile eseguire molteplici

(21)

CAPITOLO 2. LA VALUTAZIONE DEL RISCHIO NEI SISTEMI ICT simulazioni degli attacchi implementati dalle minacce e memorizzare in un database i campioni staistici raccolti.

Quanto detto sopra può essere effettuato con Haruspex, uno strumento software che opera nell’ambito della valutazione del rischio nei sistemi ICT[5, 8, 7, 9, 10, 6].

2.3

Identificazione e valutazione delle vulnerabilità

In ambito di sicurezza informatica per l’identificazione e la valutazione delle vulnerabilità si fa riferimento a tre standard de-facto: CVE, CWE e CVSS.

Il CVE, Common Vulnerabilities and Exposure [22, 24], è lo standard in ambito informatico per i nomi delle vulnerabilità e delle falle di sicurezza pubblicamente note. Si tratta di un dizionario in cui vengono catalogate ed identificate in maniera univoca, attraverso un nome detto identificatore CVE, tutte le falle di sicurezza e le vulnerabilità. L’identificazione univoca delle CVE favorisce l’interoperabilità degli strumenti di sicurezza permettendo una maggiore comunicazione tra gli stessi. Lo standard CVE è stato istituito nel 1999, è mantenuto dalla MITRE Corporation ed è finanziato dalla National Cybersecurity FFRDC del Dipartimento della Sicurezza interna degli Stati Uniti.

Un indentificatore CVE si compone di tre elementi principali. Il primo elemento, il CVE ID, è una stringa di lunghezza variabile che si compone di tre parti: il prefisso “CVE”, quattro cifre per l’anno ed un altro numero con quattro o più cifre. Il secondo elemento consiste in una breve descrizione della vulnerabilità. Il terzo elemento è rappresentato da tutti i riferimenti correlati alla vulnerabilità. Riportiamo di seguito un esempio.

• CVE ID: CVE-2017-7879

• Descrizione: SQL Injection vulnerability in flatCore version 1.4.6 allows an attacker to read the content database.

• Riferimenti correlati: https://github.com/flatCore/flatCore-CMS/issues/28 Il CWE, Common Weakness Enumeration [23] , è un progetto indirizzato sia agli sviluppatori di software che ai professionisti della sicurezza infomatica. Si tratta di un dizionario in cui vengono catalogate le debolezze di un software che possono dar luogo a vulnerabilità. Il CWE è stato creato con il triplice scopo di essere utilizzato come linguaggio comune per la descrizione delle debolezze di un software critiche per la sicurezza, servire come strumento di misura standard per gli strumenti di sicurezza che mirano a dette debolezze e fornire le linee guida di base per l’identificazione, la mitigazione e la prevenzione delle debolezze.

(22)

In particolare, una debolezza è un difetto, un bug oppure un generico errore nell’architettura, nel design, nell’implementazione o nel codice di un software che se non corretto può rendere un sistema informatico vulnerabile ad un attacco. Le debolezze del software includono buffer overflow, formattazione errata delle stringhe, errori nell’interfaccia utente, errori nell’autenticazione o nella gestione delle risorse, elementi di casualità e di predicibilità e molto altro ancora.

Alla luce di quanto detto finora, la differenza principale tra CWE e CVE consiste nel fatto che il primo è un catalogo di debolezze che possono condurre a problemi di vulnerabilità mentre il secondo è un catalogo delle vulnerabilità direttamente sfruttabili. Il team del MITRE ha iniziato a lavorare sul CWE come parte del lavoro complementare per il CVE nel 2005 dato che il dizionario CVE appariva inadatto per indirizzare le nuove problematiche emergenti richieste dall’industria della valutazione del rischio in ambito di sicurezza. Infatti il CWE identifica una vulnerabilità in linea generale, mentre il CVE ne identifica una sua particolare istanza legata ad un particolare prodotto o sistema. Per fare un esempio, CWE-89 identifica una generica SQL injection mentre CVE-2013-3527 identifica una SQL injection nel prodotto Vanilla Forums.

Il CVSS, Common Vulnerability Scoring System [26], è valuta la pericolosità delle vulnerabilità. L’assegnazione di un punteggio ad ogni vulnerabilità rende un’idea, anche in funzione delle risorse del livello di pericolosità di una specifica vulnerabilità, qualora venisse sfruttata. Il punteggio è calcolato come funzione di metriche che approssimano la facilità di sfruttamento della vulnerabilità ed il suo impatto. Le metriche sono raggruppate in 3 categorie: base, temporali ed ambientali. Le metriche della categoria base rappresentano le qualità intrinsiche delle vulnerabilità, quelle della categoria temporale rappresentano le caratteristiche variabili nel tempo e quelle della categoria ambientale rappresentano le caratteristiche di una vulnerabilità che sono uniche per uno specifico ambiente utente. Il punteggio varia in una scala crescente di pericolosità da 0.0 a 10.0. La versione corrente di CVSS è la 3.0, rilasciata a giugno 2015.

Di seguito riportiamo le metriche della categoria base con i possibili valori che queste possono assumere e, a seguire, la valutazione CVSS della sopra citata vulnerabilità CVE-2013-3527. Le metriche sono definite come segue:

• Attack Vector (AV): Local (L) - Adjacent Network (AN) - Network (N). • Access Complexity (AC): High (H) - Medium (M) - Low (L).

• Authentication (Au): Multiple (M) - Single (S) - None (N).

• Confidentiality Impact (C): None (N) - Partial (P) - Complete (C). • Integrity Impact (I): None (N) - Partial (P) - Complete (C).

(23)

CAPITOLO 2. LA VALUTAZIONE DEL RISCHIO NEI SISTEMI ICT • Availability Impact (A): None (N) - Partial (P) - Complete (C).

Il CVSS di una vulnerabilità è definito con una stringa che ne caratterizza le metriche. Per la CVE-2013-3527 la stringa risultante è:

(AV:N/AC:L/Au:N/C:P/I:P/A:P)

Attraverso una funzione definita sui valori delle metriche viene calcolato il punteggio che, per la CVE in questione, risulta essere 7, 5.

2.4

Haruspex

La suite Haruspex è uno strumento che consente agli esperti di sicurezza di simulare attacchi a sistemi ICT modellando quelli che sono gli aspetti chiave di uno scenario quali il sistema bersaglio, le minacce (attaccanti), le vulnerabilità e gli attacchi abilitati dalle vulnerabilità. Attraverso i risultati delle simulazioni Haruspex consente di scegliere le eventuali contromisure.

Le simulazioni sono condotte applicando il metodo Monte Carlo: vengono eseguitie un certo numero di simulazioni di attacco da parte delle minacce e, per ogni simulazione, vengono raccolte, in un database, le informazioni relative agli attacchi, agli obiettivi raggiunti ed al tempo impiegato. Attraverso altri strumenti, queste informazioni vengono impiegate per produrre le statistiche necessarie alla valutazione del rischio e alla selezione di eventuali contromisure da adottare.

Haruspex è formato da diversi moduli. Quelli principali sono due: il builder e l’engine.

Il modulo builder crea il modello del sistema basandosi sull’output degli scanner di vulnerabilità, sulle vulnerabilità che si sospetta emergere in futuro e sulla topolo-gia logica della rete. Usando queste informazioni viene prodotta una enumerazione degli attacchi elementari, arricchita di altre informazioni. Ogni vulnerabilità è classificata usando il database CVE ed il database CVSS.

Il modulo engine adotta il metodo Monte Carlo per effettuare le simulazioni d’attacco e produrre un database con il campione statistico di supporto alla valutazione. Attraverso la modellazione degli attacchi, l’engine esegue, per ogni minaccia che si vuole simulare, un certo numero di simulazioni. Ad ogni simulazione vengono prodotte sequenze di attacco che indicano il cammino che la minaccia ha percorso per arrivare al proprio obiettivo. Il numero di simulazioni da effettuare, specificato dall’esperto di sicurezza, può essere deciso arbitrariamente oppure determinato sulla base dell’intervallo di confidenza definito.

(24)

2.5

Modelli di simulazione in Haruspex

Uno scenario di simulazione in Haruspex è definito attraverso tre principali modelli:

• il modello del sistema che descrive la topologia logica della rete di cui si vuole valutare il rischio;

• il modello delle minacce che descrive gli attaccanti in termini di risorse, diritti, obiettivi e strategie;

• il modello degli attacchi che descrive gli attacchi eseguibili ed è derivato dalle vulnerabilità riscontrate sul sistema attraverso appositi software chiamati vulnerability scanners.

2.5.1

Il modello del sistema

Il modello del sistema definisce un insieme di sottoreti e nodi connessi tra di loro sul quale si vuole effettuare l’analisi del rischio. Una sottorete definisce un insieme di nodi connessi. Un nodo è un elemento che appartiene al sistema ed è definito da 4 attributi:

• un nome;

• una proprietà che lo caratterizza tra le seguenti: – Firewall; – Switch; – Host; – Database; – Hypervisor; – Macchine virtuali; – Utente.

• un insieme di interfacce di rete;

• un insieme di connessioni tra l’insieme di interfacce del nodo stesso.

In particolare, un utente umano è un caso specifico di nodo in quanto ha una sola interfaccia di rete con un nome univoco ed ha un insieme di vulnerabilità che riguardano il Social Engineering.

Una interfaccia di rete identifica l’hardware che riceve ed invia pacchetti di rete. Haruspex caratterizza un’interfaccia di rete attraverso cinque attributi:

(25)

CAPITOLO 2. LA VALUTAZIONE DEL RISCHIO NEI SISTEMI ICT • un indirizzo IP che la identifica univocamente;

• il nodo di appartenenza; • la sottorete di appartenenza; • un insieme di vulnerabilità;

• un insieme di connessioni tra interfacce di rete che non appartengono allo stesso nodo.

Una connessione definisce un collegamento fisico o logico tra due nodi di un sistema.

2.5.2

Il modello delle minacce

Una minaccia modella un agente attaccante intelligente che cerca di violare il sistema ed ha un obiettivo prefissato. Haruspex descrive minacce che sono in grado di comporre più attacchi elementari in una sequenza di attacco al fine di raggiungere un determinato obiettivo. Una minaccia è modellata attraverso alcuni attributi quali:

• l’insieme dei diritti iniziali posseduti dalla minaccia sul sistema; • le risorse disponibili;

• l’obiettivo prefissato;

• la strategia adottata per il raggiungimento dell’obiettivo.

Un obiettivo è definito come un insieme di diritti sul sistema che la minaccia vuole ottenere. Ciascun diritto abilita la minaccia a compiere determinate operazioni quali avviare o terminare servizi, leggere e/o scrivere dati etc. Quando una minaccia raggiunge un obiettivo, il proprietario del sistema subisce una perdita in termini di accessibilità, integrità e confidenzialità.

Per modellare una minaccia intelligente il modulo engine simula le possibili scelte di attacco, che la minaccia può adottare, attraverso un grafo di attacco. Ogni nodo del grafo rappresenta i diritti acquisiti quando un attacco è stato eseguito con successo. Il nodo iniziale è il punto di partenza della catena di attacco mentre il nodo finale è l’obiettivo della minaccia che contiene i diritti da acquisire. Il cammino lungo il grafo dal nodo iniziale a quello finale rappresenta una sequenza di privilege escalation. Ogni nodo attraversato rappresenta un attacco elementare eseguito all’interno della sequenza di attacco. Infine, il cammino intero rappresenta una sequenza di attacco.

(26)

Un altro importante attributo utilizzato per modellare la minaccia è la strategia utilizzata per la selezione degli attacchi. Tale strategia influisce sulla sequenza di attacco da eseguire, prendendo in considerazione i parametri di un attacco elementare quali la probabilità di successo, il tempo di esecuzione e il numero di diritti acquisiti se eseguito con successo. Una minaccia può adottare una strategia tra quelle disponibili. Attualmente, Haruspex supporta le seguenti:

• Random: seleziona l’attacco in modo completamente casuale;

• Max probability: seleziona l’attacco con la più alta probabilità di successo; • Max increment: seleziona l’attacco che in caso di successo consente di acquisire

il più ampio insieme di diritti;

• Max efficiency: seleziona l’attacco con il miglior rapporto tra probabilità di successo e tempo di esecuzione;

• MinDiff : seleziona l’attacco che in caso di successo consente di ottenere il più ampio insieme di diritti target;

• MaxNumAtt: seleziona l’attacco che in caso di successo consente di eseguire il maggior numero di attacchi successivi;

• SmartSubnetFirst: seleziona l’attacco, in maniera casuale, che fa acquisire diritti su una sottorete diversa.

Una strategia è definita anche per mezzo di un parametro λ che quantifica l’informazione usata da un agente nella scelta del prossimo attacco. Questo parametro è detto look-ahead e assume tipicamente valori interi nell’intervallo [0..2].

Quindi, il prossimo attacco viene scelto considerando tutti i cammini sul grafo di lunghezza λ a partire dall’ultimo nodo raggiunto. Il parametro look-ahead influenza tutte le strategie precedentemente illustrate, ad eccezione della Random e della SmartSubnetFirst. Pertanto, i due casi che si possono verificare sono i seguenti:

• se l’attacco garantisce l’acquisizione dei diritti specificati nell’obiettivo, viene scelto dalla minaccia;

• se, a causa di un basso valore di λ, la strategia non può selezionare una sequenza che porti al raggiungimento dell’obiettivo, allora viene selezionato un attacco in base alla strategia di classificazione. In questo caso la minaccia potrebbe eseguire attacchi inutili.

Altri parametri con i quali viene modellata una minaccia sono la tenacia e la continuità. La tenacia quantifica il numero di volte che un attacco fallito può essere ripetuto prima di sceglierne un altro. La continuità è il numero di attacchi di una catena che l’agente esegue prima di invocare nuovamente la strategia.

(27)

CAPITOLO 2. LA VALUTAZIONE DEL RISCHIO NEI SISTEMI ICT I diritti di una minaccia

Un diritto è un permesso che abilita la minaccia ad eseguire legalmente operazioni su una interfaccia di rete. Haruspex modella 8 diritti distribuiti su 6 livelli:

• admin: la minaccia ha diritti di amministrazione su un sistema operativo; • user: la minaccia ha diritti di utente su un sistema operativo;

• read,write,dos: la minaccia ha diritti di lettura, scrittura, denial of service sul file system o su un sistema operativo;

• physical: la minaccia ha diritti di accesso fisico alla macchina;

• adjacent: la minaccia ha diritti di accesso al nodo vulnerabile come se fosse su una rete adiacente (nessun hop di gateway tra la minaccia ed il nodo); • remote: la minaccia ha diritti di accesso remoto sul nodo vulnerabile.

2.5.3

Il modello degli attacchi

Gli attacchi sono modellati sulle vulnerabilità scoperte sul sistema. In particolare un attacco elementare è lo sfruttamento di una vulnerabilità che permette alla minaccia di ottenere illegalmente diritti che lo autorizzino a compiere determinate operazioni. La descrizione della vulnerabilità contenuta nel database CVE fornisce informazioni quali le precondizioni, le post-condizioni e la probabilità di successo relative ad un attacco. Riassumendo, un attacco elementare è caratterizzato da:

• un identificativo secondo la standard CVE;

• protocollo, porta e indirizzo IP del nodo bersaglio;

• l’insieme dei diritti sul sistema necessari per eseguire l’attacco, chiamati precondizioni;

• l’insieme dei diritti acquisiti sul sistema al termine di un attacco eseguito con successo, chiamati post-condizioni;

(28)

2.6

Tracciamento delle simulazioni

Una sequenza di attacco è caratterizzata da alcuni vincoli:

• un attacco elementare eseguito con successo non viene mai ripetuto;

• le precondizioni per l’esecuzione del primo attacco della sequenza devono essere incluse nell’insieme dei diritti iniziali della minaccia;

• la sequenza deve sempre rispettare i vincoli di precondizioni e post-condizioni degli attacchi.

In particolare, l’ultimo vincolo impone che l’insieme dei diritti ottenuti (postcon-dizioni) dagli attacchi elementari già eseguiti con successo, nella sequenza, includa i diritti necessari (precondizioni) per eseguire il successivo attacco elementare.

Coerentemente con il metodo Monte Carlo, un esperimento è fatto di numerose diverse e indipendenti esecuzioni. Ogni esecuzione simula sia il comportamento di una minaccia in uno stesso intervallo di tempo sia la scoperta di vulnerabilità potenziali. Ogni esecuzione è suddivisa in intervalli di tempo per analizzare questi aspetti nell’orizzonte temporale simulato. Al termine di ogni esecuzione Haruspex reinizializza lo stato del sistema e avvia nuove ed indipendenti esecuzioni. Per ogni intervallo di tempo di una esecuzione, dopo aver determinato se qualche vulnerabilità potenziale è stata scoperta, Haruspex simula il comportamento delle minacce. Per ogni minaccia, coerentemente con i parametri visti precedentemente, viene scelto il prossimo attacco, a meno che la minaccia non abbia già raggiunto il proprio obiettivo oppure sia ancora impegnata nell’esecuzione di un attacco in corso. Per la scelta di un attacco viene costruito un grafo degli attacchi basato sul valore di λ. A questo punto viene valutata la scelta operata dalla strategia. Al termine di ogni esecuzione vengono memorizzati i campioni in un database. Attraverso questo database sono estrapolate informazioni quali tutte le sequenze di attacco implementate, l’impatto, la probabilità degli attacchi, gli obiettivi raggiunti e il tempo necessario ad eseguire una sequenza di attacco. Un’altra informazione interessante concerne i piani di attacco delle minacce. Un piano è una sotto-sequenza di una sequenza di attacco senza attacchi inutili. Un attacco è detto inutile se la minaccia non utilizza i diritti acquisiti dall’attacco stesso per raggiungere l’obiettivo. Haruspex scova i piani delle minacce a posteriori rimuovendo da ogni sequenza gli attacchi inutili.

(29)

CAPITOLO 2. LA VALUTAZIONE DEL RISCHIO NEI SISTEMI ICT

(30)

IL DATASET DI SIMULAZIONI DI

ATTACCHI

In questo capitolo sono presentate la struttura ed alcune statistiche generali di un dataset di simulazioni di attacchi. Il dataset è stato prodotto dal sistema Haruspex secondo quanto descritto nel capitolo precedente e rappresenta, per il lavoro di tesi, l’input per le successive analisi di data mining.

3.1

Minacce simulate

Nel presente caso di studio sono considerate 6 minacce. La tabella 3.1 illustra, per ogni minaccia, la strategia adottata per la selezione degli attacchi. Come già detto precedentemente una strategia è definita dal nome che ne descrive il comportamento e dal parametro λ. La strategia di una minaccia influenza ovviamente il numero di attacchi di una sequenza.

ID MINACCIA STRATEGIA λ M0 Random 0 M1 Max Increment 1 M2 Max Increment 2 M3 Max Probability 1 M4 Max Probability 2 M5 Max Num. Attack 2

(31)

CAPITOLO 3. IL DATASET DI SIMULAZIONI DI ATTACCHI

3.2

Topologia del sistema

La figura 3.1 mostra la topologia del sistema che è stata oggetto delle simulazioni di attacco da parte delle minacce elencate in tabella 3.1. Il sistema è composto da 36nodi, dagli switch che connettono i nodi all’interno delle sottoreti e dai router che connettono gli switch.

Il nodo 0 è il nodo di partenza di tutte le sequenze di attacco. Tutte le minacce possiedono su questo nodo lo stesso insieme di diritti iniziali. Essendo il nodo di partenza, il nodo 0 non compare mai nelle sequenze. Il nodo 34 è il nodo obiettivo, pertanto tutte le sequenze di attacco terminano con un attacco eseguito con successo verso quest’ultimo nodo.

Figura 3.1: Topologia del sistema oggetto delle simulazioni d’attacco.

3.3

Struttura del database sorgente

Haruspex produce in output un database in formato MySQL che contiene tutti i dati relativi alle simulazioni di attacco. In seguito, da tale database dovranno

(32)

essere estratti i dati di interesse per la nostra analisi e trasformati li in un formato coerente con l’input richiesto dalle analisi che defineremo.

La struttura del database è sintetizzata nella tabella 3.2.

TABELLA DESCRIZIONE # RECORD

Minacce Informazioni sulle minacce modellate. 6 Attacchi Informazioni sugli attacchi modellati. 2859 Gruppi Informazioni sui raggruppamenti degli attacchi. 19 Mapping Mappatura degli attacchi su gruppo e nodo. 2859 Host Mappatura dei nodi della rete su indirizzo ip. 36 Run Informazioni sulle sequenze di attacco. 600000

Tabella 3.2: Struttura del database sorgente.

3.3.1

La tabella Minacce

La tabella Minacce contiene le informazioni sulle caratteristiche delle minacce modellate utili a simularne le strategie d’attacco. La tabella contiene 6 istanze. Ogni istanza è descritta dai seguenti attributi:

• id: l’identificativo univoco della minaccia. È codificato con un numero intero. Il tipo di valore è INT(11).

• nome: il nome della minaccia. È codificato con una stringa di testo. Il tipo di valore è VARCHAR(4096).

• dirittiIniziali: l’insieme dei diritti iniziali della minaccia, sui nodi del sistema attaccato. È codificato con una lista di numeri interi, separati da un carattere “;”, in cui ogni numero identifica un particolare diritto. Il tipo di valore è LONGTEXT.

• dirittiInizialiS: l’insieme dei diritti iniziali della minaccia, sui nodi del sistema attaccato. È codificato con una lista di stringhe di testo, separate da un carattere “;”, in cui ogni stringa descrive un particolare diritto su un particolare nodo. Il tipo di valore è LONGTEXT.

• obiettivi: l’insieme degli obiettivi della minaccia. È codificato con una stringa di testo. Il tipo di valore è LONGTEXT.

• prioritaObiettivi: l’ordine di priorità degli obiettivi qualora questi fossero in numero maggiore di uno. È codificato con una lista di numeri interi, separati

(33)

CAPITOLO 3. IL DATASET DI SIMULAZIONI DI ATTACCHI da un carattere “;”, in cui ogni numero identifica un particolare obiettivo. Il tipo di valore è LONGTEXT.

• livelloRisorse: il livello delle risorse della minaccia. È codificato con uno dei tre possibili valori alto, medio e basso. Il tipo di valore è VARCHAR(45). • livelloRischio: il livello di pericolosità della minaccia per il sistema attaccato.

È codificato con uno dei tre possibili valori alto, medio e basso. Il tipo di valore è VARCHAR(45).

• livelloInfoVuln: il livello di informazione della minaccia riguardo le vulnerabi-lità del sistema attaccato. È codificato con uno dei tre possibili valori alto, medio e basso. Il tipo di valore è VARCHAR(45).

• livelloInfoAttacchi: il livello di abilità della minaccia nell’eseguire gli attacchi. È codificato con uno dei tre possibili valori alto, medio e basso. Il tipo di valore è VARCHAR(45).

• rumoreTollerato: descrive il volume massimo del rumore prodotto dagli attacchi di una sequenza implementata dallaminaccia. È codificato con un numero intero. Il tipo di valore è INT(11).

• tempoReazioneDopoAtk: il tempo minimo che intercorre tra un attacco ed il successivo. È codificato con un numero intero. Il tipo di valore è INT(11). • probSuccesso: la probabilità di successo della minaccia di raggiungere

l’obiet-tivo prefissato. È codificato con un numero reale nell’intervallo [0, 1]. Il tipo di valore è DOUBLE.

• strategia: descrive la strategia adottata dalla minaccia per selezionare gli attacchi della sequenza. È codificato con una stringa di testo composta di due parti separate dal carattere “#”. La prima parte rappresenta la strategia mentre la seconda rappresenta il valore del parametro λ. Il tipo di valore è VARCHAR(100).

• numMaxFork: il numero massimo di attacchi in parallelo che una minaccia può eseguite. È codificato con un numero intero. Il tipo di valore è INT(11). • furbizia: la capacità della minaccia di selezionare gli attacchi da eseguire. È

codificato con un numero intero. Il tipo di valore è INT(11).

• tenacia: il numero massimo di ripetizioni, in una singola sequenza, di un attacco fallito. È codificato con un numero intero. Il tipo di valore è INT(11). La tabella 3.3 mostra una istanza esemplificativa della tabella Minacce.

(34)

ATTRIBUTO VALORE

id 3

nome minaccia4

dirittiIniziali 27;18;19;0;1;2;3;4;5;6;7;8;9;10;11;12;13 ... dirittiInizialiS admin 10.1.1.1;remote icmp:0 10.1.1.1 ... obiettivi (admin 10.9.1.1 OR dosDone 10.9.1.1)

prioritaObiettivi 1 livelloRisorse alto livelloRischio alto livelloInfoVuln alto livelloInfoAttacchi alto rumoreTollerato 1000000 tempoReazioneDopoAtk 2160 probSuccesso 1 strategia maxProbabilita#1 numMaxFork 1 furbizia 1 tenacia 4

Tabella 3.3: Istanza della tabella Minacce.

3.3.2

La tabella Attacchi

La tabella Attacchi contiene le informazioni relative agli attacchi modellati. La tabella contiene 2859 istanze. Ogni istanza rappresenta un attacco elementare che è descritto dai seguenti attributi:

• id: l’identificativo univoco dell’attacco. È codificato con un numero intero. Il tipo di valore è INT(11).

• nome: il nome dell’attacco. È codificato con una stringa di testo che de-scrive il tipo di vulnerabilità sfruttata e l’indirizzo IP del nodo target. Le due informazioni sono separate da un carattere “#”. Il tipo di valore è VARCHAR(4096).

• probSuccesso: la probabilità di successo dell’attacco. È codificato con un numero reale nell’intervallo [0, 1]. Il tipo di valore è DOUBLE.

• vulnerabilita: l’identificativo della vulnerabilità associata all’attacco. È codificato con numero intero. Il tipo di valore è INT(11).

(35)

CAPITOLO 3. IL DATASET DI SIMULAZIONI DI ATTACCHI • precondizioni: l’insieme dei diritti necessari per eseguire l’attacco. È codificato con una lista di stringhe di testo, separate da un carattere “;”, in cui ogni stringa descrive un particolare diritto. Il tipo di valore è VARCHAR(1000). • postcondizioni: l’insieme dei diritti acquisiti con il successo dell’attacco. È codificato con una lista di stringhe di testo, separate da un carattere “;”, in cui ogni stringa descrive un particolare diritto. Il tipo di valore è LONGTEXT. • livelloRisorse: il livello delle risorse necessario per l’esecuzione dell’attacco. È codificato con uno dei tre possibili valori alto, medio e basso. Il tipo di valore è VARCHAR(45).

• livelloRischio: il livello di pericolosità di un attacco. È codificato con uno dei tre possibili valori alto, medio e basso. Il tipo di valore è VARCHAR(45). • livelloInfo: il livello di informazione necessario per l’esecuzione dell’attacco. Quantifica la capacità necessaria, da parte di una minaccia, di sfruttare adeguatamente le informazioni sull’attacco per poterlo eseguire con successo. È codificato con uno dei tre possibili valori alto, medio e basso. Il tipo di valore è VARCHAR(45).

• durata: il tempo necessario all’esecuzione dell’attacco ed è espresso in secondi. È codificato con numero intero. Il tipo di valore è INT(11).

• rumore: descrive il rumore prodotto da un attacco. È codificato con numero intero. Il tipo di valore è INT(11).

• classe: la classe di appartenenza dell’attacco in relazione a determinate caratteristiche. È codificato con numero intero. Il tipo di valore è INT(11). La tabella 3.4 mostra una istanza esemplificativa della tabella Attacchi.

3.3.3

La tabella Gruppi

La tabella Gruppi contiene informazioni relative ai gruppi a cui sono associati gli attacchi modellati. Un gruppo identifica una macrocategoria di vulnerabilità secondo lo standard CWE. La tabella contiene 19 istanze. Ogni istanza è descritta dai seguenti attributi:

• id: l’identificativo univoco del gruppo. È codificato con un numero intero. Il tipo di valore è INT(11).

• descrizione: la descrizione del gruppo. È codificato con una stringa di testo. Il tipo di valore è LONGTEXT.

(36)

ATTRIBUTO VALORE

id 283

nome atk PHP < 4.4.8 Multiple Vulnerabilities#10.2.2.2

probSuccesso 0,9

vulnerabilita 283

precondizioni remote tcp:443 10.2.2.2 postcondizioni user 10.2.2.2;write 10.2.2.2;read 10.2.2.2 ...

livelloRisorse basso livelloRischio basso livelloInfo basso durata 1 rumore 1 classe 178

Tabella 3.4: Istanza della tabella Attacchi.

ATTRIBUTO VALORE

id 5

decrizione CWE-264

Tabella 3.5: Istanza della tabella Gruppi.

3.3.4

La tabella Mapping

La tabella Mapping contiene le associazioni degli attacchi con i relativi gruppi e nodi di riferimento. La tabella contiene lo stesso numero di istanze della tabella Attacchi ovvero 2859. Ogni istanza è descritta dai seguenti attributi:

• idAttacco: l’identificativo univoco dell’attacco. È codificato con un numero intero. È chiave esterna sulla tabella Attacchi. Il tipo di valore è INT(11). • idGruppo: l’identificativo del gruppo. È codificato con un numero intero. È

chiave esterna sulla tabella Gruppi. Il tipo di valore è INT(11).

• idNodo: l’identificativo del nodo. È codificato con un numero intero. È chiave esterna sulla tabella Host. Il tipo di valore è INT(11).

(37)

CAPITOLO 3. IL DATASET DI SIMULAZIONI DI ATTACCHI ATTRIBUTO VALORE

idAttacco 31

idGruppo 0

idNodo 32

Tabella 3.6: Istanza della tabella Mapping.

3.3.5

La tabella Host

La tabella Host contiene informazioni sui nodi del sistema. La tabella contiene 36istanze. Ogni istanza è descritta dai seguenti attributi:

• id: l’identificativo univoco del nodo. È codificato con un numero intero. Il tipo di valore è INT(11).

• nome: l’indirizzo IP del nodo. È codificato con una stringa di testo. Il tipo di valore è VACHAR(100).

• subnet: l’indirizzo IP della sottorete di appartenenza del nodo. È codificato con una stringa di testo. Il tipo di valore è VARCHAR(100).

La tabella 3.7 mostra una istanza esemplificativa della tabella Host. ATTRIBUTO VALORE

id 4

nome 10.2.2.1 subnet 10.2.2.0

Tabella 3.7: Istanza della tabella Host.

3.3.6

La tabella Run

La tabella Run contiene le informazioni relative alle simulazioni delle sequenze d’attacco. La tabella contiene 600.000 istanze. Il numero di istanze contenute nella tabella è il prodotto di tre fattori che sono:

• numero di run: il numero di simulazioni eseguite. Nel nostro caso di studio ne sono state eseguite 100.000;

(38)

• numero di esperimenti: il numero di esperimenti condotti per ogni simulazione. Nel nostro caso di studio è stato condotto solo un’esperimento per ogni simulazione.

• numero delle minacce: il numero delle minacce simulate per ogni esperimento. Nel nostro caso sono 6.

Dati i parametri di cui sopra, sia N il numero totale di istanze, N = 100000 × 1 × 6 = 600.000. Ogni istanza è descritta dai seguenti attributi:

• id: l’identificativo univoco della sequenza. È codificato con un numero intero. Il tipo di valore è INT(11).

• nomeProcesso: il nome del processo che genera la sequenza d’attacco. È codificato con una stringa di testo. Il tipo di valore è VARCHAR(100). • idRun: l’identificativo della simulazione. È codificato con un numero intero.

Il tipo di valore è INT(11).

• idEsperimento: l’identificativo dell’esperimento. È codificato con un numero intero. Il tipo di valore è INT(11).

• timelimit: il tempo limite massimo, espresso in secondi, di una simulazione. È codificato con un numero intero. Il tipo di valore è INT(11).

• idMinaccia: l’identificativo della minaccia che esegue la sequenza. È chiave esterna sulla tabella Minacce (attributo id). È codificato con un numero intero. Il tipo di valore è INT(11).

• strategia: la strategia adottata dalla minaccia. È codificato con una stringa di testo. Il tipo di valore è VARCHAR(200).

• scopertaVuln: l’insieme delle vulnerabilità scoperte. È codificato come stringa di testo. Il tipo di valore è TEXT.

• successo: l’esito della sequenza d’attacco. “1” in caso di di successo e “0” in caso di fallimento. È codificato con un numero intero. Il tipo di valore è INT(11).

• time: il tempo impiegato, espresso in secondi, per l’esecuzione dell’intera sequenza di attacco. È codificato con un numero intero. Il tipo di valore è INT(11).

(39)

CAPITOLO 3. IL DATASET DI SIMULAZIONI DI ATTACCHI • attacchiRiusciti: l’insieme degli attacchi eseguiti con successo. È codificato con una lista di numeri interi, separati da un carattere “-”, in cui ogni numero identifica un attacco ed è chiave esterna sulla tabella Attacchi (attributo id). Il tipo di valore è LONGTEXT.

• numAttacchiRiusciti: il numero di attacchi eseguiti con successo. È codificato con numero intero. Il tipo di valore è INT(11).

• eventiAtk: l’intera sequenza di attacco. È codificato con una lista di stringhe di testo, separate da un carattere “;”, in cui ogni stringa descrive un attacco. Ciascuna stringa è composta da una numero intero che identifica l’attacco ed è chiave esterna sulla tabella Attacchi (attributo id), una lettera “S” oppure “F” che ne descrive l’esito, rispettivamente successo o fallimento, ed un numero intero che rappresenta l’idTempo in cui è stato eseguito l’attacco. Il tipo di valore è LONGTEXT.

• numEventiAtk: il numero totale di attacchi di cui è composta la sequenza. È codificato con un numero intero. Il tipo di valore è INT(11).

• probEventiAtk: la probabilità degli eventi d’attacco della sequenza; è calcolata con la produttoria delle probabilità di successo di tutti gli attacchi di cui la sequenza è composta. È codificato con un numero reale nell’intervallo [0..1]. Il tipo di valore è DOUBLE.

• hostAtkConSuccesso: l’insieme dei nodi attaccati con successo. È codificato con una lista di numeri interi, separati da un carattere “-”, in cui ciascun numero identifica un nodo ed è chiave esterna sulla tabella Host (attributo id). Il tipo di valore è TEXT.

• numHostAtkConSuccesso: il numero totale di nodi attaccati con successo. È codificato con un numero intero. Il tipo di valore è INT(11).

• pingEseguiti: l’insieme dei Ping eseguiti nell’intera sequenza. È codificato con una lista di stringhe di testo separate da un carattere “;”. Ogni stringa idNodo:idTempo rappresenta un operazione di ping in cui idNodo è l’iden-tificativo del nodo sul quale viene effettuata ed idTempo è il tempo in cui viene eseguita a partire dall’inizio della sequenza d’attacco. Il tipo di valore è LONGTEXT.

• scanEseguiti: uno scan è una operazione con la quale si sonda un nodo della rete per scoprire quali sono le vulnerabilità che lo affliggono. Questo attributo rappresenta l’insieme delle operazioni di scan eseguite nell’intera sequenza. È codificato con una lista di stringhe di testo separate da un carattere “;”. Ogni

(40)

stringa idNodo:idTempo rappresenta un operazione di scan in cui idNodo è l’identificativo del nodo sul quale viene effettuata ed idTempo è il tempo in cui viene eseguita a partire dall’inizio della sequenza d’attacco. Il tipo di valore è LONGTEXT.

La tabella 3.8 mostra una istanza esemplificativa della tabella Run.

ATTRIBUTO VALORE id 600067 nomeProcesso locale idRun 40000 idEsperimento 1 timelimit 864000 idMinaccia 0

strategia random 1 deterministic

scopertaVuln 0:0..2858 successo 1 time 110147 attacchiRiusciti 1056-991-13-442-15-103 ... numAttacchiRiusciti 30 eventiAtk 1056S2235;991S5141;13S7303 ... numEventiAtk 50 probEventiAtk 0,0000000004791813 hostAtkConSuccesso 1;2;4;5;6;7;9;12;13;15;16;18 ... numHostAtkConSuccesso 21 pingEseguiti 1:1;8:2;9:3;2:2236;3:2237 ... scanEseguiti 1:35;8:43;9:74;2:2269 ...

Tabella 3.8: Istanza della tabella Run.

3.4

Fase di ETL

Si è reso necessario realizzare un piccolo script in linguaggio SQL (riportato in appendice) per la generazione di 3 tabelle aggiuntive. Queste tabelle contengono i dati, estratti dalle tabelle descritte nei sottocapitoli precedenti, che sono stati trattati per aderire alle nostre esigenze. Nello specifico è stato effettuato un raggruppamento degli attacchi in funzione dei nomi degli stessi. La parte finale del nome, che contiene l’indirizzo IP del nodo su cui è eseguito l’attacco, è stata rimossa. Questa nuova tabella, denominata Tipi, descrive tipologie di attacchi

(41)

CAPITOLO 3. IL DATASET DI SIMULAZIONI DI ATTACCHI con caratteristiche comuni. Chiaramente, dopo aver effettuato il raggruppamento e memorizzato i dati nella nuova tabella si è dovuto costruire una tabella che associasse l’attributo idAttacco della tabella Attacchi con l’attributo idT ipo della tabella Tipi. Questa nuova tabella prende il nome di Maptipi. Per finire, abbiamo costruito una tabella Data che associa i dati degli attacchi con idTipo, idGruppo, idNodo, precondizioni e postcondizioni. Quindi, in aggiunta alle tabelle elencate in tabella 3.2 il database si arricchisce con quelle elencate in tabella 3.9.

TABELLA DESCRIZIONE # RECORD

Tipi Descrizione dei tipi di attacco. 192 Maptipi Mappatura tra attacchi e tipi. 2859 Data Informazioni sugli attacchi. 2859

Tabella 3.9: Tabelle aggiunte con la fase di ETL.

Vediamo adesso nel dettaglio come sono strutturate queste tabelle.

3.4.1

La tabella Tipi

La tabella contiene le informazioni relative ai raggruppamenti degli attacchi operati sul campo nome della tabella Attacchi, dopo aver rimosso dallo stesso l’indirizzo IP del nodo associato all’attacco. La tabella contiene 192 istanze. Ogni istanza è descritta dai seguenti attributi:

• idTipo: l’identificativo univoco del tipo di attacco. È codificato con un numero intero. Il tipo di valore è INT(11).

• nome: descrive il tipo di attacco. È codificato con una stringa di testo. Il tipo di valore è LONGTEXT.

Le tabella 3.10 contiene una istanza esemplificativa della tabella Tipi.

ATTRIBUTO VALORE

idTipo 36

nome atk FileZilla Server < 0.9.31 Denial of Service

(42)

3.4.2

La tabella Maptipi

Questa tabella contiene informazioni sulle associazioni tra gli “idAttacco” della tabella Attacchi e gli “idTipo” della tabella Tipi. La tabella contiene 2859 istanze. Ogni istanza è descritta dai seguenti attributi:

• idAttacco: l’identificativo dell’attacco ed è chiave esterna sulla tabella Attacchi (attributo idAttacco). È codificato con un numero intero. Il tipo di valore è

INT(11).

• idTipo: l’identificativo del tipo di attacco ed è chiave esterna sulla tabella Tipi (attributo idT ipo). È codificato con un numero intero. Il tipo di valore è INT(11).

La tabella 3.11 contiene una istanza esemplificativa della tabella Maptipi. ATTRIBUTO VALORE

idAttacco 970

idTipo 19

Tabella 3.11: Istanza della tabella Maptipi.

3.4.3

La tabella Data

La tabella Data contiene tutte le informazioni sugli attacchi necessarie per la nostra analisi. La tabella contiene 2859 istanze. Ogni istanza è descritta dai seguenti attributi:

• idAttacco: l’identificativo dell’attacco ed è chiave esterna sulla tabella Attacchi (attributo idAttacco). È codificato con un numero intero. Il tipo di valore è

INT(11).

• idTipo: l’identificativo del tipo di attacco ed è chiave esterna sulla tabella Tipi (attributo idT ipo). È codificato con un numero intero. Il tipo di valore è INT(11).

• idGruppo: l’identificativo del gruppo di attacco ed è chiave esterna sulla tabella Gruppi (attributo idGruppo). È codificato con un numero intero. Il tipo di valore è INT(11).

• idNodo: l’identificativo del tipo di attacco ed è chiave esterna sulla tabella Host (attributo id). È codificato con un numero intero. Il tipo di valore è INT(11).

(43)

CAPITOLO 3. IL DATASET DI SIMULAZIONI DI ATTACCHI • pre: l’insieme dei diritti necessari per eseguire l’attacco. È codificato con una lista di stringhe di testo, separate da un carattere “;”, in cui ciascuna stringa descrive un particolare diritto. Il tipo di valore è VARCHAR(1000).

• post: l’insieme dei diritti acquisiti una volta eseguito l’attacco con successo. È codificato con una lista di stringhe di testo, separate da un carattere “;”, in cui ciascuna stringa descrive un particolare diritto. Il tipo di valore è LONGTEXT.

La tabella 3.12 contiene una istanza esemplificativa della tabella Data.

ATTRIBUTO VALORE idAttacco 4 idTipo 35 idGruppo 1 idNodo 0 pre remote tcp:0 10.1.1.1 post ... writeDone 10.1.1.1;...

Tabella 3.12: Istanza della tabella Data.

3.5

Statistiche sui dati

Vengono presentati alcuni descrittori statistici, costruiti a partire dai dati memorizzati nel database, che aiuteranno a capire la dimensione quantitativa del problema. Sono state modellate 6 minacce. Per ognuna di queste minacce sono state memorizzate 100.000 sequenze di attacco. Ciascuna di queste sequenze si compone di un numero variabile di attacchi da un minimo di 5 ad un massimo di 144. In totale gli attacchi elementari condotti dalle minacce sono oltre 23, 7 milioni. Gli attacchi elementari distinti sono 2859. Ad essere stati effettivamente utilizzati, indipendentemente dall’esito, sono solo 435.

In tabella 3.13 sono riportate le principali statistiche. La tabella 3.14 presenta le statistiche sulla lunghezza delle sequenze e la figura 3.2 ne mostra la distribuzione.

Nonostante il sistema contenesse 36 nodi, l’unione di tutte le simulazioni ha coinvolto solo 33 nodi. Quindi, ci sono 3 nodi che non hanno mai subito attacchi: il nodo 0 (nodo di partenza), il nodo 3 e il nodo 33.

La figura 3.3 mostra il numero di attacchi totali ed il numero di attacchi con successo per ogni minaccia. Ogni minaccia ha adottato una diversa strategia di selezione degli attacchi. Il numero di attacchi di cui si compone la sequenza è una naturale conseguenza della strategia.

(44)

PARAMETRO VALORE

Numero di minacce 6

Numero di sequenze di attacco per minaccia 100.000 Numero totale di sequenze di attacco 600.000 Numero totale di attacchi 23.736.955 Numero totale di vulnerabilità della rete 2.859 Numero di vulnerabilità usate 435 Numero di nodi della rete 36 Numero di nodi mai attaccati 3

Tabella 3.13: Statistiche generali.

PARAMETRO VALORE Min 5,00 1st Quartile 26,00 Median 36,00 Mean 39,56 3st Quartile 51,00 Max 144,00

Tabella 3.14: Indicatori statistici della lunghezza della sequenza.

La figura 3.4 mostra il numero di occorrenze e i successi dei primi quindici attacchi elementari ordinati in modo decrescente. La figura 3.5 mostra il numero di attacchi e successi per ogni nodo.

(45)

CAPITOLO 3. IL DATASET DI SIMULAZIONI DI ATTACCHI

Figura 3.2: Distribuzione del numero di attacchi.

0 1 2 3 4 5 0 2 4 6 ·106 id Minaccia Num. di attacc hi Totali Successi

Riferimenti

Documenti correlati

Franco Scarselli Sistemi per basi di dati 2005-2006 15. Strumenti per il

To observe which data instances were selected, feed the output of the Data Sampler widget to the Data Table or Info widgets.#.. The Classification Tree widget outputs a

La soluzione individuata per l’elaborazione progettuale di tipo evoluto comporta la messa a punto di un sistema composto da chiusure di vetro isolante, all’interno delle quali

In particolare, nel caso in cui il provvedimento di competenza dell’organo di indirizzo politico non sia acquisito prima della convocazione della conferenza di servizi, le norme

each of the k -fold CV estimates used in the test to judge performance across different training sets..

• Nelle funzioni che accedono a interi array attraverso funzioni di libreria (bcopy, bcmp, e simili), non è necessario ricopiare i dati, in quanto tali funzioni

• Tenere traccia, in tempo reale, dei dati transitati o in transito nella rete. • Consentire interrogazioni sul traffico

L’esperienza pratica nel contesto di emergenza ha permesso di individuare con sempre maggiore chiarezza l’entità e la qualità dei bisogni sanitari affio- ranti