Intrusion Detection System e Data Mining

Documenti analoghi
SISTEMI DI NUMERAZIONE E CODICI

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Intrusion Detection System e Sistemi Adattativi

Strutturazione logica dei dati: i file

Organizzazione degli archivi

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

ARCHITETTURA DI RETE FOLEGNANI ANDREA

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel

Registratori di Cassa

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Esercizi su. Funzioni

4 3 4 = 4 x x x 10 0 aaa

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Statistica. Lezione 6

Codifiche a lunghezza variabile

Algoritmi e strutture dati. Codici di Huffman

Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software

Analisi dei requisiti e casi d uso

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Capitolo 13: L offerta dell impresa e il surplus del produttore

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video

Soluzione dell esercizio del 2 Febbraio 2004

Uso di base delle funzioni in Microsoft Excel

Cosa è un foglio elettronico

Sistema Informativo Gestione Fidelizzazione Clienti MANUALE D USO

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Calcolo del Valore Attuale Netto (VAN)

Mining Positive and Negative Association Rules:

Procedura SMS. Manuale Utente

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Workland CRM. Workland CRM Rel /11/2013. Attività --> FIX. Magazzino --> NEW. Nessuna --> FIX. Ordini --> FIX

Corso di Informatica

GESGOLF SMS ONLINE. Manuale per l utente

Introduzione alla programmazione in C

File, Modifica, Visualizza, Strumenti, Messaggio

Pro e contro delle RNA

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

MANUALE PARCELLA FACILE PLUS INDICE

Raggruppamenti Conti Movimenti

CAPITOLO 8 LA VERIFICA D IPOTESI. I FONDAMENTI

MANUALE EDICOLA 04.05

Convertitori numerici in Excel

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Elementi di informatica

ESEMPIO 1: eseguire il complemento a 10 di 765

risulta (x) = 1 se x < 0.

Database 1 biblioteca universitaria. Testo del quesito

LABORATORIO-EXCEL N. 2-3 XLSTAT- Pro Versione 7 VARIABILI QUANTITATIVE

Hub-PA Versione Manuale utente

Elementi di Psicometria con Laboratorio di SPSS 1

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

CHIUSURE di MAGAZZINO di FINE ANNO

Rappresentazione dei numeri in un calcolatore

Analisi e diagramma di Pareto

LE FUNZIONI A DUE VARIABILI

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Fasi di creazione di un programma

Vademecum studio funzione

PROGRAMMA SVOLTO NELLA SESSIONE N.

Lezione 8. La macchina universale

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Che cosa è un VIRUS?

Appunti sulla Macchina di Turing. Macchina di Turing

INDICE. Accesso al Portale Pag. 2. Nuovo preventivo - Ricerca articoli. Pag. 4. Nuovo preventivo Ordine. Pag. 6. Modificare il preventivo. Pag.

Programmazione dinamica

GESTIONE CONTRATTI. Contratti clienti e contratti fornitori

Database. Si ringrazia Marco Bertini per le slides

Guida Compilazione Piani di Studio on-line

ELENCO CLIENTI FORNITORI Patch1

SOMMARIO... 3 INTRODUZIONE...

Uso delle tabelle e dei grafici Pivot

REALIZZARE UN BUSINESS PLAN CON MICROSOFT EXCEL 2007

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

Come masterizzare dischi con Nero 11

Domande a scelta multipla 1

Riepilogo delle modifiche di PA-DSS dalla versione 2.0 alla 3.0

uadro Soluzioni software per L archiviazione elettronica dei documenti Gestione Aziendale Fa quadrato attorno alla tua azienda

Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

VPN CIRCUITI VIRTUALI

Guida Utente. La seguente guida indirizza il fruitore del programma PatternDiscoverer a un corretto utilizzo.

Versione 7.0 Taglie e Colori. Negozio Facile

Funzioni in C. Violetta Lonati

MANUALEDIUTILIZZO MODULO CRM POSTVENDITA

Informatica per la comunicazione" - lezione 13 -

Il calendario di Windows Vista

Le query di raggruppamento

Il database management system Access

Stampa su moduli prestampati utilizzando Reflection for IBM 2011 o 2008

POLIAGE GUIDA RAPIDA

Transcript:

Università del Piemonte Orientale Amedeo Avogadro Corso di Laurea Specialistica in Informatica dei sistemi avanzati e dei servizi di rete Corso di Sistemi Adattativi Intrusion Detection System e Data Mining VICINO Guido Anno Accademico 2005/2006

Indice Introduzione...3 Che cos'è un Intrusion Detection System?...3 Data mining sui dati di audit...7 Riunione dei dati di Audit...11 Costruzione delle feature...12 Codifica delle feature...13 Algoritmo di costruzione delle feature...16 Ripper e creazione delle regole di rilevamento...18 Rilevamento di anomalie basate sul payload...21 Analisi n-gram...21 Distanza semplificata di Mahalanobis...23 Apprendimento incrementale...24 Ridurre la dimensione del modello tramite raggruppamento...25 Apprendimento non supervisionato...25 Conclusioni...26 Riferimenti:...27 2

Introduzione Negli ultimi anni la sicurezza informatica e la protezione dei dati hanno ricevuto l'attenzione non solo degli esperti informatici, ma anche di tutti i semplici utilizzatori di calcolatori e reti. Il numero degli attacchi informatici a servizi e macchine disponibili in rete aumenta conseguentemente alla crescita degli utenti in Internet. Questo si traduce nella richiesta di strumenti, tecniche e persone operanti nel campo della sicurezza informatica. Le caratteristiche di una rete o di un sistema distribuito che lo rendono vulnerabile rispetto ad un sistema indipendente sono: Le reti solitamente forniscono più risorse. Le risorse ed i servizi forniti devono essere condivisibili. Le politiche di protezione legate a tali sistemi devono permettere le due caratteristiche precedenti. Quello che ci interessa studiare è quando queste caratteristiche fanno nascere vulnerabilità che possono essere sfruttate da un attaccante per danneggiare la sicurezza di un sistema informatico. Un attacco alla sicurezza di un sistema avviene quando esso subisce tentativi di intrusione o tentativi di cessazione dei servizi che esso dispone. In questa relazione vogliamo mostrare come si possano adottare tecniche di Data Mining e Machine Learning per risolvere i problemi legati alla sicurezza e alla protezione di risorse e dati. Gli strumenti su cui intendiamo studiare queste tecniche sono conosciuti con il nome di Intrusion Detection System. Che cos'è un Intrusion Detection System? Un intrusione può essere definita come una serie di azioni che attentano alla compromissione dell'integrità, confidenzialità o disponibilità di una risorsa [HLMS90]. Per evitare questo si sviluppano tecniche di prevenzione come l'autenticazione degli utenti, il controllo degli errori di programmazione, la protezione delle informazioni tramite crittografia. Queste tecniche da sole non sono sufficienti a garantire la protezione di un sistema informatico ma forniscono una prima linea di difesa. La semplice prevenzione è insufficiente quando il sistema diventa più complesso rendendo molto difficile controllare tutte le possibili debolezze in esso soprattutto quando queste sono legate a mancanze nella progettazione, ad errori di programmazione o a tecniche di "social engineering. Un Intrusion Detection System o IDS è uno strumento hardware/software utilizzato per il rilevamento e l'identificazione di intrusioni ed accessi non autorizzati a computer o reti. 3

L'architettura tipica di un IDS è composta da tre componenti: sensori, console e motore. I sensori si occupano di rilevare e generare gli eventi di sicurezza. Sulla console gestiremo i sensori e verranno visualizzati allarmi, avvertimenti, e mostrati gli eventi. Il motore si occuperà di registrare gli eventi in una base di dati e analizzarli per produrre eventualmente allarmi e file di registrazione. Gli elementi centrali del rilevamento delle intrusioni sono: Le risorse da proteggere nel sistema in esame, come gli account utenti, i file system, i kernel del sistema operativo. I modelli che caratterizzano un comportamento normale o legittimo di tali risorse. Le tecniche che confrontano le attività attuali del sistema con i modelli stabiliti e determinano quello che può essere un comportamento anomalo o intrusivo. Nella creazione di tali sistemi si devono fare assunzioni a priori su cosa siano comportamenti normali ed anomali, ipotizzando inoltre che dato un insieme sufficiente di caratteristiche del sistema modellate e misurate si possa determinare con buona accuratezza l'ambiente in cui ci troviamo. Le tecniche di rilevamento intrusione possono essere divise in misuse detection, che usano pattern di attacchi ben conosciuti o di punti deboli del sistema per identificare le intrusioni, ed in anomaly detection, che cercano di determinare una possibile deviazione dai pattern stabiliti di utilizzazione normale del sistema. I misuse detection system o signature based intrusion detection system, codificano e confrontano una serie di segni caratteristici (signature action) delle varie tipologie di scenari d'intrusione conosciute. Queste caratteristiche possono ad esempio essere i cambi di proprietà di un file, determinate stringhe di caratteri inviate ad un server e così via. I principali svantaggi di tali sistemi sono che i pattern di intrusione conosciuti richiedono normalmente di essere inseriti manualmente nel sistema, ma il loro svantaggio è soprattutto di non essere in grado di rilevare qualsiasi futura (quindi sconosciuta) tipologia di intrusione se essa non è presente nel sistema. Il grande beneficio che invece hanno è quello di generare un numero relativamente basso di falsi positivi, e di essere adeguatamente affidabili e veloci. Gli anomaly detection systems fanno uso di profili (pattern) dell'utilizzo normale del sistema ricavati da misure statistiche ed euristiche sulle caratteristiche dello stesso, per esempio, la CPU utilizzata e le attività di I/O di un particolare utente o programma. Le maggiori problematiche legate a tali sistemi sono principalmente legate alla selezione delle caratteristiche del sistema da adottare, queste possono variare enormemente a seconda dei vari ambienti di calcolo; inoltre alcune intrusioni possono essere soltanto rilevate studiando le relazioni che intercorrono tra gli eventi 4

perché l'evento singolo potrebbe rientrare correttamente nei profili. Tali sistemi richiedono l'applicazione di algoritmi e tecniche prese dall'intelligenza artificiale e dal data mining, in quanto il sistema dev'essere essenzialmente autonomo ed apprendere da situazioni nuove, cercando di imparare dai propri errori. Un'altra possibile divisione che possiamo adottare per classificare i sistemi di rilevamento è se vanno ad analizzare la rete, la macchina ospite, o entrambe: Un Network Intrusion Detection System processa i dati relativi al traffico di rete al fine di rilevare intrusioni. Si mette quindi in ascolto nel tentativo di rilevare traffico anomalo; per fare questo i suoi sensori vengono posizionati in punti critici dell'architettura di rete (ad esempio nei punti di accesso ad una rete locale o ad una DMZ). Un Host based Intrusion Detection System rileva i tentativi di intrusione effettuati sui servizi e le risorse offerte su un sistema locale, quindi ad esempio sul sistema operativo e sul software localizzati sulla macchina ospite. Ad esempio questi sistemi dovranno rilevare modifiche al file degli utenti e delle password, alla gestione dei privilegi, alle basi dati locali etc. Un Hybrid Intrusion Detection System fornisce le funzionalità dei due sistemi precedenti, andando ad integrare i dati relativi al traffico di rete e quelli forniti dal software in esecuzione sulla macchina locale. L'utilizzo di tecniche di Data Mining e Machine Learning in questi sistemi serve ad eliminare, il più possibile, gli interventi manuali o specifici dai processi di analisi di un sistema di rilevamento intrusione. L'accuratezza di un sistema simile è legata a quanto bene riusciamo a rilevare attacchi alla sicurezza del sistema, più precisamente questo si può misurare tramite due parametri: Detection rate: indicante il rapporto tra attacchi rivelati dall'ids su attacchi subiti dal sistema su cui è in esecuzione. False positive rate: indicante il tasso di dati che il sistema erroneamente considera essere di natura intrusiva quando invece sono prodotti da eventi relativi al normale utilizzo. Questi due parametri vengono normalmente misurati tramite sperimentazioni reali o come vedremo in seguito su dati diversi da quelli usati per addestrare il sistema (cioè diversi da quelli di training set). E' importante notare come l'accuratezza non possa essere da sola sufficiente, in quanto i sistemi di rilevamento intrusione devono lavorare in real time, cioè devono determinare sul momento la 5

presenza di eventuali intrusi o di violazioni del sistema. Questo complica le cose dal punto di vista dell'efficienza e dell'utilizzabilità specialmente quando andiamo a parlare di anomaly detection systems perché l'analisi sui dati e sui data set dev'essere fatta in maniera molto veloce. Questo non è richiesto quando ad esempio si vanno a fare studi di analisi forense, cioè quando ormai è noto che il sistema o la rete d'interesse è già stata violata e si vuole sapere a posteriori come questo è avvenuto. Il Data mining riferisce generalmente al processo automatico di estrazione di modelli da larghi archivi di di dati. I recenti sviluppi in questo campo hanno reso disponibili una grande varietà di algoritmi, che traggono le loro basi dai campi della statistica, del riconoscimento di pattern, dell'apprendimento automatico e delle basi di dati. Le tipologie di algoritmi utili per questi sistemi sono principalmente tre: Algoritmi di classificazione: presi dei dati vanno a determinare a seconda delle loro caratteristiche se appartengono ad una classe o ad un'altra. Questi algoritmi forniscono come risultato dei classificatori. Presi degli audit data cioè dei dati d'ascolto ricavati dai sensori del sistema, si applicherà poi un algoritmo di classificazione per istruire un classificatore che servirà in futuro a distinguere tra la classe di comportamenti normali e la classe di comportamenti anormali. Analisi di relazioni e collegamenti: questi algoritmi permettono di determinare relazioni tra i vari campi di una base di dati, essi trovano correlazioni nei dati di audit e provvedono a selezionare l'insieme corretto di caratteristiche del sistema per il rilevamento di intrusioni. Analisi di sequenze: servono a fornire informazioni per la comprensione di una sequenza temporale di eventi rilevati dal sistema, permettendoci ad esempio di creare dei profili di comportamento per un utente o un programma. Per completezza specifichiamo l'ultimo aspetto che può caratterizzare questi sistemi, e dove sono possibili molte applicazioni delle tecniche di apprendimento automatico, infatti si può ulteriormente differenziare tra: Sistemi passivi che si limitano a notificare sulla console dell'operatore la presenza di eventi sospetti o di reali intrusioni. Sistemi attivi che subito dopo aver rilevato un intrusione attivano meccanismi automatici che mettono in atto delle opportune contromisure per eliminare o comunque isolare la violazione del sistema o della rete. Per fare questo ad esempio si vanno a modificare automaticamente le liste di accesso di un sistema o le regole di un firewall. Concludiamo questa introduzione specificando che i sistemi attuali in commercio sono principalmente basati su signature in quanto questi sistemi sono attualmente di più facile 6

realizzazione e di una maggiore velocità computazionale. Presenteremo alcuni approcci presi dalla letteratura relativa ai sistemi adattativi che mirano a modificare questa visione, cercando di mostrare le tecniche che rendono questi oggetti più indipendenti dall'intervento umano. L'operatore umano rimane comunque essenziale nel campo della sicurezza informatica, in quanto è proprio degli attacchi andare a sfruttare l'anatomia e le debolezze proprie dei sistemi, rendendo inutili anche le previsioni statistiche e i rilevatori più evoluti. Data mining sui dati di audit Andremo a presentare alcune proposte sono state discusse in letteratura sullo sviluppo di strutture per la costruzione di modelli di intrusion detection [LS98]. Fondamentalmente questi sistemi si basano sui dati di audit riguardanti pattern relativi ai comportamenti di utenti e programmi, presi questi dati si ha un insieme di caratteristiche rilevanti del sistema che verranno in seguito usate per ricavare(tramite apprendimento induttivo) classificatori che possano riconoscere tali anomalie ed intrusioni. Un modo proposto per ricavare informazioni da questi dati di audit è quello di generare regole associative significative tra i vari elementi di una base di dati(tramite variazioni dell'algoritmo Apriori [AS94]). Queste regole forniscono correlazioni tra i vari eventi che accadono nel sistema, permettendoci di avere una visione di quello che succede all'interno di esso. Andiamo ora a spiegare i concetti base di questa tecnica in maniera più formale. Sia A un insieme di attributi, ed I un insieme di valori per A chiamati item. Ogni sotto insieme di I è chiamato un item set. Il numero di item in un item set definisce la lunghezza dello stesso. Sia D una base di dati con n attributi(o colonne). Una regola di associazione è l'espressione: X Y, confidenza, supporto Siano qui X ed Y item set, e sia la loro intersezione vuota. Il supporto sia la percentuale di record in D che contengono l'unione dei due item X Y, e sia la confidenza la percentuale di record che contengono X e che contengono anche Y. Ad esempio, data la regola di associazione che lega la storia dei comandi (history) di una shell da riga di comando di un utente (cioè i programmi lanciati e i loro argomenti): ls /home/john, 0.3, 0.1 si saprà che il 30% delle volte che l'utente chiama il comando ls lo farà per visualizzare i file contenuti nella sua home directory per un 10% delle attività registrate. 7

Tali algoritmi esaminano la correlazione sui valori di attributi differenti e i dati (pre-processati) di audit hanno di solito attributi multipli ed un largo numero di valori possibili. Per questo motivo si potrà scegliere di non memorizzare i dati in una base di dati binaria. Tale decisione ovviamente porterà ad un aumento di velocità a danno della memoria occupata. La struttura dati per un item set frequente è data da un vettore riga (di bit) che registra i record in cui l'item set è contenuto. La base di dati verrà scorsa solo una volta per generare la lista degli item set frequenti di lunghezza 1. Quando un item set c k di lunghezza k viene generato dalla congiunzione di due item set frequenti di lunghezza k-1 chiamati l 1 k-1 e l 2 k-1, il vettore riga di c k è semplicemente l'and bit a bit dei due vettori riga l 1 k-1 e l 2 k-1. Il supporto per c k può essere facilmente calcolato contando gli uni nel suo vettore riga. Data una base di dati D dove a ciascuna transazione (record) è associata un timestamp. Sia l'intervallo [t 1, t 2 ] la sequenza delle transazioni che iniziano con il timestamp t 1 e finiscono con il timestamp t 2. La durata dell'intervallo è definita da t 2 t 1. Dato un item set A in D, un intervallo è una minima occorrenza di A se esso contiene A e nessuno dei suoi sotto-intervalli contiene A. Si dice frequent episode rule l'espressione: X,Y Z, confidenza, supporto, finestra. Qui X, Y e Z sono item set in D, il supporto è la percentuale di occorrenze minime dell'unione di X, Y,Z in D(che è il rapporto tra il numero di occorrenze e il numeri di record in D), mentre la confidenza è la percentuale di occorrenze minime che contengono l'unione di X e Y e che contengono anche Z. La durata di ogni occorrenza dev'essere minore della finestra. Ad esempio con: (servizio = http, flag = SO), (servizio = http, flag = SO) (servizio = http, flag = SO) [0.93,0.03,2] intendiamo che il 93% delle volte, quando il sistema riceve due connessioni http con la flag SO, dopo 2 secondi da esse si vede arrivare una terza connessione, e questo pattern si verifica nel 3% dei dati. Un episodio detto seriale ha come vincolo aggiuntivo che X, Y e Z devono occorrere in transizioni in ordine temporale, questo significa che vorremo che Z segua Y ed Y segua X. Gli algoritmi base che lavorano sulle regole di associazioni non considerano nessun dominio di conoscenza, e questo porta alla generazione di regole di associazioni irrilevanti, che dovranno essere poi esaminate in seguito per eliminare quelle inutili. Si farà quindi uso di uno o più di axis attribute, cioè quegli attributi ritenuti rilevanti nella transizione scelti tra quelli essenziali (come 8

nel caso di una connessione possono essere l'indirizzo sorgente, destinatario, il servizio etc). Si andranno quindi a scartare le correlazioni tra gli altri attributi ritenuti non utili. tempo durata servizio src_bytes dst_bytes flag 1.1 10 telnet 100 2000 SF 2.0 2 ftp 200 300 SF 2.3 1 smtp 250 300 SF 3.4 60 telnet 200 12100 SF 3.7 1 smtp 200 300 SF 3.8 1 smtp 200 300 SF 5.2 1 http 200 0 REJ 3.7 2 smtp 300 200 SF Tabella 1: Network Connection Records Ad esempio guardiamo la Tabella 1. L'algoritmo base per la ricerca di regole di associazione, senza l'uso di un attributo axis, può generare regole quali: src_bytes = 200 flag = SF Regole come questa sono inutili e a volte potrebbero sviare e causare falsi positivi, in quanto non c'è alcuna connessione tra il numero di byte provenienti dalla sorgente e lo stato normale della connessione. In una connessione per esempio conta molto il tipo di servizio che eroga, possiamo decidere di affidare a lui il ruolo di axis. Questo significherà che le regole seguenti descriveranno solo pattern che comprendono quest'attributo. Diventa ancora più importante l'utilizzo di questa tecnica per vincolare la generazione di episodi frequenti. Ad esempio l'algoritmo classico potrebbe generare frequent episode rule come la seguente: src_bytes = 200, src_bytes = 200 dst_bytes = 300, src_bytes = 200 dove ogni valore degli attributi, come src_bytes=200, proviene da record di connessione separati e quindi senza alcuna validità ne significatività. L'algoritmo modificato con l'attributo axis troverà quindi regole di associazione utili come la seguente: (servizio = smtp, src_bytes = 200, dst_bytes = 300, flag = SF), (servizio = telnet, flag = SF) (servizio = http, src_bytes = 200) In tal maniera si sono combinate le associazioni (sugli attributi) e i pattern sequenziali(sui record) in una regola unica, tale formalismo non solo elimina le regole irrilevanti, ma provvede anche a fornire informazioni proficue sui dati di audit. 9

A volte diventa importante scoprire i pattern con frequenza bassa, perché alcuni servizi possono generare un traffico molto basso rispetto a quello totale(ad esempio snmp); in questi casi si richiede comunque che vengano inseriti nei nostri profili, anche se statisticamente risulterebbero meno importanti rispetto ad altri servizi quali ad esempio l'smtp. Si effettuerà quindi una ricerca tramite un algoritmo detto di level-wise: Input: il supporto finale minimo s 0 il supporto iniziale minimo s i e l'attributo asse Output: le regole di episodio frequente Rules Begin (1) R restricted = 0; (2) scandire il database per formare L = {1 item set che incontrano s 0 }; (3) s = s i ; (4) while (s s 0 ) do begin (5) trovare gli episodi seriali da L: ciascun episodio deve contenere almeno un valore dell'attributo axis value che non è in R restricted ; (6) aggiungere i nuovi valori di attributo axis a R restricted ; (7) aggiungere le episode rules all'insieme delle regole risultanti Rules; (8) s = s/2; end while end L'idea è quella di trovare prima gli episodi relativi ai valori di attributi axis con frequenza alta, per esempio: (servizio = smtp, src_bytes = 200), (servizio = smtp, src_bytes = 200) (servizio = smtp, dst_bytes = 300) Poi iterativamente abbassiamo la soglia del supporto per trovare gli episodi relativi ai valori di attributi axis con frequenza bassa restringendo la partecipazione dei valori di axis vecchi che sono già usciti. Più specificatamente, quando un episodio è generato, deve contenere almeno un valore axis nuovo cioè con bassa frequenza. Per esempio, nella seconda iterazione (dove smtp ora è un valore axis vecchio), noi otteniamo la regola: (servizio = smtp, src_bytes = 200), (servizio = http, src_bytes = 200) (servizio = smtp, src_bytes = 300). La procedura termina quando si è raggiunto un valore molto basso di supporto, questo si può decidere che sia la più bassa frequenza di tutti i valori axis. Si noti che per un valore axis con alta frequenza, si vanno ad omettere i suoi episodi con frequenza molto bassa(generati nei cicli con bassi valori di supporto) perché essi non sono ritenuti d'interesse o rappresentativi. Tale procedura risulta quindi un mining approssimativo. Si continuerà però ad includere tutti i vecchi valori axis con alta frequenza per formare gli episodi con nuovi valori di axis 10

perché comunque risulta importante catturare la sequenzialità dei contenuti di questi. Ad esempio, anche se usato in maniera poca frequente, auth occorre normalmente con alti servizi quali smtp e login. E' quindi d'obbligo includere questi servizi a frequenza alta nelle regole riguardanti auth. Riunione dei dati di Audit Dopo aver raccolto e scoperto i pattern presenti nei dati di audit di un obbiettivo da proteggere(sia questo una macchina, un rete, un utente etc) abbiamo le informazioni necessarie per capirne il comportamento. Quando riuniamo i dati di audit raccolti sul nostro obbiettivo, andiamo a calcolare i pattern da ciascun nuovo data set, e andiamo a fondere le nuove regole con l'attuale sistema di regole aggregate. L'aggiunta di nuove regole rappresenta nuove variazioni sul comportamento normale del sistema in esame. Se l'insieme di regole aggregate si stabilizza, ad esempio nel caso in cui non sia possibile aggiungere nuove regole dai nuovi dati di audit, si può fermare la raccolta dei dati in quanto l'insieme ha coperto un numero sufficiente di variazioni. Un possibile approccio per la fusione delle regole si deve basare sul fatto che anche lo stesso tipo di comportamento potrà avere leggere differenze attraverso i vari data set. Non ci si deve quindi aspettare un confronto esatto dei pattern recuperati. Invece si richiede di combinare i pattern simili in altri più generali. Ad esempio si possono fondere due regole r 1 e r 2 in una regola r se: 1. Le loro parti destra e sinistra sono esattamente le stesse, oppure le loro parti destra possono essere combinate ed anche le loro parti sinistre. 2. I valori corrispettivi di supporto e di confidenza sono vicini, ad esempio con una soglia definita dall'utente. Ipotizziamo di combinare le parti sinistre e che la parte sinistra di r 1 ha solo un item set: (a x 1 = vx 1, a 1 = v 1 ) dove ax 1 è un attributo axis. La parte sinistra di r 2 deve avere anch'essa un solo item set: (a x 2 = vx 2, a 2 = v 2 ) inoltre si richiede che valgano i seguenti vincoli: ax 1 = ax 2, vx 1 = vx a 1 = a 2 11

dato che le parti sinistre devono coprire lo stesso insieme di attributi allora i loro valori axis devono essere gli stessi. Affinché le parti sinistra possano essere combinate, v 1 e v 2 devono essere valori adiacenti. La parte sinistra della regola risultante r assumendo che v 2 sia il valore più largo risulta: ax 1 = vx 1 con v 1 a 1 v 2 Ad esempio dati: (servizio = smtp, src_bytes = 200) e (servizio = smtp, src_bytes = 300) queste regole possono essere combinate nella seguente: (servizio = smtp, 200 src_bytes 300) E' possibile introdurre un altro livello di analisi e al fine di poter permettere che alcune feature essenziali possano referenziarne altre. Queste reference feature normalmente si usano per fornire informazioni relativamente ad un certo soggetto, mentre altre caratteristiche descriveranno le azioni che si riferiscono a quel soggetto. Ad esempio se noi vogliamo studiare i pattern sequenziali relativi alle connessioni verso lo stesso host di destinazione, stabiliremo che dst_host è il soggetto e che servizio sia la azione. In questo caso scegliamo dst_host come reference feature. Nella creazione di un episodio l'algoritmo andrà a controllare, all'interno delle occorrenze minime dello stesso, che gli eventi registrati riguardino gli item set costituenti ed aventi lo stesso valore di referenza. Costruzione delle feature La raccolta dei dati relativi agli episodi frequenti, la creazione di regole di associazioni risultano strumenti e tecniche inutili se non vengono usate come linee guida per la costruzione di caratteristiche statistiche temporali per la costruzione di modelli di classificazione. Questo processo coinvolge prima di tutto il riconoscimento dei pattern caratteristici di comportamenti unici di un intrusione. Mostreremo qui un approccio [LS00] per la costruzione delle caratteristiche o feature da usare poi per la classificazione. Per identificare i pattern relativi ad una intrusione, si andranno a ricavare due data set, uno in cui il sistema svolge il suo ruolo normale, ed uno in cui ha subito un intrusione. Si andranno poi a confrontare le frequent episode rule al fine di far emergere i pattern caratteristici dall'intrusione, questi vengono conosciuti con il nome di intrusion-only. Un algoritmo di confronto procederà ad esaminare i vari pattern. Bisogna tenere conto che il numero dei pattern può essere molto largo e che raramente ci sono pattern riconosciuti esattamente 12

dai due data set, si useranno quindi algoritmi euristici per identificare automaticamente solo i pattern d'intrusione. L'idea consiste nel convertire i pattern in numeri in maniera tale che a pattern "simili" corrispondano numeri "vicini". In seguito il confronto tra pattern e l'identificazione sono realizzati attraverso il confronto dei numeri ed un ordinamento gerarchico dei risultati. Inoltre come abbiamo detto l'aggregazione dei dati relativi al comportamento normale del sistema richiede una grande mole di spazio di memorizzazione. L'uso di una codifica per convertire ciascun pattern frequente in un un numero riduce questi spazi. Codifica delle feature Come detto si vuole che la codifica faccia corrispondere alle associazioni più simili per struttura e sintassi numeri vicini tra loro. Si definisca quindi una misura di similarità e per prima cosa si stabilisca un ordine parziale delle associazioni scoperte. Assumendo che i record abbiano n attributi, si vada a chiamare un associazione (A 1 = v 1, A 2 = v 2,..., A k = v k ) completa ed ordinata se k = n e gli attributi A 1, A 2,,..., A k sono in un qualche ordine di importanza definito dall'utente (ad esempio nel caso più semplice in ordine alfabetico). Un'associazione scoperta può essere sempre convertita nella corrispondente forma completa ed ordinata inserendo inizialmente A i = null per ogni valore mancante dall'attributo A i, e poi ordinando gli attributi per importanza. Per due associazioni complete ed ordinate si dice che (A 1 = v 1, A 2 = v 2,..., A n = v n ) < ( A 1 = u 1,A 2 = u 2,...,A n = u n ) se v j = u j per j = 1, 2,..., i 1 e v i < u i. Allora diciamo che l'associazione X i è più simile a X j che a X k se vale X i < X j < X k (oppure che X k < X j < X i ). Dato un insieme di associazioni, si usa il seguente algoritmo per calcolare le codifiche: Convertire ciascuna associazione nella corrispettiva forma completa ed ordinata. La codifica di un'associazione (A 1 = v 1, A 2 = v 2,..., A n = v n ) è un numero e v1 e v2... e vn, dove l'ordine delle cifre va' dalla più significante a quella meno significante, in ordine d'importanza decrescente degli attributi. Ciascun e vi è: - 0 se v i è null, ad esempio quando l'attributo Ai è mancante dall'associazione originale; - l'ordine di comparsa di vi fra i valori di Ai esaminati(processati) finora nel processo di codifica(altre forme di ordinamento possono essere incorporate facilmente). 13

Quando si codificano le associazioni dai record di rete,si usa il seguente ordine d'importanza decrescente: flag, attributo axis, attributo di referenza, il resto degli attributi essenziali in ordine alfabetico, tutti i rimanenti attributi in ordine alfabetico. L'attributo flag è ritenuto il più importante ed interessante dato che il suo valore è un sommario di come la connessione si sta comportando in accordo con i protocolli di rete. Ogni altro valore diverso da SF(corrispondente alla instaurazione normale della connessione e alla terminazione) è di grande interesse per il rilevamento d'intrusione. Timestamp Durata Servizio src_host dst_host src_bytes dst_bytes Flag 1.1 0 http spoofed_1 vittima 0 0 S0 1.1 0 http spoofed_2 vittima 0 0 S0 1.1 0 http spoofed_3 vittima 0 0 S0 1.1 0 http spoofed_4 vittima 0 0 S0 1.1 0 http spoofed_5 vittima 0 0 S0 1.1 0 http spoofed_6 vittima 0 0 S0 1.1 0 http spoofed_7 vittima 0 0 S0........................ 10.1 2 ftp A B 200 300 SF 12.3 1 smtp B D 250 300 SF 13.4 60 telnet A D 200 12100 SF 13.7 1 smtp B C 200 300 SF 15.2 1 http D A 200 0 REJ........................ Tabella 2: SYN Flood Attack Consideriamo come esempio l'attacco SYN flood mostrato nella Tabella 2. L'attaccante ha utilizzato diversi indirizzi sorgente spoofed per mandare molte connessioni(dove tra l'altro viene inviato solo il pacchetto di SYN) ad una porta(nel nostro caso http) della macchina vittima in un lasso di tempo decisamente basso(con marca temporale 1.1). Nella seguente Tabella 3 possiamo vedere una regola associativa ottenuta per fornire un pattern relativo ad un comportamento tipico di un intrusione: Episodio frequente (flag = S0, servizio = http, dst_host = vittima), (flag = S0, servizio = http, dst_host = vittima) (flag = S0, servizio = http, dst_host = vittima) [0.93, 0.03, 2] Significato Il 93% del tempo, dopo due connessioni http con flag S0 ricevute dall'host vittima, entro due secondi dalla prima di queste due, una terza connessione viene fatta. E questo pattern occorre nel 3% dei dati. Tabella 3: Un Intrusion-only pattern La Tabella 4, invece, mostra alcuni esempi di codifica delle regole di associazioni computate: 14