TCP/IP: cosa rischio se lo uso? Importanza Obiettivo di oggi: Capire come funzionano alcuni protocolli di rete Vedremo Come lavorano i protocolli Come un attaccante può abusarne Come difendersi Non vedremo Contenuti marketing Come prepararsi per superare un esame OSI Il modello mondo reale 7-Applicazione Quattro livelli sono sufficientemente rappresentativi 6-Presentazione 5-Sessione 4-Trasporto 4-Applicazione Http, ftp, telnet, ping,dns,dhcp 3-ReteTCP, UDP, IPSec 3-Trasporto 2-Data Link 2-Rete IP, ICMP, IGMP 1-Fisico ARP, RARP 1-Interfaccia Convenzioni usate nella presentazione “A” e “B” rappresentano host sulla rete I diagrammi con il formato dei protocolli hanno il seguente formato: 0 8 elemento 16 24 elemento 31 elemento Protocolli del livello Interfaccia ARP Address Resolution Protocol RFC 826 Indirizzi MAC sono di 48 bit. Indirizzi IP sono di 32 bit. Come codificare MAC in IP? ARP aiuta perché risolve IP in MAC Conversazione semplice a due-frame Domanda broadcast; risposta unicast Risposte salvate in cache per ridurre il numero di broadcast Cache implementa dei timeout perchè gli indirizzi possono cambiare (default 20 minuti) Formato di un messaggio ARP 0 8 hardware type HA length PA length 16 24 protocol type 31 operation sender MAC address (bytes 0-3) sender MAC address (bytes 4-5) sender IP address (bytes 0-1) sender IP address (bytes 2-3) target MAC address (bytes 0-1) target MAC address (bytes 2-5) target IP address (bytes 0-3) operation: 1 = Richiesta ARP 2 = Risposta ARP Operazione ARP 1.1.1.1 B 00:11:22:33:44:55:66-1.1.1.2 Chi ha IP 1.1.1.2? A 1.1.1.2 Conversazione ARP Normal: B salva le informazioni ARP di A, pronte per la risposta Tutte le altre macchine sulla rete hanno info ARP di A 00:80:c8:f8:4a:51 ff:ff:ff:ff:ff:ff: arp who-has 192.168.99.254 tell 192.168.99.35 00:80:c8:f8:5c:73 00:80:c8:f8:4a:51: arp reply 192.168.99.254 is-at 00:80:c8:f8:5c:73 Gratuitous: reply inviato prima della richiesta Spesso indirizzato ad un router di upstream arp reply 192.168.99.35 is-at 0:80:c8:f8:4a:51 (0:80:c8:f8:4a:51) Unsolicited: broadcast dell’host che ha un dato IP; normalmente all’avvio Ottimo per trovare IP duplicati Problemi di sicurezza di ARP ARP spoofing Le risposte ARP sono onorate e salvate (sia normal sia gratuitous) È possibile “avvelenare” (poison) una cache ARP con informazione false (spoofed) per forzare la ridirezione I proxy ARP (router) lo fanno legittimamente ARP flooding (trasformare uno switch in un hub) Riempire la memoria di uno switch con mappe false Lo switch invierà tutto il traffico a tutte le porte non potendo più determinare dov’è l’host destinatario Attacco Man In The Middle ARP 1.1.1.1 A 1.1.1.2 è a 00:11:22:33:44:55:66 B 1.1.1.2 Difesa ARP Nessuna difesa precostruita nel protocollo Arpwatch: tool di controllo Deve essere fatto il mirror di tutto il traffico su una porta dello switch Uso di alcune funzioni degli switch Consentono solo un indirizzo MAC per porta Non è più possibile usare hub Confronta richieste e risposte con altre informazioni delle mappe 802.1x Protocolli del livello rete IP Internet Protocol RFC 791 IP è un protocollo di rete molto scadente! Inaffidabile: consegna non garantita Invia messaggi ICMP alla sorgente se la consegna fallisce Non connesso: non viene mantenuto lo stato della connessione I datagram sono ruotati in modo indipendente uno dall’altro e non in ordine Al meglio: i pacchetti non sono eliminati in modo capriccioso Ha un solo lavoro: ruotare i datagram Si affida al livello di trasporto per le migliorie Gli host devono implementare ricerca e correzione di errore Formato IP 0 version header length 8 16 type of service Identification (ID) time to live next protocol 24 datagram length flags 31 fragment offset header checksum source IP address destination IP address options, se presenti (lunghezza variabile) (riempimento) Formato IP Version: 4 TOS: differenzia i codici dei servizi (non c’è garanzia che siano rispettati) Datagram length, ID, flags e fragment offset: servono per la frammentazione (esaminati in seguito) TTL: numero massimo di salti (router) attraversabili (decrementato dai router); di solito 32 next protocol: TCP: 6 UDP: 17 ICMP, 1 IPsec AH, 51 IPsec ESP, 50 header checksum: (16-bit) serve solo per controllare che il pacchetto non si sia danneggiato durante il trasporto options: restrizioni, record route, record timestamp, source-routing Routing IP Due tipi di nodi di rete Host Non passano i datagram tra le diverse interfacce Router Passano i datagram tra le diverse interfacce Gli host possono diventare router installando e configurando software appropriato (es: RRAS) Operazioni del routing IP È per il mio IP? Datagram Datagram per per 9.8.7.6 1.1.1.5 Guarda nelle tabelle di routing Decide come ruotare Decrementa il TTL 1.1.1.254 Rete 1.1.1.0/24 È per il mio IP? A 1.1.1.1 B 1.1.1.2 1.1.1.3 1.1.1.4 1.1.1.5 Algoritmo di routing di base Estrarre l’indirizzo di destinazione D dal datagram Calcolare il prefisso di rete N IF N corrisponde ad una delle reti connesse direttamente Consegnare il messaggio al destinatario D sulla rete corretta ELSE IF la tabella di routing contiene una route specifica per D Spedire il datagram al successivo hop specificato nella tabella ELSE IF la tabella di routing contiene una route per N Spedire il datagram al successivo hop specificato nella tabella ELSE IF la tabella di routing contiene una default route Spedire il datagram al router specificato in tabella come default router ELSE dichiarare un errore di routing Problemi di sicurezza di IP La maggior parte dovuti a spoofing di indirizzi Indirizzi non firmati e non criptati negli headers Sono indentificatori inaffidabili Spoofing utile per: Redirezione di connessioni (“MITM”) Source routing Attacchi denial-of-service (“flooding”) Attacchi che non necessitano di “vedere” la risposta (“blind spoofing”) Checksum IP non è sicurezza Attaccante: Intercetta i datagram Falsifica (spoofing) l’indirizzo Calcola il nuovo checksum É da intendersi solo per la determinazione di eventuali errori A calcola checksum e lo aggiunge all’header B calcola checksum e lo confronta con quello ricevuto Se non coincidono, B elimina il pacchetto (silente) Source routing Chi spedisce il pacchetto può definire il percorso che lo stesso deve compiere attraverso la rete Il normale routing prevede che i router decidano il percorso il base all’IP destinazione. Con source routing la “sorgente" decide parte o tutto il percorso Strict source routing: percorso completamente definto dalla sorgente. Non usato in pratica Loose source record route (LSRR): la sorgente indica solo alcuni dei punti intermedi Source routing è usato per i seguenti scopi: Mappatura della rete: usato da tracert per trovare tutti i router di un percorsotra due punti della rete Troubleshooting: cercare di capire da un punto esterno (T) perchè i due end-node A e B non si parlano Performance: per forzare l’uso di un link alternativo e decongestionare i router principali Hacking: per esempio per raggiungere, da Internet, una macchina con indirizzo privato (es. 10.1.1.1) passando per una macchina che ha un indirizzo pubblico e uno privato della stessa rete Source routing 131.107.0.254 10.0.0.254 B A 10.0.0.1 SA: <non è importante> DA: 10.0.0.1 SR: via 131.107.0.254 Frammentazione IP Alcuni payload possono superare la dimensione della frame fisica (MTU) In questo caso IP frammenta i dati A destinazione IP ricompone i frammenti Operazione trasparente al livello trasporto Ogni frammento è un datagram separato Sono possibili route diverse per i frammenti L’ordine di consegna non è garantito I frammenti possono essere persi In questo caso tutti i frammenti devono essere ritrasmessi (è IP, non TCP) Formato IP Frammentazione 0 version header length 8 16 type of service Identification (ID) time to live 24 datagram length flags next protocol 31 fragment offset header checksum source IP address destination IP address options, if any (lunghezza variabile) (riempimento) ID: unico per ogni datagram; copiato in ogni frammento flag1: un bit per “more fragments”; nullo per l’ultimo frammento flag2: un bit per “don’t fragment”; se 1, IP scarta il datagram e crea errore ICMP offset: dall’inizio del datagram originale (multipli di 8-byte) length: solo di questo frammento Esempio di frammentazione IP header (20 bytes) TCP/UPD hdr (20 bytes) payload (1473 bytes) Pacchetto originale 1 bit troppo lungo per essere inviato Deve essere frammentato Esempio di frammentazione IP header next hdr (20 bytes) (20 bytes) IP header next hdr (20 bytes) (20 bytes) payload (1473 bytes) payload (1472 bytes) IP header payload (20 bytes) (1 byte) Non c’è header TCP o UDP nei frammenti successivi al 1°! Molti firewall consentono il passaggio dei pacchetti frammentati… problemi di sicurezza! Difese IP Possibile bloccare quasi ogni attacco al confine Si devono applicare cinque regole Bloccare traffico in ingresso se SA è interno Bloccare traffico in uscita se SA non è interno Bloccare tutto in/out dove SA o DA sono in range definito in RFC1918 (IP privati) o APIPA Bloccare tutti i datagram con campo source-routed Bloccare tutti i datagram frammentati ICMP Internet Control Message Protocol RFC 792 Servizio di “consegna di messaggi” di IP Riporta errori Chiede e risponde a domande Incapsulato in IP I messaggi potrebbero dover essere ruotati Considerato parte del livello network I messaggi di errore contengono sempre i primi 64 bit del datagram che provoca l’errore Aiuta a determinare quale protocollo causa l’errore Formato ICMP 0 8 type 16 code 24 checksum content (Lunghezza variabile; dipende da tipo e codice) type: tipo di messaggio code: tipo di sotto messaggio 31 Messaggi ICMP Type 0 3 Code 0 0 1 2 3 4 5 4 5 8 9 10 11 6 7 0 0 1 0 0 0 0 12 13 14 15 16 17 18 0 0 0 0 0 0 0 Description echo reply destination unreachable network unreachable host unreachable protocol unreachable port unreachable fragmentation needed but don’tfragment bit is set source route failed destination network unknown destination host unknown source quench redirect for network for host echo request router advertisement router solicitation time exceeded TTL = 0 during transit parameter problem IP header bad (catchall error) timestamp request timestamp reply information request (obsolete) information reply (obsolete) address mask request address mask reply Code Description Query Error 8 9 10 11 12 source host isolated (obsolete) destination network administratively prohibited destination host administratively prohibited network unreachable for DiffServ host unreachable for DiffServ 13 communication administratively prohibited by filtering 14 15 host precedence violation precedence cutoff in effect 2 3 for DiffServ and network for DiffServ and host 1 TTL = 0 during reassembly 1 required option missing ICMP echo 0 8 16 type code identifier 24 checksum 31 sequence number optional data (lunghezza variabile) type: 8 = request 0 = reply code: 0 identifier, sequence number: per far corrispondere risposte e richieste data: ritornati allo speditore ICMP Attacchi di riconoscimento “Port unreachable” = porta chiusa “Host unreachable” = host non esiste ICMP Attacchi di ridirezione Avviso agli host dell’esistenza di route migliori Difficile da implementare Può provenire solo dal default gateway dell’host attaccato Deve essere parte di una connessione esistente Non usabile per modifiche non richieste alla tabella di routing La re-direzione generalmente non è usata Meglio bloccare questi pacchetti Utile solo se ci sono più gateway per Internet ICMP Attacchi DoS Attacchi Ping Indirizzi sorgenti forgiati appositamente possono creare scompiglio quando arrivano i reply Attacchi Unreachable Si possono usare messaggi forgiati per provocare il reset delle connessioni esistenti Tutto quello che serve per generare questi messaggi è netstat DDoS a costellazione Variante di “smurf” Wake up! Ping! Reply! X Scan con ICMP Le risposte ICMP, conformi alle specifiche, a certe query aiutano gli attaccanti ad apprendere com’è fatta la rete Fare riferimento ai lavori di Ofir Arkin http://www.sys-security.com/html/projects/icmp.html http://www.sys-security.com/html/projects/X.html Difense di ICMP Limitare i tipi e i codici ICMP ammessi sulla rete Evitare quelli poco usati e con alternative migliori Re-direzione Messaggi solicitations e advertise dei router Timestamp Non consentire ai messaggi “unreachable” di uscire dai border router L’assenza di reply costituirà un problema (non per voi) Protocolli del livello di trasporto UDP User Datagram Protocol RFC 768 Orientato ai datagram TCP è orientato agli stream (connessioni) Nessuna affidabilità nel trasporto Non c’è garanzia di consegna Alcune applicazioni lavorano meglio se il controllo di errore è a livello applicativo UDP format 0 8 source port 16 24 destination port length 31 checksum data (lunghezza variabile) checksum: calcolato sull’intero pacchetto UDP packet (intestazione+dati) UDP Responsabilità delle applicazioni Gestire ricerca e correzione di errore Capire la dimensione della sottostante MTU per evitare frammentazione dei pacchetti Correggere in caso di arrivo fuori ordine Tracciare lo stato della comunicazione tra pari Problemi di sicurezza di UDP Lo streaming di media e il VoIP spesso usano porte dinamiche La mancanza di connessione rende difficile determinare i flussi Attacco port loopback “pingpong” Spoof! da A:19/udp (chargen) a B:7/udp (echo) A B Difese di UDP Usare proxy applicativi per incrementare la sicurezza Non esporre applicazioni non necessarie echo daytime chargen TCP Transmission Control Protocol RFC 793 Orientato alla connessione, affidabile, servizio full-duplex di trasporto di stream Molte decisioni sono prese dal protocollo, non dalle applicazioni Dimensione dei segmenti = quantità di dati per pacchetto Conferma di ricezione dei pacchetti Ri-trasmissione di pacchetti non confermati Riordinamento dei pacchetti arrivati fuori ordine Controllo del flusso FormatoTCP 0 8 16 source port 24 31 destination port sequence number acknowledgement number header length flags reserved checksum window size urgent pointer options (if any) (variable length) data (variable length) seq/ack numbers: traccia lo stato della sessione; indica a quale byte siamo flags: urgent | acknowledge | push | reset | synchronize | finish window size: controllo di flusso checksum: calcolato sull’intero pacchetto TCP (intestazione e dati) Creazione di una connessione TCP “three-way handshake” A B BAinvia A invia invia un unpacchetto un pacchetto pacchetto ad aB A a con: B con: con: •ACK con SYN di B +1 ••SYN SYN impostato impostato ••ISN (initial sequence number) di B Porta di destinazione ••ACK ISN (initial con SYNsequence di A + 1 number) di A Chiusura di una connessione TCP “four-way close” A B B Ainvia Binvia A invia invia un unun un pacchetto pacchetto pacchetto pacchetto ad a ad B aAB con: A con: con: con: •ACK con SYN di B A +1 +1 •• FIN FIN impostato impostato •• Sequence Sequence number number successivo successivo di di B A Reset della connessione TCP Immediato “go away” Nessun Ack A B B invia un pacchetto ad A con: • RST impostato • Sequence number successivo di B • ACK con SYN di A +1 Problemi di sicurezza di TCP SYN flooding Consuma memoria con molte connessioni half-open (in Windows ~6KB per connessione, mantenuti per 4 minuti) Cambiare voce di registry tcpsynattackprotect Session hijacking Pacchetti source-routed Sniffing Numero di sequenza predicibile Predizione del sequence number SYN ACK B (predetto!) E source=A ISN E source=A Cosa? Messaggi arbitrari SYN ISN A RST A SYN SYN ISN ISN B B ACK ACK E A B Difese del TCP Migliore generazione dei sequence number Random Crittografia Modifiche all’implementazione Non allocare risorse fino alla completa apertura Regole di router per bloccare pacchetti “spooffati” Attacchi TCP si basano quasi sempre su spoofing © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.