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.
Scarica

questo - Microsoft