Sicurezza nelle Reti Prof. Claudio A. Ardagna, Dr. Marco Anisetti, Dr. Valerio Bellandi, Dott. Fulvio Frati http://homes.di.unimi.it/anisetti/index.html Università degli Studi di Milano
Intrusion Detection System (IDS)
Tipici abusi a cui siamo esposti accesso non autorizzato ad un host compromissione del sistema Denial of Service mail spam utilizzo abusivo di anonymous ftp server virus, troiani,... 3 Sicurezza nelle Reti
Come prevenirli? filtri sul router tcp-wrappers chiusura servizi inutili filtri anti-spam antivirus eliminazione trasmissione password in chiaro 4 Sicurezza nelle Reti
Un intrusione nella LAN resta comunque un evento possibile e probabile si usano sistemi operativi intrinsecamente insicuri e/o non sempre configurati gli utenti richiedono di utilizzare servizi insicuri i sistemi di autenticazione utilizzati (password) sono deboli tutti i sistemi operativi risultano prima o poi vulnerabili a chi riesce ad accedervi come utente locale 5 Sicurezza nelle Reti
Cos è un sistema di Network Intrusion Detection? E` un sistema di monitoraggio del traffico di rete con lo scopo di evidenziare eventi critici per la security Si puo` considerare come una valida estensione dei log di sistema 6 Sicurezza nelle Reti
Intrusion Detection System definizione: sistema per identificare individui che usano un computer o una rete senza autorizzazione esteso anche all identificazione di utenti autorizzati, ma che violano i loro privilegi ipotesi: il pattern di comportamento degli utenti non autorizzati si differenzia da quello degli utenti autorizzati 7 Sicurezza nelle Reti
Perchè usare gli IDS per rilevare attacchi o altre violazioni alla sicurezza che non sono prevenuti da altri sistemi; per fornire utili informazioni su intrusioni avvenute, fare diagnosi e correzioni di eventuali debolezze; eventualmente, per avere risposte automatiche come la chiusura di una connessione, l aumento della sensibilità di un IDS o lo spegnimento di un host sotto attacco. 8 Sicurezza nelle Reti
IDS: caratteristiche funzionali IDS passivi: uso di checksum crittografiche (es. tripwire) riconoscimento di pattern ( attack signature ) IDS attivi: learning = analisi statistica del funzionamento del sistema monitoring = analisi attiva di traffico dati, sequenze, azioni reaction = confronto con parametri statistici (reazione scatta al superamento di una soglia) 9 Sicurezza nelle Reti
A cosa serve Permette di rivelare: network scan traffico sospetto (IRC bot, abusi di ftp anonymous, troiani, etc.) traffico che coinvolge host sospetti Può rivelare anche attacchi che originano da un host compromesso della nostra LAN Permette di effettuare analisi specifiche anche a distanza di tempo, per esempio ricontrollando il traffico riguardante particolari host o servizi 10 Sicurezza nelle Reti
A cosa non serve a prevenire un intrusione a prevenire un Denial of Service a rivelare intrusioni o attacchi provenienti dall interno della LAN Non e` un sistema di protezione ma di rivelazione delle intrusioni provenienti dall esterno o di attacchi diretti verso l esterno 11 Sicurezza nelle Reti
Un esempio: compromissione dell account di root remota: mediante un servizio vulnerabile visibile all esterno È possibile difendersi (sicurezza perimetrale) locale: accesso come utente non privilegiato (es. uso di password rubate) e successiva compromissione di root tramite un bug Come mi difendo? 12 Sicurezza nelle Reti
IDS: caratteristiche topologiche HIDS (host-based IDS) analisi dei log (del S.O. o delle applicazioni) attivazione di strumenti di monitoraggio interni al S.O. NIDS (network-based IDS) attivazione di strumenti di monitoraggio del traffico di rete 13 Sicurezza nelle Reti
Come valutare un IDS Per valutare l efficienza di un IDS è necessario conoscere due parametri: accuratezza: allarmi corretti / allarmi totali; completezza: allarmi corretti / numero delle intrusioni. IDS Alarm IDS Rejection Intrusion Allarme corretto Rifiuto falso No Intrusion Falso allarme (o falso positivo) Rifiuto corretto Sicurezza nelle Reti 14
Falsi allarmi In generale in tutti gli IDS occorre bilanciare falsi negativi attacchi non rilevati falsi positivi attacchi rilevati corrispondenti a situazioni normali Quanto più la rilevazione e specifica tanto più aumenta il carico computazionale la rilevazione diventa sensibile Quanto più la rilevazione si fa lasca tanto più il carico computazionale cala la rilevazione risulta poco influenzata da varianti vengono rilevati eventi simili ma non pericolosi. Sicurezza nelle Reti 15
Relazione fra FP e FN FP e FN risultano correlati inversamente: agendo per diminuire l'una, tipicamente l'altra aumenta. Il problema si ripropone in moltissime discipline ogni volta che si ha una decisione binaria (test) Positivo Negativo Attacco TP FN Non attacco FP TN TP+TN+FP+FN = totale Sicurezza nelle Reti 16
Precision e recall FP Type I error, falso allarme FN Type II error, miss Specificità= TN/(TN+FP) FPR 1-specificità Accuratezza= (TP+TN)/totale Precisione (precision) Sensibilità (recall) TPR ROC receiver operative characteristic Sensibilità vs. tasso di falsi positivi wikipedia Sicurezza nelle Reti 17
Falsi allarmi Il problema degli IDS sono i falsi allarmi e le mancate segnalazioni la qualità di un IDS sta nella relazione fra FP e FN per valutarla ci si serve di ROC e AUC (Area Under Curve) Prof. Mattia Monga Sicurezza nelle Reti 18
Falsi allarmi Gli strumenti di analisi come ROC permettono di valutare l'efficacia ex-post, valutando il peso di FP e FN in un determinato contesto sperimentale. Un IDS genera migliaia di allarmi al giorno: qual e la probabilita che un allarme sia davvero relativo a un attacco? dipende in maniera complessa dalla probabilita a priori di un attacco. Sicurezza nelle Reti 19
Teorema di Bayes Per calcolare la probabilità di un allarme veritiero occorre sempre stimare la probabilità a priori di un attacco, che e spesso piuttosto bassa i falsi allarmi sono inevitabilmente comuni, a meno di avere un IDS straordinariamente preciso o asset particolarmente appetibili. Pr(attacco allarme) = Sicurezza nelle Reti 20
SIV e LFM System Integrity Verifier controlla i file / filesystem di un nodo per rilevarne cambiamenti es. rileva modifiche ai registri di Windows o alla configurazione di cron, cambio privilegi di un utente es. tripwire Log File Monitor controlla i file di log (S.O. e applicazioni) rileva pattern conosciuti derivanti da attacchi o da tentativi di attacco es. swatch 21 Sicurezza nelle Reti
Componenti di un NIDS sensor controlla traffico e log individuando pattern sospetti attiva i security event rilevanti interagisce con il sistema (ACLs, TCP reset,... ) director coordina i sensor gestisce il security database IDS message system Consente la comunicazione sicura ed affidabile tra i componenti dell IDS 22 Sicurezza nelle Reti
Architettura di un NIDS (host) sensors IDS Director DMZ Rete esterna (net) sensors (host) sensors Rete interna (net) sensors 23 Sicurezza nelle Reti
Interoperabilità di IDS/NIDS necessaria perché attacchi coinvolgono differenti organizzazioni e/o sono rilevate da diversi strumenti formato di signature: nessuno standard, ma molto diffuso il formato di Snort formato degli allarmi e protocollo per la loro trasmissione: IDMEF + IDXP + IODEF (IETF) SDEE (Cisco, ISS, SourceFire) 24 Sicurezza nelle Reti
Flusso dati in un NIDS Data source activity event sensor notification Security policy administrator alert analyzer manager operator response 25 Sicurezza nelle Reti
IDMEF + IDXP sviluppati da IETF Intrusion Detection Message Exchange Format indipendente dal protocollo (IPv4, IPv6) supporta internationalizzazione e localizzazione supporta aggregazione e filtraggio dei dati (sul manager) Intrusion Detection exchange Protocol basato su BEEP (RFC-3080) scambia profili (di sicurezza end-to-end, di ID) profilo di sicurezza base è TLS 26 Sicurezza nelle Reti
SDEE Secure Device Event Exchange basato sul paradigma web service: messaggi in formato XML scambio messaggi in HTTP o HTTPS standard chiuso, gestito da ICSAlabs 27 Sicurezza nelle Reti
IODEF Incident Object Description and Exchange Format è un soprainsieme di IDMEF serve per scambiare informazioni tra enti diversi, tenere statistiche, valutare rischi 28 Sicurezza nelle Reti
Intrusion Prevention System Intrusion Prevention System IPS per velocizzare ed automatizzare la risposta alle intrusioni = IDS + firewall dinamico distribuito non un prodotto ma una tecnologia, con grosso impatto su tanti elementi del sistema di protezione pericolo di prendere la decisione sbagliata o di bloccare traffico innocuo 29 Sicurezza nelle Reti
Honey pot Rete esterna Web server DMZ Decoy DMZ Honey pot (Attacchi esterni) Internal network Trusted host Honey pot (Attacchi interni) 30 Sicurezza nelle Reti
Intrusion detection system Sono disponibili in rete diversi programmi che possono essere utilizzati come IDS, tuttavia molti sono a pagamento o ancora in versione beta. Snort è gratuito, testato, diffuso e ben supportato. Può funzionare sia come normale sniffer, sia come IDS. Se utilizzato in questo secondo modo, viene gestito dai seguenti file: snort.conf, classification.conf e da tutte le regole racchiuse negli *.rules. Gli alert possono essere salvati in binario in formato tcpdump, il che permette una maggiore velocità di scrittura e un minore utilizzo di spazio. Snort è quindi in grado di leggere i file in formato tcpdump per un analisi posticipata. 31 Sicurezza nelle Reti
Snort Snort è un IDS open source usato per monitorare i pacchetti in transito sulla rete Come tcpdump, utilizza le Libcap per sniffare e catturare i pacchetti Quattro modalità utilizzo: Sniffer mode, legge i pacchetti dalla rete e li visualizza come un flusso continuo Packet Logger mode, logga i pacchetti salvandoli sul disco Network Intrusion Detection System (NIDS) mode, utilizza regole snort-based per individuare pattern di traffico sospetti Inline mode, riceve i pacchetti direttamente da IpTables e collabora per bloccare traffico sospetto 32 Sicurezza nelle Reti
Configurazione di Snort File snort.conf Variabili di configurazione utili come HOME_NET, HTTP_SEVERS, DNS_SERVERS atte a diminuire i falsi positivi; configurazione dei preprocessori che permettono un analisi più estesa dei pacchetti. configurazione dell output per esempio verso un database. Regole da usare. 33 Sicurezza nelle Reti
Regole(1) File *.rules e classification.conf le rules servono per identificare i pacchetti che fanno scattare gli allarmi. Scritte su di un'unica riga Bisogna suddividere le regole in due sezioni logiche: header: (chi dove cosa fare) contiene le azioni delle regole, protocollo, indirizzo IP di origine e destinazione, e le informazioni sulle porte. options: contiene messaggi di alert, informazioni su quali parti dei pacchetti devono essere analizzate per determinare se le regole di azione devono essere eseguite. 34 Sicurezza nelle Reti
Regole(2) Seguente format Func prot sip/mask sport -> dip/mask dport (opzione1; opzione2; ) func indica l azione della regola alert: genera un alert usando il metodo di alert selezionato, e poi fa il log del pacchetto log: fa il log del pacchetto pass: ignora il pacchetto activate: genera un alert e poi viene attivata un azione dynamic dynamic: rimane inattiva finché non è attivata da un azione activate, poi agisce come un log 35 Sicurezza nelle Reti
Regole(3) ->: indica la direzione del traffico (dalla sorgente alla destinazione) che può essere anche inversa (<-) o bidirezionale (<>); Le opzioni contengono una delle seguenti parole chiavi: Content, content-list: cerca un determinato pattern o una lista di pattern nel payload del pacchetto. msg: stampa un messaggio di alert a video o nel file di log. logto: crea il log del pacchetto in un file specificato dall utente invece che sullo standard output; ttl, tos, id (fragment), ipoption, seq, ack : testa campi del TCP dsize: confronta la taglia del carico (payload) di un pacchetto con un determinato valore per prevenire problemi di buffer overflows; flags: testa i flag TCP per alcuni valori; itype: testa il valore del campo type ICMP con un determinato valore; session: scarta tutte le informazioni aggiunte dal livello applicazione per una data sessione. rpc: controlla i servizi RPC e automaticamente decodifica l applicazione, procedura e versione, indicando successo quando tutte e tre le variabili corrispondono;.. 36 Sicurezza nelle Reti
Esempi di Regole e classificazione esempi: alert tcp any any -> 193.205.161.191/23 (msg : Tentativo di Connessione Telnet ; content: Last login ;) alert tcp!192.168.1.0/24 any -> 192.169.1.0/24 111 (content: 00 01 86 a5 ; msg: external mountd access ;) alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:"web-iis cmd.exe access";flow:to_server; flags: A+;content:"cmd.exe"; nocase;classtype:web-applicationattack;sid:1002; rev:3;) classification.conf contiene le priorità degli allarmi. 37 Sicurezza nelle Reti
Snort: Sniffer & Packet Logger Mode Attiva lo sniffer e visualizza pacchetti TCP in transito su eth0 snort -v -i eth0 11/05-18:29:42.554864 192.168.1.2 -> 192.168.1.1 ICMP TTL:64 TOS:0x0 ID:275 ID:63745 Seq:0 ECHO 11/05-18:29:42.554962 192.168.1.1 -> 192.168.1.2 ICMP TTL:255 TOS:0x0 ID:2323 ID:63745 Seq:0 ECHO REPLY Logga i pacchetti in transito su eth0 nella cartella /log./snort -dev i eth0 -l./log 38 Sicurezza nelle Reti
Snort: IDS Mode Utilizza le regole di Snort per registrare solo i pacchetti sospetti./snort -dev -l./log -h 192.168.1.0/24 -c snort.conf Regole sono scaricabili dal sito e personalizzabili Es: lancio un alert (evento gestibile da applicazione terze, es. Syslog) se intercetta traffico in entrata e in uscita sulla porta 23 alert tcp any any <> any 23 (msg: telnet connection active ;) 39 Sicurezza nelle Reti
Snort: Inline Mode Lavora in stretto contatto con Iptables da cui riceve i pacchetti IpTables deve essere compilato per il supporto a Snort Il target QUEUE è stato aggiunto a IpTables per indicare le connessioni da controllare con Snort Tre azioni principali: drop: ordina a iptables di eliminare i pacchetti sospetti reject: come drop ma fa inviare un tcp_reset per terminare la connessione sdrop: fa eliminare il pacchetto senza loggare Es: chiede il drop di tutti i pacchetti in arrivo sulla porta 23 drop tcp any any -> any 80 (classtype:attempted-user; msg:"port 80 connection initiated";) 40 Sicurezza nelle Reti
Conclusioni su Snort Snort viene utilizzato come sensore e come Alarm- Processing Unit. per controllare il traffico di una rete deve vedere tutto il traffico che passa per il router. nel caso di reti fisiche diverse bisogna utilizzare più sensori (Network IDS). come utilizzare in maniera efficace questa grossa quantità di dati? 41 Sicurezza nelle Reti
GUI e add on SGUIL: Snort GUI for Lamers". Non solo una GUI per Snort, ma integra alter tecnologie tipiche di un IDS 42 Sicurezza nelle Reti
GUI e add on BASE: Basic Analysis and Security Engine, nasce dalle ceneri di ACID Analysis Console for Intrusion Databases. Si tratta di una interfaccia web per Snort SNIPS: Snort Intrusion Analysis using Proof Strengthening; progetto di ricerca che mira a correlare gli alert a quello che davvero importa ovvero informazioni su chi sta attaccando cosa o su quale malware sta agendo. Snorby: ruby on rails web application che funziona con I più popolari ids Situazione molto dinamica e spesso progetti che nascono e chiudono 43 Sicurezza nelle Reti
Argus Argus è nato per non essere un IDS, perchè non analizza i pacchetti che riceve; registra protocollo, host e porta, sorgente e destinazione di tutte le connessioni Registra a livello di connessione non di singolo pacchetto argus -P 561 d (guarda quello che trova sulla prima interfaccia disponibile e espone i suoi risultati sulla porta 561) scrive i dati in formato binario molto compatto; i dati possono essere analizzati con il commando ratop -S localhost:561 Esistono altri comandi come ra ecc che permettono l analisi 44 Sicurezza nelle Reti
Suricata Suricata è una network threat detection engine. real time intrusion detection (IDS), inline intrusion prevention (IPS), network security monitoring (NSM) offline pcap processing. 45 Sicurezza nelle Reti
Conclusioni Pre-Attacco Attacco Post-Attacco Prime informazioni sulla rete Analisi dei bersagli Prove di accesso Intrusione nel sistema Attivazione Danno Copertura Gli IDS, allo stato attuale, possono essere molto utili, in una fase post-attacco per capire le debolezze del sistema e cercare collegamenti tra gli host coinvolti nell attacco. 46 Sicurezza nelle Reti
IDS attuativi (1) Le azioni intraprese da un IDS ad esempio con la direttiva di react possono essere anche dannose 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 e verificato il tentativo di accesso a cmd.exe venga automaticamente terminata Le tecniche piu diuse sono Reset di sessioni (Session Sniping) Aggiornamento del firewall 47 Sicurezza nelle Reti
IDS attuativi (2) Sniping: 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 Riconfigurare Firewall Esempio: la rilevazione di attivita di scan viene utilizzata per impedire automaticamente ogni connessione da parte degli indirizzi IP sorgenti coinvolti. Un intrusore può provocare ricongurazioni che risultano dannose, inviando pacchetti con IP spoofed bloccando connessioni provenienti da sorgenti legittime (denial-of-service) 48 Sicurezza nelle Reti
Fail2ban Attuatore che verifica a livello applicativo errori di autenticazione e agisce di conseguenza sul firewall bannando. action = iptables[name=%( name )s, port=%(port)s] [proftpd] enabled = true port = ftp filter = proftpd logpath = /var/log/auth.log failregex = proftpd: \(pam_unix\) authentication failure;.* host=<host> maxretry = 5 49 Sicurezza nelle Reti
Evasione da IDS Spesso l'elusione del rilevamento e possibile sfruttando l'uso di alias o altri trucchi che aggirano l'identificazione di una risorsa o di un attacco 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. Utilizzo sofisticato di pacchetti frammentati 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. 50 Sicurezza nelle Reti
Commenti Un famoso (e controverso) rapporto di Gartner Group del 2003 afferma che gli IDS non valgono gli investimenti richiesti, perche: Troppi falsi positivi e negativi Richiedono sta dedicato al monitoraggio che dev'essere compiuto 247 Il processo di risposta agli incidenti e molto oneroso Non si riescono a monitorare reti con traffico superiore ai 600MB/s senza inaccettabili decadimenti prestazionali 51 Sicurezza nelle Reti
Assunzioni I NIDS signature-based si basano sull'assunzione di saper caratterizzare un attacco. Identicare una vulnerabilità: la firma in grado rappresentare tutti gli attacchi; Riconoscere un exploit: la firma dovrebberappresentare tutte le varianti. 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. vulnerability window a volte lunghe anni 52 Sicurezza nelle Reti
Ricerca vulnerabilità La ricerca delle vulnerabilità non note e una delle attività dei laboratori di sicurezza. Studio analitico: si studiano le specifiche più o meno formali di applicazioni e protocolli Fuzzing: si provano le applicazioni (o i protocolli) con input strain casuali o artificiali Honeypot: un sistema bersaglio 53 Sicurezza nelle Reti
Vulnerabilità classica: buffer overflow a[0] a[i]==&a[0]+ sizeof(a[0])*i a[1] a[2] var locali indirizzo di ritorno stack 54 Sicurezza nelle Reti
Nessus: Vulnerability Scanner Applicativo open source per analizzare in remoto una o più macchine per determinare se sono vulnerabili agli attacchi conosciuti Permette di individuare punti deboli dell architettura di rete e prevedere eventuali contromisure 55 Sicurezza nelle Reti
Port Knocking (1) Ulteriore sistema di sicurezza. E un sistema di comunicazione attraverso porte chiuse del firewall che vengono aperte in base alle necessità Port sequence Packet-payload I dati vengono trasmessi ad una porta chiusa e ricevuti da un demone che monitora il firewall e le intercetta Se la richiesta che monitora ha diritto passa 56 Sicurezza nelle Reti
Port Knocking (2) L informazione è codificata e eventualmente criptata come sequenza di numeri di porte Questa sequenza è il Knock Firewall completamente chiuso Server monitora il firewall Client bussa alle porte con un pacchetto di syn nell ordine stabilito Il server non da risposta fino a che la sequenza non è terminata ed è corretta. Terminata il server agisce di conseguenza Es. apre la porta e comunica 57 Sicurezza nelle Reti
port knocking in 4 easy steps (1) step 1 (A) il client non si può collegare alla applicazione sulla porta n; (B) il client non riesce a stabilire connessione su nessuna porta step 2 (1,2,3,4) il client contatta porte ben definite in sequenza fornendo un messaggio criptato fatto da i tentativi di connessione con syn attivo. Il sistema rileva la sequenza di knock Il client sa che terminato di bussare alle porte giuste si attiverà la risposta anche se in questa fase tutto viene bloccato dal firewall. 58 Sicurezza nelle Reti
port knocking in 4 easy steps (2) step 3 (A) il port knocking daemon decripta il messaggio fatto dagli knock sulle porte e decide se si tratta della sequenza corretta o no. Il server reagisce di conseguenza per esempio aprendo la porta al client che ha bussato step 4 (A) il client accede alla porta e si autentica regolarmente, il firewall verificherà il traffico come da regole 59 Sicurezza nelle Reti
Port Knocking (3) Si deve definire la sequenza di knock e la relativa reazione La reazine potrebbe essere una azione sul firewall o altri eventi di amministrazione Tecnica semplice per codificare un messaggio di autentificazione a livello di rete 60 Sicurezza nelle Reti
Port Knocking e iptables knockd - a port-knocking server knockd è un port-knock server. Ascolta il traffico su una interfaccia in attesa di una sequenza corretta Il client può generare la sequenza d knock usando TCP ma anche UDP Le porte usate per bussare devono essere chiuse Quando viene rilevata la sequenza un comando indicato nel file di configurazione verrà eseguito Ad esempio cambio le regole di iptebles 61 Sicurezza nelle Reti
Esempio: Esempio di apertura e chiusura porte dopo una sequenza di knock Apro la 22 (SSH), La chiudo quando ho finito Migliora la politica di deny all. [options] logfile = /var/log/knockd.log [openssh] sequence = 7000,8000,9000 seq_timeout = 10 tcpflags = syn command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT [closessh] sequence = 9000,8000,7000 seq_timeout = 10 tcpflags = syn command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT 62 Sicurezza nelle Reti
Esempio: Variante temporale Esempio di knock per aprire la porta 22 (SSH). Il daemon lancia lo start_command, attende un tempo specifico in cmd_timeout, esegue stop_command. [options] logfile = /var/log/knockd.log [openclosessh] sequence = 2222:udp,3333:tcp,4444:udp seq_timeout = 15 tcpflags = syn,ack start_command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT cmd_timeout = 10 stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT 63 Sicurezza nelle Reti