Sei sulla pagina 1di 108

UNIVERSTA DEGLI STUDI DI GENOVA

FACOLT DI INGEGNERIA
Corso di Laurea in Ingegneria Elettronica

TESI DI LAUREA

STRUTTURE DATI DI TIPO SKETCH PER LANALISI DEL TRAFFICO DI RETI INFORMATICHE
Relatore: Correlatori: Chiar.mo Prof. Ing. Rodolfo Zunino. Dott. Ing. Francesco Picasso, Dott. Ing. Paolo Gastaldo, Dott. Ing. Judith Redi.

Candidato:

Francesco Carlino Anno Accademico 2008 2009

Sommario
Abstract................................................................................................................................. 5 Dichiarazione del relatore ................................................................................................... 6 Introduzione ......................................................................................................................... 8 Capitolo 1 ............................................................................................................................ 10 La sicurezza informatica ................................................................................................... 10 1.1 1.2 1.3 1.4 Definizione ........................................................................................................... 10 Propriet .............................................................................................................. 11 Tipi di sicurezza................................................................................................... 12 Minacce alla sicurezza ........................................................................................ 14 Exploit ........................................................................................................... 15 Buffer overflow ............................................................................................ 15 Stack overflow .............................................................................................. 17 Shellcode ....................................................................................................... 17 Backdoor ....................................................................................................... 17 Port scanning ................................................................................................ 18 Sniffing .......................................................................................................... 19 Keylogging .................................................................................................... 19 Spoofing ........................................................................................................ 20 Triojan .......................................................................................................... 20 Virus .............................................................................................................. 21 Worms ........................................................................................................... 21 Denial of Service........................................................................................... 22 SQL Injection ............................................................................................... 22 Ingegneria sociale ......................................................................................... 22

1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.4.10 1.4.11 1.4.12 1.4.13 1.4.14 1.4.15 1.5

Come difendersi ................................................................................................... 23

Capitolo 2 ............................................................................................................................ 26 Intrusion detection system ................................................................................................ 26 2.1 2.2 2.3 2.4 Definizione di IDS ............................................................................................... 26 Le fasi di un attacco ............................................................................................ 27 Obiettivi degli IDS ............................................................................................... 30 Tipi di IDS............................................................................................................ 31

2.5 2.6

Come misurare lefficienza di un IDS ............................................................... 34 Problematiche degli IDS ..................................................................................... 37

Capitolo 3 ............................................................................................................................ 40 Data streams: Algoritmi e applicazioni ........................................................................... 40 3.1 3.2 3.3 3.4 Introduzione ai data streams.............................................................................. 40 Data streaming: modelli ..................................................................................... 42 Data streaming: uno scenario interessante ....................................................... 43 Principi matematici base .................................................................................... 45 Sampling ....................................................................................................... 46 Random projection ...................................................................................... 46

3.4.1 3.4.2

Capitolo 4 ............................................................................................................................ 48 Count-Min Sketch .............................................................................................................. 48 4.1 4.2 Introduzione......................................................................................................... 48 Famiglie di funzioni hash universali .................................................................. 50 Metodo della Funzione Universale ............................................................. 51 Collisioni improbabili .................................................................................. 52 Come costruire un insieme universale di funzioni hash ........................... 52

4.2.1 4.2.2 4.2.3 4.3 4.4

Count-Min Sketches ............................................................................................ 53 Procedure di stima .............................................................................................. 54 Point query ................................................................................................... 54 Inner Product Query ................................................................................... 56 Range Query ................................................................................................. 57

4.4.1 4.4.2 4.4.3

Capitolo 5 ............................................................................................................................ 59 Implementazione e test dellalgoritmo Count-Min Sketch ........................................ 59 5.1 Implementazione dellalgoritmo ........................................................................ 59 Inizializzazione ............................................................................................. 59 Update ........................................................................................................... 60 Query............................................................................................................. 60

5.1.1 5.1.2 5.1.3 5.2

Verifica di funzionamento .................................................................................. 60

Capitolo 6 ............................................................................................................................ 68 La comunicazione TCP/IP e lattacco Denial Of Service ............................................... 68 6.1 Come funziona il TCP/IP.................................................................................... 68

6.2

Il protocollo TCP ................................................................................................. 69 Definizione .................................................................................................... 69 Caratteristiche principali ............................................................................ 70 Lheader TCP ............................................................................................... 71 Apertura di una connessione - Three-way handshake ............................. 73 Chiusura di una connessione - Chiusura a 4 vie ....................................... 75

6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3

Internet Protocol ................................................................................................. 76 Il pacchetto IPv4 .......................................................................................... 76 Indirizzamento IPv4 .................................................................................... 79

6.3.1 6.3.2

Capitolo 7 ............................................................................................................................ 87 Strumenti utilizzati e risultati ottenuti............................................................................. 87 7.1 7.2 Il dataset Darpa 1998 .......................................................................................... 87 La libreria WinPcap ........................................................................................... 89 Architettura per lanalisi del traffico di rete ............................................. 90 Cattura di Pacchetti in ambiente UNIX .................................................... 90 Struttura dello stack di cattura BPF .......................................................... 91 Cattura di Pacchetti in ambiente Windows ............................................... 91 Comportamento del Driver ......................................................................... 92 Il processo di filtraggio ................................................................................ 92 Il processo di lettura .................................................................................... 93 Il processo di scrittura ................................................................................. 94 PACKET.DLL: packet driver API ............................................................ 94

7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.2.7 7.2.8 7.2.9 7.3

Algoritmo di detection basato su Count-Min Sketch ....................................... 95 Riduzione dei falsi postivi............................................................................ 98

7.3.1 7.4

Risultati ottenuti .................................................................................................. 98

Abstract
This Thesis deals data streaming techniques such as Count-Min Sketch to obtain an Intrusion Detection System that can operate in real-time manner. In particular the detection of Denial of Service attacks (i.e. TCP SYN flooding) is concerned. The Count-Min sketch is a new sublinear space data structure for summarizing data streams. This sketch allows also fundamental queries in data stream summarization such as point, range, and inner product queries to be approximately answered very quickly. The performance of this algorithm has been studied by using real network traffic. The dataset, used for the experiments, is DARPA 1998 the first standard corpora for evaluation of computer network intrusion detection systems.

Dichiarazione del relatore


Alla Commissione Tirocini e Tesi Alla Commissione di Laurea e di Diploma Sottopongo la tesi redatta dallo studente Francesco Carlino dal titolo Strutture dati di tipo sketch per lanalisi del traffico di reti informatiche. Ho esaminato, nella forma e nel contenuto, la versione finale di questo elaborato scritto, e propongo che la tesi sia valutata positivamente assegnando i corrispondenti crediti formativi.

Il Relatore Accademico

Prof. Rodolfo Zunino

Ringraziamenti
Ringrazio il mio relatore, il Prof. Rodolfo Zunino, per la disponibilit, la pazienza e la gentilezza dimostrata durante il periodo della tesi. Un ringraziamento va inoltre ai miei correlatori il Dott. Ing. Paolo Gastaldo, il Dott. Ing. Francesco Picasso e la Dott.ssa Ing. Judith Redi che mi hanno seguito assiduamente nei momenti di difficolt che inevitabilmente si sono presentati prestandomi un grande aiuto nel corso della tesi. Ringrazio infine la mia famiglia per avermi incoraggiato e sostenuto durante lo svolgimento del lavoro.

Introduzione
Lo sviluppo esplosivo di reti di calcolatori (Internet) e di dispositivi con potenza e versatilit inimmaginabili solo alcune decine di anni fa, ha reso la sicurezza dellinformazione uno dei principali problemi della realt odierna. La tendenza ad appoggiarsi a sistemi informatici nelle pi svariate realt cresciuta enormemente, portando a chiedersi quanto ci si possa fidare di tali sistemi (problema che diventa pi critico al crescere del valore delle informazioni scambiate in rete).

Le minacce alla sicurezza sono andate aumentando negli ultimi decenni. Nella maggior parte dei casi si tratta di tentativi, da parte di malintenzionati, di accesso non autorizzato a sistemi informatici, magari contenenti dati sensibili. Laccesso da parte di un malintenzionato ad un sistema pu essere fonte di danni di qualsiasi tipo: oltre allacquisizione di dati riservati, questi pu voler danneggiare il sistema, in modo da farlo funzionare in maniera non corretta, oppure utilizzarlo a proprio piacimento, o addirittura renderlo inutilizzabile. Allo scopo di difendersi, oltre a strumenti software come antivirus, antispyware, firewall, nascono gli Intrusion Detection System, strumenti hardware o software in grado di rilevare la presenza di utenze non autorizzate allinterno di un sistema e notificare la sopraggiunta situazione di pericolo ad un amministratore, prima che il corretto funzionamento dello stesso sia del tutto compromesso. Esistono diversi tipi di IDS (host e network based, anomaly e misuse detection, on-line e off-line), ma se pur ben configurati questi sistemi risentono della problematica di unanalisi real-time del traffico di rete, dovuta allenorme ammontare di informazioni che ogni giorno vengono scambiate in Internet ed alla ridotta capacit che uno strumento hardware di questo tipo potrebbe avere. A questa difficolt viene incontro la teoria emergente sui data streams, in cui vengono proposte tecniche e modelli matematici atti a creare proiezioni (sketches) del flusso di dati in grado di sintetizzare il flusso stesso e compiere unanalisi alla ricerca di anomalie con lausilio di poco spazio e molto velocemente. Nella presente tesi si studiato e implementato un algoritmo basato sulla teoria dei data streams, il Count-Min Sketch. Questa nuova struttura dati, a spazio sublineare, permette di

effettuare queries fondamentali come point, range e inner-product query, con possibilit di risposta molto veloce. Tale struttura dati stata applicata a supporto dellattivit dellintrusion detection system. Per testare bont e performance dellalgoritmo si sono utilizzati dataset ottenuti da situazioni di traffico di rete reali (DARPA 1998), concentrandosi su di un particolare tipo di attacco Denial of Service, il SYN flooding. Lalgoritmo si dimostrato efficace ed efficiente in termini di memoria e tempo nel rilevare il suddetto attacco.

La presente tesi strutturata come segue. Nel Capitolo 1 si introduce il concetto di sicurezza informatica ponendo particolare attenzione sulle propriet di questultima, sulle minacce alla stessa e sui meccanismi di difesa al momento conosciuti. Nel Capitolo 2 si definisce un Intrusion Detection System, elencando e descrivendo le diverse tipologie di IDS esistenti in questo campo. Nel Capitolo 3 riportata la teoria emergente nel campo dei data streams. Nel Capitolo 4 si descrive lalgoritmo Count-Min Sketch studiato ed implementato in tesi. Nel capitolo 5 sono riportati alcuni risultati derivanti da test effettuati sullalgoritmo stesso mediante uso di generatore di numero pseudo-casuali. Nel Capitolo 6 sono descritte le basi della comunicazione TCP/IP e si analizza lattacco DOS. Nel Capitolo 7 si riportano gli strumenti utilizzati per lintrusion detection e i risultati ottenuti dai test su traffico di rete reale.

Capitolo 1 La sicurezza informatica


1.1 Definizione
La Sicurezza informatica[1] quella branca dell'informatica che si occupa della salvaguardia dei sistemi informatici da potenziali rischi e/o violazioni dei dati. I principali aspetti di protezione del dato sono la confidenzialit, l'integrit e la disponibilit. La protezione dagli attacchi informatici viene ottenuta agendo su pi livelli: innanzitutto a livello fisico e materiale, ponendo i server in luoghi il pi possibile sicuri, dotati di sorveglianza e/o di controllo degli accessi; anche se questo accorgimento fa parte della sicurezza normale e non della "sicurezza informatica" sempre il caso di far notare come spesso il fatto di adottare le tecniche pi sofisticate generi un falso senso di sicurezza che pu portare a trascurare quelle semplici. Il secondo livello normalmente quello logico che prevede l'autenticazione e l'autorizzazione di un'entit che rappresenta l'utente nel sistema. Successivamente al processo di autenticazione, le operazioni effettuate dall'utente sono tracciate in file di log. Questo processo di monitoraggio delle attivit detto audit o accountability. Lo sviluppo esplosivo dei sistemi collegati in rete e di dispositivi con potenza e versatilit francamente inimmaginabili solo pochi anni fa ha reso necessario, urgente, lo sviluppo di un'ingegneria della sicurezza informatica, dove il termine ingegneria va inteso nel suo senso tradizionale di scienza applicata, con definizione formale di concetti, metodi e tecniche conosciute, esplorate da una ampia letteratura scientifica, e globalmente diffuse. La sicurezza dellinformazione esce quindi da un lungo periodo di gestazione in cui veniva considerata pi che una scienza un'arte, da apprendere tramite l'esperienza e non attraverso lo studio. Solo pochi studi pionieristici stendevano le basi dei metodi formali che negli ultimi anni sono stati poi sviluppati. Questo, unito all'intrinseca difficolt dellargomento, spiega il motivo per cui gran parte degli approcci al tema della sicurezza dell'informazione sono basati su esperienza e conoscenza euristica pi che su tecniche raffinate validate dalla letteratura scientifica. L'unico settore della sicurezza che vanta una lunga tradizione

10

nell'uso dei metodi formali il campo della crittografia, che, non sorprendentemente, molto pi avanzato e stabile degli altri. La tendenza generale ad appoggiarsi a sistemi informatici sempre pi ampi e complessi porta a chiedersi quanto ci si possa fidare di tali sistemi soprattutto nel momento in cui il valore delle informazioni scambiate in forma digitale cresce.

1.2 Propriet
Il traguardo di un sistema relativamente sicuro pu essere raggiunto suddividendo lobiettivo finale in sotto-obiettivi, propriet fondamentali, che diventano i requisiti del sistema stesso; tali propriet, sono: Availability: questo requisito assicura che laccesso ai dati ed il servizio progettato nella specifica non vengano negati agli utenti autorizzati del sistema. Far valere tale propriet implica proteggere il sistema da tentativi, intenzionali o accidentali, di cancellazioni non autorizzate di dati e da attacchi DOS.

Integrity: questa propriet coinvolge da un lato i dati, garantendo che questi non siano stati alterati durante limmagazzinamento o durante il trasferimento, dallaltro il sistema, garantendo che questo non sia stato vittima di manipolazioni non autorizzate, e che quindi il suo comportamento rispecchi esattamente quello previsto dalla specifica. Confidentiality: con questo requisito si vuole garantire limpossibilit, da parte di individui non autorizzati, di accedere ad informazioni private e confidenziali. importante, al fine di garantire tale propriet in modo globale, far si che questa sia preservata durante tutte le possibili fasi della vita dei dati, quindi

immagazzinamento, elaborazione e trasferimento. Anche in sistemi informatici estremamente semplici e non destinati a compiti critici, difficilmente si pu accettare la mancanza di tale requisito.

11

Accountability: tramite questa propriet si richiede che le azioni svolte sul sistema da una qualsiasi entit, sia questa un utente, un altro sistema o pi semplicemente una periferica, siano attribuibili univocamente a tale entit. Lattivit di logging uno dei metodi per cercare di garantire laccountability. Le quattro propriet appena descritte dipendono fortemente luna dallaltra, non possibile e non ha significato alcuno parlare di una di queste propriet senza citarne unaltra. Per esempio la confidenzialit dipende dallintegrit: se questultima violata anche i meccanismi legati alla confidenzialit potrebbero essere compromessi. Si pu dire la stessa nel caso in cui si violasse la confidenzialit (un intruso riesce ad ottenere la password di amministratore di un sistema), i controlli per lintegrit possono essere aggirati banalmente. Availability e accountability sono fortemente legate a confidentiality ed integrity; proprio per questo, se una delle ultime due venisse a mancare, si aprirebbero innumerevoli strade per aggirare i meccanismi tesi a garantire le propriet in oggetto.

1.3 Tipi di sicurezza


Si analizzano di seguito le varie tipologie di sicurezza informatica distinguendo alcuni concetti fondamentali come sicurezza attiva e passiva, sicurezza nelle aziende e sicurezza dei programmi.

Per sicurezza passiva normalmente si intendono le tecniche e gli strumenti di tipo difensivo, ossia quel complesso di soluzioni il cui obbiettivo quello di impedire che utenti non autorizzati possano accedere a risorse, sistemi, impianti, informazioni e dati di natura riservata. Il concetto di sicurezza passiva pertanto molto generale: ad esempio, per l'accesso a locali protetti, l'utilizzo di porte di accesso blindate, congiuntamente all'impiego di sistemi di identificazione personale, sono da considerarsi componenti di sicurezza passiva.

12

Per sicurezza attiva si intendono, invece, le tecniche e gli strumenti mediante i quali le informazioni ed i dati di natura riservata sono resi intrinsecamente sicuri, proteggendo gli stessi sia dalla possibilit che un utente non autorizzato possa accedervi, sia dalla possibilit che un utente non autorizzato possa modificarli.

Le violazioni possono essere molteplici: vi possono essere tentativi non autorizzati di accesso a zone riservate, furto di identit digitale o di file riservati, utilizzo di risorse che l'utente non dovrebbe potere utilizzare ecc. La sicurezza informatica si occupa anche di prevenire eventuali Denial of service (DoS). I DoS sono attacchi sferrati al sistema con l'obiettivo di rendere non utilizzabili alcune risorse in modo da danneggiare gli utenti del sistema. Per prevenire le violazioni si utilizzano strumenti hardware e software. Dal momento che linformazione un bene che aggiunge valore allimpresa, e che ormai la maggior parte delle informazioni sono custodite 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. Per questo esistono, a carico delle imprese, precisi obblighi in materia di privacy, tra cui quello di redigere annualmente uno specifico documento programmatico sulla sicurezza. stato anche approvato a livello internazionale il nuovo Standard ISO 27001:2005 finalizzato alla standardizzazione delle modalit adatte a proteggere i dati e le informazioni da minacce di ogni tipo, al fine di assicurarne l'integrit, la riservatezza e la disponibilit. Lo standard indica i requisiti di un adeguato sistema di gestione della sicurezza delle informazioni (ISMS) finalizzato ad una corretta gestione dei dati dellazienda. Una fase indispensabile di ogni pianificazione della sicurezza la valutazione del rischio e la gestione del rischio.

Il problema della sicurezza dei programmi e soprattutto dell'invio e ricezione di dati confidenziali protetti, si posto all'attenzione degli sviluppatori di software come conseguenza della sensibile crescita dell'uso degli strumenti informatici e di internet. Per quanto riguarda la produzione di software "protetti" possiamo partire col definire il concetto di sicurezza come l'assenza da condizioni conflittuali capaci di produrre danni mortali o irreparabili ad un sistema. Nella progettazione di software quindi

13

fondamentale raggiungere il compromesso pi funzionale tra l'efficienza d'uso del programma in questione e la sua capacit di "sopravvivenza" ad attacchi esterni e ad errori pi o meno critici.

1.4 Minacce alla sicurezza


Le minacce alla sicurezza sono ovviamente rappresentate da persone non autorizzate che cercano di guadagnare laccesso ad un sistema protetto o di sovvertirne il funzionamento. Esistono minacce esterne ed interne al sistema: gran parte degli attacchi vengono proprio da dentro lorganizzazione stessa sebbene oggigiorno definire i confini di unazienda diventato molto difficile: concetti come le extranet che estendono il sistema informativo mediante Internet fino ad interfacciarlo con quello dei partner, dei clienti e dei fornitori, rendono molto labile il confine tra ci che interno ad unimpresa e ci che rimane esterno ad essa. Per quanto riguarda gli aggressori interni si pu parlare di: Disgruntled Employees cio persone che stanno coscientemente aggredendo lorganizzazione, per diversi motivi (ostilit nei confronti dellazienda, corruzione da parte di terzi, spionaggio industriale, ecc); Trasgressori Ingenui cio persone che cercano di abusare in qualche modo delle risorse loro concesse, per esempio violando le linee guida aziendali sulluso responsabile di Internet (molto pericolosi sebbene inconsapevoli). Discorso pi ampio va fatto per gli aggressori esterni: si pu trattare infatti di persone esperte dotate di conoscenze tecniche approfondite, capaci di elaborare attacchi innovativi o di inventare procedimenti nuovi; molto spesso sono pi esperti dei sistemi che stanno attaccando di quanto non siano le persone incaricate di difenderli. Con il termine ScriptKiddies si intendono persone prive di reali conoscenze tecniche, che studiano ed utilizzano exploit, attacchi preconfezionati rilasciati da esperti. Gli attacchi esterni possono avere un obbiettivo preciso (rubare dati o cancellare informazioni scomode), possono avere un fine di danneggiamento del sistema informativo o addirittura un fine ludico (si prova ad entrare in un sistema altrui quasi per gioco, per sperimentare le proprie capacit). Le finalit ultime di un attaccante possono essere, come abbiamo visto, moltissime: dal guadagno diretto al guadagno derivante dalla vendita di informazioni, dalla rappresaglia al

14

divertimento. Ogni organizzazione deve quindi considerare che sar valutata da ogni tipo di nemici, e che se risulter interessante anche solo da un punto di vista sar sicuramente attaccata ed aggredita.

Di seguito verr presentato un elenco dei pi noti attacchi informatici, elenco che non risulta possibile tenere aggiornato e completo visto il numero quotidiano di innovazioni in tale ambito.

1.4.1 Exploit

Un exploit[2] un termine usato in informatica per identificare un codice che, sfruttando un bug o una vulnerabilit, porta all'acquisizione di privilegi o al denial of service di un computer. Ci sono diversi modi per classificare gli exploit. Il pi comune una classificazione a seconda del modo in cui l'exploit contatta l'applicazione vulnerabile. Un exploit remoto compiuto attraverso la rete e sfrutta la vulnerabilit senza precedenti accessi al sistema. Un exploit locale richiede un preventivo accesso al sistema e solitamente fa aumentare i privilegi dell'utente oltre a quelli impostati dall'amministratore. Lo scopo di molti exploit quello di acquisire i privilegi di root su un sistema. comunque possibile usare exploit che dapprima acquisiscono un accesso con i minimi privilegi e che poi li alzano fino ad arrivare a root. Normalmente un exploit pu sfruttare solo una specifica falla, e quando viene pubblicato questa falla riparata e l'exploit diventa inutile per le nuove versioni del programma. Per questo motivo alcuni blackhat hacker non divulgano gli exploit trovati ma li tengono riservati per loro o per la loro comunit. Questi exploit sono chiamati zero day exploit, e scoprire il loro contenuto il pi grande desiderio per gli attacker senza conoscenze, altrimenti detti script kiddie.

1.4.2 Buffer overflow

Il buffer overflow[3] consiste nel fatto un programma non controlla in anticipo la lunghezza dei dati in arrivo, ma si limita a scrivere il loro valore in un buffer di lunghezza

15

prestabilita, confidando che l'utente (o il mittente) non immetta pi dati di quanti esso ne possa contenere: questo pu accadere se il programma stato scritto usando funzioni di libreria di input/output che non fanno controlli sulle dimensioni dei dati trasferiti. Quando quindi, per errore o per malizia, vengono inviati pi dati della capienza del buffer destinato a contenerli, i dati extra vanno a sovrascrivere le variabili interne del programma, o il suo stesso stack; come conseguenza di ci, a seconda di cosa stato sovrascritto e con quali valori, il programma pu dare risultati errati o imprevedibili, bloccarsi, o (se un driver di sistema o lo stesso sistema operativo) bloccare il computer. Conoscendo molto bene il programma in questione, il sistema operativo e il tipo di computer su cui gira, si pu precalcolare una serie di dati malevoli che inviata per provocare un buffer overflow consenta ad un malintenzionato di prendere il controllo del programma (e a volte, tramite questo, dell'intero computer). Questo tipo di debolezza dei programmi noto da molto tempo, ma solo di recente la sua conoscenza si diffusa tanto da permettere anche a dei cracker dilettanti di sfruttarla per bloccare o prendere il controllo di altri computer collegati in rete. Non tutti i programmi sono vulnerabili a questo tipo di inconveniente: perch un dato programma sia a rischio necessario che:

1. il programma preveda l'input di dati di lunghezza variabile e non nota a priori;

2. li immagazzini entro buffer allocati nel suo spazio di memoria dati vicini ad altre strutture dati vitali per il programma stesso;

3. il programmatore non abbia implementato alcun mezzo di controllo della correttezza dell'input in corso;

4. l'area di memoria dello stack sia eseguibile, se si tenta di scrivere dello shellcode sullo stack; questo non vero sui computer pi recenti dotati di NX bit.

16

1.4.3 Stack overflow

Lo stack overflow consiste ugualmente nella sovrascrittura dell'area dati del programma, ma questa volta la causa l'attivit del programma stesso: chiamando con dei parametri particolari una funzione ricorsiva del programma, questa accumula chiamate in sospeso sullo stack fino a riempirlo completamente e inizia a sovrascrivere la memoria vicina.

1.4.4 Shellcode

Uno shellcode[4] un programma in linguaggio assembly che tradizionalmente esegue una shell, come la shell Unix '/bin/sh' oppure la shell command.com sui sistemi operativi DOS e Microsoft Windows. Uno shellcode pu essere utilizzato per sfruttare un exploit, consentendo ad un hacker o un cracker di acquisire l'accesso alla riga di comando di un computer.

1.4.5 Backdoor

Le backdoor[5] sono paragonabili a porte di servizio che consentono di superare in parte o in tutto le procedure di sicurezza attivate in un sistema informatico. Queste "porte" possono essere intenzionalmente create dai gestori del sistema informatico per permettere una pi agevole opera di manutenzione dell'infrastruttura informatica, e pi spesso da cracker intenzionati a manomettere il sistema. Possono anche essere installate autonomamente da alcuni malware (come virus, worm o trojan), in modo da consentire ad un utente esterno di prendere il controllo remoto della macchina senza l'autorizzazione del proprietario. Oltre ad essere molto pericolosi per l'integrit delle informazioni presenti sul sistema, le backdoor installate dai virus possono essere utilizzate per condurre degli attacchi di tipo DDoS.

17

1.4.6 Port scanning

Il Port Scanning[6] utlizzato per raccogliere informazioni su un computer connesso ad una rete stabilendo quali porte siano in ascolto su una macchina. Letteralmente significa "scansione delle porte" e consiste nell'inviare richieste di connessione al computer bersaglio (soprattutto pacchetti TCP, UDP e ICMP creati ad arte): elaborando le risposte possibile stabilire (anche con precisione) quali servizi di rete siano attivi su quel computer. Una porta si dice "in ascolto" ("listening") o "aperta" quando vi un servizio o programma che la usa. Il risultato della scansione di una porta rientra solitamente in una delle seguenti categorie:

aperta (accepted): l'host ha inviato una risposta indicando che un servizio in ascolto su quella porta

chiusa (denied): l'host ha inviato una risposta indicando che le connessioni alla porta saranno rifiutate

bloccata (dropped): non c' stata alcuna risposta dall'host

filtrata (filtered): rileva la presenza di un firewall o di un ostacolo di rete in grado di bloccare laccesso alla porta impedendo di individuarne lo stato.

Di per s il port scanning non pericoloso per i sistemi informatici, e viene comunemente usato dagli amministratori di sistema per effettuare controlli e manutenzione. Rivela per informazioni dettagliate che potrebbero essere usate da un eventuale attaccante per preparare facilmente una tecnica mirata a minare la sicurezza del sistema, pertanto viene posta molta attenzione dagli amministratori a come e quando vengono effettuati port scan verso i computer della loro rete. Un buon amministratore di sistema sa che un firewall ben configurato permette alle macchine di svolgere tutti i loro compiti, ma rende difficile (se non impossibile) la scansione delle porte, ad esempio implementando meccanismi di accesso selettivo basati sul port knocking.

18

1.4.7 Sniffing

Si definisce sniffing[7] l'attivit di intercettazione passiva dei dati che transitano in una rete telematica. Tale attivit pu essere svolta sia per scopi legittimi (ad esempio l'individuazione di problemi di comunicazione o di tentativi di intrusione) sia per scopi illeciti (intercettazione fraudolenta di password o altre informazioni sensibili). I prodotti software utilizzati per eseguire queste attivit vengono detti sniffer ed oltre ad intercettare e memorizzare il traffico offrono funzionalit di analisi del traffico stesso. Gli sniffer intercettano i singoli pacchetti, decodificando le varie intestazioni di livello datalink, rete, trasporto, applicativo. Inoltre possono offrire strumenti di analisi che analizzano ad esempio tutti i pacchetti di una connessione TCP per valutare il comportamento del protocollo o per ricostruire lo scambio di dati tra le applicazioni.

1.4.8 Keylogging

Un keylogger[8] , nel campo dell'informatica, uno strumento in grado di intercettare tutto ci che un utente digita sulla tastiera del proprio computer. Esistono vari tipi di keylogger:

hardware: vengono collegati al cavo di comunicazione tra la tastiera ed il computer o all'interno della tastiera

software: programmi che controllano e salvano la sequenza di tasti che viene digitata da un utente.

I keylogger hardware sono molto efficaci in quanto la loro installazione molto semplice e il sistema non in grado di accorgersi della loro presenza. I keylogger software sono invece semplici programmi che rimangono in esecuzione captando ogni tasto che viene digitato e poi, in alcuni casi, trasmettono tali informazioni ad un computer remoto.

19

Spesso i keylogger software sono trasportati ed installati nel computer da worm o trojan ricevuti tramite Internet ed hanno in genere lo scopo di intercettare password e numeri di carte di credito ed inviarle tramite posta elettronica al creatore degli stessi. Sempre a livello software, un programma di Keylogging pu sovrapporsi fra il browser e il mondo internet. In questo caso intercetta le password, comunque vengano inserite nel proprio PC. La password viene catturata indipendentemente dalla periferica di input (tastiera, mouse, microfono): sia che l'utente la digiti da tastiera, sia che l'abbia salvata in un file di testo prima di collegarsi a Internet, e poi si limiti a fare copia/incolla, in modo da evitarne la digitazione, sia questa venga inserita da un programma di dettatura vocale.

1.4.9 Spoofing Tecnica basata sullassenza di meccanismi di autenticazione a partire dal livello tre della pila protocollare (IP) a scendere e sulla possibilit di raggirare i meccanismi a livello TCP, quali per esempio il numero di sequenza pseudocasuale, in modo da potersi fingere host fidato [9].

1.4.10 Triojan

Un trojan[10] o trojan horse (dall'inglese per Cavallo di Troia), un tipo di malware. Deve il suo nome al fatto che le sue funzionalit sono nascoste all'interno di un programma apparentemente utile; dunque l'utente stesso che installando ed eseguendo un certo programma, inconsapevolmente, installa ed esegue anche il codice trojan nascosto. I trojan non si diffondono autonomamente come i virus o i worm, quindi richiedono un intervento diretto dell'aggressore per far giungere l'eseguibile maligno alla vittima. Spesso la vittima stessa a ricercare e scaricare un trojan sul proprio computer, dato che i cracker amano inserire queste "trappole" ad esempio nei videogiochi piratati, che in genere sono molto richiesti. Vengono in genere riconosciuti da un antivirus aggiornato come tutti i malware. Se il trojan in questione non ancora stato scoperto dalle software house degli antivirus, possibile che esso venga rilevato, con la scansione euristica, come probabile malware.

20

Un trojan pu contenere qualsiasi tipo di istruzione maligna. Spesso i trojan sono usati come veicolo alternativo ai worm e ai virus per installare delle backdoor o dei keylogger sui sistemi bersaglio.

1.4.11 Virus

Nell'ambito dell'informatica un virus[11] un software, appartenente alla categoria dei malware, che in grado, una volta eseguito, di infettare dei file in modo da riprodursi facendo copie di s stesso, generalmente senza farsi rilevare dall'utente. I virus possono essere o non essere direttamente dannosi per il sistema operativo che li ospita, ma anche nel caso migliore comportano un certo spreco di risorse in termini di RAM, CPU e spazio sul disco fisso. Come regola generale si assume che un virus possa danneggiare direttamente solo il software della macchina che lo ospita, anche se esso pu indirettamente provocare danni anche all'hardware, ad esempio causando il

surriscaldamento della CPU mediante overclocking, oppure fermando la ventola di raffreddamento. Un virus composto da un insieme di istruzioni, come qualsiasi altro programma per computer. solitamente composto da un numero molto ridotto di istruzioni, (da pochi byte ad alcuni kilobyte), ed specializzato per eseguire soltanto poche e semplici operazioni e ottimizzato per impiegare il minor numero di risorse, in modo da rendersi il pi possibile invisibile. Caratteristica principale di un virus quella di riprodursi e quindi diffondersi nel computer ogni volta che viene aperto il file infetto.

1.4.12 Worms

Diversamente dai virus, non sono pezzi di codice che si agganciano ad altri programmi, bens programmi che clonano se stessi, lanciandosi in esecuzione in vari modi. Spesso i worms contengono del codice backdoor, installando sulle macchine infettate un accesso per il proprio creatore. Inoltre, mentre un virus infetta tipicamente un calcolatore e si sposta da questo soltanto quando si spostano file infetti, un worms utilizza esplicitamente la rete (quindi, Internet) per mandare copie di se stesso ad altri calcolatori (non ha bisogno dellinterazione dellutente).

21

Il core di un worms rappresentato dallo specifico exploit che gli permette di muoversi nella rete: questo exploit sfrutta una vulnerabilit software di un applicativo come ad esempio buffer overflow.

1.4.13 Denial of Service

Letteralmente negazione del servizio, in questo tipo di attacco si cerca di portare il funzionamento di un sistema informatico che fornisce un servizio, ad esempio un sito web, al limite delle prestazioni, lavorando su uno dei parametri d'ingresso, fino a renderlo non pi in grado di erogare il servizio. Gli attacchi vengono abitualmente attuati inviando molti pacchetti di richieste, di solito ad un server Web, FTP o di posta elettronica saturandone le risorse e rendendo tale sistema "instabile", quindi qualsiasi sistema collegato ad Internet e che fornisca servizi di rete basati sul TCP soggetto al rischio di attacchi DoS. Tale tipo di attacco verr in seguito analizzato pi nel dettaglio in quanto utilizzato per testare il funzionamento dellalgoritmo implementato[12].

1.4.14 SQL Injection

La SQL injection una tecnica dell'hacking mirata a colpire le applicazioni web che si appoggiano su un database di tipo SQL. Questo exploit sfrutta l'inefficienza dei controlli sui dati ricevuti in input ed inserisce codice maligno all'interno di una query SQL. Le conseguenze prodotte sono imprevedibili per il programmatore: l'Sql Injection permette al malintezionato di autenticarsi con ampi privilegi in aree protette del sito (ovviamente, anche senza essere in possesso delle credenziali d'accesso) e di visualizzare e/o alterare dati sensibili.

1.4.15 Ingegneria sociale

Per ingegneria sociale (dall'inglese social engineering) si intende lo studio del comportamento individuale di una persona al fine di carpire informazioni.

22

Un ingegnere sociale (social engineer) per definirsi tale deve saper fingere, sapere ingannare gli altri, in una parola saper mentire. Un social engineer molto bravo a nascondere la propria identit, fingendosi un'altra persona: in tal modo egli riesce a ricavare informazioni che non potrebbe mai ottenere con la sua identit reale. Nel caso sia un cracker, pu ricavare informazioni attinenti ad un sistema informatico. Il social engineering quindi una tecnica per ricavare informazioni molto usata dagli hacker esperti e dalle spie, e dato che comporta (nell'ultima fase dell'attacco) il rapporto pi diretto con la vittima, questa tecnica una delle pi importanti per carpire informazioni. In molti casi il cosiddetto ingegnere potr riuscire a ricavare tutto ci che gli serve dalla vittima ignara[13].

1.5 Come difendersi


Per prevenire tali violazioni si utilizzano strumenti hardware e software di vario genere di cui si presenta una breve panoramica di seguito[1].

Antivirus: consente di proteggere il proprio personal computer da software dannosi conosciuti come virus. Un buon antivirus deve essere costantemente aggiornato ed avere in continua esecuzione le funzioni di scansione in tempo reale. Per un miglior utilizzo lutente deve avviare con regolarit la scansione dei dispositivi del PC (dischi fissi, CD e DVD), per verificare la presenza di virus e worms. Per evitare la diffusione di virus inoltre utile controllare tutti i file che si ricevono o che vengono spediti tramite posta elettronica facendoli verificare dallantivirus correttamente configurato a tale scopo.

Anti-Spyware: software facilmente reperibile sul web in versione freeware, shareware o a pagamento. diventato un utilissimo tool per la rimozione di file spia, gli spyware appunto, in grado di carpire informazioni riguardanti le attivit on line dellutente ed inviarle ad un'organizzazione che le utilizzer per trarne profitto.

Firewall: installato e ben configurato un buon personal firewall garantisce un sistema di controllo degli accessi verificando tutto il traffico che lo attraversa. Protegge contro

23

aggressioni provenienti dallesterno e blocca eventuali programmi presenti sul computer che tentano di accedere ad internet senza il controllo dellutente.

Firma digitale, Crittografia: possibile proteggere documenti e dati sensibili da accessi non autorizzati utilizzando meccanismi di sicurezza specifici quali: la crittografia, la firma digitale, e lutilizzo di certificati digitali e algoritmi crittografici per identificare lautorit di certificazione, un sito, un soggetto o un software.

Backup: pi che un sistema di difesa si tratta di un utile sistema per recuperare dati eventualmente persi o danneggiati. Il backup consiste nellesecuzione di una copia di sicurezza dei dati di un personal computer o comunque di dati considerati importanti onde evitare che vadano persi o vengano resi illeggibili. Honeypot: (letteralmente barattolo di miele) sistema o componente, hardware o software, usato come trappola o esca per la protezione da attacchi informatici. Solitamente consiste in un computer o un sito che sembra essere parte della rete e contenere informazioni preziose, ma che in realt e ben isolato e non ha contenuti sensibili o critici. Potrebbe anche essere un file, un record o un indirizzo IP non utilizzato. Possono cosi essere rilevate intrusioni non autorizzate o malevoli in corso senza il rischio di perdita di informazione. Tuttavia devono essere maneggiati con cura poich un hacker potrebbe utilizzarli per entrare in altri sistemi. Intrusion Detection System (IDS): Il concetto di Intrusion Detection System stato sviluppato da James P.Anderson in un suo rapporto tecnico del 15 aprile 1980 [4]. L'idea alla base di un intrusion detection system (o IDS) che sia possibile rilevare i segnali caratteristici di un'intrusione in un sistema informatico allo scopo di dare l'allarme. Questo dispositivo rileva, infatti, anomalie nel traffico in transito attraverso il firewall generando segnali di allerta allamministratore di rete. LIntrusion Detection System pu non solo segnalare lanomalia, ma anche gestire la situazione in modo da chiudere eventuali falle nel sistema informatico: in questo caso si parla di Intrusion Prevention System (IPS).

24

Network Intrusion Detection System (NIDS): e un tipo particolare di IDS in cui il dispositivo e totalmente indipendente dalla piattaforma in grado di controllare il traffico in transito attraverso hub e network switch a seconda di come viene configurato. Steganografia: nel campo dellinformatica, due utenti possono utilizzare la steganografia digitale per inviarsi messaggi nascosti allinterno di file di copertura (filigrana elettronica), come immagini o altri file multimediali: in questo tipo di file lalterazione di pochi bit non modifica in modo evidente il contenuto del documento. Sistema di autenticazione: potrebbe rivelarsi utile, in particolare nelle aziende, lutilizzo di software per lautenticazione sicura con un secondo elemento di autenticazione basato su un insieme di caratteri disposti in uno schema suddiviso in file e colonne conosciute dallutente che dovr poi inserirle in una combinazione di valori per dimostrare di essere in possesso dei dati corretti. Altro sistema, pi sofisticato, quello del riconoscimento dellutente tramite lutilizzo dellimpronta digitale come forma di autenticazione.

25

Capitolo 2 Intrusion detection system


Nel primo capitolo stata presentata una panoramica riguardante varie tipologie di attacco informatico, note al momento, e diversi modi per difendersi. Si pone lattenzione adesso su un particolare sistema di difesa che consenta di rilevare lintrusione prima che essa possa causare un danno. Si cercher di capire che cos e cosa fa un Intrusion Detection System, definendo il concetto di intrusione e analizzando le fasi di un attacco informatico.

2.1 Definizione di IDS


Con la dicitura intrusion detection system ci si riferisce ad uno strumento, composto da hardware e/o software, che sia in grado di fare intrusion detection; ossia, quel processo di monitoraggio degli eventi, che si verificano in un sistema o su di una rete, e di analisi degli stessi in cerca di tentativi mirati a compromettere lavailability, lintegrity, la confidentiality o a scavalcare i meccanismi di sicurezza previsti per lentit monitorata. Gli IDS non hanno niente a che vedere con sistemi di firewalling e affini, ai quali sono semmai complementari: se, ad esempio, paragonassimo il sistema informatico da proteggere ad una casa, il ruolo del firewall verrebbe interpretato da una recinzione alta e difficile da superare, mentre lIDS rappresenterebbe uno di quei sofisticati sistemi di allarme installati nelle abitazioni, che cominciano a suonare non appena un ladro cerchi di aprire la finestra o passeggi per un corridoio dopo essere entrato da una finestra lasciata aperta! Un buon IDS infatti deve essere in grado di segnalarci, in tempo reale, tentativi di intrusioni generate da cracker, da virus, da tools automatici oppure da utenti smanettoni che utilizzano programmi realizzati appositamente. Perch possa agire nel migliore dei modi lIDS deve essere configurato al meglio, in particolare deve conoscere: lattuale versione del o dei sistemi operativi, le eventuali patch o service pack installati, lo stack di rete, ecc

26

Per quanto riguarda la classificazione delle intrusioni, se ne possono definire quattro tipologie:

1. External Penetrator, colui che accede fisicamente a computer a cui non dovrebbe avere accesso;

2. Masquerader, colui che riesce ad accedere ad un sistema autenticandosi come utente autorizzato;

3. Misfeasor (malintenzionato), colui che, pur avendo diritto di accedere a risorse protette, abusa dei suoi privilegi attaccando la sicurezza del sistema;

4. Clandestine user, colui che riesce ad accedere al sistema autenticandosi come amministratore del sistema.

2.2 Le fasi di un attacco


E possibile fornire una indicazione di massima sulle fasi che costituiscono un tipico attacco. Esse sono rappresentate allinterno dello schema seguente:

1-HIDING (Mascheramento) Durante questa prima fase, lattacker compie delle operazioni (a volte anche piuttosto complesse) allo scopo di camuffarsi, nascondendo la propria reale ubicazione per scongiurare il pericolo di essere tracciato ed identificato(utilizzo di sistemi ponte e mascheramento della propria utenza telefonica).

2-INFORMATION GATHERING (Raccolto di Informazioni) Affinch un attacco abbia esito positivo, fondamentale che lattacker raccolga il maggior numero di informazioni possibili sulla rete scelta come bersaglio. E importante notare che in questa fase non viene eseguita alcuna reale intrusione, ma ci si limita a raccogliere le informazioni pubbliche reperibili attraverso canali standard (database del NIC, WHOis record, DNS, traceroute, ping, ecc.). Le tecniche comunemente utilizzate allo scopo sono:

27

Network Surveying: si tratta di una sorta di combinazione di ricerca dei dati, accolta di informazioni importanti e controllo delle politiche di sicurezza e di information disclosure. Al termine di questa sottofase, lattaccante tipicamente in possesso dei nomi di dominio interessati, delle denominazioni e delle funzioni primarie dei singoli server, degli indirizzi IP di propriet dellazienda bersaglio, di una mappa di rete approssimativa, di indirizzi email validi e di informazioni specifiche riguardanti lISP che fornisce la connettivit Internet. Port Scanning: Ogni sistema che implementa il TCP/IP ha 65.536 possibili porte TCP e altrettante UDP: lo scopo di questa fase e fornire un elenco dei sistemi attivi nellintervallo di indirizzi individuato durante lattivit di Network Surveying ed ottenere una mappa di rete ad un maggiore livello di dettaglio. Service Identification: si tratta dellesame attivo delle applicazioni in ascolto sulle porte individuate nel corso della sottofase precedente. A volte ad un servizio pu essere associata pi di una applicazione; ad esempio, nel caso di un server web, il Perl ed il PHP possono essere considerati componenti dellapplicazione che ascolta sulla porta 80/TCP (il server web Apache). I risultati ottenuti al termine di questa analisi consentono allattaccante di individuare i possibili punti deboli dellinfrastruttura informatica scelta come bersaglio. System Identification: con questo termine si intende il probing attivo di un sistema, alla ricerca di risposte che permettano di distinguere la tipologia di sistema operativo, la sua versione ed altre ulteriori informazioni specifiche. Una tecnica comunemente utilizzata allo scopo quella del TCP/IP fingerprinting.

3-SYSTEM PENETRATION (Intrusione) Una volta in possesso delle informazioni necessarie, il momento per lattacker di sferrare lattacco vero e proprio. A seconda delle tipologie di reti, sistemi e servizi erogati, tale attacco pu variare sensibilmente dal punto di vista pratico; possiamo per raggruppare le possibili insicurezze in almeno 4 aree distinte: System security: si tratta di vulnerabilit a livello di sistema operativo e nel software di base. Tipicamente, alcuni servizi e programmi applicativi, datati oppure mal configurati, si prestano ad essere attaccati allo scopo di ottenere un accesso non autorizzato al sistema che ne fa uso (vulnerabilit remote) o di realizzare una scalata di privilegi (vulnerabilit locali). Tipici esempi di attacchi connessi a questa tipologia di insicurezza sono quelli che

28

sfruttano lesecuzione di codice arbitrario da remoto (tramite impiego di exploit specifici), la mancata gestione delle eccezioni o, infine, la mancata o scorretta implementazione delle politiche di gestione delle credenziali di accesso (attacchi di tipo password guessing o brute force). Network security: in questo ambito sono comprese le vulnerabilit che minano il livello di sicurezza globale della rete. Tipicamente, i fattori che concorrono alla determinazione di questo genere di esposizioni sono la tipologia di rete e la conseguente presenza di punti di accesso (potenzialmente sprotetti o non adeguatamente protetti) alla rete privata, la tipologia e la configurazione dei sistemi per il routing ed il firewalling (servizi attivi, ACL, default password e policy del Packet Filler) e la possibilit di effettuare il monitoraggio passivo del traffico alla ricerca di informazioni riservate trasmesse in chiaro (Network Sniffing). Application security: le insicurezze si possono manifestare anche (e soprattutto) nel software applicativo. In particolare, un gran numero di tecnologie e di implementazioni di applicazioni interne risultano vulnerabili ad attacchi mirati a reperire informazioni riservate o ad ottenere un accesso non autorizzato ai sistemi che erogano i servizi pubblici. Alcuni esempi di vulnerabilit a livello applicativo sono lSQL injection, il cross -site scripting, e la possibilit di effettuare session hijacking (per applicazioni web). Procedural security: infine, le stesse procedure volte a migliorare le modalit di gestione della sicurezza possono cadere vittima di falle strutturali allinterno del proprio modello di gestione fornendo, ad esempio, a chi attacca, la possibilit di sfruttare lesistenza di relazioni di fiducia tra le singole macchine o in relazione allelemento umano (tramite attacchi basati su social engineering ed human deception). Per ognuna delle quattro macro-categorie di vulnerabilit descritte, lattaccante cerca di individuare i punti deboli e colpisce ove risulta pi conveniente per la riuscita dellintrusione informatica, utilizzando i mezzi opportuni.

4-CLEANING (Pulizia) Una volta portata a termine lintrusione, generalmente necessario per lattacker procedere con la cancellazione delle tracce lasciate nei file di log, su altre regioni del file system e, se possibile, sugli eventuali dispositivi di monitoraggio delle attivit di rete per il rilevamento delle intrusioni (Intrusion Detection Systems).

29

2.3 Obiettivi degli IDS


Lo scopo principale di un IDS quello di rilevare incidenti prima che essi causino un impatto al sistema stesso. Ad esempio, gli IDS possono rilevare quando un attaccante ha compromesso un sistema dopo averne sfruttato una vulnerabilit. Teoricamente un Intrusion Detection System dovrebbe monitorare ogni sistema e device, essere affidabile al 100% riconoscere un attacco in modo rapido con una diagnosi accurata del problema, semplice, ma allo stesso tempo completo, segnalando o addirittura attivando le procedure per la soluzione e comunque dovrebbe rilevare tutti gli attacchi con un effetto limitato sulle prestazioni. Comunque necessario combinare gli allarmi generati dall'IDS al momento dell'intrusione con l'azione tempestiva del responsabile informativo che provvedere ad attuare le opportune azioni di verifica. Gli IDS possono essere configurati anche per rilevare comportamenti che violano le politiche di sicurezza: in questo senso, gli IDS agiscono in maniera simile ai firewall e riconoscono il traffico che non rispetta certe regole.

Inoltre, gli IDS possono essere utilizzati per: duplicare i controlli effettuati dal firewall. Ad esempio, se lIDS nota del traffico sulla rete che il firewall avrebbe dovuto bloccare, ma che comunque riuscito ad entrare nella rete interna, ad esempio per un errore di configurazione del firewall, lIDS pu ripetere gli stessi tipi di controlli;

30

fornire funzioni di logging per documentare gli attacchi e i tentativi di intrusioni effettuati sulla rete;

notificare gli amministratori della rete, tramite un alert (allarme), ogni volta che si verificano eventi meritevoli di attenzione.

Un IDS pu utilizzare alcuni o tutti fra i seguenti metodi di progettazione:

Occultamento della sua presenza;

Utilizzo di un numero minimo di firme con il massimo effetto;

Filtro online in tempo reale;

Filtro sulle intestazioni dei pacchetti;

Filtro sul contenuto dei pacchetti;

Manutenzione dello stato della connessione;

Utilizzo di una dimensione ottimale della finestra temporale per la corrispondenza delle firme.

2.4 Tipi di IDS


In generale un IDS non si sostituisce mai ai vari controlli effettuati dai meccanismi di sicurezza posti a salvaguardia di un sistema, ma piuttosto cerca di scoprire un loro fallimento. In caso di violazione, o di tentativo di violazione di un sistema vengono infatti compiute azioni anomale che nelle normali operazioni non verrebbero mai eseguite; identificando questultime diventa possibile scoprire la presenza di un eventuale intruso. Una delle difficolt maggiori nelluso efficace di un IDS `e proprio quella di identificare tali azioni, e non confonderle con azioni assolutamente legittime, ancorch poco usuali.

31

In generale si hanno due metodologie principali per riconoscere le anomalie del sistema. Il primo e pi diretto quello chiamato misuse detection, cio la rilevazione diretta di un utilizzo non consentito di alcune risorse. In genere questo viene fatto attraverso una qualche forma di rappresentazione (di norma con una serie di regole, pi o meno complesse) che permetta di definire e osservare quali sono i comportamenti anomali da controllare. Il limite di questo metodo che occorre identificare con chiarezza il misuse, e se qualcuno utilizza un attacco che non era stato previsto questo verr ignorato. A questo problema risponde la seconda metodologia, detta anomaly detection che cerca di classificare (in genere su base statistica, con vari modelli e meccanismi) il comportamento normale, identificando cos come sospette tutte le deviazioni significative da esso; il grande vantaggio di questo approccio la sua generalit, dato che automaticamente in grado di adattarsi per riconoscere nuovi schemi di attacco. La difficolt sta nella scelta dei modelli da utilizzare (cosa misurare, come impostare le soglie di allarme, ecc.) che permettano di selezionare in maniera adeguata (vale a dire sostenibile per il controllo da parte dellamministratore) le eventuali situazioni sospette.

Una seconda classificazione degli IDS quella che distingue fra quelli che eseguono le loro operazioni on-line, in tempo reale, rispondendo immediatamente quando riconoscono un tentativo di intrusione, e quelli che operano off-line, che sono in grado di effettuare il riconoscimento solo eseguendo una verifica in un momento successivo sulla base dei dati raccolti. Nel primo caso vengono generati degli opportuni allarmi (i cosiddetti alert) allaccadere di certe situazioni. Di norma questo viene fatto esaminando gli eventi correnti allinterno di una certa finestra temporale, e al rilevamento di possibili intrusioni vengono attivati gli allarmi, che a loro volta possono innescare azioni successive. In questo caso una delle possibilit quella di approntare delle contromisure automatiche volte a bloccare le operazioni coinvolte nellazione di intrusione (ad esempio bloccare il traffico di rete verso certe macchine). Una reazione automatica di questo tipo espone per al rischio di poter essere sfruttata da un attaccante che abbia identificato la presenza di tali contromisure per rendere inutilizzabile il servizio con un attacco simulato, con il risultato di far fallire il terzo degli obiettivi fondamentali della sicurezza, la disponibilit.

32

Il limite degli IDS che operano in tempo reale quello delle risorse necessarie per eseguire i controlli, in genere questi possono essere molto pesanti sia dal punto di vista computazionale che dal punto di vista dello stoccaggio dei dati. Negli IDS offline invece lanalisi viene svolta successivamente in un secondo tempo, e pertanto si pu spendere pi tempo non essendo necessaria la risposta immediata. In genere con gli IDS che operano offline si ha la capacit di una analisi molto pi completa e dettagliata, e potendo operare senza limiti di tempo, si possono anche trattare moli di dati non analizzabili in tempo reale; il problema che essi, per definizione, sono utilizzabili solo dopo che avvenuto un incidente o un attacco. In alcuni casi per luso di un IDS di questo tipo pu essere estremamente utile per rilevare il tipo di intrusione e porvi rimedio senza essere costretti a soluzioni pi drastiche come la reinstallazione. In molti casi oggi esistono degli IDS che sono in grado di fornire una combinazione di queste due caratteristiche, gestendo sia la generazione di allarmi on-line che la registrazione degli eventi relativi ad un allarme per consentirne una successiva, e molto pi accurata, analisi off-line. Lultima classificazione degli IDS prevede altre due categorie, la prima quella degli IDS host-based, in cui il controllo viene eseguito su una singola stazione, relativamente alle attivit registrate dallIDS sulla stessa, strettamente dipendenti dal sistema operativo, per il tracciamento delle chiamate di sistema, dellutilizzo delle risorse, dei comandi eseguiti e dei passaggi da un livello di privilegi ad un altro. La seconda categoria quella degli IDS network-based, in cui viene invece controllato il traffico su una rete mediante sniffer di rete alla ricerca di tracce di intrusione fra i pacchetti in transito. In genere si tende a identificare questi ultimi, che pi propriamente dovrebbero essere chiamati NIDS (cio Network Intrusion Detection System), con gli IDS generici. Entrambi questi due ultimi approcci presentano vantaggi e svantaggi. Il principale vantaggio di un IDS network-based la possibilit di usare un numero di sonde contenuto per controllare reti anche di dimensioni considerevoli. Tuttavia alcuni tipi di intrusione non possono essere rilevati da tale architettura quali attacchi che coinvolgano canali crittografici. Ad esempio un IDS di rete pu analizzare e rilevare tentativi di attacco rivolti ad una web application, quale linvio di dati mal formattati ad un campo di una form, a meno che essi

33

non vengano mandati attraverso una sessione criptata che renderebbe inutili le firme sulle quali si basa il controllo dellIDS. Fino a una decina di anni fa i sistemi pi importanti erano quelli host-based, tuttavia, lavvento dellera di Internet ha reso la rete uno dei vettori dattacco pi facili e probabili, dando notevole impulso allo sviluppo di sistemi network-based. Si consideri che questi due tipi di approccio non sono contrapposti, ma altamente complementari. Tutte le suite per IDS pi popolari al mondo combinano sonde di tipo host-based e network-based per cercare di coprire quanti pi tipi dattacco possibile. Sar sempre pi importante in futuro un approccio misto di questo tipo, che aprir diverse sfide quali la normalizzazione dei dati derivanti da sensori differenti, la correlazione tra essi, lo sviluppo di sistemi in grado di ragionare su queste viste correlate per fornire analisi di intrusione di pi alto livello.

2.5 Come misurare lefficienza di un IDS


Sono diverse le caratteristiche necessarie ad un IDS per ricoprire in maniera efficiente il proprio ruolo. Quelle fondamentali sono presentate di seguito:

Reattivit: fondamentale per un IDS avere la possibilit di reagire in qualche maniera agli attacchi, ovvero cercare di bloccarli automaticamente. Si parla in

34

questo caso di Intrusion Prevention System, approccio che pone significativi problemi in senso architetturale. Non possibile infatti per un sistema on-line analizzare tutti i dati e individuare un attacco in tempo reale, reagendo e bloccandolo. Se anche il sistema fosse real-time , lunica maniera efficace per consentirgli di operare preventivamente sarebbe quella di porlo in-line, come filtro pregresso a tutto il traffico. Unidea alternativa un IDS on-line e real-time di tipo tradizionale che possa per interagire con un firewall o con le ACL dei router di frontiera, in modo da interrompere la comunicazione tra lhost vittima e lattaccante. Potrebbero per derivarne dei problemi dal momento che traffico legittimo venisse interpretato come malevolo o nel caso in cui un hacker generasse finti attacchi riuscendo a forzare il nostro IDS. Inoltre non garantita la copertura per la rete locale.

Survivability e robustezza: si intende la capacit di garantire il corretto funzionamento del sistema anche in situazioni critiche (deve registrare cosa sta accadendo proprio come una scatola nera). Devono essere implementati opportuni meccanismi di autenticazione, crittografia e verifica di integrit per garantire la sicurezza tra i vari componenti di un IDS e per evitare ogni sorta di attacco di tipo man-in-the-middle. Il sistema deve inoltre essere robusto ovvero non arrestarsi completamente ma esibire una graduale riduzione delle performance man mano che lattacco procede e si aggrava.

Flessibilit: deve essere possibile una totale flessibilit e adattabilit del sistema a circostanze specifiche per ogni singola rete. Questo problema non si riscontra negli IDS anomaly based, ma deve essere ampiamente studiato per sistemi basati su firme.

Adattabilit a nuovi attacchi: i possibili tipi di attacco contro una rete informatica evolvono in continuazione (microevoluzioni cio nuovi attacchi allinterno di categorie gi esistenti o macroevoluzioni che sono metodi di attacco completamente nuovi). Non semplice progettare un IDS in grado di adattarsi a nuove forme di aggressione informatica soprattutto, per esempio, se questa agisca

35

sul livello 2 della pila ISO/OSI, e il sistema sia progettato per il controllo a livello 3. Soluzioni potrebbero essere la revisione totale del motore per forme dattacco completamente nuove, o lo studio di un modello adattabile e aggiornabile per attacchi nuovi ma assimilabili a categorie gi note.

Scalabilit: un buon sistema di rilevamento delle intrusioni deve essere in grado di scalare seguendo la crescita della rete. Per questo motivo le soluzioni networkbased hanno spesso sofferto rispetto a soluzioni host-based, in quanto analizzare gli eventi in modo distribuito sicuramente pi semplice dell analisi di tutto il traffico della rete. Tipicamente, quando un IDS di rete supera la propria capacit di analizzare i pacchetti inizia a lavorare in una modalit a campione, scartando parte del buffer con una tecnica simile a quella utilizzata dai router. Il problema che, nel caso dei router, i meccanismi di ritrasmissione del TCP evitano la perdita di pacchetti, mentre nel caso dell'IDS, la perdita dei pacchetti definitiva e potrebbe trattarsi proprio di traffico interessante. Il nostro sistema quindi deve essere in grado di gestire attacchi multipli concorrenti e gestire quindi un grande quantit di traffico che potrebbe essere stato generato per mettere in crisi il sistema.

Anche per i sistemi di intrusion detection importante quindi avere dei parametri valutativi, secondo i quali poter confrontare vari progetti, magari completamente differenti fra loro, ma tutti con lo stesso obiettivo. Si possono elencare cos:

Accuracy: tale propriet riguarda il corretto riconoscimento degli attacchi subiti dal sistema monitorato e lassenza di falsi allarmi; Performance: per un IDS la performance assimilabile alla velocit con la quale riesce a processare le informazioni di audit. Se tale misura non `e soddisfacente, difficilmente sar possibile fare detection real-time;

Completeness: la completezza la propriet di un IDS di individuare tutti i tipi di attacco; si parla quindi di incompletezza quando il sistema non riesce a riconoscere un particolare attacco. Non essendo possibile avere una conoscenza globale di tutti i possibili attacchi, questa misurazione molto pi difficile delle altre;

36

Fault/Attack tolerance: l IDS stesso deve essere resistente agli attacchi, specialmente a quelli di tipo DOS, e deve essere progettato mettendo questa propriet ai primi posti nella lista degli obiettivi da raggiungere; il miglior IDS del mondo sarebbe del tutto inutile se esistesse un modo semplice per aggirare i suoi controlli.

Timeliness: il tempo di analisi dei dati e notifica dei risultati ottenuti deve essere il pi breve possibile, permettendo cos allamministratore di intervenire prima che lattaccante possa disattivare il sistema di detection o compiere azioni ancor pi dannose.

2.6 Problematiche degli IDS


Si possono riassumere le principali problematiche di un Intrusion Detection System in tre categorie: rilevamento di attacchi nuovi o modificati, errori di classificazione (falsi negativi e falsi positivi) e tempistiche dattacco.

Sebbene si sia gi parlato in precedenza del problema di nuovi tipi di attacchi importante sottolineare un problema sostanzialmente inaffrontabile per sistemi basati su firme ovvero il polimorfismo degli attacchi. In molti casi possibile raggiungere un determinato scopo seguendo una pluralit di metodi rendendo enormemente pi difficile sviluppare delle firme appropriate facendo esplodere, grazie ad una crescita combinatoria, il numero di queste, indispensabili per intercettare tutte le possibili variazioni di questi attacchi. Il polimorfismo un avversario strutturale di qualsiasi sistema IDS basato su misuse detection poich mina alla base lassunto che sia possibile elencare tutte le possibili forme dattacco.

Considerevole attenzione va posta sugli errori commessi da un IDS. Vengono tipicamente suddivisi in due categorie, cos come gli errori di classificazione in generale. Si denota con falso positivo una situazione in cui lIDS segnala come anomala unazione legittima o innocua.

37

Si definisce invece falso negativo quando, viceversa, un IDS non evidenzia unazione sicuramente maliziosa. Sebbene i falsi positivi possano sembrare innocui ci non sempre vero: unIDS che segnala in continuazione come anomale azioni perfettamente normali dopo un po risulter essere un pessimo dispositivo. Eliminare i falsi positivi quindi uno dei target della ricerca sugli IDS, in particolare per sistemi di anomaly detection, in quanto a meno di errori nelle firme molto difficile che un sistema di misuse detection fornisca dei falsi positivi. A tal proposito si consideri che spesso quelli che agli utenti finali, in particolare di sistemi di misuse detection, indicano come falsi positivi sono in realt le indicazioni di attacchi veri e propri contro piattaforme software o hardware che essi non hanno. Ci che lIDS in questi casi ha rilevato non un falso positivo bens un verissimo attacco che qualcuno alla cieca ha rivolto contro le macchine sbagliate. Sta nellinteresse dellamministratore in tal caso scegliere se essere avvertito di tali attacchi, che per quanto innocui non sono comunque un buon sintomo, o meno. I falsi negativi sono tuttora un problema aperto: si tratta del mancato riconoscimenti di una forma dattacco. In generale, in un sistema di misuse detection un falso negativo associato alla mancanza di una firma per lattacco effettuato, ricadend o nel problema esposto poco sopra del riconoscimento di nuovi attacchi. In sistemi basati sullindividuazione di anomalie invece pi probabile che si abbia un falso negativo magari anche su un attacco che in precedenza era stato riconosciuto proprio a causa della natura statistica di questo tipo di sistemi. Si menziona infine il problema dellinterleaving, un attacco cio pu essere costituito da un insieme di eventi indipendenti non necessariamente correlati nel tempo e che presi singolarmente potrebbero sembrare innocui. Inoltre spesso gli eventi possono essere scambiati tra loro nella sequenza temporale senza per questo far perdere potenza allattacco, rispettando un ordinamento che solo parziale, o contenere al loro interno elementi variabili che possano assumere uninfinit di valori, causando problemi di unificazione. Un ultimo problema legato al fattore tempo l uncertain reasoning ovvero lincapacit di determinare algebricamente se possibile fermare lanalisi o se necessario

38

rimanere in attesa del completamento di un attacco. Nasce per questo la necessit di un un timeout o qualche altro meccanismo per mezzo del quale si stabilisca se considerare scadute osservazioni molto vecchie per far spazio a quelle nuove o meno. Se cos non fosse offriremmo ad un attaccante molto intelligente un metodo per disabilitare lIDS intasando la memoria con sequenze appese. Anche lintroduzione di un timeout pu offrire unottima scappatoia allattaccante: lattacco in atto non deve essere concluso prima che sia scattato il timeout in modo da cancellare almeno in parte tracce del suo attacco prima di concluderlo impunemente. Molto facilmente per la scadenza del timeout egli pu o aspettare dilazionando lattacco nel tempo o provocare un flush della sequenza dattacco.

39

Capitolo 3 Data streams: Algoritmi e applicazioni


3.1 Introduzione ai data streams
Sono stati finora discussi i principali aspetti della sicurezza informatica e degli Intrusion Detection System. Si posta lattenzione soprattutto sugli attacchi alle reti di computer e sui problemi che affligono gli IDS. Difetti e problematiche dovuti principalmente alla difficolt nellanalisi della grande quantit di dati scambiati in rete (traffico internet). Si introdurr quindi il concetto di data streams e si cercher di capire come gestire, analizzare e studiare unimportante massa di informazioni attraverso lapplicazione di algoritmi in grado di sintetizzare e processare tale flusso di dati consentendo unanalisi statistica volta allindividuazione di anomalie ed errori.

Si pu definire un flusso di dati (data stream) come una sequenza di segnali digitali codificati utilizzata per rappresentare le informazioni in trasmissione. S. Muthukrishnan in [14] cerca di essere pi specifico definendo tale flusso come una serie di dati che provengono ad una frequenza molto elevata. Con tale frequenza si sovraccaricano le comunicazioni e le infrastrutture di calcolo, diventa quindi difficile: Trasmettere (T) lintero input del programma;

Calcolare (C) sofisticate funzioni su ampie parti di input a questo rate;

Immagazzinare (Store S), catturare temporaneamente o archiviare molti dati a lungo termine.

Se quindi i collegamenti sono lenti e sono presenti errori di comunicazione ci potrebbero essere dei ritardi nella ricezione di tali flussi di dati, oppure se la potenza di calcolo

40

limitata e il programma complesso si impiegherebbe troppo tempo per ricevere una risposta. Esistono due recenti sviluppi che hanno indotto a produrre nuove sfide per le infrastrutture TCS: la capacit di generare automaticamente dati altamente dettagliati comprendente aggiornamenti continui e la necessit di eseguire sofisticate analisi del flusso di dati, in aggiornamento continuo, quasi in tempo reale. Il primo dei due nato nelle ultime decadi con il crescente utilizzo delle reti informatiche anche in campo bancario. Altri sistemi di reti dedicate forniscono massivi flussi di dati: comunicazioni via satellite, dati meteorologici derivanti dai radar, misurazioni geologiche e astronomiche. Internet stato lo strumento che sicuramente ha distribuito sia le sorgenti sia i consumatori (milioni di utenti) di questo flusso importante di informazioni. Ha infatti aumentato la frequenza delle transazioni tremendamente generando stream multipli: browser click, queries di utenti, logs di traffico IP, mail, web-server e peer-to-peer downloads. Le reti wireless accresceranno ancora tale fenomeno. Per quanto riguarda lanalisi dei dati tradizionalmente si eseguivano off-line attraverso linterrogazione di database (transazioni, analisi di trend, previsioni). Le recenti applicazioni di monitoraggio in campo finanziario, atmosferico, astronomico, internet, hanno avuto la necessit di compiere unanalisi, quasi in tempo reale, alla ricerca di ev enti estremi, frodi, intrusioni, attivit anomale o inusuali. Non era pi possibile gestire tutte queste informazioni attraverso semplici database, sebbene di dimensioni notevoli, ma sorto il bisogno di strutture dati in grado di diminuire le dimensioni dei database e sintetizzare massivi datasets. Si descrivono di seguito alcuni aspetti formali del modello dei data streams ponendo lattenzione sulle emergenti teorie in questo campo, sullapplicazione di strutture dati tipo sketch per la sintesi di tali flussi di informazioni arrivando a presentare propriet e funzionalit dellalgoritmo utilizzato per lo svolgimento del lavoro di tesi.

41

3.2 Data streaming: modelli


Si consideri uno stream in input a1 , a2 ,... che arriva sequenzialmente, elemento per elemento, e descrive un sottostante segnale , funzione uni-dimensionale . I modelli differiscono su come descrive . e appare nellordine crescente di .

Time series model. Ogni

elemento

Questo un modello adattabile per dati in serie temporale dove, per esempio, si sta osservando del traffico IP ogni cinque minuti.

Cash register model. allora

sono incrementi di dove

. Si consideri

lo stato del segnale dopo li-esimo elemento

nello stream. Questo forse il modello pi popolare. infatti adatto ad applicazioni come il monitoraggio di indirizzi IP che accedono ad un Web server, o che comunque inviino pacchetti verso una certa destinazione, in quanto pu accedere ad un Web server molteplici volte o inviare molteplici pacchetti per molto tempo. Tale modello era apparso in letteratura prima, ma fu formalmente battezzato in [] con questo nome.

Turnistile model. In questo caso , allora

sono aggiornamenti di dove

. Se pensiamo ad

lo stato del segnale dopo che

li-esimo elemento si sia presentato nello stream. il modello pi generale ed appropriato in situazioni in cui sono necessaria tante operazioni di insert quante di delete. Nella progettazione dellalgoritmo si sceglier quel modello che pi si adatta alle proprie esigenze. Si dovr per tener conto di alcuni parametri per la misurazione delle performance:

Tempo per processare un elemento

nello stream;

Spazio usato per immagazzinare le strutture dati

al tempo .
42

Tempo necessario per calcolare funzioni su .

Sarebbe desiderabile avere, ad ogni tempo

nello stream di dati, un tempo di , preferibilmente poly-

processamento, uno spazio e un tempo di calcolo dellordine logaritmico in

. Strutture dati tradizionali come alberi di ricerca e supportano query in un tempo dellordine

processano ogni update in un tempo

, ma utilizzano uno spazio lineare per immagazzinare i dati in input. Un algoritmo Data streams pu essere pensato come una struttura dati dinamica, ma ristretto alluso di uno spazio sub-lineare e le implicazioni che ci comporta. Ci si potrebbero a questo punto porre due domande: perch utilizzare uno spazio sublineare e funzioni poli-logaritmiche. Alla prima domanda si pu rispondere dicendo che generalmente un flusso dati cos massivo da non permettere di memorizzare tutto ci che arriva (si pensi infatti al traffico internet); ci si avvale quindi di un sottoinsieme di tutte le osservazioni sullo stream di dati. Per la seconda osservazione si pu dire che il logaritmo nella dimensione in input il pi basso limite sul numero di bit necessario ad indicizzare e rappresentare un segnale, poli fornisce un terreno di gioco famigliare.

3.3 Data streaming: uno scenario interessante


Si presenta uno scenario popolare per il data streaming. Internet comprende routers connessi fra loro che inviano pacchetti IP. Gestire tali reti necessita lindividuazione di falle, attivit inusuali in atto, ecc Il traffico dovrebbe essere analizzato in tempo reale. Per un router pu essere visto a differenti livelli:

1. A livello pi basso, il packet log: ogni pacchetto IP ha un header che contiene indirizzo IP sorgente e destinazione, numero di porte, ecc; 2. A livello pi alto c il flow log: ogni flusso una collezione di pacchetti con alcuni valori per certi attributi chiave tali che IP sorgente e destinazione e file di log

43

contengono informazioni cumulative sul numero di byte, sui pacchetti inviati, sul tempo dinizio e fine trasmissione, sul tipo di protocollo per ogni flusso;

3. Infine vi SNMP log che un aggregato di dati del numero di bytes inviati ogni pochi minuti sulla linea di comunicazione.

Molti altri log possono essere creati a partire da traffico TCP/IP, ma questi possono bastare come esempio per formulare alcune query:

1. Quanto traffico HTTP passato oggi sulla linea di comunicazione da un determinato indirizzo IP sorgente?

2. Quanti indirizzi IP diversi usano una determinata linea per inviare il proprio traffico dallinizio del giorno, o quanti IP stanno correntemente usando la stessa linea?

3. Quali sono i k flussi pi importanti nella giornata, o correntemente in progresso?

4. Quanti flussi comprendono solo un tipo di pacchetto? Strettamente collegata a questa domanda sar: Trovare quei pacchetti TCP/IP SYN senza che in risposta a questi ci siano dei pacchetti SYN/ACK. Tutto ci fondamentale nellindividuazione di attacchi tipo denial-of-service.

5. Quanto traffico ieri stato comune o simile in due router?

6. Per ogni indirizzo IP ed ogni cinque minuti di intervallo, contare il numero di bytes e pacchetti relativi a traffico HTTP. Questa una query interessante: come si pu rappresentare loutput che anche uno stream e qual una approssimazione adatta in tal caso?

44

Si pu formalizzare uno degli esempi sopra citati in termini di modelli di data stream e funzioni adatte da calcolare. Si consideri il numero due: quanti indirizzi IP diversi usano una determinata linea per inviare il proprio traffico dallinizio del giorno. Si potrebbe monitorare il packet log. Lo stream in input pacchetti IP su un dato link, con il pacchetto sar una sequenza di . Si avr , tutti ; da qui il avente lindirizzo IP

il numero di pacchetti inviati da un IP sorgente , per inizializzati a zero allinizio del giorno. Ogni pacchetto aggiunge uno a

modello risulta essere quello del Cash Register. Il conto del numero di indirizzi IP distinti che usano il medesimo link durante la giornata pu essere svolto determinando il numero di , non uguali a zero, ogni volta. Si passa adesso alla seconda parte dellesempio in questione: quanti IP stanno correntemente usando la stessa linea. Pi formalmente ad ogni tempo indirizzi IP, tali che alcuni flussi si considerano

iniziano un momento prima di e termineranno dopo .

Nel file di log dei pacchetti di rete ci sono informazioni per identificare in primo cos come lultimo pacchetto in un flusso. Si indica con correntemente coinvolto un indirizzo IP sorgente , per zero allinizio del giorno. Se un pacchetto se la sorgente del pacchetto il numero di flussi in cui , tutti inizializzati a

allinizio del flusso, si aggiunge uno a se la

; se alla fine del flusso si sottrae uno da

sorgente del pacchetto

; altrimenti non si fa niente. Il modello in tal caso quello

Turnstile. Il conto del numero di indirizzi IP distinti che stanno correntemente usando il medesimo link pu essere svolto determinando il numero di volta. , non uguali a zero, ogni

3.4 Principi matematici base


Dopo questa breve descrizione sul principio di funzionamento dei due modelli applicabili ai data streams si passa adesso ad una discussione pi tecnica sulla matematica e sugli algoritmi applicabili ai modelli di data streams. Si pone lattenzione su due tecniche: il campionamento dei dati (Sampling) e le proiezioni randomiche (Random projection), le quali saranno oggetto di approfondimento in quanto alla base dellalgoritmo utilizzato in fase di tesi.

45

3.4.1 Sampling Sono stati proposti diversi metodi di campionamento: domain sampling, universe sampling, reservoir sampling, distinct sampling, ecc Algoritmi di campionamento sono conosciuti per: Trovare il numero di elementi distinti nel Cash Register data stream[]; Trovare i quantili su di un Cash Register data stream[]; Trovare gli elementi pi frequenti in un Cash Register data stream[].

Ognuno di questi problemi ha diverse applicazioni, per esempio lo sniffing di pacchetti IP su cui si possono effettuare diverse statistiche e rispondere a determinate queries. Ci sono per due difficolt con il campionamento per i problemi dei data streams. Primo il campionamento non un potente strumento per alcuni casi. Per eseguire sofisticate analisi sono necessari molti campioni. Secondo, nel modello Turnstile il metodo del campionamento non funziona: nel flusso di dati, se un campione viene cancellato, sarebbe impossibile ricampionare quellelemento nel passato, perdendo quindi un dato che potrebbe essere importante.

3.4.2 Random projection

Questo approccio si basa sulla riduzione della dimensionalit, usando proiezioni su vettori random. Questi ultimi sono generati dallefficiente calcolo dello spazio di variabili random. Tali proiezioni sono chiamate sketches e tipicamente funzionano con il modello Turnstile. Gli sketches con differenti distribuzioni stabili sono utili per la stima di varie norme sui data streams. In particolare strutture tipo sketch che utilizzano variabili dei data streams, usando .

random Gaussiane producono una buona stima della norma distribuzioni di Cauchy si ottiene una buona stima della norma

Tale metodo si dimostra utile anche per il calcolo di altre funzioni:

46

Usando sketch

, per

, si pu stimare il numero di elementi distinti in un

modello Turnsile di data stream;

Usando varianti di sketch modello Turnstile;

si possono stimare quantili in qualsiasi momento nel

Usando varianti di sketch

e altre tecniche, si possono dinamicamente tracciare

gli elementi pi frequenti, wavelets e istogrammi nel modello Turnstile; Usando sketch , si possono stimare query self-join di un database. Questo si

rivela utile per la stima di inner product di vettori, che in generale risulta difficile, ma pu essere stimato con grande precisione se linner product ampio. Ci sono molte variazioni delle proiezioni random come Random subset sums, counting sketches e anche Bloom filters.

47

Capitolo 4 Count-Min Sketch


Si introduce in questo capitolo la struttura dati a spazio sub-lineare, implementata e testata nel lavoro di tesi, Count-Min Sketch per la sintesi dei data streams. Tale sketch permette queries fondamentali quali point, range e inner product queries con possibilit di risposta molto veloce; anche possibile applicare tale struttura dati per risolvere importanti problemi come la ricerca di quantili ed elementi frequenti. Il limite di tempo e spazio entro i quali il Count-Min Sketch riesce a risolvere tali problemi tipicamente compreso tra e .

4.1 Introduzione
Si consideri un vettore dimensione rappresentato in maniera incrementale. Questo vettore ha . per ogni . Gli updates al vettore (modello cash register), e . Ad ogni tempo verr effettuata .

, e il suo stato corrente al tempo pari a zero, cio

Inizialmente il vettore

sono rappresentati come stream di coppie. Il -esimo update sar , cio

(modello turnstile) per ogni una query per il calcolo di certe funzioni di interesse su

Tale setup iniziale lo scenario tipico dei data stream come si discusso in precedenza. Per soddisfare i requisiti di un modello data stream lo spazio usato dallalgoritmo dovrebbe essere piccolo, al massimo polilogaritmico in , esplicitamente lo spazio usato per rappresentare . Dal momento che lo spazio si presenta sub-lineare nei dati e nellinput, la struttura dati usata dallalgoritmo per rappresentare il flusso dati in input una sintesi sketch di questultimo; a causa di questa compressione non sar possibile un calcolo esatto delle funzioni su , ma sar probabilmente necessaria qualche

approssimazione. Processare un update dovrebbe essere semplice e veloce, cos come rispondere ad una query dovrebbe essere veloce e garantire una certa accuratezza. Tale
48

garanzia di accuratezza verr fatta in termini di determinati parametri specificati dallutente, e , cio lerrore nel rispondere ad una query sar allinterno di un fattore

con una probabilit . Lo spazio e il tempo di update dipenderanno conseguentemente da tali parametri. Come gi accennato nel capitolo precedente molte strutture dati tipo sketch sono state proposte nel contesto dei data streams. Quantit per cui efficienti sketches sono stati progettati includono le norme e di vettori, il numero di elementi differenti in una sequenza, relazioni join e self-join, ecc Tipicamente gli sketches sono funzioni lineari dei loro input, e possono essere considerati come proiezioni di un sottostante vettore rappresentando i dati come matrici di proiezioni scelte casualmente. Bench tali strutture si siano dimostrate potenti, bisogna sottolinearne alcuni difetti: Sebbene gli sketches usino uno spazio piccolo, questultimo avr un fattore moltiplicativo dellordine . Questo scoraggiante perch per o

gi si dimostra un alto costo in termini di spazio e spesso di tempo per il calcolo di funzioni e il processo di update. Insomma per risultati accurati lo spazio richiesto potrebbe essere intollerabile.

Molti sketches richiedono un tempo lineare nelle dimensioni dello sketch per ogni update dei sottostanti dati. Tipicamente gli sketches occupano da pochi kylobytes fino a qualche megabytes in termini di memoria e processare cos tanti dati pu severamente limitare la velocit di update.

Gli sketches sono tipicamente costruiti usando hash functions con grosse garanzie di indipendenza, come lindipendenza p-wise, che pu essere difficile da calcolare soprattutto per limplementazione in hardware.

Molti sketches descritti in letteratura sono adatti al calcolo di un singolo prespecificato aggregato. Invece nei data streams vengono monitorati molteplici aggregati sullo stesso stream e ci porterebbe alluso di pi sketches costituendo un overhead proibitivo.

49

Questi svantaggi limiterebbero luso di molti algoritmi, conosciuti nellambito dei data streams, a poche applicazioni. Ci che viene proposto in [15] una nuova struttura dati basata su sketches denominata Count-Min Sketch. I vantaggi che se ne traggono sono notevoli:

Spazio usato proporzionale a

Tempo di update significativamente sub-lineare nelle dimensioni dello skech;

Sono richieste solo funzioni di hashing pairwise indipendent che sono facili da costruire;

Questi sketches possono essere usati per differenti queries e molteplici applicazioni;

Tutte le costanti sono esplicite e di piccole dimensioni;

Migliorano i limiti di spazio da un fattore stesso tipo, a un fattore di significativo.

, richiesto per altre strutture dello ad fattore 1, che

e quelli di tempo da un fattore

4.2 Famiglie di funzioni hash universali


Per trattare il concetto di funzioni hash si parte da quello di tabella hash. In informatica una hash table, detta anche hash map, una struttura dati usata per mettere in corrispondenza una data chiave con un dato valore. Viene usata per l'implementazione di strutture dati astratte associative. Pu usare qualsiasi tipo di dato come indice e tutte le operazioni si possono fare in tempo circa costante T(n) = (O(1)). L'hash table molto utilizzata nei metodi di ricerca nominati Hashing. L'hashing un'estensione della ricerca indicizzata da chiavi che gestisce problemi di ricerca nei quali le chiavi di ricerca non presentano queste propriet. Una ricerca basata su hashing completamente diversa da una

50

basata su confronti: invece che spostarci nella struttura data in funzione dell'esito dei confronti tra chiavi, cerchiamo di accedere agli elementi nella tabella in modo diretto tramite operazioni aritmetiche che trasformano le chiavi in indirizzi della tabella. Esistono vari tipi di algoritmi di hashing. L'hashing un problema classico dell'informatica; molti algoritmi sono stati proposti, studiati a fondo e impiegati in pratica. Il primo passo per realizzare algoritmi di ricerca tramite hashing quello di determinare la funzione di hash: con il metodo hash infatti un elemento con chiave k viene memorizzato nella tabella in posizione h(k) dove la funzione h() appunto detta funzione hash. Lo scopo della funzione hash di definire una corrispondenza tra luniverso U delle chiavi e le posizioni di una tabella hash h:U .

Necessariamente la funzione hash non pu essere iniettiva, ovvero due chiavi distinte possono produrre lo stesso valore hash, quando questo accade si dice che si ha una collisione. E possibile che la scelta di chiavi sia tale da avere un elevato numero di collisioni. Il caso peggiore che tutte le chiavi collidano in un unico valore hash; in questo caso le prestazioni delle operazioni con tabelle hash, dove la maggior parte delle chiavi hanno un unico valore hash, peggiorano fino a .

4.2.1 Metodo della Funzione Universale Lidea di base di scegliere per ogni chiave una funzione hash casualmente da una famiglia di funzioni che rispettano specifiche propriet, in questo modo, per qualsiasi insieme di chiavi, si possono avere molte collisioni solo a causa del generatore pseudo casuale, ma si pu rendere piccola la probabilit di questo evento.

Sia H un insieme finito di funzioni hash che vanno da U in H un insieme universale se per ogni coppia di chiavi distinte x, y funzioni hash h H per cui h(x) = h(y) esattamente |H |/ m.

. U, il numero di

Ci equivale a dire che con una h scelta a caso la probabilit che h(x) = h(y) 1 / m. Infatti si consideri una coppia x, y e la prima h in H, si conti 1 se ce una collisione e 0 se non ce. Si faccia lo stesso con la seconda h e cos via. Alla fine il totale cumulato delle collisioni sar |H| / m e il numero di funzioni provate |H|.

51

Si ha pertanto una probabilit pari a 1 / m di estrarre una h che generi una collisione.

4.2.2 Collisioni improbabili

Teorema: se si usa un insieme universale di funzioni per determinare i valori hash di n chiavi su una tabella di dimensione m se n m allora il numero medio di collisioni per ogni chiave < 1

Dimostrazione: per ogni coppia y, z di chiavi sia cy,z una variabile casuale che 1 in caso di collisione (h(y) = h(z)) e 0 altrimenti per definizione di insieme universale si ha che il valore medio delle collisioni per ogni coppia di chiavi E[cy,z] = 1 / m sia Cx il numero totale delle collisioni che coinvolgono la chiave x in una tabella hash T di dimensione m contenente n chiavi allora il valore atteso di Cx sar la somma dei valori attesi di collisione fra le coppie di chiavi x e y per ogni chiave y gi presente in tabella

4.2.3 Come costruire un insieme universale di funzioni hash

Si scelga un numero primo p che sia maggiore di ogni possibile chiave k, cio si assume con . a<pe0 b < p si definisca una funzione hash.

Per ogni coppia di interi (a,b) tali che 1

La famiglia di funzioni:

52

universale.

4.3 Count-Min Sketches


Si introduce ora la struttura dati denominata Count-Min Sketch, nome derivante dalle due operazioni basilari usate per rispondere alle point queries, il conto prima e il calcolo del minimo dopo.

Struttura dati. Il Count-Min Sketch con i parametri bidimensionale di contatori di larghezza w e profondit d: e

rappresentato da un array , con:

. Il vettore degli ingressi inizializzato con tutti i valori a zero. sono scelte

Addizionalmente d funzioni di hashing

uniformemente a random da una famiglia pairwise-independent. Cos si mantiene un totale di tabelle hash, con un totale di celle hash.

Figura 4.3.1. Array di

celle hash

Procedura di update. Quando una coppia lelemento aggiornato di una quantit , quindi

arriva in update, significa che aggiunto come una unit al

conteggio in ogni riga; il contatore determinato da

. Formalmente,

53

Cercando di essere pi specifici: si applica lhash function di ogni elemento proveniente dallo stream di dati, e si aggiunge il conteggio dellelemento ad ognuna delle corrispondenti posizioni nelle differenti hash tables. A causa delle collisioni i

conteggi delle hash tables non corrisponderanno esattamente al conteggio di ogni elemento proveniente dallo stream. Ci sar una sovrastima per conteggi interi positivi, mentre potr esserci sia una sovrastima che una sottostima per conteggi positivi e negativi (cancellazioni). Lo spazio usato dal Count_Min Sketch sar un array di dimensioni parole e , che comprende

funzioni di hashing, ognuna delle quali pu essere immagazzinata usando

due parole (discorso valido per pairwise-independent hash function). La procedura appena descritta rappresentata in figura 4.3.2.

Figura 4.3.2. Ogni elemento mappato su di una cella in ogni riga dellarray di contatori: quando un update di count dellelemento arriva, aggiunto ad ognuna di queste celle.

4.4 Procedure di stima


4.4.1 Point query

La risposta a

(point query) data da ha le seguenti garanzie: .

. ; e, con probabilit al minimo

Teorema 1. La stima ,

54

Dimostrazione. Si introducono le variabili indicatori

, che valgono 1 se

e 0 altrimenti. Dalla indipendenza pairwise delle funzioni di hashing si avr:

Si definisce la variabile momento che tutte le costruzione altre direzioni, si osserva che

(casuale sulle scelte di

) essere

Dal

sono positive in questo caso,

una variabile non negativa. Per . Per

. Quindi chiaramente,

per lindipendenza pairwise di

, e la linearit dellexpectation.

Dallinegualianza di Markov si ha che:

Con ci si vuole dire che, nel caso di contatori interi positivi, il minimo di ognuna delle possibilit fornisce un limite minimo (della norma pi stretto con probabilit al , la

. In questo caso, se le frequenze di e

elementi differenti sono

frequenza stimata dellelemento giace tra

. Questo minore del limite

massimo di un fattore . Applicando linegualianza di Markov, chiaro che la probabilit di violare il limite per un dato ingresso . La probabilit che esso sia violato da tutti i ingressi al massimo .

55

Il tempo per produrre la stima

dal momento che trovare il minimo conteggio pu

essere fatto in tempo lineare; lo stesso limite di tempo valido anche per la procedura di update. Lo spazio usato sar pari a .

Per completezza si riportano altre procedure di stima proprie del Count-Min Sketch, ma che non sono state implementate in fase di tesi.

Procedura di stima. Questa volta la risposta a

data da

Teorema 2. Con probabilit

Dimostrazione. Si osservi che che ogni conteggio sia al di sotto di nota che la mediana di

, e quindi la probabilit meno di . Applicando i limiti di Chernoff si .

copia di questa procedura sia sbagliata minore di e lo spazio usato parole.

Il tempo per produrre la stima

4.4.2 Inner Product Query

Procedura di stima. Si pone per vettori non negativi e .

. La stima

Teorema 3.

e con probabilit

56

Dimostrazione.

Chiaramente

per vettori non negativi. Per lindipendenza pairwise di ,

Quindi per linegualianza di Markov, richiesto. Lo spazio e il tempo per produrre la stima tempo .

, come

. Gli aggiornamenti sono eseguiti in

4.4.3 Range Query

Si definisce il vettore altrimenti. La query

di dimensione

tale che

, e .

pu essere semplicemente riformulata come

Questo metodo ha per due svantaggi: primo la garanzia dellerrore in termini e pertanto le somme ad ampio range hanno una garanzia derrore che cresce linearmente con lampiezza dellintervallo; e secondo il costo temporale per calcolare direttamente lo sketch per dipende linearmente dalla larghezza del range,

. Infatti chiaro che calcolare range di somme in questo modo usando tali sketches non tanto differente dal calcolare point queries per ogni elemento nel nellintervallo, e sommare le stime. Per evitare la complessit di calcolo si potrebbero utilizzare ranges dinamici: un range dinamico un intervallo nella forma parametri e . per dati

Procedura di stima. Si prendono queries

Count-Min Sketches per rispondere a range

in modo approssimato. Ogni range query pu essere ridotta ad un massimo

57

di

dynamic range queries, le quali a turno possono essere ulteriormente ridotta ad membro di ranges nellintervallo

una singola point query. Ogni punto nel range dinamici, uno per ogni

. Uno sketch preso per ogni , e aggiorna ognuno di questi per tutti gli , si calcolano al massimo

insieme di ranges dinamici di lunghezza

update che arrivano. Quindi data una range query

ranges dinamici che canonicamente ricoprono lintero intervallo e si pone che la stima sia data dalla somma di molte point queries.

Si consideri

come la risposta alla query

la stima ottenuta

usando la procedura descritta sopra.

Teorema 4.

e con probabilit al minimo

Dimostrazione. Applicando linegualianza del Teorema 1, ogni stimatore utilizzato per formare di questi sar

. Si consideri

; lexpectation dellerrore additivo per ognuno

, per la linearit dellexpectation degli errori di ogni stima

puntuale. Applicando linegualianza di Markov, la probabilit che questo errore additivo sia maggiore di probabilit sar al massimo . per ogni stima minore di ; da qui per tutte le stime la

Il tempo di produrre una stima o per eseguire un update sar .

. Lo spazio usato

58

Capitolo 5 Implementazione e test dellalgoritmo Count-Min Sketch


5.1 Implementazione dellalgoritmo
Lalgoritmo che implementa il Count-Min Sketch ed il suo funzionamento stato scritto in linguaggio c. Come gi detto nel precedente capitolo il Count-Mn Sketch con i parametri Ogni ingresso nellarray sar inizialmente a zero. Inoltre scelte casualmente da una famiglia pairwise-independent.

rappresentato da un array bi-dimensionale di contatori che avr larghezza w e profondit . funzioni di hashing saranno

5.1.1 Inizializzazione I passi per linizializzazione sono stati i seguenti:

Creazione di un array di dimensioni

con valori iniziali tutti a zero: stata e (la (laccuratezza che si vuole ottenere) e

necessaria, in tal caso, una allocazione dinamica della memoria in quanto non sono note senza i parametri certezza con cui si raggiunge laccuratezza), immessi dallutente;

Allocazione della memoria per le funzioni di hashing e inizializzazione dei semi con numeri random.

59

5.1.2 Update

La procedura di aggiornamento consta delle seguenti operazioni:

Calcolo delle

funzioni di hashing per ogni ingresso: la funzione utilizzata ritorna

lhash di un valore attraverso luso di semi ed una successiva operazione di modulo a 32 bit. prevista un ulteriore operazione di modulo perch il dominio di tale funzione venga ristretto da (larghezza dellarray); (dimensioni delluniverso )a

Per inserire un elemento

nel Count-Min Sketch

hash function prese

uniformemente a random sono usate per determinare quale contatore aggiornare. Per ogni riga il contatore incrementato di uno. La procedura per simile: per ogni riga il contatore

cancellare un elemento decrementato di uno.

5.1.3 Query

La procedura di query descritta come: Calcolo del valore di hash dellelemento

inserito (il numero della colonna);

Calcolo del minimo valore sulle celle nella colonna.

5.2 Verifica di funzionamento


Per verificare la correttezza e il funzionamento dellalgoritmo stato necessario generare numeri pseudo-random, caricarli allinterno del Count-Min Sketch come stream in input e impostare i parametri di errore e probabilit. Si confronter quindi la stima sulla molteplicit di un determinato numero restituita dal Count-Min Sketch con la reale occorrenza di quel numero. Perch lalgoritmo funzioni in modo corretto sar opportuno che:

60

Dati

loccorrenza reale di un numero in posizione , e

la stima restituita dal

Count-Min Sketch: o o con probabilit al minimo

cio

con

Quindi, come anche dimostrato nel capitolo precedente, nella risposta alla query del CountMin Sketch sar presente una sovrastima che superer loccorrenza reale del numero richiesto di una quantit pari al prodotto dellerrore, passato in input, e la cardinalit dellinsieme dei numeri in ingresso al Count-Min Sketch con probabilit minore o uguale a .

In particolare stata scelta una distribuzione di numeri uniformemente distribuiti in un intervallo compreso tra e . Si distingue quindi tra dominio (cio quanti dati diversi

riceve il Cout-Min Sketch) e molteplicit dei dati in ingresso (ci che interessa ai fini della query). Il dominio dovr essere necessariamente maggiore della profondit del Count-Min Sketch e la molteplicit far si che ogni dato si presenti una o pi volte. Il dominio non nientaltro che lintervallo sopra citato e per quanto riguarda la molteplicit stato scelto di generare 50.000 numeri casuali in venticinque passi, cio la query stato calcolata per 1000, 2960, 4920, 6880, 8840, 10800, 12760, 14720, 16680, 18640, 20600, 22560, 24520, 26480, 28440, 30400, 32360, 34320, 36280, 38240, 40200, 42160, 44120, 46080 e 48040 elementi.

In figura 5.2.1 viene mostrata una distribuzione uniforme di numeri random, per 50.000 elementi. Si scelto di riportare una finestra di 100 elementi per questioni di chiarezza.

61

Figura 5.2.1 Distribuzione uniforme di numeri random in un dominio compreso tra 0 e 1000.

Si riporta una tabella con i dati utilizzati per le prove.

0.1 0.1 0.1 0.01 0.01 0.01 0.001

0.1 0.01 0.001 0.1 0.01 0.001 0.001

W 28 28 28 272 272 272 2719

d 3 5 7 3 5 7 7

wd 84 140 196 816 1360 1904 19033

Di seguito vengono mostrati alcuni dei pi significativi grafici in cui sono messe a confronto la stima effettuata dal Coun-Min Sketch e occorrenza reale del numero stesso.

62

Figura 5.2.2 Stima del Count-Min Sketch per una distribuzione uniforme di 50000 numeri casuali in un intervallo compreso tra 0 e 1000 con e

Figura 5.2.3 Stima del Count-Min Sketch per una distribuzione uniforme di 50000 numeri casuali in un intervallo compreso tra 0 e 1000 con e

63

Figura 5.2.4 Stima del Count-Min Sketch per una distribuzione uniforme di 50000 numeri casuali in un intervallo compreso tra 0 e 1000 con e

Figura 5.2.5 Stima del Count-Min Sketch per una distribuzione uniforme di 50000 numeri casuali in un intervallo compreso tra 0 e 1000 con e

64

Figura 5.2.6 Stima del Count-Min Sketch per una distribuzione uniforme di 50000 numeri casuali in un intervallo compreso tra 0 e 1000 con e

Figura 5.2.7 Stima del Count-Min Sketch per una distribuzione uniforme di 50000 numeri casuali in un intervallo compreso tra 0 e 1000 con e

65

Figura 5.2.8 Stima del Count-Min Sketch per una distribuzione uniforme di 50000 numeri casuali in un intervallo compreso tra 0 e 1000 con e

Nei grafici riportati in figura 5.2.2, 5.2.3 e 5.2.4 per dimensioni del Count-Min Sketch pari a 84, 140 e 196 presente una sovrastima del valore reale abbastanza importante (circa 25 volte in pi). Ci per non contraddice le previsioni e soprattutto si resta nei limiti imposti dal Teorema 1 dimostrato nel capitolo precedente. Aumentando le dimensioni del CountMin Sketch (figure 5.2.5, 5.2.6 e 5.2.7) si nota un deciso miglioramento della stima (si occupa quasi 1 KB di memoria). Nella figura 5.2.8 non vi sovrastima ma le dimensioni (pi di 19 KB) superano quella che la dimensionalit dei dati in ingresso. Si riporta infine un grafico in cui si mostra landamento dellerrore relativo medio

con

la dimensionalit dellinsieme dei dati in input, al variare delle dimensioni del

Count-Min Sketch.

66

Figura 5.2.8 Errore relativo medio al variare delle dimensioni del Count-Min Sketch

67

Capitolo 6 La comunicazione TCP/IP e lattacco Denial Of Service

6.1 Come funziona il TCP/IP


L'IP (Internet Protocol) uno dei principali protocolli del livello internetWorking del modello DOD/DARPA (o nel caso del modello OSI nel livello network), serve per la comunicazione su una rete a commutazione di pacchetto.

Un indirizzo IP identifica ogni nodo della rete ed sostanzialmente un identificativo numerico che viene utilizzato in combinazione con l'indirizzo MAC, questo per identificare in modo univoco ogni scheda di rete. Il TCP fornisce al protocollo FTP, che lavora a livello di applicazione, un canale di trasferimento dati che sia affidabile. Il TCP nell'invio dei pacchetti usa il meccanismo della Window. Una serie di pacchetti viene inviata seguendo delle regole ben precise:

1. Ad ogni pacchetto spedito il trasmettitore fa partire un timeOut.

2. Il Ricevitore invia per ogni pacchetto ricevuto un ACK indicando la sequenza dell'ultimo pacchetto ricevuto correttamente.

3. Il trasmettitore considera quindi spediti tutti i pacchetti successivi.

Questa una tecnica molto importante perch affidabile e fa un buon uso della banda. Quando ci si collega con il browser a un server web, si stabilisce un collegamento (virtuale) a livello applicazione. Il livello di trasporto si occupa dei dettagli del livello applicazione. Al livello di trasporto il protocollo TCP mette in coda i messaggi delle applicazioni (browser e server) li trasmette sotto forma di pacchetti; il buon fine della spedizione

68

attestato da una ricevuta di ritorno. Anche questo un collegamento virtuale tra le due applicazioni, i cui dettagli sono demandati al livello di rete. Al livello di rete il protocollo IP decide quale strada seguire per trasmettere effettivamente i messaggi da un computer allaltro. Un computer spedisce, laltro riceve, ma un collegamento virtuale tra i due computer remoti, dei cui dettagli si occupa il livello di collegamento. Al livello di collegamento si decide come fare il trasferimento del messaggio per ogni singolo tratto del percorso: dal computer del browser al primo router, dal primo router al secondo, dal secondo al terzo e dal terzo al computer del server. Questo un collegamento virtuale tra due computer (o router) adiacenti. I dettagli fisici sono lasciati allultimo livello. Il livello fisico, che l'ultimo, trasmette il messaggio sul cavo sotto forma di impulso elettrico. Questo lunico livello in cui avviene una trasmissione effettiva. Per consentire queste comunicazioni, ad ogni singola macchina sulla rete assegnato un indirizzo per ogni livello: Un indirizzo MAC per ogni scheda di rete (livello di collegamento), un indirizzo IP (livello di rete), un numero di porta (livello di trasporto)[17].

6.2 Il protocollo TCP


6.2.1 Definizione

Transmission Control Protocol (TCP)[16] un protocollo di livello di trasporto della suite di protocolli Internet. definito nella RFC 793, e su di esso si appoggiano gran parte delle applicazioni Internet. Il TCP pu essere classificato al livello trasporto (OSI level 4) del modello di riferimento OSI, e di solito usato in combinazione con il protocollo di livello rete (OSI level 3) IP. La corrispondenza con il modello OSI non perfetta, in quanto il TCP e l'IP nascono prima. La loro combinazione indicata come TCP/IP e, alle volte, erroneamente considerata un unico protocollo. Da qui, la difficolt di una classificazione univoca per un protocollo che comprende, a pieno titolo, due livelli dello stack OSI (o pila ISO/OSI in italiano)

69

Il TCP stato progettato per utilizzare i servizi del protocollo IP, che non offre alcuna garanzia in ordine alla consegna dei pacchetti, al ritardo, alla congestione, e costruire un canale di comunicazione affidabile tra due processi applicativi . Il canale di comunicazione costituito da un flusso bidirezionale di byte. Inoltre, alcune funzionalit di TCP sono vitali per il buon funzionamento complessivo di una rete IP. Il TCP nacque nel 1970 come frutto del lavoro di un gruppo di ricerca del dipartimento di difesa statunitense. I suoi punti di forza sono l'alta affidabilit e robustezza. La sua popolarit si deve anche grazie ad una sua implementazione diffusa dalla Universit di Berkeley, rilasciata in California sotto forma di sorgenti.

6.2.2 Caratteristiche principali

Il servizio offerto da TCP il trasporto di un flusso di byte bidirezionale tra due applicazioni in esecuzione su host differenti. Il protocollo permette alle due applicazioni di trasmettere contemporaneamente nelle due direzioni, quindi il servizio pu essere considerato "Full Duplex" anche se non tutti i protocolli applicativi basati su TCP utilizzano questa possibilit.

Il flusso di byte viene frazionato in blocchi per la trasmissione dall'applicazione a TCP (che normalmente implementato all'interno del sistema operativo), per la trasmissione all'interno di segmenti TCP, per la consegna all'applicazione che lo riceve, ma questa divisione in blocchi non per forza la stessa nei diversi passaggi.

TCP un protocollo orientato alla connessione, ovvero prima di poter trasmettere dati deve stabilire la comunicazione, negoziando una connessione tra mittente e destinatario, che viene esplicitamente chiusa quando non pi necessaria. Esso quindi ha le funzionalit per creare, mantenere e chiudere una connessione.

TCP garantisce che i dati trasmessi, se giungono a destinazione, lo facciano in ordine e una volta sola ("at most once"). Pi formalmente, il protocollo fornisce ai livelli superiori un servizio equivalente ad una connessione fisica diretta che trasporta un flusso di byte.

70

Questo realizzato attraverso vari meccanismi di acknowledgment e di ritrasmissione su timeout.

TCP possiede funzionalit di controllo di flusso e di controllo della congestione sulla connessione, attraverso il meccanismo della finestra scorrevole. Questo permette di ottimizzare l'utilizzo della rete anche in caso di congestione, e di condividere equamente la capacit disponibile tra diverse sessioni TCP attive su un collegamento.

TCP fornisce un servizio di multiplazione delle connessioni su un host, attraverso il meccanismo delle porte. 6.2.3 Lheader TCP

La PDU di TCP detta segmento. Ciascun segmento viene normalmente imbustato in un pacchetto IP, ed costituito dall'intestazione (header) TCP e da un carico utile (in inglese payload), ovvero dati di livello applicativo. I dati contenuti nell'intestazione costituiscono un canale di comunicazione tra le due entit TCP, che viene utilizzato per realizzare le funzionalit dello strato di trasporto e non accessibile agli strati dei livelli superiori. Un segmento TCP cos strutturato:

71

Source port [16 bit] - Identifica il numero di porta sull'host mittente associato alla connessione TCP. Destination port [16 bit] - Identifica il numero di porta sull'host destinatario associato alla connessione TCP. Sequence number [32 bit] - Numero di sequenza, indica lo scostamento (espresso in byte) dell'inizio del segmento TCP all'interno del flusso completo, a partire dall' Initial Sequence Number (ISN), negoziato all'apertura della connessione. Acknowledgment number [32 bit] - Numero di riscontro, ha significato solo se il flag ACK settato a 1, e conferma la ricezione di una parte del flusso di dati nella direzione opposta, indicando il valore del prossimo Sequence number che l'host mittente del segmento TCP si aspetta di ricevere. Header Length [4 bit] - Indica la lunghezza (in word da 32 bit) dell'header del segmento TCP; tale lunghezza pu variare da 5 word (20 byte) a 15 word (60 byte) a seconda della presenza e della lunghezza del campo facoltativo Options. Reserved [6 bit] - Bit non utilizzati e predisposti per sviluppi futuri del protocollo. Flags [6 bit] - Bit utilizzati per il controllo del protocollo:
o

URG - se settato a 1 indica che nel flusso sono presenti dati urgenti alla posizione (offset) indicata dal campo Urgent pointer;

o o

ACK - se settato a 1 indica che il campo Acknowledgment number valido; PSH - se settato a 1 indica che i dati in arrivo non devono essere bufferizzati ma passati subito ai livelli superiori dell'applicazione;

RST - se settato a 1 indica che la connessione non valida; viene utilizzato in caso di grave errore;

SYN - se settato a 1 indica che l'host mittente del segmento vuole aprire una connessione TCP con l'host destinatario e specifica nel campo Sequence number il valore dell' Initial Sequence Number (ISN); ha lo scopo di sincronizzare i numeri di sequenza dei due host. L'host che ha inviato il SYN deve attendere dall'host remoto un pacchetto SYN/ACK.

FIN - se settato a 1 indica che l'host mittente del segmento vuole chiudere la connessione TCP aperta con l'host destinatario. Il mittente attende la conferma dal ricevente (con un FIN-ACK). A questo punto la connessione ritenuta chiusa per met: l'host che ha inviato FIN non potr pi inviare dati,

72

mentre l'altro host ha il canale di comunicazione ancora disponibile. Quando anche l'altro host invier il pacchetto con FIN impostato la connessione, dopo il relativo FIN-ACK, sar considerata completamente chiusa.

Advertise Window [16 bit] - Indica la dimensione della finestra di ricezione dell'host mittente, cio il numero di byte che il mittente in grado di accettare a partire da quello specificato dall'acknowledgment number. Checksum [16 bit] - Campo di controllo utilizzato per la verifica della validit del segmento. ottenuto facendo il complemento a 1 della somma complemento a uno a 16 bit dell'intero header TCP (con il campo checksum messo a zero) con l'aggiunta di uno pseudo header composto da: indirizzo IP sorgente(32bit),indirizzo IP destinazione(32bit), un byte di zeri, un byte che indica il protocollo e due byte che indicano la lunghezza del pacchetto TCP (header + dati). Urgent pointer [16 bit] - Puntatore a dato urgente, ha significato solo se il flag URG settato a 1 ed indica lo scostamento in byte a partire dal Sequence number del byte di dati urgenti all'interno del flusso. Options - Opzioni (facoltative) per usi del protocollo avanzati.

6.2.4 Apertura di una connessione - Three-way handshake

La procedura utilizzata per instaurare in modo affidabile una connessione TCP tra due host chiamata three-way handshake (stretta di mano a 3 vie), indicando la necessit di scambiare 3 messaggi tra host mittente e host ricevente affinch la connessione sia creata correttamente. Consideriamo ad esempio che l'host A intenda aprire una connessione TCP con l'host B; i passi da seguire quindi sono:

1. A invia un segmento SYN a B - il flag SYN impostato a 1 e il campo Sequence number contiene il valore x che specifica l' Initial Sequence Number di A;

2. B invia un segmento SYN/ACK ad A - i flag SYN e ACK sono impostati a 1, il campo Sequence number contiene il valore y che specifica l' Initial Sequence

73

Number di B e il campo Acknowledgment number contiene il valore x+1 confermando la ricezione del ISN di A;

3. A invia un segmento ACK a B - il campo Acknowledgment number contiene il valore y+1 confermando la ricezione del ISN di B.

Figura 6.1.6.1 Three-way handshake

Il terzo segmento non sarebbe, idealmente, necessario per l'apertura della connessione in quanto gi dopo la ricezione da parte di A del secondo segmento, entrambi gli host hanno espresso la loro disponibilit all'apertura della connessione. Tuttavia esso risulta necessario al fine di permettere anche all'host B una stima del timeout iniziale, come tempo intercorso tra l'invio di un segmento e la ricezione del corrispondente ACK. Il flag SYN risulta utile nell'implementazione pratica del protocollo, e nella sua analisi da parte dei firewall: nel traffico TCP i segmenti SYN stabiliscono nuove connessioni, mentre quelli con il flag non attivo appartengono a connessioni gi instaurate. I segmenti utilizzati durante l'handshake sono solitamente 'solo header', ossia hanno il campo Data vuoto essendo questa una fase di sincronizzazione tra i due host e non di scambio di dati.

74

6.2.5 Chiusura di una connessione - Chiusura a 4 vie

Dopo che stata stabilita, una connessione TCP non considerata una singola connessione bidirezionale, ma piuttosto come l'affasciamento di due connessioni monodirezionali. Pertanto, ognuna delle parti deve terminare la sua connessione, e possono esistere anche connessioni aperte a met, in cui solo uno dei due terminali ha chiuso la connessione e non pu pi trasmettere, ma pu (e deve) ricevere i dati dall'altro terminale. Di conseguenza, la chiusura della connessione si pu effettuare in due modi: con un handshake a tre vie, in cui le due parti chiudono contemporaneamente le rispettive connessioni, o con uno a quattro vie, in cui le due connessioni vengono chiuse in tempi diversi. L'handshake a 3 vie omologo a quello usato per l'apertura della connessione, con la differenza che il flag utilizzato il FIN invece del SYN. Un terminale invia un pacchetto con la richiesta FIN, l'altro risponde con un FIN + ACK, ed infine il primo manda l'ultimo ACK, e l'intera connessione viene terminata. L'handshake a 4 vie invece viene utilizzato quando la disconnessione non contemporanea tra i due terminali in comunicazione. In questo caso uno dei due terminali invia la richiesta di FIN, e attende l'ACK. L'altro terminale far poi altrettanto, generando quindi un totale di 4 pacchetti.

Figura 6.1.7.1 Chiusura a 4 vie

75

6.3 Internet Protocol


L'Internet Protocol (IP)[19] un protocollo di rete a pacchetto, non connesso; secondo la classificazione ISO/OSI di livello rete . La versione correntemente usata del protocollo IP detta anche IPv4 per distinguerla dalla pi recente IPv6, nata dall'esigenza di gestire meglio il crescente numero di computer connessi ad Internet. IP un protocollo di interconnessione di reti (Inter-Networking Protocol), nato per interconnettere reti eterogenee per tecnologia, prestazioni, gestione. I protocolli di trasporto utilizzati su IP sono soprattutto TCP e UDP.

6.3.1 Il pacchetto IPv4

L'header del pacchetto IPv4 consiste in 13 campi di cui 1 opzionale (segnalato nello schema con sfondo rosso) e chiamato con l'ovvio nome di Options. I campi sono inseriti col byte pi significativo messo per primo (notazione big-endian) e all'interno dei singoli byte il bit pi significativo il primo (quello di indice 0).

Versione [4 bit] - Indica la versione del datagramma IP: per IPv4, ha valore 4 (da qui il nome IPv4). Internet Header Length (IHL) [4 bit] - Indica la lunghezza (in word da 32 bit) dell'header del datagramma IP ovvero l'offset del campo dati; tale lunghezza pu variare da 5 word (20 byte) a 15 word (60 byte) a seconda della presenza e della lunghezza del campo facoltativo Options;

76

Type of Service (TOS) [8 bit] - Nelle specifiche iniziali del protocollo (RFC 791), questi bit servivano all'host mittente per specificare il modo e in particolare la precedenza con cui l'host ricevente doveva trattare il datagramma:
o o o o o

bit 0-2 : Precedenza bit 3: Latenza (0 = normale, 1 = bassa) bit 4: Throughput (0 = normale, 1 = alto) bit 5: Affidabilit (0 = normale, 1 = alta) bit 6-7: Riservati per usi futuri

ad esempio un host poteva scegliere una bassa latenza, mentre un altro preferire un'alta affidabilit. Nella pratica questo uso del campo TOS non ha preso largamente piede. Dopo molte sperimentazioni e ricerche, recentemente questi 8 bit sono stati ridefiniti ed hanno la funzione di Differentiated services (DiffServ nell'IETF e Explicit Congestion Notification (ECN) codepoints (vedi RFC 3168), necessari per le nuove tecnologie basate sullo streaming dei dati in tempo reale, come per il esempio il Voice over IP (VoIP) usato per lo scambio interattivo dei dati vocali. Total Length [16 bit] - Indica la dimensione (in byte) dell'intero datagramma, comprendendo header e dati; tale lunghezza pu variare da un minimo di 20 byte (header minimo e campo dati vuoto) ad un massimo di 65535 byte. In ogni momento, ad ogni host richiesto di essere in grado di gestire datagrammi aventi una dimensione minima di 576 byte mentre sono autorizzati, se necessario, a frammentare datagrammi di dimensione maggiore. Identification [16 bit] - Utilizzato, come da specifiche iniziali, per identificare in modo univoco i vari frammenti in cui pu essere stato "spezzato" un datagramma IP. Alcune sperimentazioni successive hanno per suggerito di utilizzare questo campo per altri scopi, come aggiungere la funzionalit di tracciamento dei pacchetti. Flags [3 bit] - Bit utilizzati per il controllo del protocollo e della frammentazione dei datagrammi:
o

Reserved - sempre settato a 0. Come pesce d'Aprile, in RFC 3514 si proposto di utilizzarlo come "Evil bit".

77

DF (Don't Fragment) - se settato a 1 indica che il datagramma non deve essere frammentato; se tale datagramma non pu essere inoltrato da un host senza essere frammentato, viene semplicemente scartato. Questo pu risultare utile per "ispezionare" la capacit di gestione dei vari host del percorso di routing.

MF (More Fragments) - se settato a 0 indica che il datagramma l'ultimo frammento o il solo frammento del datagramma originario, pertanto tutti gli altri suoi frammenti hanno il bit MF settato a 1. Naturalmente, questo bit sar sempre 0 anche in tutti i datagrammi che non sono stati frammentati.

Fragment Offset [13 bit] - Indica l'offset (misurato in blocchi di 8 byte) di un particolare frammento relativamente all'inizio del datagramma IP originale: il primo frammento ha offset 0. L'offset massimo risulta pertanto pari a 65528

byte che, includendo l'header, potrebbe eccedere la dimensione massima di 65535 byte di un datagramma IP. Time To Live (TTL) [8 bit] - Indica il tempo di vita (time to live) del datagramma, necessario per evitarne la persistenza indefinita sulla rete nel caso in cui non si riesca a recapitarlo al destinatario. Storicamente il TTL misurava i "secondi di vita" del datagramma, mentre ora esso misura il numero di "salti" da nodo a nodo della rete: ogni router che riceve il datagramma prima di inoltrarlo ne decrementa il TTL (modificando di conseguenza anche il campo Header Checksum), quando questo arriva a zero il datagramma non viene pi inoltrato ma scartato. Tipicamente, quando un datagramma viene scartato per esaurimento del TTL, viene automaticamente inviato un messaggio ICMP al mittente del datagramma, specificando il codice di Richiesta scaduta; la ricezione di questo messaggio ICMP alla base del meccanismo di traceroute. Protocol [8 bit] - Indica il codice associato al protocollo utilizzato nel campo dati del datagramma IP: per esempio al protocollo TCP associato il codice 6, ad UDP il codice 17, mentre ad IPv6 associato il codice 41. La lista dei codici dei vari protocolli, inizialmente definita in RFC 790, mantenuta e gestita dalla Internet Assigned Numbers Authority. Header Checksum [16 bit] - un campo usato per il controllo degli errori dell'header. Ad ogni hop, il checksum viene ricalcolato (secondo la definizione data
78

in RFC 791) e confrontato con il valore di questo campo: se non c' corrispondenza il pacchetto viene scartato. da notare che non viene effettuato alcun controllo sulla presenza di errori nel campo Data deputandolo ai livelli superiori. Source address [32 bit] - Indica l'indirizzo IP associato all'host del mittente del datagramma. Da notare che questo indirizzo potrebbe non essere quello del "vero" mittente nel caso di traduzioni mediante NAT. Infatti, qualora un host intermedio effettui questa traduzione, sostituisce l'indirizzo del mittente con uno proprio, procurandosi poi di ripristinare l'indirizzo originario su tutti i messaggi di risposta che gli arrivano destinati al mittente originario. Destination address [32 bit] - Indica l'indirizzo IP associato all'host del destinatario del datagramma e segue le medesime regole del campo Source address. Options - Opzioni (facoltative e non molto usate) per usi pi specifici del protocollo. Si ricorda che il valore del campo IHL deve essere sufficientemente grande da includere anche tutte le opzioni e, nel caso queste siano pi corte di una word, il padding necessario a completare i 32 bit. Inoltre, nel caso in cui la lista di opzioni non coincida con la filne dell'header, occorre aggiungere in coda ad essa un marcatore EOL (End of Options List). C' da notare infine che, potendo causare problemi di sicurezza, l'uso delle opzioni LSSR e SSRR (Loose e Strict Source and Record Route) scoraggiato e molti router bloccano i datagrammi che contengono queste opzioni.

6.3.2 Indirizzamento IPv4

L'indirizzo IPv4 formato da 32 bit, esso univoco sulla rete di cui fa parte. Tale indirizzo, inoltre, non va assegnato all'host, ma alle connessioni fisiche alla rete che l'host possiede (nel cast di host multicollegati o di dispositivi di rete). Si per verificato che i primi paesi in cui si diffuso Internet e all'interno di essi i primi provider, si sono "accapparrati" un numero di Ip proporzionalmente sbilanciato. Gli ultimi provider hanno pertanto dovuto ricorrere ad un sistema per ovviare alla scarsit degli IP a loro attribuiti.

79

Hanno pertanto considerato gli utenti a loro connessi di una intera citt come un'unica LAN e pertanto tutti dotati dello stesso IP. Concettualmente l'indirizzo IP si compone di due parti: 1. identificatore di rete e precisamente della sottorete 2. identificatore di host.

Per semplificarne la lettura, ogni indirizzo IP viene descritto con 4 numeri in base decimale, in modo che ognuno rappresenti un byte (il valore di un byte varia da 0 a 255 quando lo consideriamo in base dieci), separati dal simbolo "punto"; un esempio di indirizzo IPv4 192.0.34.166 [18].

6.4 Denial of Service


Un attacco Denial of Service (DOS)[20] ha essenzialmente lo scopo di mettere fuori uso o completamente negare un servizio agli utenti legittimi. Un servizio pu essere inteso come una o pi componenti di un sistema informativo quali banda Internet, sistemi hardware e software. In quest'ottica l'accattante potrebbe voler saturare tutta la banda disponibile ad un sito, provocare il crash di un server, creare malfunzionamenti in un software. Gli attacchi DOS sono basati principalmente su exploit relativi a debolezze di progettazione e/o implementazione di un sistema hardware e software. Un esempio pu essere il protocollo TCP/IP di cui si appena discusso che fu progettato per essere usato in una comunit fidata e che adesso, con le sue debolezze, alla base di molti tipi di attacchi DOS. Per avere un'idea della potenza e dei danni provocati da un attacco DOS possiamo citare alcuni esempi:

1996: Panyx Internet Provider. Si tratta di uno dei primi attacchi DOS. L'attacco mise in crisi il sistema per pi di una settimana rendendo impossibile l'uso del servizio a circa 7000 utenti.

1999: Yahoo, Inc. Uno degli ultimi attacchi DOS che ha provocato l'interruzione per quasi 12 ore di un servizio usato da milioni di utenti ogni giorno. Durante

80

quest'attacco sono stati saturati tutti i link del sito la cui capacit complessiva ammontava ad alcuni Gigabit (!!).

Un ulteriore problema che hanno le vittime di un attacco DOS che di norma gli attaccanti usano tecniche che consentono di mascherare gli indirizzi sorgente in modo da rendere il risalire alla loro identit il pi difficile possibile. L'uso di queste tecniche pu rendere virtualmente impossibile l'individuazione degli attaccanti.

6.4.1 Tipologie di attacchi DOS

Vediamo ora di seguito alcune modalit e tecniche usate per un attacco DOS.

Bandwidth consumption: Essenzialmente consiste nel generare una quantit di traffico tale da consumare tutta la banda a disposizione di un sito, tagliandolo fuori dalla rete. Esistono due situazioni. Nella prima gli attaccanti hanno a disposizione una banda molto pi ampia delle vittima. In questo caso facile per gli attaccanti saturare tutta la banda a disposizione della vittima inondando quest'ultima di una quantit enorme di traffico privo di senso. Nella seconda avviene in contrario. E' la vittima ad avere pi banda degli attaccanti. Questi ultimi per non si danno certo per vinti e, usando delle tecniche di "amplificazione" del traffico, riescono comunque a generarne tanto da saturare la banda della vittima.

Resource starvation: Rispetto al tipo di attacco precedente si tende a saturare altre risolse del sistema piuttosto che i link di rete. Tali componenti possono essere tempo di CPU, memoria di sistema , spazio su disco, handles di file, etc. In generale un sistema sotto questo attacco diventa inusabile oppure collassa.

Bug software: L'attaccante sollecita il sistema della vittima in modo da attivare situazioni che sono gestite scorrettamente dal software di sistema. Esempi di questo tipo di attacchi sono quelli che si basano sui bug presenti nello stack di rete (WinNuke, IP frag overlap), sul buffer overflow o errori presenti in HW dedicato.

81

L'attacco Ip fragmentation overlap si basa su una vulnerabilit presente nelle implementazioni software dello stack IP, per quanto riguarda il riassemblaggio della sequenza dei pacchetti. La tecnica consiste nel generare una sequenza di pacchetti costruita "ad arte" in modo da provocare il crash o il reboot del sistema. Un altro tipo di esempio un bug presente in una istruzione dei processori Pentium di Intel che era capace di mandare in crash un sistema indipendentemente dal sistema operativo utilizzato

Attacchi basati su routing o DNS: L'attaccante manipola le tabelle di routing (o la cache di un server DNS) in modo da deviare tutto o parte del traffico della rete verso una destinazione diversa o verso un "buco nero".

6.4.2 Tecniche utilizate

Si procede ad illustrare le principali tecniche utilizzate durante un attacco DOS. Denial of Service. Spoofing. L'attaccante manipola il pacchetto che sta trasmettendo in modo da cambiare il valore presente nel campo sorgente del pacchetto. Il destinatario creder che il mittente di un pacchetto ricevuto sia diverso da quello reale.

Figura 6.4.2.1 Spoofing

82

Nell'esempio in figura 6.4.2.1 l'utente presente su PC1 vuole spedire un messaggio oltraggioso verso l'utente su PC3. Per non farsi scoprire crea un pacchetto di dati con il campo di origine modificato con l'indirizzo di un terzo utente, PC2, ignaro di tutto. PC3 riceve il messaggio credendo che il mittente sia PC2 e di conseguenza la sua reazione sar diretta verso PC2 e non verso il verso mittente del messaggio.

Smurfing/Ping broadcast. Si tratta di una tecnica di amplificazione del traffico e basa la sua efficacia sulla scorretta o non accurata configurazione del routing in una rete. L'amplificazione si ottiene trasmettendo un pacchetto ICMP (ping) ad un indirizzo di broadcast di una rete, mediante un PING. Il PING e una piccola utility di sistema che trasmette un pacchetto di controllo ICMP ad un destinatario e ne aspetta la risposta. In genere viene usato per controllare la raggiungibilit di una destinazione o per calcolare le prestazioni della rete (Round trip delay).

Figura 6.4.2.2 Ping

Un indirizzo di broadcast non pu essere assegnato ad uno specifico elaboratore e in genere consiste nell'ultimo indirizzo IP di una rete/sottorete. La particolarit di questo indirizzo che i pacchetti spediti verso tale indirizzo vengono inoltrati a tutti gli indirizzi IP della rete di appartenenza.

83

Figura 6.4.2.3 Configurazione di una rete prima dellattacco

Un attacco Smurf fa uso di una rete "amplificatrice" che mal configurata nel senso che risponde ad un ping effettuato su un indirizzo di broadcast. Lo schema mostrato in figura

Figura 6.4.2.4 Attacco Smurf

84

L'attaccante camuffa l'indirizzo IP dei pacchetti che trasmette usando lo spoofing e mettendo nel campo sorgente dei pacchetti ICMP l'indirizzo IP della vittima. A questo punto sceglie una rete amplificatrice e comincia a spedire quanti pi pacchetti pu verso l'indirizzo di broadcast della rete. Il router di questa rete, appena comincia a ricevere i pacchetti sull'indirizzo di broadcast, li inoltra verso tutti gli indirizzi IP della sua sottorete. Ogni computer presente nella sottorete riceve un pacchetto ICMP e risponde con un altro pacchetto ICMP diretto al mittente del pacchetto ricevuto che, come abbiamo visto, l'attaccante ha modificato con quello della vittima. Si noti come tutti i computer della rete amplificatrice siano completamente all'oscuro di quello che sta succedendo. A questo punto la vittima comincia a ricevere un quantit enorme di pacchetti ICMP, specialmente se i PC nella rete amplificatrice sono numerosi.

Fraggle attack E' una variante dello smurfing che usa il protocollo UDP al posto di quello ICMP. La tecnica consiste nel trasmettere un pacchetto UDP verso una porta della "ECHO". Se il PC configurato risponde con un altro pacchetto UDP "echo reply". Nel caso in cui invece non sia configurato per rispondere il PC ritorna un pacchetto ICMP "unreachable". Il vantaggio di questo attacco che genera comunque traffico e funziona anche sulle reti che non permettono il ping broadcast.

SYN flooding: Questo attacco usa una debolezza nella implementazione/configurazione del protocollo di connessione "three way handshake", usato per aprire una sessione. Ha un grande vantaggio nel fatto che necessita di pochissima banda per ottenere l'effetto voluto. Il protocollo di connessione tra due PC normalmente funziona in tre fasi come visto sopra.

A vuole comunicare con B e per aprire una sessione gli manda un pacchetto "SYN" e aspetta una risposta da B.

Quest'ultimo ricevuta una richiesta di connessione cambia il suo stato da "LISTEN" in "SYN RECEIVED", cio si rende conto che c' una richiesta da parte di A e

85

mette la sua richiesta di in una coda delle connessioni potenziali, ma non ancora stabilite. Per concludere allora B spedisce ad A un pacchetto con "SYN/ACK" e attende da A la conferma della connessione.

Quando A riceve il "SYN/ACK" di B spedisce a sua volta un altro ACK e ritiene la connessione stabilita. B riceve l'altro ACK di A e passa dallo stato "SYN RECEIVED" in "ESTABILISHED" e cancella A dalla coda delle richieste potenziali.

Durante un attacco la vittima B. L'attaccante gli spedisce dei SYN il cui indirizzo sorgente un "buco nero", cio una macchina non raggiungibile. in questo modo le risposte della vittima vengono tutte perse. L'attaccante spedisce continuamente richieste di connessione allo scopo di far riempire la coda delle connessioni potenziali fino ad esaurire tutte le risorse allocate allo scopo, che normalmente sono limitate. Infatti sebbene un server possa accettare moltissime richieste di servizio normalmente configurato per avere una coda delle connessioni "potenziali" molto limitata.

Figura 6.4.2.5 SYN-FLOODING

86

Capitolo 7 Strumenti utilizzati e risultati ottenuti


In questo capitolo si illustreranno i risultati ottenuti utilizzando un insieme di dati di traffico internet raccolti nel dataset Darpa 1998. Applicando lalgoritmo Count-Min Sketch, con opportune modifiche, si testata la capacit di questultimo di rilevare attacchi del tipo Denial-Of-Service (con particolare attenzione sullattacco denominato Neptune appartenente alla categoria dei SYN-flooding).

7.1 Il dataset Darpa 1998


Il gruppo IST (Information Systems Technology) del MIT Lincoln Laboratory sotto la sponsorizzazione del Defense Advanced Research Projects Agency (DARPA ITO) e Air Force Research Laboratory (AFRL/SNHS) ha raccolto e distribuito il primo standard set di dati per la valutazione degli Intrusion Detection System delle reti di computer. Sono state inoltre coordinate, con la collaborazione del Air Force Research Laboratory, le prime formali, ripetibili e statisticamente significative valutazioni di un IDS. Tali valutazioni sono state effettuate nel 1998 e 1999 e hanno contribuito enormemente alla ricerca nel campo degli Intrusion Detection Systems. Ci sono due parti di valutazione dellintrusione, una off-line e una real-time. Il set di dati di training messi a disposizione e reperibili dal sito

http://www.ll.mit.edu/mission/communications/ist/corpora/ideval/data/1998data.html sono utilizzati dalla maggior parte dei sistemi a rilevamento di intrusione tuttora in commercio. Questi dati sono stati generati su una rete di simulazione. Sono presenti sessioni di traffico normale e sessioni di attacchi. Le sessioni di attacco contengono diversi tipi di attacchi e vari comportamenti messi in atto durante luso illegal e di computer. In fase di tesi, tra i diversi elementi messi a disposizione, si sono utilizzati i seguenti:

87

Tcpdump data per un mese di traffico di rete, raccolti da uno sniffer tcpdump. Questi dati contengono pacchetti di rete trasmessi tra computer all interno o allesterno di una base militare simulata;

Listfile per i dati tcpdump, contenenti le seguenti informazioni: o o o o o o o o o o o ID di sessione: lidentificativo della sessione Data di inizio: in formato MM / DD / YYYY Tempo di inizio: in formato HH:MM:SS Durata della sessione: in formato HH:MM:SS Identificativo di servizio: una stringa contenente il tipo di servizio tcp, udp icmp, ecc.. Porta sorgente Porta destinazione Indirizzo IP sorgente Indirizzo IP destinazione Attack Score: 0 se non c attacco, 1 se presente Nome dellattacco

Questo secondo file stato usato per verificare se lattacco rilevato dal Count-Min Sketch fosse veramente tale o un falso positivo.

La rete fisica usata per le simulazioni includeva un componente esterno ed uno interno separati da un router. La parte esterna comprendeva due workstations che simulavano gateways verso una rete internet virtuale. Una stazione di lavoro simulava pi workstation che utilizzano un software di modifica del kernel Linux in grado di manipolare e falsificare gli indirizzi IP fornito dal gruppo Air Force ESC. Un gateway conduceva verso 100 workstations ed un altro verso 1000 siti web. La parte interna includeva le macchina vittima di diversi tipi (Linux, Solaris, Sun OS) ed un gateway verso workstations interne. I dati sono stati raccolti dalla vittima con sistema operativo Solaris e da uno sniffer esterno. Questa situazione riportata in figura 7.1.1.

88

Figura 7.1.1 Topologia della rete in cui sono stati simulati attacchi e traffico normale, raccolti poi in file tcpdump per circa un mese.

7.2 La libreria WinPcap


Per poter esaminare i file tcpdump si fatto uso della libreria WinPcap reperibile dal sito http://www.winpcap.org. WinPcap un tool standard per laccesso di reti di computer a livello di layer in ambienti Windows: essa permette la cattura e linvio di pacchetti bypassando lo stack di protocollo, e possiede elementi molto utili, come il filtraggio di pacchetti a livello di kernel, un motore in grado di generare statistiche di rete e supportare la cattura di pacchetti in remoto.

WinPcap consiste di un driver che abilita il sistema operativo ad avere accesso ad una rete a basso livello e di una libreria in grado di analizzare tale rete. Questa libreria contiene inoltre la versione per Windows delle bene note libicap Unix API.

Grazie al suo set di componenti, WinPcap il motore per la cattura e per il filtraggio di pacchetti pi utilizzato nei pi comuni software commerciali o open-source per lanalisi del traffico di reti informatiche (protocol analyzers, network monitors, network intrusion detection systems, sniffers, traffic generators e network testers). Alcuni di questi tools,

89

come Wireshark, Nmap, Snort, ntop, sono conosciuti e utilizzati da tutta la comunit di internetworking. 7.2.1 Architettura per lanalisi del traffico di rete Le applicazioni per la cattura e lanalisi del traffico di rete hanno bisogno, per svolgere il loro lavoro, di interagire con lhardware di rete del computer su cui girano in modo da ottenere i pacchetti nella loro forma originale, senza che essi siano elaborati dalla pila protocollare. In un sistema operativo moderno, daltra parte, a unapplicazione non consentita linterazione diretta con i dispositivi fisici, in quanto essi sono gestiti esclusivamente dal sistema. Per catturare dalla rete allora necessaria una vera e propria architettura, costituita da due parti principali: una funzionante allinterno del kernel del sistema operativo e unaltra funzionante a livello utente. La prima delle due parti ha il compito di interagire direttamente con linterfaccia di rete per ottenere i pacchetti e consegnarli alle applicazioni che ne fanno richiesta. Questo compito dovr essere svolto in maniera il pi possibile efficiente, in modo da non gravare sulle risorse di sistema anche nel caso di reti veloci o con alto traffico. Inoltre, la parte a basso livello dellarchitettura di cattura dovr essere altamente versatile, in modo che unapplicazione abbia la possibilit di implementare caratteristiche aggiuntive e nuovi protocolli senza dover aggiornare lintera architettura. La parte funzionante a livello utente invece lapplicazione vera e propria, che fornisce allutente uninterfaccia per lanalisi o il monitoraggio della rete. Essa si avvale delle primitive offerte dal kernel per ottenere i pacchetti transitanti in rete. Le principali caratteristiche richieste a questa parte dellarchitettura sono facilit di utilizzo, potenza delle funzioni fornite e portabilit.

7.2.2 Cattura di Pacchetti in ambiente UNIX

Su sistemi operativi UNIX Like la pi nota architettura di cattura rappresentata dal Berkely Packet Filter (BPF) sviluppato alla University of California per i sistemi UNIX della famiglia BSD.

90

7.2.3 Struttura dello stack di cattura BPF Al livello pi basso c ladattatore di rete, che viene usato per catturare i pacchetti in transito sul mezzo trasmissivo. Durante una cattura, solitamente ladattatore funziona in una modalit particolare, chiamata promisquous mode, che forza il dispositivo ad accettare tutti i pacchetti e non solamente quelli destinati a lui. La cattura vera e propria e effettuata da uno speciale device a caratteri (/dev/bpf0, /dev/bpf1, ) che gestisce per ogni applicazione un buffer temporaneo ed un meccanismo di filtraggio definito dallutente. Quando un pacchetto transita sulladattatore di rete viene processato dal device e se passa il test del filtro viene conservato nel buffer. A livello superiore vi e poi una libreria, libpcap, che nasconde la comunicazione con il device in determinate funzioni ed implementa un meccanismo di piu alto livello per la gestione di filtri e adattatori.

7.2.4 Cattura di Pacchetti in ambiente Windows

La struttura dello stack di WinPcap essenzialmente simile alla sua controparte con differenze dovute pi che altro alla maggiore complessit della struttura interna dei sistemi Windows. Al di sopra delladattatore di rete vi il Packet Capture Driver, che il modulo software di livello pi basso. Funziona a livello kernel e si occupa di ottenere i pacchetti alladattatore di rete, filtrarli e passarli alle applicazioni. PACKET.DLL e una libreria a linkaggio dinamico che fa da tramite fra il Packet Capture Driver e le applicazioni. Il suo scopo principale fornire uninterfaccia di cattura comune a tutti i sistemi operativi della famiglia Windows, nascondendo le complessit delle chiamate di sistema per la comunicazione con il driver. Questo permette alle parti superiori dellarchitettura di essere indipendenti dal sistema. LIBPCAP invece il porting della libpcap del BPF, discussa precedentemente, grazie alla quale possibile ottenere portabilit a livello di codice. Lapplicazione pu, a differenza del BPF per UNIX, decidere a che livello di astrazione collocarsi.

91

Pur non dovendo comunicare direttamente con il driver, pu decidere di utilizzare linterfaccia esposta da PACKET.DLL, pi potente ma pi a basso livello, oppure utilizzare le funzioni della LIBPCAP.

7.2.5 Comportamento del Driver Ogni volta che unapplicazione inizia una cattura, il driver alloca un filtro e un buffer, che si occuperanno rispettivamente di scremare e memorizzare il traffico proveniente dalla rete. Sia il tipo di filtro che la dimensione del buffer sono modificabili dallapplicazione. Nel momento in cui lapplicazione e pronta alla ricezione, i pacchetti catturati saranno trasferiti dal buffer del driver al buffer della applicazione. Il driver supporta un numero qualsiasi di adattatori di rete e di applicazioni. anche possibile per una singola applicazione eseguire pi catture contemporaneamente.

7.2.6 Il processo di filtraggio

Il processo di filtraggio serve a decidere se un pacchetto debba essere accettato e passato allapplicazione in ascolto. Questa operazione di scrematura del flusso di dati in arrivo si rende necessaria perch la maggior parte delle applicazioni ha bisogno solamente di un sottoinsieme del traffico di rete. Copiare e memorizzare lintero flusso in arrivo sarebbe pertanto uno spreco di risorse. Un filtro , nella sua accezione pi semplice, una funzione booleana che viene applicata ad ogni pacchetto. Se il valore ritornato vero, il driver passa il pacchetto allapplicazione, se falso il pacchetto immediatamente scartato. Il meccanismo usato dal Packet Capture Driver deriva direttamente dal sistema di filtraggio del BPF, che stato opportunamente modificato per poter essere usato nei kernel Windows. Esso prevede un passo avanti nel concetto filtraggio: non solo decide se un pacchetto deve essere tenuto, ma stabilisce anche la dimensione della parte da conservare. Questo utile in tutti quei casi in cui non c bisogno dellintero pacchetto (per esempio quando serve solamente lheader), perch permette di scartare fin dal principio le parti che non saranno utilizzate. A livello implementativo, il filtro BPF un processore virtuale con un accumulatore, un registro indice, una memoria e un program counter implicito. in grado di eseguire

92

istruzioni di load and store, confronto, salto, pi una serie di operazioni aritmetiche. Unapplicazione che desidera filtrare il flusso di pacchetti in arrivo crea un programma di filtraggio adeguato, e poi lo passa al driver. Il driver lo applicher ad ogni pacchetto in arrivo. Un meccanismo del genere ha alcuni importanti vantaggi:

estremamente versatile, in quanto permette configurabilit totale e un vasto insieme di utilizzi. Inoltre indipendente da protocolli e architetture di rete, e ha la possibilit di supportarne di nuovi in maniera semplice e trasparente.

abbastanza generico da poter essere usato in situazioni nuove o particolari.

importante che il filtro sia eseguito il prima possibile, perch prima si decide se scartare il pacchetto, meno risorse saranno richieste per la sua gestione. Per questo motivo, il Packet Capture Driver applica il filtro quando il pacchetto ancora nella memoria della scheda di rete, cio non appena esso arriva nel sistema. Questo permette al driver di non effettuare nessuna copia se il pacchetto scartato e porta a una gestione molto efficiente di quei frequenti casi in cui lapplicazione voglia solo un sottoinsieme molto piccolo del traffico di rete (per esempio quello generato da una singola stazione).

7.2.7 Il processo di lettura

Il Packet Capture Driver offre alle applicazioni un metodo per ottenere il traffico di rete molto simile alla normale lettura da file. Quando del traffico giunge sulladattatore di rete il driver applica ad ogni frame il filtro, dopodich salva nel suo buffer la parte di pacchetto accettata, preponendogli un header che conserva informazioni sul tempo di cattura, sulla lunghezza originale e su quella catturata, piu informazioni aggiuntive per lallineamento. Un applicativo dopo aver preparato un buffer di ricezione fa una chiamata di lettura sul Driver. A quel punto il buffer del driver viene copiato nel buffer dellapplicazione.

93

possibile, grazie a una serie di timer interni al driver, effettuare letture temporizzate che scadono dopo un certo tempo anche se nessun pacchetto arrivato.

7.2.8 Il processo di scrittura

Il Packet Capture Driver offre la possibilit di spedire pacchetti in modo diretto, evitando di passare attraverso i diversi strati di rete. Questa caratteristica, non sfruttata da libpcap, si rivela utile quando necessario forgiare i pacchetti da spedire, compresi gli header che di solito sono costruiti dal sistema operativo. usata per esempio per testare la sicurezza di una rete o le prestazioni di un apparato.

7.2.9 PACKET.DLL: packet driver API

PACKET.DLL una libreria dinamica che fa da tramite fra il Packet Capture Driver e le applicazioni a livello utente. Essa offre un set di funzioni che permettono di accedere a tutte le funzioni del driver evitando la complessit dellinterazione tramite chiamate di sistema. Inoltre gestisce per lutente in maniera trasparente cose come i buffer per i pacchetti o la gestione degli adattatori di rete. Il vero vantaggio maggiore che si ha usando PACKET.DLL per quello dellindipendenza dal sistema operativo. Infatti il packet driver, essendo parte integrante del kernel, strettamente dipendente dallarchitettura del sistema, e quindi prevede meccanismi di interazione diversi a seconda che ci si trovi in Windows 95, 98 NT o 2000. PACKET.DLL fornita in varie versioni specifiche per ogni sistema, ma tutte queste versioni esportano la medesima interfaccia di programmazione. Vi sono infatti varie versioni del Packet Capture Driver, una per ogni sistema operativo della famiglia Windows, e ognuna di esse diversa dalle altre. Un applicativo che usa PACKET.DLL per la cattura funzioner su ogni sistema Windows senza modifiche e senza essere ricompilato. Inoltre lutilizzo di PACKET.DLL ha permesso di avere ununica versione di libpcap che funziona su tutte le piattaforme Win32 .

94

7.3 Algoritmo di detection basato su Count-Min Sketch


Si introduce in questo paragrafo lalgoritmo implementato in fase di tesi per individuare attacchi di tipo Denial-Of-Service (in particolare SYN-flooding) analizzando i file relativi a traffico di rete raccolto nel Dataset DARPA 1998.

Si sono considerati gli attacchi solo per il traffico tcp, applicando quindi un filtro alla cattura dei pacchetti che isolasse solo tale tipo di traffico. Si sono quindi isolate le informazioni necessarie allo scopo, cio lindirizzo IP sorgente e lindirizzo IP destinazione del pacchetto. Sono state create quindi quattro strutture dati di tipo Count-Min Sketch attraverso le quali si potessero contare il numero di connessioni che un indirizzo IP sorgente stabiliva con un indirizzo IP destinazione. Il meccanismo molto semplice:

Si sono istanziate quattro allocazioni dinamiche di memoria inizializzate tutte a zero;

Per ogni pacchetto proveniente dallo stream si esegue la procedura di Update propria del Count-Min Sketch, il quale riceve in ingresso, come elemento da stimare, un indirizzo IP nella forma di numero decimale a 64 bit; Lelemento viene cos immagazzinato con i meccanismi visti nel capitolo 5, lIP sorgente in una delle due memorie dedicate ai sorgenti, quello destinatario similmente in una delle due memorie dedicate ai destinatari; Ad intervalli di tempo regolari (1 secondo, 10 secondi, 60 secondi, ecc) si effettua una query nella seguente forma: quante volte questo indirizzo IP appare come sorgente e quante volte come destinatario? Nel caso in cui il numero di connessioni di un determinato IP verso uno destinatario sia maggiore di una certa soglia, allora si potrebbe dire che si in presenza di una anomalia.

95

Questo metodo per si rilevato abbastanza inefficace riconoscendo come anomalo quello che in realt era traffico normale, generando quindi una notevole quantit di falsi positivi eliminabili solo impostando una soglia molto alta.

Il secondo approccio stato sicuramente quello risolutivo. Oltre agli indirizzi IP sorgente e destinazione stato necessario utilizzare le informazioni relative allo stato dei FLAGS TCP che sono schematizzati in figura 7.3.1

Figura 7.3.1 Schema dei flags TCP

Si utilizzano sempre quattro strutture dati di tipo Count-Min Sketch, due per gli indirizzi IP destinatari e due per gli indirizzi IP sorgenti e destinazione in modo tale da poter identificare lattaccante e lattaccato:

Count-Min_Sketch_Destination_A; Count-Min_Sketch_Source_A; Count-Min_Sketch_Destination_B; Count-Min_Sketch_Source_B.

La procedura di Update avviene nel modo seguente:

Se il pacchetto proveniente dallo stream si presenta con FLAG di SYN attivo si aggiorna il Count-Min Sketch (Count-Min_Sketch_Destination_A ) incrementando di 1 il contatore per ogni riga con lindirizzo IP

96

destinatario, si aggiorna decrementando di 1 il contatore per ogni pacchetto che si presenta il FLAG SYN/ACK o RST/ACK attivo.

La stessa procedura viene utilizzata per il secondo (Count-Min_Sketch_Source_A). Questa volta si incrementa e decrementa il contatore ogni riga con la somma dellindirizzo IP sorgente e quello destinazione. per

In questo modo il Count-Min Sketch conterr solo gli indirizzi IP che hanno ricevuto una richiesta di connessione che per non stata completata, rivelando cos unanomalia nel caso in cui queste richieste superino una soglia entro la quale non pi possibile parlare di errore nella negoziazione della connessione.

Sono state eseguite quindi ad intervalli regolari (1 secondo, 5 secondi, 10 secondi, 60 secondi, ecc) un numero di query pari al numero di elementi diversi nello stream corrente. Questa volta la risposta alle queries sar il numero di connessioni che un indirizzo IP sorgente ha richiesto ad un indirizzo IP destinazione, senza per aver completato la procedura a tre vie precedentemente descritta.

Le quattro memorie vengono sfruttate nel seguente modo:

si scrive sulla prima memoria (Count-Min_Sketch_Destination_A e CountMin_Sketch_Source_A); al successivo intervallo si scrive sullaltra memoria

(Count-

Min_Sketch_Destination_B e Count-Min_Sketch_Source_B), precedentemente resettata.

si resetta la prima memoria (Count-Min_Sketch_Destination_A e CountMin_Sketch_Source_A). Tale meccanismo viene ripetuto ciclicamente ad intervalli regolari, in modo da tenere traccia del traffico analizzato allo scopo di individuare eventuali attacchi che possono verificarsi a cavallo delloperazione di switch tra memorie. In questo modo si evita anche

97

che lerrore commesso dal Count-Min Sketch diventi troppo grande nel caso in cui, per esempio, le registrazioni di traffico durino uno o pi minuti. Lefficacia di tale approccio stata sicuramente nel fatto di aver isolato quella parte di traffico utile allo scopo della detection evitando di introdurre nel Count-Min Sketch informazioni inutili rendendo il tutto pi veloce e meno costoso in termini di memoria.

7.3.1 Riduzione dei falsi postivi Il problema della riduzione dei falsi positivi una delle maggiori sfide nellambito dellintrusion detection. Il metodo appena descritto presenta dei parametri regolabili allo scopo di ridurre i falsi positivi. Uno di questi la soglia nel numero di richieste SYN consecutive in un determinato intervallo di tempo. Per esempio un numero di connessioni pari a tre in un secondo sembra essere sufficiente allo scopo. Lo stesso numero, per un intervallo di tempo di dieci secondi, invece non basta. Un altro parametro dato dalle dimensioni della memoria degli sketches. Falsi positivi si presentano soprattutto per dimensioni al di sotto dei 200 bytes. Attraverso diverse prove e la regolazione opportuna di tali parametri il sistema si dimostra efficace nella rilevazione degli attacchi e nelle tempistiche di risposta.

7.4 Risultati ottenuti


Nel seguente paragrafo si presentano i risultati ottenuti analizzando i dati contenuti nei file tcpdump appartenenti al dataset DARPA 1998. Il traffico raccolto presenta un attacco di tipo SYN flooding della durata di pi di unora. In figura 7.4.1 si mostra la frequenza dei pacchetti TCP al variare del tempo. In figura 7.4.2 si mostra la frequenza delle richieste SYN al variare del tempo.

98

Figura 7.4.1 Numero dei pacchetti TCP al variare del tempo espresso in secondi

Figura 7.4.2 Numero delle richieste SYN al variare del tempo espresso in secondi

Come si pu notare il numero di SYN intorno alle ore 22:00 molto alto facendo presupporre unanomalia. Ci confermato dal grafico in figura 7.4.3 in cui si riporta il numero delle richieste SYN e delle risposte SYN/ACK. Si nota come questo secondo valore sia al di sotto del primo di quasi 100 volte, di fatto impossibile in una comunicazione normale.

99

Elevato numero richieste di connessione

Normale traffico

Figura 7.4.3 Numero delle richieste SYN e SYN/ACK al variare del tempo espresso in secondi

In figura 7.4.4 mostrato il numero di falsi positivi per 10 secondi con soglia di connessioni pari a 3, 30 secondi con soglia 5 e 60 secondi soglia 10.

Figura 7.4.4 Numero falsi positivi al variare delle dimensioni del CMS in bytes

Il problema attenuato innalzando il livello delle soglie come si vede in figura sotto.

100

Figura 7.4.5 Numero falsi positivi al variare delle dimensioni del CMS in bytes con innalzamento delle soglie

Infine si mostrano i tempi di UPDATE e di QUERY in millisecondi.

Figura 7.4.6 Tempi di update e query in millisecondi al variare del tempo

101

Si nota come i tempi di UPDATE quando il traffico TCP pi intenso. I tempi di QUERY sono praticamente nulli sino al momento dellattacco dove possono raggiungere anche il centesimo di secondo. Si presentano i risultati per traffico raccolto in cui lattacco avviene ogni 5 minuti per circa venti minuti e dura un secondo.

Figura 7.4.7 Numero dei pacchetti TCP al variare del tempo espresso in secondi

Figura 7.4.8 Numero connessioni SYN al variare del tempo espresso in secondi

102

Figura 7.4.9 Numero dei SYN/ACK al variare del tempo espresso in secondi

Figura 7.4.10 Numero dei falsi positivi al variare delle dimensioni in Bytes

Come si pu notare essendo lattacco distribuito diventa pi difficile individuarlo effettuando update e query per esempio ogni 10 secondi se non con una soglia pi alta, anche se con tempistiche di 60, 120, 600 secondi lattacco viene rilevato. Si mostrano infine i tempi di UPDATE e QUERY.

103

Figura 7.4.11 Tempi di update e query in millisecondi al variare del tempo

Anche in questo caso i tempi di UPDATE sono pi alti per traffico pi intenso. I tempi di QUERY rimangono bassi anche nel momento in cui avviene lattacco a causa del numero di connessioni che viene mantenuto basso allo scopo probabilmente di ingannare gli IDS.

104

Conclusioni
Nella presenti tesi si studiato ed implementato un algoritmo su Data streams per lanalisi del traffico di reti informatiche allo scopo di identificare anomalie rispetto al traffico normale. Lalgoritmo in questione denominato Count-Min Sketch e rappresenta un nuova struttura dati a spazio sublineare in grado di eseguire queries su data streams in un tempo e spazio polilogaritmico in n (dimensioni delluniverso). La bont dellalgoritmo stato testato utilizzando dataset ottenuti da situazioni di traffico di rete reali (DARPA 1998). Sono stati effettuati diversi test per identificare lattacco scelto (TCP SYN flooding) variando diversi parametri: dimensioni del Count-Min Sketch, soglia del numero di richieste di SYN per stabilire una connessione e intervallo temporale nel quale effettuare le procedure di update e di query. I test hanno dato esito positivo provando lefficacia dellalgoritmo e lefficienza in termini di spazio e tempo. Definendo le specifiche per altri tipi di attacchi tale metodo potr essere applicato per la detection di questultimi andando a supportare pienamente un Intrusion Detection System, con il grande vantaggio dellanalisi in tempo reale e delle risorse esigue richieste.

105

Bibliografia
[1] Sicurezza informatica. (4 febbraio 2009). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:29 da http://it.wikipedia.org/w/index.php?title=Sicurezza_informatica&oldid=21855025.

[2] Exploit. (30 agosto 2008). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:21 da http://it.wikipedia.org/w/index.php?title=Exploit&oldid=18387584.

[3] Buffer overflow. (18 novembre 2008). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:23 da http://it.wikipedia.org/w/index.php?title=Buffer_overflow&oldid=20209742.

[4] Shellcode. (17 settembre 2008). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:23 da http://it.wikipedia.org/w/index.php?title=Shellcode&oldid=18834619.

[5] Backdoor. (24 gennaio 2009). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:24 da http://it.wikipedia.org/w/index.php?title=Backdoor&oldid=21564998.

[6] Port scanning. (9 novembre 2008). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:24 da http://it.wikipedia.org/w/index.php?title=Port_scanning&oldid=20015196.

[7] Sniffing. (1 febbraio 2009). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:25 da http://it.wikipedia.org/w/index.php?title=Sniffing&oldid=21789378.

[8] Keylogger. (19 gennaio 2009). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:25 da http://it.wikipedia.org/w/index.php?title=Keylogger&oldid=21451440.

[9] Spoofing. (21 gennaio 2009). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:25 da http://it.wikipedia.org/w/index.php?title=Spoofing&oldid=21506481.

106

[10] Trojan. (1 febbraio 2009). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:27 da http://it.wikipedia.org/w/index.php?title=Trojan&oldid=21774733.

[11] Virus (informatica). (29 gennaio 2009). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:28 da http://it.wikipedia.org/w/index.php?title=Virus_(informatica)&oldid=21700687.

[12] Denial of service. (7 febbraio 2009). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:28 da http://it.wikipedia.org/w/index.php?title=Denial_of_service&oldid=21919421.

[13] Ingegneria sociale. (14 gennaio 2009). Wikipedia, L'enciclopedia libera. Tratto il 7 febbraio 2009, 18:28 da http://it.wikipedia.org/w/index.php?title=Ingegneria_sociale&oldid=21339418.

[14] S. Muthukrishnan. Data streams: algorithms and applications. Foundations and Trends in Theoretical Computer Science, 1(2):117236, 2005.

[15] Cormode G, Muthukrishnan S (2005). An improved data stream summary: The countmin sketch and its applications. J of Algorithms, 55(1):5875.

[16] Transmission Control Protocol. (26 febbraio 2009). Wikipedia, L'enciclopedia libera. Tratto il 3 marzo 2009, 15:22 da http://it.wikipedia.org/w/index.php?title=Transmission_Control_Protocol&oldid=2235152 4.

[17] Suite di protocolli Internet. (17 febbraio 2009). Wikipedia, L'enciclopedia libera. Tratto il 3 marzo 2009, 19:18 da http://it.wikipedia.org/w/index.php?title=Suite_di_protocolli_Internet&oldid=22131002.

[18] IPv4. (30 agosto 2008). Wikipedia, L'enciclopedia libera. Tratto il 3 marzo 2009, 19:19 da http://it.wikipedia.org/w/index.php?title=IPv4&oldid=18395682.

107

[19] Internet Protocol. (11 ottobre 2008). Wikipedia, L'enciclopedia libera. Tratto il 3 marzo 2009, 19:19 da http://it.wikipedia.org/w/index.php?title=Internet_Protocol&oldid=19412665. [20] Denial of Service. Disponible in rete allindirizzo:http://www.dia.unisa.it/~ads/corsosecurity/www/CORSO-9900/ddos/dd

108