tcp/ip: cosa rischio se lo uso?. importanza obiettivo di oggi: capire come funzionano alcuni...
TRANSCRIPT
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
4-Applicazione
3-Trasporto
2-Rete
1-Interfaccia1-Fisico
Il modello OSI
7-Applicazione
6-Presentazione
5-Sessione
4-Trasporto
3-Rete
2-Data Link
Http, ftp, telnet, ping,dns,dhcp
TCP, UDP, IPSec
IP, ICMP, IGMP
ARP, RARP
Il mondo reale
Quattro livelli sono sufficientemente rappresentativi
Convenzioni usate nella presentazione
“A” e “B” rappresentano host sulla rete
I diagrammi con il formato dei protocolli hanno il seguente formato:
elemento elemento
0 8 16 24 31
elemento
Protocolli del livello Interfaccia
ARP
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)
Address Resolution Protocol RFC 826
Formato di un messaggio ARP
hardware type protocol type
HA length PA length 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)
0 8 16 24 31
operation: 1 = Richiesta ARP 2 = Risposta ARP
Operazione ARP
1.1.1.1
1.1.1.2
A
BChi ha IP 1.1.1.2?
Chi ha IP
1.1.1.2?
Chi ha IP 1.1.1.2?00:11:22:33:44:55:66-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
1.1.1.2A
BChi ha IP
1.1.1.2?
1.1.1.2 è a 00:11:22:33:44:55:66
1.1.
1.2
è a
99:8
8:77
:66:
55:
441.1.1.1 è a
99:88:77:66:55:
44
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
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
Internet Protocol RFC 791
Formato IP
version datagram length
Identification (ID) flags fragment offset
header checksum
source IP address
destination IP address
options, se presenti (lunghezza variabile)
0 8 16 24 31headerlength type of service
time to live next protocol
(riempimento)
Formato IPVersion: 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
1.1.1.1 1.1.1.2 1.1.1.3 1.1.1.4 1.1.1.5
1.1.1.254
Rete1.1.1.0/24
A B
Datagram
per 1.1.1.5
È per il mio IP?
Datagram
per 9.8.7.6
È per il mio IP?
Guarda nelle tabelle di routing
Decide come ruotare
Decrementa il TTL
Algoritmo di routing di base
Estrarre l’indirizzo di destinazione D dal datagramCalcolare il prefisso di rete N
IF N corrisponde ad una delle reti connesse direttamenteConsegnare 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 NSpedire il datagram al successivo hop specificato nella tabella
ELSE IF la tabella di routing contiene una default routeSpedire 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
10.0.0.254
131.107.0.254
10.0.0.1
SA: <non è importante>DA: 10.0.0.1SR: via 131.107.0.254
AB
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 IPFrammentazione
version datagram length
Identification (ID) flags fragment offset
header checksum
source IP address
destination IP address
options, if any (lunghezza variabile)
0 8 16 24 31
ID: unico per ogni datagram; copiato in ogni frammentoflag1: un bit per “more fragments”; nullo per l’ultimo frammentoflag2: un bit per “don’t fragment”; se 1, IP scarta il datagram e crea errore ICMPoffset: dall’inizio del datagram originale (multipli di 8-byte)length: solo di questo frammento
headerlength type of service
time to live next protocol
(riempimento)
Esempio di frammentazione
Pacchetto originale 1 bit troppo lungo per essere inviato
Deve essere frammentato
IP header(20 bytes)
TCP/UPD hdr
(20 bytes)
payload(1473 bytes)
Esempio di frammentazione
IP header(20 bytes)
next hdr(20 bytes)
payload(1473 bytes)
IP header(20 bytes)
next hdr(20 bytes)
payload(1472 bytes)
IP header(20 bytes)
payload(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
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
Internet Control Message Protocol RFC 792
Formato ICMP
type checksum
content (Lunghezza variabile; dipende da tipo e codice)
0 8 16 24 31
type: tipo di messaggiocode: tipo di sotto messaggio
code
Messaggi ICMPType Code Description Code Description Query Error
0 0 echo reply 3 destination unreachable
0 network unreachable 8 source host isolated (obsolete)1 host unreachable 9 destination network administratively prohibited2 protocol unreachable 10 destination host administratively prohibited3 port unreachable 11 network unreachable for DiffServ4 fragmentation needed but
don’t-fragment bit is set12 host unreachable for DiffServ
5 source route failed 13 communication administrativelyprohibited by filtering
6 destination network unknown 14 host precedence violation7 destination host unknown 15 precedence cutoff in effect
4 0 source quench 5 redirect
0 for network 2 for DiffServ and network1 for host 3 for DiffServ and host
8 0 echo request 9 0 router advertisement
10 0 router solicitation 11 time exceeded
0 TTL = 0 during transit 1 TTL = 0 during reassembly12 parameter problem
0 IP header bad (catchall error) 1 required option missing13 0 timestamp request 14 0 timestamp reply 15 0 information request (obsolete) 16 0 information reply (obsolete) 17 0 address mask request 18 0 address mask reply
ICMP echo
type checksum
optional data (lunghezza variabile)
0 8 16 24 31
type: 8 = request0 = reply
code: 0identifier, sequence number: per far corrispondere
risposte e richiestedata: ritornati allo speditore
code
identifier sequence number
ICMP Attacchi di riconoscimento
“Port unreachable” = porta chiusa
“Host unreachable” = host non esiste
ICMPAttacchi 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 Arkinhttp://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
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
User Datagram Protocol RFC 768
UDP format
source port
data (lunghezza variabile)
0 8 16 24 31
checksum: calcolato sull’intero pacchetto UDP packet (intestazione+dati)
destination port
length checksum
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”
A B
Spoof!da A:19/udp (chargen)a B:7/udp (echo)
Difese di UDP
Usare proxy applicativi per incrementare la sicurezza
Non esporre applicazioni non necessarie
echo
daytime
chargen
TCP
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
Transmission Control Protocol RFC 793
FormatoTCP
source port
0 8 16 24 31
seq/ack numbers: traccia lo stato della sessione; indica a quale byte siamoflags: urgent | acknowledge | push | reset | synchronize | finishwindow size: controllo di flussochecksum: calcolato sull’intero pacchetto TCP (intestazione e dati)
destination port
sequence number
acknowledgement numberheaderlength reserved flags window size
checksum urgent pointer
options (if any) (variable length)
data (variable length)
Creazione di una connessione TCP“three-way handshake”
A invia un pacchetto a B con:• SYN impostato• Porta di destinazione• ISN (initial sequence number) di A
A B
B invia un pacchetto ad A con:• SYN impostato• ISN (initial sequence number) di B• ACK con SYN di A + 1
A invia un pacchetto a B con:•ACK con SYN di B +1
Chiusura di una connessione TCP “four-way close”
A invia un pacchetto a B con:• FIN impostato• Sequence number successivo di A
A B
B invia un pacchetto ad A con:•ACK con SYN di A +1
B invia un pacchetto ad A con:• FIN impostato• Sequence number successivo di B
A invia un pacchetto a B con:•ACK con SYN di B +1
Reset della connessione TCP
B invia un pacchetto ad A con:• RST impostato• Sequence number successivo di B• ACK con SYN di A +1
Immediato “go away”
Nessun Ack
A B
Problemi di sicurezza di TCP
SYN floodingConsuma memoria con molte connessioni half-open (in Windows ~6KB per connessione, mantenuti per 4 minuti)
Cambiare voce di registry tcpsynattackprotect
Session hijackingPacchetti source-routed
Sniffing
Numero di sequenza predicibile
Predizione del sequence number
SYNISN A
A B
E
SYNISN BACK A
SYNISN Esource=A
SYNISN BACK E
Cosa?
RST
Messaggiarbitrari
ACK B (predetto!)source=A
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.