UNIVERSTA DEGLI STUDI DI GENOVA FACOLTÀ DI INGEGNERIA TESI DI LAUREA STRUTTURE DATI DI TIPO SKETCH PER L ANALISI DEL TRAFFICO DI RETI INFORMATICHE

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "UNIVERSTA DEGLI STUDI DI GENOVA FACOLTÀ DI INGEGNERIA TESI DI LAUREA STRUTTURE DATI DI TIPO SKETCH PER L ANALISI DEL TRAFFICO DI RETI INFORMATICHE"

Transcript

1 UNIVERSTA DEGLI STUDI DI GENOVA FACOLTÀ DI INGEGNERIA Corso di Laurea in Ingegneria Elettronica TESI DI LAUREA STRUTTURE DATI DI TIPO SKETCH PER L ANALISI 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

2 Sommario Abstract... 5 Dichiarazione del relatore... 6 Introduzione... 8 Capitolo La sicurezza informatica Definizione Proprietà Tipi di sicurezza Minacce alla sicurezza Exploit Buffer overflow Stack overflow Shellcode Backdoor Port scanning Sniffing Keylogging Spoofing Triojan Virus Worms Denial of Service SQL Injection Ingegneria sociale Come difendersi Capitolo Intrusion detection system Definizione di IDS Le fasi di un attacco Obiettivi degli IDS Tipi di IDS

3 2.5 Come misurare l efficienza di un IDS Problematiche degli IDS Capitolo Data streams: Algoritmi e applicazioni Introduzione ai data streams Data streaming: modelli Data streaming: uno scenario interessante Principi matematici base Sampling Random projection Capitolo Count-Min Sketch Introduzione Famiglie di funzioni hash universali Metodo della Funzione Universale Collisioni improbabili Come costruire un insieme universale di funzioni hash Count-Min Sketches Procedure di stima Point query Inner Product Query Range Query Capitolo Implementazione e test dell algoritmo Count-Min Sketch Implementazione dell algoritmo Inizializzazione Update Query Verifica di funzionamento Capitolo La comunicazione TCP/IP e l attacco Denial Of Service Come funziona il TCP/IP

4 6.2 Il protocollo TCP Definizione Caratteristiche principali L header TCP Apertura di una connessione - Three-way handshake Chiusura di una connessione - Chiusura a 4 vie Internet Protocol Il pacchetto IPv Indirizzamento IPv Capitolo Strumenti utilizzati e risultati ottenuti Il dataset Darpa La libreria WinPcap Architettura per l analisi del traffico di rete Cattura di Pacchetti in ambiente UNIX Struttura dello stack di cattura BPF Cattura di Pacchetti in ambiente Windows Comportamento del Driver Il processo di filtraggio Il processo di lettura Il processo di scrittura PACKET.DLL: packet driver API Algoritmo di detection basato su Count-Min Sketch Riduzione dei falsi postivi Risultati ottenuti

5 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. 5

6 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 l analisi 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 6

7 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. 7

8 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 dell informazione 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. L accesso da parte di un malintenzionato ad un sistema può essere fonte di danni di qualsiasi tipo: oltre all acquisizione 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 all interno 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 un analisi real-time del traffico di rete, dovuta all enorme 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 un analisi alla ricerca di anomalie con l ausilio 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 8

9 effettuare queries fondamentali come point, range e inner-product query, con possibilità di risposta molto veloce. Tale struttura dati è stata applicata a supporto dell attività dell intrusion detection system. Per testare bontà e performance dell algoritmo 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. L algoritmo 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 quest ultima, 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 l algoritmo Count-Min Sketch studiato ed implementato in tesi. Nel capitolo 5 sono riportati alcuni risultati derivanti da test effettuati sull algoritmo stesso mediante uso di generatore di numero pseudo-casuali. Nel Capitolo 6 sono descritte le basi della comunicazione TCP/IP e si analizza l attacco DOS. Nel Capitolo 7 si riportano gli strumenti utilizzati per l intrusion detection e i risultati ottenuti dai test su traffico di rete reale. 9

10 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 dell informazione 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à dell argomento, 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

11 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 l obiettivo finale in sotto-obiettivi, proprietà fondamentali, che diventano i requisiti del sistema stesso; tali proprietà, sono: Availability: questo requisito assicura che l accesso 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 l immagazzinamento o durante il trasferimento, dall altro 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 l impossibilità, 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

12 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à. L attività di logging è uno dei metodi per cercare di garantire l accountability. Le quattro proprietà appena descritte dipendono fortemente l una dall altra, non è possibile e non ha significato alcuno parlare di una di queste proprietà senza citarne un altra. Per esempio la confidenzialità dipende dall integrità: se quest ultima è 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 l integrità 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

13 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 l informazione è un bene che aggiunge valore all impresa, 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 dell azienda. 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

14 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 l accesso ad un sistema protetto o di sovvertirne il funzionamento. Esistono minacce esterne ed interne al sistema: gran parte degli attacchi vengono proprio da dentro l organizzazione stessa sebbene oggigiorno definire i confini di un azienda è 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 un impresa 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 l organizzazione, per diversi motivi (ostilità nei confronti dell azienda, 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 sull uso 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 Script- Kiddies 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

15 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 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 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

16 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

17 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 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 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

18 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 l accesso 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

19 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 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

20 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 Spoofing Tecnica basata sull assenza 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] 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

21 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 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 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 dell interazione dell utente). 21

22 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 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 dell algoritmo implementato[12] 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 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

23 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 l utente 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 dall antivirus 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 dell utente 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

24 aggressioni provenienti dall esterno e blocca eventuali programmi presenti sul computer che tentano di accedere ad internet senza il controllo dell utente. 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 l utilizzo di certificati digitali e algoritmi crittografici per identificare l autorità 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 nell esecuzione 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 all amministratore di rete. L Intrusion Detection System può non solo segnalare l anomalia, 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

25 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 dell informatica, due utenti possono utilizzare la steganografia digitale per inviarsi messaggi nascosti all interno di file di copertura (filigrana elettronica), come immagini o altri file multimediali: in questo tipo di file l alterazione di pochi bit non modifica in modo evidente il contenuto del documento. Sistema di autenticazione: potrebbe rivelarsi utile, in particolare nelle aziende, l utilizzo di software per l autenticazione sicura con un secondo elemento di autenticazione basato su un insieme di caratteri disposti in uno schema suddiviso in file e colonne conosciute dall utente 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 dell utente tramite l utilizzo dell impronta digitale come forma di autenticazione. 25

26 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 l attenzione adesso su un particolare sistema di difesa che consenta di rilevare l intrusione 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 l availability, l integrity, la confidentiality o a scavalcare i meccanismi di sicurezza previsti per l entità 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 l IDS 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 l IDS deve essere configurato al meglio, in particolare deve conoscere: l attuale versione del o dei sistemi operativi, le eventuali patch o service pack installati, lo stack di rete, ecc 26

27 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 all interno dello schema seguente: 1-HIDING (Mascheramento) Durante questa prima fase, l attacker 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 l attacker 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

28 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, l attaccante è tipicamente in possesso dei nomi di dominio interessati, delle denominazioni e delle funzioni primarie dei singoli server, degli indirizzi IP di proprietà dell azienda bersaglio, di una mappa di rete approssimativa, di indirizzi e- mail validi e di informazioni specifiche riguardanti l ISP che fornisce la connettività Internet. Port Scanning: Ogni sistema che implementa il TCP/IP ha possibili porte TCP e altrettante UDP: lo scopo di questa fase e fornire un elenco dei sistemi attivi nell intervallo di indirizzi individuato durante l attività di Network Surveying ed ottenere una mappa di rete ad un maggiore livello di dettaglio. Service Identification: si tratta dell esame 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 dell applicazione che ascolta sulla porta 80/TCP (il server web Apache). I risultati ottenuti al termine di questa analisi consentono all attaccante di individuare i possibili punti deboli dell infrastruttura 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 l attacker di sferrare l attacco 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

29 sfruttano l esecuzione 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 l SQL 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 all interno del proprio modello di gestione fornendo, ad esempio, a chi attacca, la possibilità di sfruttare l esistenza di relazioni di fiducia tra le singole macchine o in relazione all elemento umano (tramite attacchi basati su social engineering ed human deception). Per ognuna delle quattro macro-categorie di vulnerabilità descritte, l attaccante cerca di individuare i punti deboli e colpisce ove risulta più conveniente per la riuscita dell intrusione informatica, utilizzando i mezzi opportuni. 4-CLEANING (Pulizia) Una volta portata a termine l intrusione, è generalmente necessario per l attacker 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

30 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 l IDS 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, l IDS può ripetere gli stessi tipi di controlli; 30

31 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 quest ultime diventa possibile scoprire la presenza di un eventuale intruso. Una delle difficoltà maggiori nell uso efficace di un IDS `e proprio quella di identificare tali azioni, e non confonderle con azioni assolutamente legittime, ancorché poco usuali. 31

32 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 dell amministratore) 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) all accadere di certe situazioni. Di norma questo viene fatto esaminando gli eventi correnti all interno 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 nell azione 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

33 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 l analisi 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ò l uso 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. L ultima 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 dall IDS sulla stessa, strettamente dipendenti dal sistema operativo, per il tracciamento delle chiamate di sistema, dell utilizzo 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 l invio di dati mal formattati ad un campo di una form, a meno che essi 33

34 non vengano mandati attraverso una sessione criptata che renderebbe inutili le firme sulle quali si basa il controllo dell IDS. Fino a una decina di anni fa i sistemi più importanti erano quelli host-based, tuttavia, l avvento dell era di Internet ha reso la rete uno dei vettori d attacco 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 d attacco 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 l efficienza 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

35 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, l unica maniera efficace per consentirgli di operare preventivamente sarebbe quella di porlo in-line, come filtro pregresso a tutto il traffico. Un idea 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 l host vittima e l attaccante. 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 l attacco 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 all interno 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

36 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 d attacco 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 l assenza 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

37 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ì all amministratore di intervenire prima che l attaccante 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 d attacco. 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 l assunto che sia possibile elencare tutte le possibili forme d attacco. 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 l IDS segnala come anomala un azione legittima o innocua. 37

38 Si definisce invece falso negativo quando, viceversa, un IDS non evidenzia un azione sicuramente maliziosa. Sebbene i falsi positivi possano sembrare innocui ciò non è sempre vero: un IDS 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 l IDS in questi casi ha rilevato non è un falso positivo bensì un verissimo attacco che qualcuno alla cieca ha rivolto contro le macchine sbagliate. Sta nell interesse dell amministratore 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 d attacco. In generale, in un sistema di misuse detection un falso negativo è associato alla mancanza di una firma per l attacco effettuato, ricadendo nel problema esposto poco sopra del riconoscimento di nuovi attacchi. In sistemi basati sull individuazione 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 dell interleaving, 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 all attacco, rispettando un ordinamento che è solo parziale, o contenere al loro interno elementi variabili che possano assumere un infinità di valori, causando problemi di unificazione. Un ultimo problema legato al fattore tempo è l uncertain reasoning ovvero l incapacità di determinare algebricamente se è possibile fermare l analisi o se è necessario 38

39 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 l IDS intasando la memoria con sequenze appese. Anche l introduzione di un timeout può offrire un ottima scappatoia all attaccante: l attacco 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 l attacco nel tempo o provocare un flush della sequenza d attacco. 39

40 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 l attenzione soprattutto sugli attacchi alle reti di computer e sui problemi che affligono gli IDS. Difetti e problematiche dovuti principalmente alla difficoltà nell analisi 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 un importante massa di informazioni attraverso l applicazione di algoritmi in grado di sintetizzare e processare tale flusso di dati consentendo un analisi statistica volta all individuazione 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) l intero 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

41 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 l analisi dei dati tradizionalmente si eseguivano off-line attraverso l interrogazione di database (transazioni, analisi di trend, previsioni). Le recenti applicazioni di monitoraggio in campo finanziario, atmosferico, astronomico, internet, hanno avuto la necessità di compiere un analisi, quasi in tempo reale, alla ricerca di eventi 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 l attenzione sulle emergenti teorie in questo campo, sull applicazione di strutture dati tipo sketch per la sintesi di tali flussi di informazioni arrivando a presentare proprietà e funzionalità dell algoritmo utilizzato per lo svolgimento del lavoro di tesi. 41

42 3.2 Data streaming: modelli Si consideri uno stream in input a,... che arriva sequenzialmente, elemento per 1, a2 elemento, e descrive un sottostante segnale, funzione uni-dimensionale. I modelli differiscono su come descrive. Time series model. Ogni è elemento e appare nell ordine crescente di. Questo è un modello adattabile per dati in serie temporale dove, per esempio, si sta osservando del traffico IP ogni cinque minuti. Cash register model. sono incrementi di. Si consideri, allora dove è lo stato del segnale dopo l i-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 sono aggiornamenti di. Se pensiamo ad, allora dove è lo stato del segnale dopo che l i-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 dell algoritmo 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

43 Tempo necessario per calcolare funzioni su. Sarebbe desiderabile avere, ad ogni tempo nello stream di dati, un tempo di processamento, uno spazio e un tempo di calcolo dell ordine, preferibilmente polylogaritmico in. Strutture dati tradizionali come alberi di ricerca processano ogni update in un tempo e supportano query in un tempo dell ordine, 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 all uso 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 l individuazione 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

44 contengono informazioni cumulative sul numero di byte, sui pacchetti inviati, sul tempo d inizio 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 dall inizio 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 nell individuazione 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 l output che è anche uno stream e qual è una approssimazione adatta in tal caso? 44

45 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 dall inizio del giorno. Si potrebbe monitorare il packet log. Lo stream in input sarà una sequenza di pacchetti IP su un dato link, con il pacchetto avente l indirizzo IP. Si avrà il numero di pacchetti inviati da un IP sorgente, per, tutti inizializzati a zero all inizio del giorno. Ogni pacchetto aggiunge uno a ; da qui il 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 dell esempio in questione: quanti IP stanno correntemente usando la stessa linea. Più formalmente ad ogni tempo si considerano indirizzi IP, tali che alcuni flussi 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 l ultimo pacchetto in un flusso. Si indica con il numero di flussi in cui è correntemente coinvolto un indirizzo IP sorgente, per, tutti inizializzati a zero all inizio del giorno. Se un pacchetto è all inizio del flusso, si aggiunge uno a se è la sorgente del pacchetto ; se è alla fine del flusso si sottrae uno da se è la 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, non uguali a zero, ogni volta. 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 l attenzione su due tecniche: il campionamento dei dati (Sampling) e le proiezioni randomiche (Random projection), le quali saranno oggetto di approfondimento in quanto alla base dell algoritmo utilizzato in fase di tesi. 45

46 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 quell elemento nel passato, perdendo quindi un dato che potrebbe essere importante Random projection Questo approccio si basa sulla riduzione della dimensionalità, usando proiezioni su vettori random. Questi ultimi sono generati dall efficiente 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 random Gaussiane producono una buona stima della norma dei data streams, usando distribuzioni di Cauchy si ottiene una buona stima della norma. Tale metodo si dimostra utile anche per il calcolo di altre funzioni: 46

47 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 l inner product è ampio. Ci sono molte variazioni delle proiezioni random come Random subset sums, counting sketches e anche Bloom filters. 47

48 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 rappresentato in maniera incrementale. Questo vettore ha dimensione, e il suo stato corrente al tempo è. Inizialmente il vettore è pari a zero, cioè per ogni. Gli updates al vettore sono rappresentati come stream di coppie. Il -esimo update sarà, cioè (modello cash register ), e (modello turnstile ) per ogni. Ad ogni tempo verrà effettuata 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 dall algoritmo 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 nell input, la struttura dati usata dall algoritmo per rappresentare il flusso dati in input è una sintesi sketch di quest ultimo; 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

49 garanzia di accuratezza verrà fatta in termini di determinati parametri specificati dall utente, e, cioè l errore nel rispondere ad una query sarà all interno 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, quest ultimo avrà un fattore moltiplicativo dell ordine. 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 l indipendenza p-wise, che può essere difficile da calcolare soprattutto per l implementazione 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 all uso di più sketches costituendo un overhead proibitivo. 49

50 Questi svantaggi limiterebbero l uso di molti algoritmi, conosciuti nell ambito 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, richiesto per altre strutture dello stesso tipo, a un fattore di e quelli di tempo da un fattore ad fattore 1, che è significativo. 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

51 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 l universo 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 Metodo della Funzione Universale L idea 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 U, il numero di funzioni hash h H per cui h(x) = h(y) è esattamente H / m. 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 c e una collisione e 0 se non c e. 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

52 Si ha pertanto una probabilità pari a 1 / m di estrarre una h che generi una collisione 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 c y,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[c y,z ] = 1 / m sia C x 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 C x sarà la somma dei valori attesi di collisione fra le coppie di chiavi x e y per ogni chiave y già presente in tabella 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. Per ogni coppia di interi (a,b) tali che 1 a < p e 0 b < p si definisca una funzione hash. La famiglia di funzioni: 52

53 è 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: è rappresentato da un array, con: e. Il vettore degli ingressi è inizializzato con tutti i valori a zero. Addizionalmente d funzioni di hashing sono scelte uniformemente a random da una famiglia pairwise-independent. Così si mantiene un totale di tabelle hash, con un totale di celle hash. Figura Array di celle hash Procedura di update. Quando una coppia arriva in update, significa che l elemento è aggiornato di una quantità, quindi è aggiunto come una unità al conteggio in ogni riga; il contatore è determinato da. Formalmente, 53

54 Cercando di essere più specifici: si applica l hash function di ogni elemento proveniente dallo stream di dati, e si aggiunge il conteggio dell elemento 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, che comprende parole e 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 Figura Ogni elemento è mappato su di una cella in ogni riga dell array di contatori: quando un update di count dell elemento arriva, è aggiunto ad ognuna di queste celle. 4.4 Procedure di stima Point query La risposta a (point query) è data da. Teorema 1. La stima ha le seguenti garanzie: ; e, con probabilità al minimo,. 54

55 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 (casuale sulle scelte di ) essere Dal momento che tutte le sono positive in questo caso, è una variabile non negativa. Per costruzione. Quindi chiaramente,. Per altre direzioni, si osserva che per l indipendenza pairwise di Dall inegualianza di Markov si ha che:, e la linearità dell expectation. Con ciò si vuole dire che, nel caso di contatori interi positivi, il minimo di ognuna delle possibilità fornisce un limite (della norma più stretto con probabilità al minimo. In questo caso, se le frequenze di elementi differenti sono, la frequenza stimata dell elemento giace tra e. Questo è minore del limite massimo di un fattore. Applicando l inegualianza 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

56 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, e quindi la probabilità è meno di. Applicando i limiti di Chernoff si nota che la mediana di copia di questa procedura sia sbagliata è minore di. Il tempo per produrre la stima è e lo spazio usato è parole Inner Product Query Procedura di stima. Si pone. La stima per vettori non negativi e è. Teorema 3. e con probabilità,. 56

57 Dimostrazione. Chiaramente per vettori non negativi. Per l indipendenza pairwise di, Quindi per l inegualianza di Markov, richiesto. Lo spazio e il tempo per produrre la stima è, come. Gli aggiornamenti sono eseguiti in tempo Range Query Si definisce il vettore di dimensione tale che, e altrimenti. La query può essere semplicemente riformulata come. Questo metodo ha però due svantaggi: primo la garanzia dell errore in termini e pertanto le somme ad ampio range hanno una garanzia d errore che cresce linearmente con l ampiezza dell intervallo; 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 nell intervallo, e sommare le stime. Per evitare la complessità di calcolo si potrebbero utilizzare ranges dinamici: un range dinamico è un intervallo nella forma per dati parametri e. Procedura di stima. Si prendono Count-Min Sketches per rispondere a range queries in modo approssimato. Ogni range query può essere ridotta ad un massimo 57

58 di dynamic range queries, le quali a turno possono essere ulteriormente ridotta ad una singola point query. Ogni punto nel range è membro di ranges dinamici, uno per ogni nell intervallo. Uno sketch è preso per ogni insieme di ranges dinamici di lunghezza, e aggiorna ognuno di questi per tutti gli update che arrivano. Quindi data una range query, si calcolano al massimo ranges dinamici che canonicamente ricoprono l intero intervallo e si pone che la stima sia data dalla somma di molte point queries. Si consideri come la risposta alla query e la stima ottenuta usando la procedura descritta sopra. Teorema 4. e con probabilità al minimo Dimostrazione. Applicando l inegualianza del Teorema 1,. Si consideri ogni stimatore utilizzato per formare ; l expectation dell errore additivo per ognuno di questi sarà, per la linearità dell expectation degli errori di ogni stima puntuale. Applicando l inegualianza di Markov, la probabilità che questo errore additivo sia maggiore di per ogni stima è minore di ; da qui per tutte le stime la probabilità sarà al massimo. Il tempo di produrre una stima o per eseguire un update è. Lo spazio usato sarà. 58

59 Capitolo 5 Implementazione e test dell algoritmo Count-Min Sketch 5.1 Implementazione dell algoritmo L algoritmo 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 è rappresentato da un array bi-dimensionale di contatori che avrà larghezza w e profondità. Ogni ingresso nell array sarà inizialmente a zero. Inoltre funzioni di hashing saranno scelte casualmente da una famiglia pairwise-independent Inizializzazione I passi per l inizializzazione sono stati i seguenti: Creazione di un array di dimensioni con valori iniziali tutti a zero: è stata necessaria, in tal caso, una allocazione dinamica della memoria in quanto e non sono note senza i parametri (l accuratezza che si vuole ottenere) e (la certezza con cui si raggiunge l accuratezza), immessi dall utente; ; ; Allocazione della memoria per le funzioni di hashing e inizializzazione dei semi con numeri random. 59

60 5.1.2 Update La procedura di aggiornamento consta delle seguenti operazioni: Calcolo delle funzioni di hashing per ogni ingresso: la funzione utilizzata ritorna l hash di un valore attraverso l uso 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 (dimensioni dell universo ) a (larghezza dell array); 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 cancellare un elemento è simile: per ogni riga il contatore è decrementato di uno Query La procedura di query è descritta come: Calcolo del valore di hash dell elemento 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 dell algoritmo è stato necessario generare numeri pseudo-random, caricarli all interno 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é l algoritmo funzioni in modo corretto sarà opportuno che: 60

61 Dati l occorrenza 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 Count- Min Sketch sarà presente una sovrastima che supererà l occorrenza reale del numero richiesto di una quantità pari al prodotto dell errore, passato in input, e la cardinalità dell insieme 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 è nient altro che l intervallo sopra citato e per quanto riguarda la molteplicità è stato scelto di generare 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, e elementi. In figura viene mostrata una distribuzione uniforme di numeri random, per elementi. Si è scelto di riportare una finestra di 100 elementi per questioni di chiarezza. 61

62 Figura Distribuzione uniforme di numeri random in un dominio compreso tra 0 e Si riporta una tabella con i dati utilizzati per le prove. ε δ W d w d 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

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

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

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

66 Figura Stima del Count-Min Sketch per una distribuzione uniforme di numeri casuali in un intervallo compreso tra 0 e 1000 con e Nei grafici riportati in figura 5.2.2, e 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 Count- Min Sketch (figure 5.2.5, e 5.2.7) si nota un deciso miglioramento della stima (si occupa quasi 1 KB di memoria). Nella figura 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 l andamento dell errore relativo medio con la dimensionalità dell insieme dei dati in input, al variare delle dimensioni del Count-Min Sketch. 66

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

68 Capitolo 6 La comunicazione TCP/IP e l attacco 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

69 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 all altro. Un computer spedisce, l altro 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 all ultimo livello. Il livello fisico, che è l'ultimo, trasmette il messaggio sul cavo sotto forma di impulso elettrico. Questo è l unico 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 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

70 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 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

71 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 L header 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

72 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 o o o o o URG - se settato a 1 indica che nel flusso sono presenti dati urgenti alla posizione (offset) indicata dal campo Urgent pointer; 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

73 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 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

74 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 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

75 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 Chiusura a 4 vie 75

76 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 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

77 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 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

78 o o 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 byte che, includendo l'header, potrebbe eccedere la dimensione massima di 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

79 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 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

80 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 è [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

81 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 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

82 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" 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 Spoofing 82

83 Nell'esempio in figura 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 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

84 Figura Configurazione di una rete prima dell attacco 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 Attacco Smurf 84

85 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

86 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 SYN-FLOODING 86

87 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 Applicando l algoritmo Count-Min Sketch, con opportune modifiche, si è testata la capacità di quest ultimo di rilevare attacchi del tipo Denial-Of-Service (con particolare attenzione sull attacco 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 dell intrusione, una off-line e una real-time. Il set di dati di training messi a disposizione e reperibili dal sito 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 l uso illegale di computer. In fase di tesi, tra i diversi elementi messi a disposizione, si sono utilizzati i seguenti: 87

88 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 all esterno di una base militare simulata; Listfile per i dati tcpdump, contenenti le seguenti informazioni: o ID di sessione: l identificativo della sessione o Data di inizio: in formato MM / DD / YYYY o Tempo di inizio: in formato HH:MM:SS o Durata della sessione: in formato HH:MM:SS o Identificativo di servizio: una stringa contenente il tipo di servizio tcp, udp icmp, ecc.. o Porta sorgente o Porta destinazione o Indirizzo IP sorgente o Indirizzo IP destinazione o Attack Score: 0 se non c è attacco, 1 se è presente o Nome dell attacco Questo secondo file è stato usato per verificare se l attacco 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

89 Figura 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 WinPcap è un tool standard per l accesso di reti di computer a livello di layer in ambienti Windows: essa permette la cattura e l invio 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 l analisi del traffico di reti informatiche (protocol analyzers, network monitors, network intrusion detection systems, sniffers, traffic generators e network testers). Alcuni di questi tools, 89

LA SICUREZZA INFORMATICA SU INTERNET LE MINACCE

LA SICUREZZA INFORMATICA SU INTERNET LE MINACCE LE MINACCE I rischi della rete (virus, spyware, adware, keylogger, rootkit, phishing, spam) Gli attacchi per mezzo di software non aggiornato La tracciabilità dell indirizzo IP pubblico. 1 LE MINACCE I

Dettagli

Introduzione alla. Sicurezza: difesa dai malintenzionati. Proprietà Attacchi Contromisure. Prof. Filippo Lanubile. Prof.

Introduzione alla. Sicurezza: difesa dai malintenzionati. Proprietà Attacchi Contromisure. Prof. Filippo Lanubile. Prof. Introduzione alla sicurezza di rete Proprietà Attacchi Contromisure Sicurezza: difesa dai malintenzionati Scenario tipico della sicurezza di rete: man in the middle Proprietà fondamentali della sicurezza

Dettagli

2 Dipendenza da Internet 6 2.1 Tipi di dipendenza... 6 2.2 Fasi di approccio al Web... 6 2.3 Fine del corso... 7

2 Dipendenza da Internet 6 2.1 Tipi di dipendenza... 6 2.2 Fasi di approccio al Web... 6 2.3 Fine del corso... 7 Sommario Indice 1 Sicurezza informatica 1 1.1 Cause di perdite di dati....................... 1 1.2 Protezione dei dati.......................... 2 1.3 Tipi di sicurezza........................... 3 1.4

Dettagli

Modulo 1. Concetti di base della Tecnologia dell Informazione ( Parte 1.7) Rielaborazione dal WEB: prof. Claudio Pellegrini - Sondrio

Modulo 1. Concetti di base della Tecnologia dell Informazione ( Parte 1.7) Rielaborazione dal WEB: prof. Claudio Pellegrini - Sondrio Modulo 1 Concetti di base della Tecnologia dell Informazione ( Parte 1.7) Rielaborazione dal WEB: prof. Claudio Pellegrini - Sondrio La sicurezza dei sistemi informatici Tutti i dispositivi di un p.c.

Dettagli

Colloquio di informatica (5 crediti)

Colloquio di informatica (5 crediti) Università degli studi della Tuscia Dipartimento di Scienze Ecologiche e Biologiche Corso di laurea in Scienze Ambientali A.A. 2013-2014 - II semestre Colloquio di informatica (5 crediti) Prof. Pier Giorgio

Dettagli

Tipologie e metodi di attacco

Tipologie e metodi di attacco Tipologie e metodi di attacco Tipologie di attacco Acquisizione di informazioni L obiettivo è quello di acquisire informazioni, attraverso l intercettazione di comunicazioni riservate o ottenendole in

Dettagli

Sicurezza dei Sistemi Informativi. Alice Pavarani

Sicurezza dei Sistemi Informativi. Alice Pavarani Sicurezza dei Sistemi Informativi Alice Pavarani Le informazioni: la risorsa più importante La gestione delle informazioni svolge un ruolo determinante per la sopravvivenza delle organizzazioni Le informazioni

Dettagli

La sicurezza: le minacce ai dati

La sicurezza: le minacce ai dati I.S.I.S.S. Sartor CASTELFRANCO V.TO Tecnologie dell'informazione e della Comunicazione La sicurezza: le minacce ai dati Prof. Mattia Amadori Anno Scolastico 2015/2016 Le minacce ai dati (1) Una minaccia

Dettagli

La Sicurezza delle Reti. La Sicurezza delle Reti. Il software delle reti. Sistemi e tecnologie per la multimedialità e telematica.

La Sicurezza delle Reti. La Sicurezza delle Reti. Il software delle reti. Sistemi e tecnologie per la multimedialità e telematica. Sistemi e tecnologie per la multimedialità e telematica Fabio Burroni Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena burronif@unisi unisi.itit La Sicurezza delle Reti La presentazione

Dettagli

BOLLETTINO DI SICUREZZA INFORMATICA

BOLLETTINO DI SICUREZZA INFORMATICA STATO MAGGIORE DELLA DIFESA II Reparto Informazioni e Sicurezza Ufficio Sicurezza Difesa Sezione Gestione del Rischio CERT Difesa CC BOLLETTINO DI SICUREZZA INFORMATICA N. 3/2008 Il bollettino può essere

Dettagli

Sicurezza: credenziali, protocolli sicuri, virus, backup

Sicurezza: credenziali, protocolli sicuri, virus, backup Sicurezza: credenziali, protocolli sicuri, virus, backup La sicurezza informatica Il tema della sicurezza informatica riguarda tutte le componenti del sistema informatico: l hardware, il software, i dati,

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo L1 2 I virus informatici 1 Prerequisiti Concetto intuitivo di applicazione per computer Uso pratico elementare di un sistema operativo 2 1 Introduzione La sicurezza informatica

Dettagli

Security Scan e Penetration Testing

Security Scan e Penetration Testing Security Scan e Penetration Testing esperienze di una realtà specializzata http://www.infosec.it info@infosec.it Il Net Probing INFOSEC Relatore: Stefano Venturoli Infosecurity 2002 Security Scan e Penetration

Dettagli

Network Hardening. Università degli Studi di Pisa. Facoltà di Scienze Matematiche, Fisiche e Naturali. Stage svolto presso BK s.r.

Network Hardening. Università degli Studi di Pisa. Facoltà di Scienze Matematiche, Fisiche e Naturali. Stage svolto presso BK s.r. Network Hardening Università degli Studi di Pisa Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Applicata Stage svolto presso BK s.r.l Tutor Accademico Candidato Tutor

Dettagli

Alessandro Bulgarelli. Riccardo Lancellotti. WEB Lab Modena

Alessandro Bulgarelli. Riccardo Lancellotti. WEB Lab Modena Sicurezza in rete: vulnerabilità, tecniche di attacco e contromisure Alessandro Bulgarelli bulgaro@weblab.ing.unimo.it Riccardo Lancellotti riccardo@weblab.ing.unimo.it WEB Lab Modena Pagina 1 Black hat

Dettagli

La sicurezza in rete

La sicurezza in rete La sicurezza in rete Sommario Il problema della sicurezza in rete: principi di base Tipologie di attacchi in rete Intercettazioni Portscan Virus Troiani Spyware Worm Phishing Strumenti per la difesa in

Dettagli

Ordine degli Ingegneri della Provincia di Napoli Commissione Telecomunicazioni

Ordine degli Ingegneri della Provincia di Napoli Commissione Telecomunicazioni EDILMED 2010 Ordine degli Ingegneri della Provincia di Napoli Commissione Telecomunicazioni SICUREZZA INFORMATICA DEGLI STUDI PROFESSIONALI G. Annunziata, G.Manco Napoli 28 Maggio 2010 EDILMED/ 2010 1

Dettagli

Sicurezza dei sistemi e delle reti Introduzione

Sicurezza dei sistemi e delle reti Introduzione Sicurezza dei sistemi e delle reti Introduzione Damiano Carra Università degli Studi di Verona Dipartimento di Informatica Riferimenti! Cap. 8 di Reti di calcolatori e Internet. Un approccio topdown, J.

Dettagli

Recente aumento della diffusione di virus Malware

Recente aumento della diffusione di virus Malware Recente aumento della diffusione di virus Malware Recentemente è stato registrato un aumento della diffusione di particolari tipi di virus chiamati generalmente Malware che hanno come scopo principale

Dettagli

Polizia di Stato Compartimento Polizia Postale e delle Comunicazioni Veneto

Polizia di Stato Compartimento Polizia Postale e delle Comunicazioni Veneto CYBER RISK: RISCHI E TUTELA PER LE IMPRESE Confindustria Vicenza 26/02/2015 Polizia di Stato Compartimento Polizia Postale e delle Comunicazioni Veneto Suddivisione territoriale Compartimenti e Sezioni

Dettagli

Connessioni sicure: ma quanto lo sono?

Connessioni sicure: ma quanto lo sono? Connessioni sicure: ma quanto lo sono? Vitaly Denisov Contenuti Cosa sono le connessioni sicure?...2 Diversi tipi di protezione contro i pericoli del network.....4 Il pericolo delle connessioni sicure

Dettagli

Introduzione a Internet e cenni di sicurezza. Dott. Paolo Righetto 1

Introduzione a Internet e cenni di sicurezza. Dott. Paolo Righetto 1 Introduzione a Internet e cenni di sicurezza Dott. Paolo Righetto 1 Introduzione a Internet e cenni di sicurezza Quadro generale: Internet Services Provider (ISP) Server WEB World Wide Web Rete ad alta

Dettagli

SICUREZZA. Sistemi Operativi. Sicurezza

SICUREZZA. Sistemi Operativi. Sicurezza SICUREZZA 14.1 Sicurezza Il Problema della Sicurezza Convalida Pericoli per i Programmi Pericoli per il Sistema Difendere i Sistemi Scoperta di Intrusioni Cifratura Esempio: Windows NT 14.2 Il Problema

Dettagli

Sistemi Operativi SICUREZZA. Sistemi Operativi. D. Talia - UNICAL 14.1

Sistemi Operativi SICUREZZA. Sistemi Operativi. D. Talia - UNICAL 14.1 SICUREZZA 14.1 Sicurezza Il Problema della Sicurezza Convalida Pericoli per i Programmi Pericoli per il Sistema Difendere i Sistemi Scoperta di Intrusioni Cifratura Esempio: Windows NT 14.2 Il Problema

Dettagli

Elementi di sicurezza 1.5

Elementi di sicurezza 1.5 Elementi di sicurezza 1.5 UserID e password Nei computer possono essere raccolti molti dati che possono avere un valore economico o personale notevolissimo Si pone allora il problema di impedire l accesso

Dettagli

CORSO EDA Informatica di base. Sicurezza, protezione, aspetti legali

CORSO EDA Informatica di base. Sicurezza, protezione, aspetti legali CORSO EDA Informatica di base Sicurezza, protezione, aspetti legali Rischi informatici Le principali fonti di rischio di perdita/danneggiamento dati informatici sono: - rischi legati all ambiente: rappresentano

Dettagli

M ODULO 7 - SYLLABUS 1.0. IT Security. Corso NUOVA ECDL 2015 prof. A. Costa

M ODULO 7 - SYLLABUS 1.0. IT Security. Corso NUOVA ECDL 2015 prof. A. Costa M ODULO 7 - SYLLABUS 1.0 IT Security Corso NUOVA ECDL 2015 prof. A. Costa Minacce ai dati 1 Concetti di sicurezza Differenze fra dati e informazioni Il termine crimine informatico: intercettazione, interferenza,

Dettagli

Gestione degli accessi al sistema(autenticazione) e ai locali. Analisi del traffico di rete (Firewall, IDS/IPS)

Gestione degli accessi al sistema(autenticazione) e ai locali. Analisi del traffico di rete (Firewall, IDS/IPS) Contromisure Contromisure Gestione degli accessi al sistema(autenticazione) e ai locali Antivirus Analisi del traffico di rete (Firewall, IDS/IPS) Analisi utilizzo delle risorse di sistema, accessi (IDS/IPS)

Dettagli

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software.

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software. Generalità Definizione Un firewall è un sistema che protegge i computer connessi in rete da attacchi intenzionali mirati a compromettere il funzionamento del sistema, alterare i dati ivi memorizzati, accedere

Dettagli

Sicurezza. informatica. Peschiera Digitale 2102-2013 Sicurezza

Sicurezza. informatica. Peschiera Digitale 2102-2013 Sicurezza Sicurezza informatica Peschiera Digitale 2102-2013 Sicurezza Overview 1. Nozioni generali 2. Virus e anti-virus 3. Spam e anti-spam 4. Phishing 5. Social engineering 6. Consigli Peschiera Digitale 2102-2013

Dettagli

01/04/2012 CORSO DI ABILITA INFORMATICHE. Introduzione alla sicurezza ICT. Introduzione alla sicurezza ICT. Basi di sicurezza ICT A.A.

01/04/2012 CORSO DI ABILITA INFORMATICHE. Introduzione alla sicurezza ICT. Introduzione alla sicurezza ICT. Basi di sicurezza ICT A.A. CORSO DI ABILITA INFORMATICHE Basi di sicurezza ICT A.A. 2011-12 1 Introduzione alla sicurezza ICT La sicurezza è una tematica complessa e articolata per introdurre la quale definiremo la metodologia di

Dettagli

KASPERSKY FRAUD PREVENTION FOR ENDPOINTS

KASPERSKY FRAUD PREVENTION FOR ENDPOINTS KASPERSKY FRAUD PREVENTION FOR ENDPOINTS www.kaspersky.com KASPERSKY FRAUD PREVENTION 1. Modi di attacco ai servizi bancari online Il motivo principale alla base del cybercrimine è quello di ottenere denaro

Dettagli

Elementi di Sicurezza e Privatezza Lezione 10 Firewall and IDS

Elementi di Sicurezza e Privatezza Lezione 10 Firewall and IDS Elementi di Sicurezza e Privatezza Lezione 10 Firewall and IDS Chiara Braghin chiara.braghin@unimi.it Firewall Firewall Sistema di controllo degli accessi che verifica tutto il traffico in transito Consente

Dettagli

Sicurezza. IZ3MEZ Francesco Canova www.iz3mez.it francesco@iz3mez.it

Sicurezza. IZ3MEZ Francesco Canova www.iz3mez.it francesco@iz3mez.it Sicurezza IZ3MEZ Francesco Canova www.iz3mez.it francesco@iz3mez.it La sicurezza La Sicurezza informatica si occupa della salvaguardia dei sistemi informatici da potenziali rischi e/o violazioni dei dati

Dettagli

Sicurezza dei sistemi SIP: analisi sperimentale di possibili attacchi e contromisure

Sicurezza dei sistemi SIP: analisi sperimentale di possibili attacchi e contromisure UNIVERSITÀ DEGLI STUDI DI PISA FACOLTÀ DI INGEGNERIA Corso di Laurea in INGEGNERIA DELLE TELECOMUNICAZIONI Tesi di Laurea Sicurezza dei sistemi SIP: analisi sperimentale di possibili attacchi e contromisure

Dettagli

Vulnerabilità di un Sistema Informativo

Vulnerabilità di un Sistema Informativo Vulnerabilità di un Sistema Informativo Un Sistema Informativo e le principali tipologie di minacce alla vulnerabilità e come le tecniche di backup possono essere utilizzate come contromisure a tali minacce.

Dettagli

Allegato 1. Le tecniche di frode on-line

Allegato 1. Le tecniche di frode on-line Allegato 1 Le tecniche di frode on-line Versione : 1.0 13 aprile 2011 Per una migliore comprensione delle tematiche affrontate nella circolare, riportiamo in questo allegato un compendio dei termini essenziali

Dettagli

Implicazioni sociali dell informatica

Implicazioni sociali dell informatica Fluency Implicazioni sociali dell informatica Capitolo 10 Privacy I nostri corpi I nostri luoghi Le informazioni Le comunicazioni personali La privacy Con i moderni dispositivi è possibile violare la privacy

Dettagli

Minacce Informatiche. Paolo

Minacce Informatiche. Paolo Minacce Informatiche Paolo Programma Virus, Trojan, spayware, malware ecc... Informazioni generali su Internet Ricerche, siti web, email, chatline, p2p, YouTube, Telefonini, InstantMessaging Che cos è

Dettagli

Malware Definizione e funzione

Malware Definizione e funzione Malware Definizione e funzione Cos è un Malware Il termine Malware è l'abbreviazione di "malicious software", software dannoso. Malware è un qualsiasi tipo di software indesiderato che viene installato

Dettagli

Realizzazione di una Infrastruttura di Sicurezza

Realizzazione di una Infrastruttura di Sicurezza Realizzazione di una Infrastruttura di Sicurezza Andrea Lanzi, Lorenzo Martignoni e Lorenzo Cavallaro Dipartimento di Informatica e Comunicazione Facoltà di Scienze MM.FF.NN. Università degli Studi di

Dettagli

La sicurezza secondo skymeeting (data pubblicazione 06/12/2011)

La sicurezza secondo skymeeting (data pubblicazione 06/12/2011) La sicurezza secondo skymeeting (data pubblicazione 06/12/2011) www.skymeeting.net La sicurezza nel sistema di videoconferenza Skymeeting skymeeting è un sistema di videoconferenza web-based che utilizza

Dettagli

Introduzione alla Sicurezza Informatica

Introduzione alla Sicurezza Informatica Introduzione alla Sicurezza Informatica Prof. Francesco Buccafurri Università Mediterranea di Reggio Calabria Crescita di Internet 0.000 570.937.7 0.000 439.286.364 489.774.269 0.000 0.000 233.101.481

Dettagli

Glossario servizi di Sicurezza Informatica offerti

Glossario servizi di Sicurezza Informatica offerti Glossario servizi di Sicurezza Informatica offerti Copyright LaPSIX 2007 Glossario servizi offerti di sicurezza Informatica SINGLE SIGN-ON Il Single Sign-On prevede che la parte client di un sistema venga

Dettagli

BOLLETTINO DI SICUREZZA INFORMATICA

BOLLETTINO DI SICUREZZA INFORMATICA STATO MAGGIORE DELLA DIFESA II Reparto Informazioni e Sicurezza Ufficio Sicurezza Difesa Sezione Gestione del Rischio CERT Difesa CC BOLLETTINO DI SICUREZZA INFORMATICA N. 1/2009 Il bollettino può essere

Dettagli

Dieci regole per la sicurezza 1. Tenere separati il sistema operativo ed i programmi rispetto ai dati (documenti, foto, filmati, musica ): installare

Dieci regole per la sicurezza 1. Tenere separati il sistema operativo ed i programmi rispetto ai dati (documenti, foto, filmati, musica ): installare Dieci regole per la sicurezza 1. Tenere separati il sistema operativo ed i programmi rispetto ai dati (documenti, foto, filmati, musica ): installare Windows 7 e i software applicativi sul disco fisso

Dettagli

CACCIA AL VIRUS! SAPER RICONOSCERE ED ELIMINARE VIRUS. R.Remoli

CACCIA AL VIRUS! SAPER RICONOSCERE ED ELIMINARE VIRUS. R.Remoli - CACCIA AL VIRUS! SAPER RICONOSCERE ED ELIMINARE VIRUS CARATTERISTICHE - TIPI PROTEZIONE R.Remoli Di cosa parleremo Definizioni di virus e malware. Danni che i virus possono provocare. Rimedi che possiamo

Dettagli

Architetture e strumenti per la sicurezza informatica

Architetture e strumenti per la sicurezza informatica Università Politecnica delle Marche Architetture e strumenti per la sicurezza informatica Ing. Gianluca Capuzzi Agenda Premessa Firewall IDS/IPS Auditing Strumenti per l analisi e la correlazione Strumenti

Dettagli

Payment Card Industry (PCI) Data Security Standard

Payment Card Industry (PCI) Data Security Standard Payment Card Industry (PCI) Data Security Standard Procedure per la scansione di sicurezza Versione 1.1 Release: settembre 2006 Indice generale Finalità... 1 Introduzione... 1 Ambito di applicazione dei

Dettagli

Defenx Antivirus 2010 La difesa impenetrabile contro tutte le minaccia informatiche

Defenx Antivirus 2010 La difesa impenetrabile contro tutte le minaccia informatiche Defenx Antivirus 2010 La difesa impenetrabile contro tutte le minaccia informatiche I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.

Dettagli

SICUREZZA INFORMATICA E ANTIVIRUS. Sicurezza informatica

SICUREZZA INFORMATICA E ANTIVIRUS. Sicurezza informatica SICUREZZA INFORMATICA E ANTIVIRUS Sicurezza informatica Con il termine sicurezza informatica si intende quel ramo dell informatica che si occupa delle misure, di carattere organizzativo e tecnologico,

Dettagli

Network Intrusion Detection

Network Intrusion Detection Network Intrusion Detection Maurizio Aiello Consiglio Nazionale delle Ricerche Istituto di Elettronica e di Ingegneria dell Informazione e delle Telecomunicazioni Analisi del traffico E importante analizzare

Dettagli

Esempi pratici, risultati e contromisure consigliate. Massimo Biagiotti

Esempi pratici, risultati e contromisure consigliate. Massimo Biagiotti L attività di un Ethical Hacker Esempi pratici, risultati e contromisure consigliate Massimo Biagiotti Information Technology > Chiunque operi nel settore sa che il panorama dell IT è in continua evoluzione

Dettagli

Difenditi dai Malware

Difenditi dai Malware con la collaborazione di Difenditi dai Malware Pensi che il PHISHING sia solo un tipo di pesca? Pensi che i COOKIE siano solo biscotti? Pensi che un VIRUS sia solo un raffreddore? Difenditi dai Malware

Dettagli

Introduzione. Sicurezza. Il Problema della Sicurezza. Molte aziende possiedono informazioni preziose che mantengono confidenziali.

Introduzione. Sicurezza. Il Problema della Sicurezza. Molte aziende possiedono informazioni preziose che mantengono confidenziali. Sicurezza Il Problema della Sicurezza L Autenticazione I Pericoli Messa in Sicurezza dei Sistemi Scoperta delle Intrusioni Crittografia Windows NT Exploit famosi Introduzione Molte aziende possiedono informazioni

Dettagli

Sicurezza. Sistemi Operativi 17.1

Sicurezza. Sistemi Operativi 17.1 Sicurezza Il Problema della Sicurezza L Autenticazione I Pericoli Messa in Sicurezza dei Sistemi Scoperta delle Intrusioni Crittografia Windows NT Exploit famosi 17.1 Introduzione Molte aziende possiedono

Dettagli

IL SOFTWARE. Programmi di elaborazione testi che ci permettono di creare documenti scritti col computer (microsoft word o openoffice writer)

IL SOFTWARE. Programmi di elaborazione testi che ci permettono di creare documenti scritti col computer (microsoft word o openoffice writer) IL SOFTWARE Software (parte non tangibile del PC, che non si può toccare, nei supporti magnetici è ad esempio il cambiamento dell orientazione delle microcalamite); esempi di software sono: Applicazioni

Dettagli

CARTA DELLA SICUREZZA INFORMATICA

CARTA DELLA SICUREZZA INFORMATICA CARTA DELLA SICUREZZA INFORMATICA Premessa L Istituto Nazionale di Fisica Nucleare (INFN) è un ente pubblico nazionale di ricerca a carattere non strumentale con autonomia scientifica, organizzativa, finanziaria

Dettagli

Cenni preliminari sugli account amministratore e account limitato.

Cenni preliminari sugli account amministratore e account limitato. Enrica Biscaro Tiziana Gianoglio TESINA DI INFORMATICA Cenni preliminari sugli account amministratore e account limitato. Per un funzionale utilizzo del nostro computer è preferibile usare la funzione

Dettagli

Application Assessment Applicazione ARCO

Application Assessment Applicazione ARCO GESI Application Assessment Applicazione ARCO Milano Hacking Team S.r.l. http://www.hackingteam.it Via della Moscova, 13 info@hackingteam.it 20121 MILANO (MI) - Italy Tel. +39.02.29060603 Fax +39.02.63118946

Dettagli

Application Assessment Applicazione ARCO

Application Assessment Applicazione ARCO GESI Application Assessment Applicazione ARCO Versione 2 Milano 14 Luglio 2006 Hacking Team S.r.l. http://www.hackingteam.it Via della Moscova, 13 info@hackingteam.it 20121 MILANO (MI) - Italy Tel. +39.02.29060603

Dettagli

Perché abbiamo problemi di sicurezza? Sicurezza. Reti di calcolatori. 2001-2007 Pier Luca Montessoro (si veda la nota di copyright alla slide n.

Perché abbiamo problemi di sicurezza? Sicurezza. Reti di calcolatori. 2001-2007 Pier Luca Montessoro (si veda la nota di copyright alla slide n. RETI DI CALCOLATORI Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 1 Nota di Copyright Questo insieme di trasparenze

Dettagli

Attacchi - panoramica

Attacchi - panoramica Attacchi - panoramica Metodi e strumenti per la Sicurezza informatica Claudio Telmon claudio@telmon.org Tecniche di attacco Più passaggi prima del destinatario (stepstones) Accesso da sistemi poco controllati

Dettagli

CACCIA AL VIRUS! SAPER RICONOSCERE ED ELIMINARE VIRUS CARATTERISTICHE - TIPI PROTEZIONE

CACCIA AL VIRUS! SAPER RICONOSCERE ED ELIMINARE VIRUS CARATTERISTICHE - TIPI PROTEZIONE - CACCIA AL VIRUS! SAPER RICONOSCERE ED ELIMINARE VIRUS CARATTERISTICHE - TIPI PROTEZIONE Di cosa parleremo Definizioni di virus e malware. Danni che i virus possono provocare. Rimedi che possiamo applicare.

Dettagli

Cenni sulla Sicurezza in Ambienti Distribuiti

Cenni sulla Sicurezza in Ambienti Distribuiti Cenni sulla Sicurezza in Ambienti Distribuiti Cataldo Basile < cataldo.basile @ polito.it > Politecnico di Torino Dip. Automatica e Informatica Motivazioni l architettura TCP/IPv4 è insicura il problema

Dettagli

IDS: Intrusion detection systems

IDS: Intrusion detection systems IDS/IPS/Honeypot IDS: Intrusion detection systems Tentano di rilevare: attività di analisi della rete tentativi di intrusione intrusioni avvenute comportamenti pericolosi degli utenti traffico anomalo

Dettagli

Prof. Filippo Lanubile

Prof. Filippo Lanubile Firewall e IDS Firewall Sistema che costituisce l unico punto di connessione tra una rete privata e il resto di Internet Solitamente implementato in un router Implementato anche su host (firewall personale)

Dettagli

Navigazione controllata

Navigazione controllata Easyserver nasce come la più semplice soluzione dedicata alla sicurezza delle reti ed al controllo della navigazione sul web. Semplice e flessibile consente di controllare e monitorare il corretto uso

Dettagli

Sicurezza Reti: Problematiche

Sicurezza Reti: Problematiche Problematiche LA SICUREZZA DELLE RETI: LE VULNERABILITA' 27 marzo 2007 Fondazione Ordine degli Ingegneri di Milano Corso Venezia Relatore Ing. Sommaruga Andrea Guido presentazione realizzata con OpenOffice

Dettagli

Manuale sulle Azioni di contrasto e prevenzione delle frodi nei confronti della Clientela Corporate che utilizza i servizi di Internet Banking.

Manuale sulle Azioni di contrasto e prevenzione delle frodi nei confronti della Clientela Corporate che utilizza i servizi di Internet Banking. Manuale sulle Azioni di contrasto e prevenzione delle frodi nei confronti della Clientela Corporate che utilizza i servizi di Internet Banking. Il presente manuale è stato redatto per fornire alle Aziende

Dettagli

Attacchi e Contromisure

Attacchi e Contromisure Sicurezza in Internet Attacchi e Contromisure Ph.D. Carlo Nobile 1 Tipi di attacco Difese Sommario Firewall Proxy Intrusion Detection System Ph.D. Carlo Nobile 2 Attacchi e Contromisure Sniffing Connection

Dettagli

DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI

DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI 2 Introduzione Questa email è una truffa o è legittima? È ciò che si chiedono con sempre maggiore frequenza

Dettagli

KLEIS A.I. SECURITY SUITE

KLEIS A.I. SECURITY SUITE KLEIS A.I. SECURITY SUITE Protezione delle applicazioni web Kleis A.I. SecureWeb www.kwaf.it Cos'è Kleis A.I. SecureWeb? Kleis A.I. SecureWeb è un modulo software della Kleis A.I. Security Suite che ha

Dettagli

ARP SPOOFING - Papaleo Gianluca

ARP SPOOFING - Papaleo Gianluca ARP SPOOFING - Papaleo Gianluca ARP spoofing è un attacco che può essere effettuato solo dall interno di una rete locale o LAN (Local Area Network). Questa tecnica si basa su alcune caratteristiche di

Dettagli

Windows Vista, il nuovo sistema operativo Microsoft che cerca le giuste risposte ai quesiti di sicurezza

Windows Vista, il nuovo sistema operativo Microsoft che cerca le giuste risposte ai quesiti di sicurezza Windows Vista, il nuovo sistema operativo Microsoft che cerca le giuste risposte ai quesiti di sicurezza Microsoft Windows è il sistema operativo più diffuso, ma paradossalmente è anche quello meno sicuro.

Dettagli

FACSIMILE. Manuale per la Sicurezza AD USO DEGLI INCARICATI STUDIO TECNICO: RESPONSABILE DEL TRATTAMENTO DATI:

FACSIMILE. Manuale per la Sicurezza AD USO DEGLI INCARICATI STUDIO TECNICO: RESPONSABILE DEL TRATTAMENTO DATI: FACSIMILE Manuale per la Sicurezza AD USO DEGLI INCARICATI STUDIO TECNICO: RESPONSABILE DEL TRATTAMENTO DATI: Introduzione Questo documento fornisce agli incaricati del trattamento una panoramica sulle

Dettagli

KLEIS WEB APPLICATION FIREWALL

KLEIS WEB APPLICATION FIREWALL KLEIS WEB APPLICATION FIREWALL VERSIONE 2.1 Presentazione www.kwaf.it Cos'è Kleis Web Application Firewall? Kleis Web Application Firewall (KWAF) è un firewall software per la difesa di: Web Application

Dettagli

Aspetti di sicurezza in Internet e Intranet. arcipelago

Aspetti di sicurezza in Internet e Intranet. arcipelago Aspetti di sicurezza in Internet e Intranet La sicurezza in reti TCP/IP Senza adeguate protezioni, la rete Internet è vulnerabile ad attachi mirati a: penetrare all interno di sistemi remoti usare sistemi

Dettagli

Sicurezza delle reti. Monga. Ricognizione. Scanning Network mapping Port Scanning NMAP. Le tecniche di scanning. Ping. Sicurezza delle reti.

Sicurezza delle reti. Monga. Ricognizione. Scanning Network mapping Port Scanning NMAP. Le tecniche di scanning. Ping. Sicurezza delle reti. 1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it Port Lezione IV: Scansioni Port a.a. 2011/12 1 c 2011 12 M.. Creative Commons Attribuzione-Condividi

Dettagli

Indice. Prefazione. Presentazione XIII. Autori

Indice. Prefazione. Presentazione XIII. Autori INDICE V Indice Prefazione Presentazione Autori XI XIII XV Capitolo 1 Introduzione alla sicurezza delle informazioni 1 1.1 Concetti base 2 1.2 Gestione del rischio 3 1.2.1 Classificazione di beni, minacce,

Dettagli

Introduzione a Windows XP Professional Installazione di Windows XP Professional Configurazione e gestione di account utente

Introduzione a Windows XP Professional Installazione di Windows XP Professional Configurazione e gestione di account utente Programma Introduzione a Windows XP Professional Esplorazione delle nuove funzionalità e dei miglioramenti Risoluzione dei problemi mediante Guida in linea e supporto tecnico Gruppi di lavoro e domini

Dettagli

Obiettivo: realizzazione di reti sicure TIPI DI ATTACCO. Politica di sicurezza: a) scelte tecnologiche b) strategie organizzative

Obiettivo: realizzazione di reti sicure TIPI DI ATTACCO. Politica di sicurezza: a) scelte tecnologiche b) strategie organizzative Obiettivo: realizzazione di reti sicure Politica di sicurezza: a) scelte tecnologiche b) strategie organizzative Per quanto riguarda le scelte tecnologiche vi sono due categorie di tecniche: a) modifica

Dettagli

Aggiunte alla documentazione

Aggiunte alla documentazione Aggiunte alla documentazione Software di sicurezza Zone Alarm versione 7.1 Nel presente documento vengono trattate le nuove funzionalità non incluse nelle versioni localizzate del manuale utente. Fare

Dettagli

IT Security 3 LA SICUREZZA IN RETE

IT Security 3 LA SICUREZZA IN RETE 1 IT Security 3 LA SICUREZZA IN RETE Una RETE INFORMATICA è costituita da un insieme di computer collegati tra di loro e in grado di condividere sia le risorse hardware (stampanti, Hard Disk,..), che le

Dettagli

Elementi di Sicurezza e Privatezza Laboratorio 6 - Sniffing. Chiara Braghin chiara.braghin@unimi.it

Elementi di Sicurezza e Privatezza Laboratorio 6 - Sniffing. Chiara Braghin chiara.braghin@unimi.it Elementi di Sicurezza e Privatezza Laboratorio 6 - Sniffing Chiara Braghin chiara.braghin@unimi.it Sniffing (1) Attività di intercettazione passiva dei dati che transitano in una rete telematica, per:

Dettagli

Lezione 2: Introduzione

Lezione 2: Introduzione UNIVERSITÀ - OSPEDALE di PADOVA MEDICINA NUCLEARE 1 Lezione 2: Introduzione I RISCHI DELLA CONNESSIONE INTERNET / INTRANET D. Cecchin, P. Mosca, F. Bui Sed quis custodiet ipsos custodes? Giovenale (circa

Dettagli

INFORMATION SECURITY MANAGEMENT SYSTEM

INFORMATION SECURITY MANAGEMENT SYSTEM INFORMATION SECURITY MANAGEMENT SYSTEM Gestione della sicurezza informatica in azienda Guida informativa per le PMI con il contributo della 1 Sommario Introduzione 5 Obiettivi 6 Continuità operativa del

Dettagli

Firewall. Alfredo De Santis. Maggio 2014. Dipartimento di Informatica Università di Salerno. ads@dia.unisa.it http://www.dia.unisa.

Firewall. Alfredo De Santis. Maggio 2014. Dipartimento di Informatica Università di Salerno. ads@dia.unisa.it http://www.dia.unisa. Firewall Alfredo De Santis Dipartimento di Informatica Università di Salerno ads@dia.unisa.it http://www.dia.unisa.it/professori/ads Maggio 2014 Pacchetti I messaggi sono divisi in pacchetti I pacchetti

Dettagli

La rete è una componente fondamentale della

La rete è una componente fondamentale della automazioneoggi Attenti alle reti La telematica si basa prevalentemente sulle reti come mezzo di comunicazione per cui è indispensabile adottare strategie di sicurezza per difendere i sistemi di supervisione

Dettagli

Come si può notare ogni richiesta ICMP Echo Request va in timeout in

Come si può notare ogni richiesta ICMP Echo Request va in timeout in Comandi di rete Utility per la verifica del corretto funzionamento della rete: ICMP Nelle procedure viste nei paragrafi precedenti si fa riferimento ad alcuni comandi, come ping e telnet, per potere verificare

Dettagli

Descrizione servizio Websense Hosted Mail Security

Descrizione servizio Websense Hosted Mail Security Descrizione servizio Websense Hosted Mail Security Alla luce della crescente convergenza delle minacce nei confronti del Web e della posta elettronica, oggi è più importante che mai poter contare su una

Dettagli

Sviluppo siti e servizi web Programmi gestionali Formazione e Consulenza Sicurezza informatica Progettazione e realizzazione di reti aziendali

Sviluppo siti e servizi web Programmi gestionali Formazione e Consulenza Sicurezza informatica Progettazione e realizzazione di reti aziendali 1 Caratteristiche generali Nati dall esperienza maturata nell ambito della sicurezza informatica, gli ECWALL di e-creation rispondono in modo brillante alle principali esigenze di connettività delle aziende:

Dettagli

PROGETTO - Ingegneria del Software. Università degli Studi di Milano Polo di Crema. Corso di laurea in Scienze Matematiche, Fisiche e Naturali

PROGETTO - Ingegneria del Software. Università degli Studi di Milano Polo di Crema. Corso di laurea in Scienze Matematiche, Fisiche e Naturali Università degli Studi di Milano Polo di Crema Corso di laurea in Scienze Matematiche, Fisiche e Naturali INFORMATICA Corso di Ingegneria del Software progetto IL SISTEMA CALENDAR Presentato al dott. Paolo

Dettagli

ANALISI DÌ MALWARE E SOLUZIONI DÌ DIFESA. Tesina di Matteo Neri A.S. 2008-2009

ANALISI DÌ MALWARE E SOLUZIONI DÌ DIFESA. Tesina di Matteo Neri A.S. 2008-2009 ANALISI DÌ MALWARE E SOLUZIONI DÌ DIFESA Tesina di Matteo Neri A.S. 2008-2009 Sommario - Introduzione - Analisi di malware - Soluzioni di difesa - Previsioni sul futuro del malware Prima Parte Introduzione

Dettagli

INTRODUZIONE ALLA SICUREZZA: IL FIREWALL

INTRODUZIONE ALLA SICUREZZA: IL FIREWALL INTRODUZIONE ALLA SICUREZZA: IL FIREWALL Fino a qualche anno fa la comunicazione attraverso le reti di computer era un privilegio ed una necessità di enti governativi e strutture universitarie. La sua

Dettagli

Vademecum per la sicurezza dei dati personali dell Università di Catania

Vademecum per la sicurezza dei dati personali dell Università di Catania UNIVERSITÀ DEGLI STUDI DI CATANIA Vademecum per la sicurezza dei dati personali dell Università di Catania D.Lgs. 196/2003 - Codice della Privacy Introduzione La privacy e l applicazione del D.Lgs. 196/2003

Dettagli

Le reti Sicurezza in rete

Le reti Sicurezza in rete Le reti Sicurezza in rete Tipi di reti Con il termine rete si intende un insieme di componenti, sistemi o entità interconnessi tra loro. Nell ambito dell informatica, una rete è un complesso sistema di

Dettagli

Direttamente dalla sorgente Network IDS Oggi & nel Futuro

Direttamente dalla sorgente Network IDS Oggi & nel Futuro Direttamente dalla sorgente Network IDS Oggi & nel Futuro Graham Welch Director EMEA, Sourcefire Inc. Agenda Background sull Intrusion Detection Un giorno nella vita di Intrusion Prevention vs. Intrusion

Dettagli