Sicurezza dei sistemi e delle reti 1

Documenti analoghi
Sicurezza dei sistemi e delle reti 1

Sicurezza delle reti. Monga. Risposta NIDS Risposte automatiche. Tecniche di evasione Lezione XI: Risposta. Sicurezza delle reti.

Sicurezza delle reti. Monga. Risposta NIDS Risposte automatiche. Tecniche di evasione. Zero Day. Buffer overrun. Sicurezza delle reti.

Sicurezza delle reti 1

Sicurezza delle reti. Monga. Risposta NIDS Risposte automatiche. Tecniche di evasione. Zero Day. polimorfismo. degli attacchi Tecniche di

Sicurezza delle reti. Monga. Polimorfismo degli attacchi. Generatori di signature Hamsa. Cifratura. Sicurezza delle reti. Monga.

Sicurezza dei sistemi e delle reti 1

Sicurezza delle reti. Monga. Complessità del filtering SMTP. NAT/Masquerading. Rilevamento delle intrusioni Classificazioni IDS.

Sicurezza dei sistemi e delle reti 1

Sicurezza delle reti 1. Lezione XVIII: Reti wireless. Caratteristiche salienti. Reti wireless. Mattia Monga. a.a. 2012/13

Sicurezza delle reti 1

Sicurezza dei sistemi e delle reti 1

Sicurezza delle reti. Monga. Falsi allarmi. Rilevamento delle intrusioni I falsi allarmi Teorema di Bayes

Sicurezza dei sistemi e delle reti 1

Sicurezza dei sistemi e delle reti 1. Lezione I: Introduzione alla sicurezza delle reti. Di cosa parleremo. Di cosa parleremo.

Sicurezza dei sistemi e delle reti 1

IDS: Intrusion detection systems

Sicurezza delle reti. Monga. Configurazioni Effetti di un firewall. Stateless filtering TCP INGRESS e EGRESS SSH. Complessità del filtering SMTP

Sicurezza delle reti 1. Lezione VII: Sicurezza perimetrale. Cosa sono i Firewall. Mattia Monga. a.a. 2010/11

Stack-based buffer overflow

Sicurezza delle reti. Monga. Sicurezza perimetrale. Tipologie di. Stateless filtering Stateful filtering Deep packet inspection

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10

File binari e file di testo

Sicurezza delle reti 1. Lezione I: Introduzione alla sicurezza delle reti. Di cosa parleremo. Di cosa parleremo. Mattia Monga. a.a.

Puntatori e array. Violetta Lonati

Sicurezza delle reti. Monga. BGP Vulnerabilità. Attacchi a. Prefix hijacking. de-aggregation Flapping attack. Contromisure BGP. Sicurezza delle reti

Analisi e verifica di un framework per l analisi dinamica di codice binario

Sicurezza delle reti 1

Internet Protocol Cenni introduttivi

Spazio di indirizzamento virtuale

Stringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14

Sicurezza dei sistemi e delle reti 1

Introduzione al linguaggio C Puntatori

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Reti e Sicurezza Informatica Esercitazione 5

Sicurezza dei sistemi e delle reti 1

Sicurezza dei sistemi e delle reti 1. Lezione X: Proxy. Proxy. Proxy. Mattia Monga. a.a. 2014/15

Sicurezza delle reti 1. Lezione IV: Port scanning. Stato di una porta. Port scanning. Mattia Monga. a.a. 2010/11

Parametri by reference. Funzioni. Passaggio dei parametri. Parametri by reference. Soluzione. Problemi

Variabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free

Funzioni, Stack e Visibilità delle Variabili in C

Introduzione al linguaggio C

System call per la gestione di processi

Laboratorio di Algoritmi e Strutture Dati

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.

Sistemi Operativi e Reti 1

System call per la gestione di processi

Allocazione dinamica della memoria

Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo

Sicurezza nelle Reti

Allocazione dinamica della memoria

Corso di Informatica A.A

Firewall. Protezione perimetrale e sistemi anti intrusione

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Gestione dinamica della memoria

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

IENA Un modello alternativo per la rivelazione delle intrusioni in una rete locale.

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Caratteri e stringhe

Programmazione Orientata agli Oggetti in Linguaggio Java

RIPRENDIAMO I PUNTATORI

Sicurezza delle reti 1. Lezione XXIII: TOR. Onion routing con TOR TOR. Mattia Monga. a.a. 2012/13

Sicurezza delle reti. Monga. Ricognizione. Scanning Breve ripasso socket Network mapping Port Scanning NMAP. Le tecniche di scanning

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi

Strategie di programmazione

L INTELLIGENZA ARTIFICIALE E LA SICUREZZA APPLICATIVA. Sessione di studio AIEA Torino, Gianluca Zanini Kleis s.r.l.

Sicurezza delle reti 1

Sommario. Tipo stringa: string. Tipo stringa: stile C. Tipo stringa Tipo booleano

Allocazione dinamica della memoria

Studio di buffer overflow in ambiente Win32

C: panoramica. Violetta Lonati

Sicurezza delle reti 1

Sicurezza delle reti. Monga. L autenticazione in rete Password. Altre credenziali OTP. Sicurezza delle reti. Monga.

Lezione IX Gestione dinamica della memoria

Lezione XII: La gestione delle eccezioni in MINIX

Primo programma in C

LABORATORIO DI SISTEMI OPERATIVI

Universita di Milano - Polo di Crema Novembre Session Hijacking. Marco Cremonini 1. Marco Cremonini - Corso Integrativo Network Security 1

I/O da tastiera e direttive processore. Alessandra Giordani Lunedì 3 maggio

Introduzione alle tecniche di Exploit

Sicurezza dei sistemi e delle reti 1. Lezione XIII: Lo schema di Lamport. Lo schema di Lamport. Lo schema di Lamport. Mattia Monga. a.a.

Definizione di sicurezza. Sicurezza in Informatica. Sicurezza per il singolo utente. Panoramica. Per sicurezza si intende la protezione delle risorse

Convenzioni per la chiamata a procedure

Lezione 19: Il preprocessore

Il linguaggio C. Puntatori e dintorni

Numeri casuali. Randomness by obscurity. Generazione Deterministica? Caratteristiche del sistema. Caratteristiche del sistema

Cognome: Nome: Matricola: Sicurezza dei sistemi informatici e delle reti 18 luglio 2014

ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A

Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica. SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto

Sicurezza dei sistemi e delle reti 1

Convenzioni di chiamata a procedure

Sulla libreria standard, II. Manipolare input e output standard

Transcript:

Sicurezza dei sistemi e delle 1 Mattia Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2015/16 1 cba 2011 15 M.. Creative Commons Attribuzione Condividi allo stesso modo 4.0 Internazionale. http://creativecommons.org/licenses/by-sa/4.0/deed.it. Derivato con permesso da 2010 M. Cremonini. 1

215 Lezione X: Risposta

216 Risposta di un NIDS La tipica risposta di un NIDS al verificarsi di un evento che verifica una firma è la generazione di un allarme La forma piú standard di allarme è la scrittura in un corrispondente file di log

217 Risposta di un NIDS [1:1122:2 ] WEBMISC /etc/passwd [Classification: Attempted Information Leak ] [Priority:2 ] 09/1610:04:15.826116 192.168.1.1:3143 >192.168.1.2:80 TCP TTL:128 TOS:0x0 ID:12832 IpLen:20 DgmLen:149 DF ***AP***Seq:0xDEFF5454 Ack:0x1A51AF74 Win:0x4470 Esistono molte varianti implementate dai diversi NIDS, tra cui salvataggio in formato tcpdump, scrittura su database (es. MySQL), visualizzazione a video ecc.

218 Analisi La mole di dati è imponente. Esistono molti strumenti, sia open-source che integrati nei prodotti commerciali, di analisi dei log prodotti da un NIDS. Tipicamente vengono mostrati grafici, statistiche ecc. Sono utili per le analisi post-mortem e per il tuning dei sistemi, ma inefficaci per un azione di contenimento real-time L invio di email a un amministratore è un altra modalità di risposta diffusa (e onerosa).

219 Tool di analisi ACID (Analysis Console for Intrusion Databases) http://acidlab.sourceforge.net/ Interfaccia in PHP di analisi dei log di Snort

219 Tool di analisi SGUIL (The Analyst Console for Network Security Monitoring) http://sguil.sourceforge.net/index.php Interfaccia per la visualizzazione real-time di alarm generati da Snort

219 Tool di analisi SNORTSNARF http://www.snort.org/dl/contrib/data_analysis/snortsnarf/ Interfaccia WEB per l analisi dei log generati da Snort

219 Tool di analisi Symantec Network Security 7120 Interfaccia per l analisi dei log generati dall appliance

220 Risposta automatica Una modalità di allarme che implica la generazione automatica di azioni allo scopo di rispondere attivamente ad una presunta intrusione senza richiedere l intervento diretto di un operatore.

221 Esempio Snort: alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"web-iis cmd.exe access"; content:"cmd.exe"; react: block;...) L opzione react: block fa sí che la connessione TCP nella quale si è verificato il tentativo di accesso a cmd.exe venga automaticamente terminata

222 Tipologia di risposte Le tecniche piú diffuse sono: Reset di sessioni (Session Sniping) L esempio precedente con Snort è di questo tipo Aggiornamento del firewall

223 Reset di sessioni Per lo sniping, il NIDS deve essere in grado di forzare la terminazione della connessione inviando un pacchetto contenente un RST a entrambi devono apparire ai riceventi come inviati dalle controparti

224 Aggiornamento dei firewall La rilevazione di un allarme può essere sfruttata per riconfigurare automaticamente le regole di un firewall Esempio: la rilevazione di attività di scan viene utilizzata per impedire automaticamente ogni connessione da parte degli indirizzi IP sorgenti coinvolti.

225 Aggiornamento dei firewall Meno efficace di quel che potrebbe sembrare: Un intrusore può provocare riconfigurazioni che risultano dannose, ad esempio inviando pacchetti con IP spoofed Gli effetti possono essere di bloccare le connessioni provenienti da sorgenti legittime (denial-of-service)

226 Riassumendo Cosa fare delle segnalazioni dell IDS usare tool di analisi interrompere connessioni riconfigurare, piú o meno automaticamente, le regole dei firewall

227 Evasione di IDS Spesso l elusione del rilevamento è possibile sfruttando l uso di alias o altri trucchi che aggirano l identificazione di una risorsa o di un attacco

228 Evasione di IDS Esempio: Una regola che cerchi di verificare la condizione content:/etc/passwd; potrebbe essere bypassata da formati equivalenti quali /etc//\//passwd oppure /etc/rc.d/.././\passwd. Occorre cercare di riportare la regola all esame di nomi canonici.

229 Evasione di IDS piú sofisticate utilizzano pacchetti frammentati per la loro difficoltà di gestione. Per esempio, si supponga che il NIDS abbia una finestra per riassemblare i pacchetti frammentati inferiore rispetto al sistema vittima. Il NIDS considererebbe due frammenti come pacchetti indipendenti, il sistema destinatario come pacchetto unico.

230 Pericoli delle risposte Qualunque meccanismo di risposta automatica ha il potenziale difetto di poter essere bypassato e/o sfruttato contro il sistema stesso che viene protetto

231 Costi delle risposte Le risposte non sostituiscono l intervento e l analisi dell operatore umano: un apparente risparmio di risorse può risultare in un aggravio di costi L intrusion detection è per sua natura un attività che necessariamente richiede una forte componente di analisi e di gestione manuale da parte di operatori specializzati (per questo è spesso esternalizzato).

232 Commenti generali sugli IDS Un famoso (e controverso) rapporto di Gartner Group del 2003 afferma che gli IDS non valgono gli investimenti richiesti, perché: Troppi falsi positivi e negativi Richiedono staff dedicato al monitoraggio che dev essere compiuto 24 7

233 Commenti generali sugli IDS Il processo di risposta agli incidenti è molto oneroso Non si riescono a monitorare con traffico superiore ai 600MB/s senza inaccettabili decadimenti prestazionali Commercialmente si è passati al termine IPS (intrusion protection s.), suggerendo cosí di avere a che fare con strumenti piú sofisticati...

234 Riassumendo Le risposte hanno costi organizzativi e possono risultare strumenti di o attacco Il processo di risposta agli incidenti è molto oneroso e richiede staff esperto

235 Attacchi imprevisti I NIDS signature-based si basano sull assunzione di saper caratterizzare un attacco. 1 Identificare una vulnerabilità: la firma cercherà di rappresentare tutti gli attacchi capaci di sollecitarla; 2 Riconoscere un exploit: la firma cercherà di rappresentare tutte le varianti.

236 Attacchi imprevisti Zero day Un attacco può essere del tutto inatteso: in questo caso si parla di zero-day, ossia il giorno prima di quando i NIDS sono in grado di riconoscerlo.

237 Finestra di vulnerabilità Il tempo che intercorre fra il momento in cui un attaccante si rende conto di una vulnerabilità e capisce come sfruttarla e il momento in cui l attacco è identificato dal difensore può essere molto lungo (vulnerability window). Nel 2008 Microsoft ha reso nota una vulnerabilità di IE presente dal 2001, quindi con una finestra potenzialmente di 7 anni!

238 Ricerca delle vulnerabilità La ricerca delle vulnerabilità non note è una delle attività dei laboratori di sicurezza. Si cercano vulnerabilità generiche (non di una rete specifica): si analizzano applicazioni e protocolli Gli zero-day hanno un mercato (non solo underground!)

239 Tecniche per la ricerca studio analitico si studiano le specifiche piú o meno formali di applicazioni e protocolli fuzzing si provano le applicazioni (o i protocolli) con input strani casuali honeypot un sistema che viene realizzato e messo in opera solo come bersaglio

240 /overflow (la tracimazione) Vulnerabilità classica: pubblicata per la prima volta nel 1996 ( Smashing the stack for fun and profit, Aleph1), ma certamente nota ben prima (viene usata nell Internet worm). Il problema nasce da un accesso ad una zona di memoria non esplicitamente allocata dal programmatore È di gran lunga il problema piú frequente Sorge perché C e C++, per motivi di efficienza, non controllano gli accessi alla memoria Vulnerabilità antica, eppure gli esperti in grado di seguirne i dettagli sono ancora pochi!!! http://10kstudents.eu/

241 Il principio dell attacco a[i] == &a[0] + sizeof(a[0]) i L a[0] a[1] a[2] locals Return address Stack H

242 Esempio di buffer overrun 1 int scanf(const char format,...); 2 int printf(const char format,...); 3 char strcpy(char dest, const char src); 4 5 void funct(const char stringa[]); 6 7 int main(void) { 8 char tmp[100]; 9 10 if (scanf( %s,tmp) > 0) { 11 funct(tmp); 12 return 0; 13 } 14 return 1; 15 } 16 17 void funct(const char stringa[]) { 18 char buffer[3]; 19 strcpy(buffer, stringa); 20 } 21 22 void exit(int status); 23 24 void hack(void) { 25 printf( Ho eseguito una funzione senza chiamarla!\n ); 26 exit(0); 27 }

GDB (1) (gdb) break funct Breakpoint 1 at 0x80484dd: file bo.c, line 19. (gdb) run Starting program: /home/monga/lavoro/didattica/materiale-sicurezza/ 12 Breakpoint 1, funct (stringa=0xffffcf3c "12") at bo.c:19 19 strcpy(buffer, stringa); (gdb) info frame Stack level 0, frame at 0xffffcf20: eip = 0x80484dd in funct (bo.c:19); saved eip = 0x80484c0 called by frame at 0xffffcfc0 source language c. Arglist at 0xffffcf18, args: stringa=0xffffcf3c "12" Locals at 0xffffcf18, Previous frame s sp is 0xffffcf20 Saved registers: ebp at 0xffffcf18, eip at 0xffffcf1c 243

GDB (2) (gdb) print hack $1 = {void (void)} 0x80484f2 <hack> (gdb) print (char*)buffer $2 = 0xffffcf0d "" (gdb) print 0xffffcf1c - 0xffffcf0d $3 = 15 (gdb) print/o {0x08,0x04,0x84,0xf2} $4 = {010, 04, 0204, 0362} (gdb) set stringa = "123456789012345\362\204\004\010" (gdb) x/x buffer + 15 0xffffcf1c: 0x080484c0 (gdb) next 20 } (gdb) x/x buffer + 15 0xffffcf1c: 0x080484f2 (gdb) continue Continuing. Ho eseguito una funzione senza chiamarla! 244

245 Ricapitolando: il buffer overrun Debolezza: array e aritmetica dei puntatori (C, C++). Condizioni di attacco: chiamata a procedura layout della memoria input

246 Che codice può essere eseguito Nell esempio il codice eseguito fa parte del programma. È però possibile passare nella stringa incriminata l indirizzo di ritorno voluto nello stack le istruzioni da eseguire (di solito una shell minima: possono bastare 10 caratteri)