Esostrutture - parte II Corso di sicurezza – A.A. 2006/2007 Tatiana Giorgetti Classificazione delle minacce Anelli di controllo Anelli utenti Attacchi Le Minacce External Penetrator • Colui che tenta di accedere ad una risorsa in un’organizzazione di cui non fa parte; • Impiegato dell’organizzazione che non è utente autorizzato del sistema. Internal Penetrator • The Masquerader Colui che riesce ad accedere al sistema autenticandosi come utente autorizzato; • The Legittimate User Utente legittimo che abusa delle proprie autorizzazioni per accedere ai dati effettuandone un uso improprio; • The Clandestine User Questo utente è in grado di evitare il controllo delle attività sulla macchina operando sotto il livello in cui vengono rilevati i dati di controllo o perché può usufruire di privilegi di amministratore. Classi di protezione Esistono svariati metodi per difendere un sistema o una rete da attacchi, la seguente immagine mostra alcuni di questi approcci: Classi di protezione Reaction – Detection – Prevention • Preemption (prelazione): colpire la minaccia prima che abbia la possibilità di perpetrare un attacco; • Deterrence: persuadere un intruso a non effettuare attacchi, o di interrompere un attacco in atto. Si ottiene aumentando il rischio percepito di possibili conseguenze negative. (es: sistema legislativo) • Deflection (tradimento): ingannare l’intruso facendogli credere che il suo attacco sta avendo successo, imbrogliandolo per un periodo di tempo sufficiente a creare una linea di difesa. • Prevention: ostacolare ed impedire la probabilità di successo di una data intrusione. Per esempio attuando tutti quei meccanismi di controllo che permettono di migliorare le difese dagli attacchi (software testato e aggiornato, uso di metodi di autenticazione che facciano uso della crittografia, ecc..) • Detection: individuare i tentativi di intrusione in modo da poter intervenire in modo adeguato. • Countermeasures: reagire automaticamente e attivamente ad una intrusione ed attuare tutte quelle misure che portino ad evitare un nuovo attacco. Intrusion Detection System Anche il miglior sistema di prevenzione alle intrusioni (firewall + controlli di accesso e autenticazione) può fallire. La seconda linea di difesa consiste nella rilevazione delle intrusioni, argomento su cui si è concentrata molta attività di ricerca a partire dagli anni ‘80. Con Intrusion Detection System (IDS) si denominano tutti quei sistemi per il rilevamento di intrusioni in una rete o in una singola macchina. Gli IDS monitorano l’attività per identificare gli eventi maligni o sospetti, funzionano come un allarme: controllano lo stato del sistema e, nel caso riscontrino situazioni considerate pericolose, avvertono l’amministratore del problema riscontrato. Una delle difficoltà maggiori è quindi quella di distinguere accessi ed operazioni consentite da altre probabilmente fraudolente. La rilevazione delle intrusioni si basa sull’ipotesi che il comportamento degli intrusi differisce da quello degli utenti legittimi, ma naturalmente non ci si può aspettare una differenza marcata ed esatta fra un attacco perpetrato da un intruso e il normale utilizzo delle risorse di sistema da parte di un utente autorizzato … … piuttosto ci si deve aspettare una sovrapposizione. Quindi sarà possibile sempre cadere in uno di questi due casi: Falsi positivi: l’IDS rileva qualcosa di anormale ma non è avvenuta alcuna intrusione; Falsi negativi: l’IDS non rileva un’intrusione avvenuta. Pertanto, un’interpretazione meno restrittiva del comportamento di un intruso finalizzata a catturare molte intrusioni tenderà anche a creare un certo numero di falsi positivi, o utenti autorizzati riconosciuti come intrusi. D’altra parte, il tentativo di limitare i falsi positivi mediante un’interpretazione restrittiva del comportamento di un intruso, porterà ad avere un aumento dei falsi negativi, ovvero di intrusi non identificati come tali. Il modello CIDF per gli IDS La rapida crescita che il campo dell’intrusion detection ha avuto ed il forte coinvolgimento da parte di importanti istituti di ricerca ed università, ha portato il DARPA (Defence Advanced Research Projects Agency) a creare una metodologia per la standardizzazione di tutti quei tool progettati per eseguire intrusion detection. Il risultato di tale lavoro è il Common Intrusion Detection Framework (CIDF). L’obbiettivo principale di tale progetto è quello di rendere possibile la cooperazione fra IDS. La descrizione del sistema è estremamente dettagliata e definisce precisamente i ruoli giocati dalle componenti che sono parte del sistema di rilevazione. Per ogni componente è stabilita a priori un’interfaccia dalla quale non si può prescindere, rendendo così relativamente semplice integrare qualsiasi IDS CIDF-compliant in un progetto più vasto. Il CIDF definisce quattro tipologie diverse di componenti e ruoli specifici per ognuna di loro. Il framework non specifica nessun vincolo sulla necessità di mantenerle accoppiate su di una stessa macchina, tutte queste scelte sono completamente delegate al progettista dell’IDS. Il framework CIDF Il framework CIDF Event Boxes (E-boxes): raccolgono gli eventi di audit, successivamente processati dal sistema di rilevazione. Devono monitorare il particolare ambiente per il quale sono specializzate e strutturare i dati ritenuti importanti in modo da renderli disponibili alle componenti specializzate nel trattarli. Analysis Boxes (A-boxes): processano gli eventi recapitati loro dalle E-boxes e, quando necessario, si occupano della generazione degli allarmi. Analizzano l’informazione alla ricerca di svariate minacce, le conclusioni ottenute tramite questo procedimento di ispezione sono trasmesse ad altre componenti, incaricate di svolgere su tali dati operazioni ulteriori. Database boxes (D-boxes): memorizzano le informazioni per una successiva elaborazione e mettono a disposizione servizi per le query ed il recupero delle informazioni; Countermeasure Boxes (C-boxes): applicano le contromisure difensive adeguate alla tipologia di allarme generato. Per contromisura si intende sia la generazione di un report relativo all’attacco subito, sia qualche azione attiva mirata a rendere meno insidiosa la minaccia come la chiusura di una connessione. La classificazione degli IDS Gli IDS possono essere classificati in base ai principi di rilevazione delle intrusioni su cui si basano. La tabella a fianco schematizza le varie politiche. Anomaly Detection Questi IDS avvertono l’amministratore del sistema che potrebbe essere in corso un attacco ogni volta che registrano attività diverse da quelle “normali”, basandosi sul pensiero che se qualche evento è fuori dalle normali attività allora probabilmente è sospetto. Per individuare un’anomalia il sistema deve quindi: • conoscere il comportamento “normale” del sistema; • decidere quale percentuale dell’attività segnalare come anormale; • come prendere tutte queste particolari decisioni. Per far ciò questi IDS possono creare autonomamente dei modelli di riferimento sul traffico e l’attività del sistema (Self Learning System) oppure possono richiedere all’amministratore l’inserimento di tali dati (Programmed). Questi sistemi si possono basare su modelli matematici che prendono in considerazione le serie temporali (Time Series), come per esempio le Reti Neurali, oppure possono non prenderle in considerazione (Non Time Series), come la collezione di semplici statistiche che descrivono il sistema. Anomaly Detection PRO L’IDS non deve essere configurato, può imparare automaticamente il comportamento del sistema, avendo così la possibilità di individuare nuove intrusioni come variazioni di quelle già conosciute . Sono efficaci contro attacchi di utenti masquerade, che probabilmente non imiteranno le tipologie di comportamento degli account di cui si sono appropriati. CONTRO Segnala soltanto il comportamento insolito che non necessariamente è illecito. E’ quindi soggetto a falsi positivi. Inoltre il sistema può imparare ad accettare come normale un comportamento pericoloso, potrebbe considerare “normali” azioni pericolose solo perché avvengono di frequente. Signature Detection Gli IDS di questo tipo si basano su un database di azioni innocue/dannose o di regole per il rilevamento degli attacchi fornite al sistema dall’amministratore (Programmed). Ogni violazione utilizza una o più falle della sicurezza e modifica il sistema in modo caratteristico. I sistemi basati su Signature memorizzano nel database le violazioni conosciute con le loro firme caratteristiche (da 104 a 106 regole). Per far ciò le intrusioni possono essere modellate come un numero diverso di stati (Petri Net) o vengono utilizzate regole che descrivono il comportamento di possibili intrusioni (Expert-System). PRO: il sistema, tramite le regole per il rilevamento, ha un’elaborazione più semplice ed efficace dei dati di verifica. Sono efficaci contro malintenzionati riconoscendo con le regole le sequenze tipiche degli attacchi. CONTRO: specificare le firme degli attacchi è un’operazione altamente qualificata che richiede tempo, non può essere attuata da responsabili ordinari del sistema. Il metodo ha anche limitato potere preventivo: non è in grado di rilevare nuove intrusioni, per le quali non ha regole nel DB. La classificazione degli IDS Gli IDS possono essere classificati anche in base alle caratteristiche di sistema. Time of detection • Real time: IDS che tentano di rilevare le intrusioni in tempo reale; • Non real time: IDS che verificano i dati con un certo ritardo, posponendo la rilevazione. Granularity of data-processing • Process data continuously: analizza i dati in modo continuo; • Process data in batches: analizza i dati ad intervalli regolari. Response to detected intrusions • Passive: questi sistemi informano l’amministratore ma non tentano autonomamente di mitigare o intervenire per evitare danni o fermare l’intruso; • Active: questi sistemi tentano di limitare gli effetti dell’attacco. Locus of data-collection • Centralised location: i dati provengono da un unico punto di analisi; • Distributed location: i dati provengono da un sistema distribuito. Security: la capacità di sostenere attacco ostile contro l’IDS stesso. Source of audit data si possono identificare due gruppi: • Network based (NIDS): controllano i pacchetti che passano attraverso la rete di computer da difendere. Per loro è fondamentale esaminare il traffico in transito senza interromperlo o modificarlo e soprattutto senza perdere pacchetti. Se vengono persi pacchetti il rischio è quello di lasciar passare qualche attacco o di perdere lo stato delle connessioni della rete. Sono real-time e particolarmente importanti per la difesa dagli attacchi provenienti dall’esterno. • Host based (HIDS): basano il loro funzionamento sul controllo dei file presenti sul computer (file di sistema, di log, ecc..). Effettuano il controllo ad intervalli regolari e confrontano lo stato del sistema con uno “corretto” memorizzato in un luogo protetto. Sono quindi utili per il rilevamento di attacchi provenienti dall’interno ma hanno il difetto di non poter essere real-time e quindi si corre il rischio che l’attacco venga avvertito solo dopo che ha causato danni o disservizi. Trends Da HIDS a NIDS + Interoperabilità Da Centralizzato a Distribuito + Resistenza agli attacchi Honeypot, Honeynet Gli honeypot sono una categoria abbastanza particolare, per la quale da poco esistono prodotti commerciali e il cui uso richiede particolare attenzione. Si tratta di strumenti che simulano un sistema o una rete vulnerabile, in modo che l’attaccante cerchi di accedervi, attivando gli allarmi e perdendo tempo. Lo scopo è distrarre l’attaccante con una preda facile, in modo che trascuri i sistemi reali e nel frattempo generi allarmi. Gli scopi degli honeypot sono: • sviare gli attacchi dall’accesso ai sistemi critici; • raccogliere informazioni sulle attività degli attaccanti; • incoraggiare gli attaccanti a restare nel sistema abbastanza a lungo perché gli amministratori attuino una risposta. Gli honeypot possono comporre una honeynet, che simula una rete vulnerabile, attirandovi l’attaccante con l’illusione di trovare materiale interessante. Nessun utente legittimo accederebbe all’honeypot o all’honeynet, quindi qualunque accesso a questa parte di rete è sospetto. Honeypot, Honeynet La cautela nell’uso deriva dal fatto che se l’implementazione o la configurazione sono difettose, si possono facilmente avere due effetti: • L’attaccante si accorge del tranello ed evita l’honeypot, attaccando i sistemi reali; se parte delle protezioni si basano sulla speranza che l’attaccante perda tempo e attivi gli allarmi dell’honeypot, questi attacchi reali potrebbero essere notati troppo tardi; • L’attaccante riesce ad uscire dall’ambiente ristretto dell’honeypot, utilizzando poi questo sistema per attaccare quelli reali. Si tratta di strumenti utilizzati con successo per analizzare i comportamenti degli attacchi e rilevare nuovi strumenti e tecniche di attacco, laddove ci sia interesse a raccogliere queste informazioni. Si tratta quindi di un utilizzo orientato più alla ricerca che alla protezione di una rete aziendale. Intrusion Prevention System Negli ultimi anni si è diffusa una tipologia di prodotti che si colloca concettualmente fra i firewall e gli IDS: gli Intrusione Prevention System. Sono strumenti che, anziché limitarsi a monitorare il traffico, si interpongono di fronte a una rete o ad un servizio, esaminando il traffico e bloccando quello corrispondente ad attacchi. Mentre formalmente si tratta di firewall, la tecnologia è quella degli IDS, con un’attenzione particolare agli attacchi noti e una politica di default permit. Gli IPS proseguono la loro evoluzione spesso integrandosi con i firewall, con cui condividono la funzione di bloccare traffico illegale o sospetto. Sygate Personal Firewall Insertion, Evasion e Denial of Service Sfuggire alla rilevazione dei NIDS Si possono riscontrare due problemi principali con i NIDS: • Ci sono poche informazioni disponibili derivanti dall’acquisizione di pacchetti al di fuori del loro contesto per ricostruire correttamente cosa accade all’interno di transazioni complesse. Un controllo passivo della rete non può predire esattamente se una data macchina sta leggendo un pacchetto, e tanto meno se lo processa nel modo previsto. • Gli IDS sono vulnerabili agli attacchi di tipo DoS. Il primo di questi problemi va a ridurre l’esattezza dell’IDS e il secondo compromette la sua disponibilità. Gli attacchi verso l’IDS sono facilmente riparabili, ma non è semplice trovare tutte le possibili vulnerabilità. Insertion Un IDS può accettare pacchetti che un end-system rifiuta. Un IDS che lo fa commette un errore nel credere che l’end-system abbia accettato e processato tale pacchetto quando invece non lo ha fatto. Un attacker può sfruttare queste condizioni inviando pacchetti ad un endsystem che rigetterà, ma che l’IDS crederà validi. Un attacker può usare quindi gli attacchi di inserzione per evitare l' analisi della firma e permettendo all’attacco di slittare oltre l’IDS. Di solito questo attacco funziona quando un IDS è poco rigoroso nell’elaborazione di pacchetti rispetto ad un end-system. Per prevenire il problema, l’IDS può essere più preciso e restrittivo nel processare i pacchetti ma, in questo caso, diminuirebbe la possibilità di attacchi di tipo insertion aumentando però quelli di tipo evasion. Insertion Non corrisponde a nessuna firma di attacco Caso pratico: Se l’IDS non si trova nello stesso segmento di rete dei sistemi che controlla è possibile trasmettere pacchetti che soltanto gli IDS vedranno, regolando il valore della TTL (Time to Live) in modo che scada prima di arrivare a destinazione. Evasion Un end-system può accettare un pacchetto che un IDS scarta perdendo interamente il suo contenuto. Questa condizione può essere sfruttata facendo passare informazioni oltre l’IDS in pacchetti che l’IDS processa in modo troppo rigoroso. Gli attacchi di evasione seguono il modello degli attacchi di inserzione. Di nuovo, l’attacker induce l’IDS a vedere un flusso differente di dati rispetto all’end-system, questo volta, tuttavia, l’end-system vede più dell’IDS e le informazioni che l’IDS perde sono importanti per la rilevazione di un attacco. Non corrisponde a nessuna firma di attacco Evasion Caso pratico: sovrapposizione di frammenti Frammentazione IP: i pacchetti possono essere rotti in pacchetti più piccoli per poi essere uniti alla destinazione. Se un frammento arriva all’end-system contenente dati che in realtà sono già arrivati in un frammento precedente, è possibile che il nuovo frammento vada a sovrascrivere dei vecchi dati. Se l’IDS non tratta i frammenti coerentemente ai sistemi che controlla, può, riassemblare in maniera totalmente differente i pacchetti rispetto all’endsystem. Un attacker che conosce queste discrepanze tra IDS ed end-system può nascondere il suo attacco inserendo i dati all’interno di pacchetti sovrapposti che verranno ricostruiti in modo diverso dai due sistemi. Denial of Service L’obbiettivo di base dell’attacco DoS è causare il fail dell’IDS senza perdere l’accesso alle macchine che si vogliono attaccare. Alcuni tipi di attacchi DoS si basano su difetti del software. Per esempio l’IDS si arresta quando riceve un determinato tipo di pacchetto difettoso o una serie di messaggi di controllo difettosi, ecc.. Fortunatamente questo genere di difetti nel software possono essere rapidamente corretti dai fornitori dell’IDS. Tipi di attacchi: • Resource Exhaustion: l’attaccante identifica un certo punto di elaborazione della rete che richiede l’utilizzo di una certa risorsa e crea una circostanza che va a consumare tutta quella risorsa. Le risorse che possono essere esaurite da un attacker includono i cicli della CPU, la memoria, lo spazio di disco e la larghezza di banda della rete. • Abusing Reactive ID System: Se l’IDS ha la possibilità di adottare contromisure agli attacchi, l’IDS può essere costretto a reagire ad attacchi che realmente non esistono. Le contromisure impiegate possono ostruire l' accesso al traffico legittimo interrompendo i collegamenti validi. Network Intrusion Detection System SNORT è un NIDS Open Source; permette di analizzare ogni pacchetto che circola nella rete, confrontandoli con un database di firme di attacchi. Verifica i protocolli utilizzati dai pacchetti, in modo da riconoscere eventuali anomalie nel traffico. Snort ha caratteristiche real-time, in quanto è in perenne ascolto sul segmento di rete a cui è stato adibito ed è in grado di contattare l’amministratore di sistema attraverso molteplici meccanismi come syslog , messaggi “Winpopup” o su uno specifico file di allerta. Snort adotta un meccanismo di Signature Detection, attraverso regole che possono essere molto specifiche, per ispezionare l’intero campo dati del pacchetto di rete. Una prova della bontà di questo software e del suo utilizzo in ambiti altamente professionali è la sua adozione da parte del Ministero della Difesa degli Stati Uniti d’America. Modalità operative Snort può lavorare in diversi modi: • Packet Sniffer: è capace di ispezionare il carico dei pacchetti sulla rete, decodificando catalogando il traffico basato su un certo contenuto di dati. • Packet Logger: può anche effettuare il log dei pacchetti indirizzati ad una specifica locazione, in un syslog, ed invia alert a video. • Intrusion Detection: può essere usato come NIDS su reti dove sono richieste alte prestazioni. Ha un sistema di firme ed è disegnato per essere un tool veloce di alerting per gli amministratori quando sono individuate attività sospette. Componenti di Snort Snort è logicamente diviso in più componenti che lavorano insieme per identificare particolari attacchi e per generare un output nel formato richiesto. Componenti di Snort Packet Decoder: prende i pacchetti da diverse interfacce di rete e li prepara, ordinando i dati, per essere preprocessati. Preprocessor: organizza o modifica i dati del pacchetto preparandoli ad essere analizzati in quanto gli intrusi utilizzano diverse tecniche per ingannare un IDS, come piccole variazioni della firma dell’attacco. Se l’IDS ricerca la stringa esatta, non sarebbe in grado di riconoscere le piccole variazioni, mentre il preprocessor riorganizza la stringa così che possa essere identificata dall’IDS. Inoltre il preprocessore permette di ricostruire i pacchetti frammentati così da prevenire attacchi come la frammentazione dei pacchetti. Detection Engine: è la parte più importante di Snort. Si occupa della individuazione di eventi maligni o sospetti in ogni pacchetto. Per poterlo fare impiega le regole di Snort. Le regole vengono lette e comparate con ogni pacchetto; se in un pacchetto si trova una corrispondenza con una regola, vengono effettuate adeguate azioni, altrimenti il pacchetto viene rilasciato. Questa fase è la più critica rispetto al tempo di Snort. Le capacità dipendono dalla potenza della macchina e da quante regole sono state definite. Componenti di Snort Loggin and Alerting System: in base a cosa si individua nel pacchetto, il pacchetto può essere utilizzato per annotare l’attività o per generare un allarme. Le annotazioni dell’attività vengono memorizzate in un file di testo. Output Modules: le operazioni compiute da questo modulo dipendono da come si vuole salvare l’output generato dal Loggin e Allerting System di Snort. Possono essere effettuate operazioni come: • Semplice annotazione in un file di testo; • Memorizzazione dei dati in un database come MySQL o Oracle; • Memorizzazione dei dati in un file XML; • Modifica della configurazione di router e firewall; • Invio di una e-mail con i dati; • Visualizzazione dei dati tramite interfaccia web; • Ecc… Le regole di Snort I virus e le attività di intrusione hanno una di firma di riconoscimento. Queste firme vengono utilizzate da Snort per creare regole ed identificare eventuali anomalie dei pacchetti. Le firme si possono trovare negli header del pacchetto o nel payload. La regola può essere utilizzata per generare un allarme, un messaggio di log o a rilasciare il pacchetto senza nessun operazione aggiuntiva. Alert ip any any -> any any (msg:“IP detected”) Action Protocol Address Port Direction Address Port Rule Option Action: il tipo di azione da intraprendere quando la regola coincide con i dati contenuti nel pacchetto. Address: definisce l’indirizzo di origine e di destinazione. Port: nel caso dei protocolli TCP e UDP si hanno la porta d’origine e di destinazione. Rule Option: è contenuta all’interno di parentesi tonde. Si possono avere una o più opzioni che vengono separate da un punto e virgola. Se si hanno più opzioni la regola viene applicata solo quando tutti i criteri della regola sono veri (AND). Sono formate da due parti: la keyword e il relativo argomento. Le regole di Snort - le keyword Alcuni esempi di keyword che possono essere utilizzate all’interno di una regola sono: Msg: contenuto del messaggio che verrà visualizzato nel caso la regola venga applicata. Classtype: classifica ogni regola per poterle raggruppare. Priority: assegna la priorità ad ogni regola così se più regole corrispondono ad un pacchetto, viene applicata quella con priorità maggiore. React: regola che andrà a terminare sessioni o bloccare siti e servizi. Esempio: alert udp any any -> 192.168.1.0 6838 (msg:"DoS"; \ classtype:DoS; priority:1"; react: block) Interfacce per Snort Sono diversi i tool che possono essere utilizzati con Snort. ACID è un tool utilizzato per analizzare e rappresentare i dati di Snort tramite un’interfaccia web; è scritto in PHP e lavora con Snort e database come MySQL. Per piattaforme Windows è disponibile il front-end IDScenter. Antivirus La prevenzione può ridurre il numero di attacchi virali andati a buon fine ma l’obiettivo di una protezione totale è irraggiungibile. Si prendono quindi in considerazione alcune procedure da attuare qualora la prevenzione non abbia successo: • Rilevazione: una volta avvenuta l’infezione, stabilire che si è verificata e localizzare il virus. • Identificazione: una volta compiuta la rilevazione, identificare lo specifico virus che ha infettato il programma. • Rimozione: dopo aver identificato il virus, rimuovere tutte le tracce dal programma infetto e ripristinare lo stato originario del programma in questione. Queste procedure possono essere attuate tramite un antivirus. L’installazione di un antivirus, se da un lato aiuta a difendersi, a volte finisce con il peggiorare il livello di sicurezza. Questo accade perché viene percepito dall’utente come una pallottola d’argento, capace di risolvere ogni problema. In realtà prima che un virus venga riconosciuto come tale e analizzato, si deve verificare una certa diffusione. Solo alla fine di questa analisi c’è la possibilità che gli antivirus vengano aggiornati. Tale periodo è dell’ordine di grandezza di una settimana, se si considera circa 1000 nuovi virus all’anno ciò potrebbe indicare la costante esposizione ad una ventina di virus nuovi, anche nell’ipotesi di un antivirus aggiornato costantemente. Diffusione dei virus Dal 1982, quando si diffuse il primo programma malizioso Elk Cloner che infettava gli Apple II e il primo virus per PC Brain nel 1986, i virus hanno continuato ad evolversi fino ad arrivare ai virus mutanti o polimorfici. Ma anche gli antivirus si sono evoluti. Diffusione virus Vundo 7 gg 24 h 30 gg Metodi antivirus La rilevazione è probabilmente la più importante delle tre mansioni di un antivirus, perché l' identificazione e la disinfezione richiedono la rilevazione come requisito preliminare. Ci sono cinque risultati possibili per la rilevazione: Rilevazione perfetta: risulta nei casi cerchiati sulla diagonale, il virus è rilevato e realmente presente. Falso Positivo: viene segnalato un virus Non realmente presente. Falso Negativo: non viene rilevato un virus presente. Ghost positive: viene rilevato un virus che non c’è più in quanto un tentativo precedente di disinfezione ha lasciato tracce. I metodi di rilevazione possono essere classificati come statici o dinamici, in base a se il codice del virus viene eseguito durante la rilevazione. Metodi statici – Signature Detection Il funzionamento si basa principalmente sulla ricerca di uno schema tipico, una sequenza di byte, tipica del virus ma che non si può trovare nei programmi non infetti. Le scansioni permettono all’antivirus di confrontare tutti i file con le firme di virus conosciuti presenti nel database. Il successo di questa tecnica si basa sul costante aggiornamento degli schemi che l’antivirus è in grado di riconoscere. Questi dispositivi possono essere classificati in base a quando sono invocati: • On – Demand: funzionano una volta avviati esplicitamente dall’utente. Solitamente è bene forzare scansioni quando nuovi virus vengono inseriti nella base di dati. • On – Access: è un processo di background che può esaminare ogni file che viene acceduto. Solitamente per migliorarne le prestazioni si limitano i controlli agli accessi di lettura e scrittura o per il solo controllo di file ed e-mail scaricate da internet. Metodi statici – Signature Detection Esempio: l’immagine seguente presenta una parte di codice del virus Stoned (1987 Nuova Zelanda). Questo virus infettava il settore di boot dei PC e visualizzava il messaggio “Your PC si now Stoned!”. La stringa di ricerca pubblicata dal magazine Virus Bulletin: 0400 B801 020E 07BB 0002 33C9 8BD1 419C Metodi statici – Heuristics Detection La ricerca euristica consiste nell’analizzare il comportamento dei vari programmi alla ricerca di istruzioni sospette perché tipiche del comportamento dei virus. L’analisi euristica si compone di due punti principali: • Raccolta dati: vengono applicate tutte le euristiche • Analisi: viene assegnato un peso ad ogni risultato ottenuto dall’applicazione delle euristiche, si sommano i valori e se la somma supera una cera soglia, l’input è ritenuto infetto. Le soglie possono essere configurate in base a diversi livelli di severità. La severità contribuirà a determinare quanti virus sono presenti, ma poiché l’euristica lavora su una base di probabilità, queste possono dare vita a falsi positivi. Metodi statici – Integrity Checkers Questi sistemi calcolano un valore di checksum per ciascun file. Se il virus lo infetta senza modificare la checksum, allora l’integrity checkers rileverà il cambiamento. Questi possono essere di tre tipi: • Off-line: i controlli avvengono periodicamente; • Self-Checking: i file eseguibili vengono modificati così che possano autocontrollarsi quando eseguiti; • Integrity Shells: la cheksum di un file eseguibile viene controllata subito prima che il file venga eseguito. Per proteggere le checksum dai virus che tentano di modificarle così da nascondere la loro presenza, può essere utilizzata una funzione hash cifrata così da avere la necessità di proteggere solo una chiave di cifratura e non tutte le checksum dei file del sistema. I principali problemi che si possono riscontrare sono: 1. Il sistema iniziale deve essere totalmente pulito da virus per poter effettuare il primo calcolo delle checksum; 2. Costi elevati per il calcolo delle checksum; 3. Molti falsi positivi dovuti ad eventi quali gli aggiornamenti che spesso avvengono automaticamente all’insaputa dell’utente. Metodi Dinamici – Behavior Blokers Sono programmi che identificano un virus in base alle sue azioni. Tali programmi hanno il vantaggio di non richiedere la definizione di signature ed euristiche per una vasta gamma di virus. In questo caso, è necessario solamente identificare l’insieme (ridotto) di azioni sintomatiche di possibile infezione in corso e quindi intervenire. Questi sistemi controllano il comportamento del programma in tempo reale, alla ricerca di attività sospetta. Se tale attività è rilevata, il behavior blocker può impedire le operazioni sospette, può terminare il programma, o può chiedere all’utente l’azione da effettuare. Il comportamento che il Behavior Blocker considera normale può essere modellato descrivendo: • Le azioni consentite – positive detection; • Le azioni non consentite – negative detection; • Una combinazione delle due. La durata del controllo di ogni file è una decisione molto importante in quanto si presuppone che la maggior parte dei virus si riveli subito, all’avvio del programma infetto, ma in realtà questo presupposto non sempre è valido. Metodi Dinamici – Emulation L' emulazione di codice è una tecnica estremamente potente di rilevazione dei virus. Una macchina virtuale, formata da un emulatore di CPU, un dispositivo d’analisi e un modulo di controllo di emulazione, permette di eseguire il codice così che il virus possa “collaborare” mostrando la sua presenza. Questi sistemi sono particolarmente efficaci con virus polimorfi in quanto devono decifrare se stessi per attivarsi. L’emulazione può suddividersi in: • Dynamic Heuristics: l’analisi dei dati derivanti dall’emulatore avviene come per l’heuristics detection. E’ soprattutto efficace per individuare le firme dinamiche dei virus metamorfi. • Generic Decryption: l’analisi avviene tramite scansione della memoria alla ricerca di firme caratteristiche dei virus. E’ soprattutto efficace con virus polimorfi in quanto l’emulazione permette ai virus di decriptarsi così da rivelare il proprio codice. In questo ultimo caso una delle scelte più importanti è data dalla determinazione della durata di ciascuna emulazione. Quanto più a lungo il GD emula un programma, maggiore sarà la probabilità di smascherare i virus nascosti, tuttavia questo richiede un grosso dispendio di risorse del sistema. Quarantena Quando in un file viene rilevato un virus, l’antivirus può avere bisogno di mettere in quarantena il file infetto, isolandolo dal resto del sistema. La quarantena è soltanto una misura provvisoria, finché l’utente non decide come intervenire. Il file può essere disinfettato ma in alcuni casi l’antivirus può rilevare un virus, ma non avere idea di come pulirlo. In questo caso il file può essere messo in quarantena, finché non sarà disponibile un aggiornamento dell’antivirus. La quarantena può semplicemente consistere nel copiare un file infettato in una directory distinta “di quarantena”, rimuovendo il file infetto originale ed inabilitando tutti i permessi per accedervi. Il problema è che i permessi dei file possono essere cambiati facilmente da un utente e i file possono essere altrettanto facilmente copiati. Una soluzione è cifrare i file in quarantena attraverso alcuni mezzi semplici, come uno XOR con una costante. Il virus quindi è reso inerte, perché un file eseguibile cifrato non sarà più eseguibile e una copia del file cifrato non causerà danni. Disinfezione Disinfezione non significa che un sistema infettato è stato ristabilito al relativo stato originale e, in alcuni casi, la disinfezione non è proprio possibile (virus che sovrascrivono i file originali). Sono diversi i modi per eseguire una disinfezione: Virus specifico: un antivirus può avere nella sua base di dati tutte le informazioni necessarie per disinfettare ogni virus conosciuto. Virus con comportamento specifico: un’alternativa è basare la disinfezione sul comportamento del virus. Possono essere utilizzate le stesse tecniche dell’Integrity Checker memorizzando quindi informazioni sui file quali l’header del programma, la lunghezza, la checksum. Per un file infetto, l’header memorizzato può essere immediatamente ripristinato. La parte difficile è determinare dove risiede il file originale, in quanto il virus che si è appeso potrebbe averlo shiftato dalla sua posizione originaria. Per questo può essere utilizzata la cheksum che, tramite un’iterazione, può essere confrontata con una nuova checksum calcolata per lo stesso numero di byte finchè non si ottiene una corrispondenza esatta. Correggere i file infettati con il backup: i file possono essere riportati allo stato memorizzato nel loro ultimo backup (si potrebbero avere perdite di dati). Eliminazione totale del file infetto: ultima possibilità che causerà perdita di dati. Limiti degli antivirus Le varie tecniche antivirus hanno propri difetti, i quali devono essere sempre tenuti in considerazione. Per esempio l’antivirus potrebbe non essere in grado di riconoscere nuovi virus, in quanto il database di firme non è stato aggiornato, o può individuare virus anche se non presenti. La scelta di un antivirus risulta complessa e spesso la soluzione migliore risulta essere l’utilizzo di più tecniche. L’antivirus è inoltre un grande utilizzatore di risorse. La tecnica di scansioni periodiche complete può essere programmata nelle ore notturne ma non garantisce sicurezza continua al sistema, l’approccio “real time scan” fornisce una sicurezza continua ma andrà ad appesantire costantemente il sistema durante il suo normale funzionamento. Infine le compagnie che creano i software antivirus possono avere un incentivo finanziario molto forte a far sì che nuovi virus vengano creati continuamente e che il panico nel pubblico generi un continuo ricorso all' aggiornamento dei loro software. Questa è una delle accuse che da varie parti vengono rivolte ai produttori antivirus, anche se, in realtà, non vi é attualmente nessuna prova che convalidi tale tesi. Tecniche ANTI Antivirus Le tecniche Anti-antivirus sono tecniche usate dai virus come: Attacco aggressivo al software antivirus: Retrovirus Un virus che prova ad inabilitare il software antivirus della macchina infettata. Una tecnica comune di retrovirus è un virus che possiede una lista con dei nomi di processi di software antivirus. Quando infetta una macchina, un retrovirus enumererà i processi e terminerà tutti i processi attivi che corrispondono alla sua lista. Tentare di rendere difficile l’analisi del virus per i ricercatori delle case produttrici di antivirus : Armoring Sono tecniche utilizzate per impedire, o almeno rendere difficoltosa, l’analisi del virus agli esperti come l’anti-disassemby così da ritardare l’aggiornamento dell’antivirus. Tentare di evitare di essere rilevati dall’antivirus, usando la conoscenza di come opera l’antivirus stesso: Avoidance Come dal film Karate Kid si ha che “the best way to avoid a punch is not to be here”, così tenta di comportarsi il virus. Un virus può nascondersi nei posti in cui il software antivirus è stato impostato a non controllare come chiavi USB e dischi magnetici o nei tipi di file che l’antivirus non esamina (non risulta molto efficace come strategia). Antivirus e Anti-Spyware Antivirus: Nod32(prezzo: primo acquisto 54, rinnovo licenza 43,20) Attualmente, NOD32 detiene il record mondiale del prestigioso riconoscimento “Virus Bulletin 100% Award” avendo conseguito ad oggi il suo 43°“VB100% Award. Ha ricevuto da AV-Comparatives.org il riconoscimento come miglior software antivirus del 2006 e da ICSA Labs la certificazione per Windows Vista. Avast! Home edition (Free) Ha ottenuto il “virus Bulletin 100% Award” e la certificazione da ICSA Labs per Windows Vista. Anti-Spyware: AVG Anti-Spyware (Free Limited Product) Disponibile anche per Vista. Spybot - Search & Destroy (Free) Quale antivirus? Il Virus Bulletin è un' organizzazione indipendente di esperti dedicata in modo esclusivo all' analisi e ai test di virus e antivirus, la cui competenza viene riconosciuta da tutti i produttori di antivirus. Il Virus Bulletin focalizza i test sulla qualità di rilevazione virus, velocità di scansione e individuazione di falsi positivi. La seguente tabella è basata sul numero di volte in cui, ciclicamente, i prodotti sono stati testati su vari sistemi operativi a partire dal maggio ’98. Prodotti free come Avast! negli ultimi test hanno ottenuto il riconoscimento. Testare l’antivirus Dal sito www.eicar.org/anti_virus_test_file.htm è possibile scaricare “falsi virus” che l’antivirus deve riconoscere come pericolosi. (Meglio non salvarli sul computer in quanto l’antivirus potrebbe impedire di accedervi per eliminarli perché li considera pericolosi). Accorgimenti Un elenco di accorgimenti che possono essere presi per diminuire al massimo possibilità di attacchi o infezioni da virus: GENERALE 1 - Spegnere il computer quando non lo si sta usando, specialmente se si ha una connessione 24h su 24h. FIREWALL 2 - Installare un firewall 3 - Non ci sono motivi per permettere incoming connection da chiunque. ANTIVIRUS E ANTY-SPYWARE 4 - Utilizzare un programma che li combina o due separati. 5 - Scaricare a installare gli aggiornamenti il più frequentemente possibile. BACKUPS 6 - Fare backup dei file regolarmente, ricordando che nel caso in cui non si riesca a risolvere un problema di infezione, il backup è ciò che ci può salvare. 7 - Ricordarsi di eliminare vecchi backup. SISTEMA OPERATIVO 8 - Se possibile non utilizzare Microsoft Windows. 9 - Se si utilizza MW attivare gli aggiornamenti automatici. APPLICAZIONI 10 - Limitare il numero di applicazioni sulla macchina il più possibile. Se un programma non serve, non installarlo. 11 - Invece di utilizzare Microsoft Office utilizzare un’applicazione free equivalente. 12 - Mantenere aggiornate il più possibile le applicazioni. 13 - Tenere disattivati ActiveX, Javasript e Visual Basic Scripting se non si visitano siti sicuri. 14 - Non distribuire documenti Word. BROWSER 15 - Non utilizzare Microsoft Internet Explorer il più possibile. 16 - Limitare uso di cookies ed Applet. 17 - Settare il browser in modo che elimini regolarmente i cookies. SITI WEB 18 - Non dare per scontato che il sito che si sta guardando sia il vero sito a meno che non si sia digitato l’indirizzo. 19 - Assicurarsi che l’indirizzo visualizzato sia quello vero e non uno simile. 20 - SSL non da alcuna sicurezza che il fornitore sia fidato o che il database dei clienti sia sicuro. 21 - Limitare le informazioni personali e finanziarie inviate ad un sito web. 22 - Usare carte di credito che non forniscono credito. E-MAIL 23 - Non utilizzare Outlook o Outlook Express. Utilizzare alternative free. 24 - Disattivare le e-mail HTML 25 - Non dare per scontato che l’e-mail ricevuta sia stata inviata da quel dato mittente. 26 - Eliminare lo spam senza leggerlo. 27 - Non aprire messaggi con file allegati sconosciuti. Eliminali. 28 - Non cliccare su link in mail a meno che non si sia sicuri della mail stessa. Meglio copiare e incollare l’indirizzo nel browser. 29 - Non fidarsi di messaggi di allarme riguardante virus e simili, non diffonderli. PASSWORDS 30 - Per siti web ad alta sicurezza creare lunghe password random e scriversele trattandole come moneta. 31 - Non riutilizzare la stessa password a meno di siti a bassa sicurezza. 32 - Non digitare password importanti in pagine che non si trovano in sessioni SSL. ENCRYPTION 33 - Installare un e-mail e file encryptor come PGP. 34 - Criptare tutte le mail e file importanti. Riferimenti Stefan Axelsson. Intrusion Detection Systems: A Survey and Taxonomy. Thechnical Report 99-15, Chalmes Univ., March 2000 James P. Anderson. Computer security threat: Monitoring and survelliance, February 1980 Thomas H. Ptacek, Timothy N.Newsham. Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection. January, 1998 Rebecca Bace, Peter Mell. Intrusion Detection System. National Institute of Standards and Technology (NIST) Special Pubblication. Snort 2.1 Intrusion Detection, Syngress, 2004 Peter Szor. The art of computer virus research and defense, Addison Wesley Professional, 2005 John Aycock. Computer Viruses and Malware, Springer, 2006 Link Snort: www.snort.org Nod32: www.eset.com Avast!: www.avast.com Avg Ani-Spyware: www.grisoft.com Spybot S&D: www.safer-networking.org EICAR: www.eicar.org/anti_virus_test_file.htm Virus Bulletin: www.virusbtn.com Bruce Schneier: www.schneier.com Paolo Attivissimo: www.attivissimo.net