TCP/IP: cosa rischio se lo uso?. Importanza Obiettivo di oggi: Capire come funzionano alcuni...

Post on 01-May-2015

214 views 0 download

Transcript of TCP/IP: cosa rischio se lo uso?. Importanza Obiettivo di oggi: Capire come funzionano alcuni...

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.