Internetworking Protocol

Formato Datagramma IP

Ipdgram

  • version - 4 oppure 6
  • hdr lnth - header length in parole - min 5 max 15
  • tipo di servizio - maschera binaria
  • lunghezza totale - del pacchetto, in bytes
  • identificativo - aumentato di uno a ogni nuovo pacchetto
  • R - riservato - non in uso
  • DF - Don’t Fragment - non frammentare il pacchetto
  • MF - More Fragments - altri frammenti seguono
  • Time-to-Live - decrementato di uno da ogni router
  • Protocol - ID del protocollo di trasporto
  • Header checksum - della testata
  • Source IP address - del mittente
  • Destination IP address - del destinatario
  • Options - opzioni facoltative

Type of Service

ToS: tipo di servizio richiesto e priorità

Tos

Si presumeva di attribuire ad ogni link fino a quattro proprietà (espandibili a cinque):

  • Delay
  • Throughput
  • Reliability
  • Cost

In realtà una tale rete non è stata sviluppata e il campo ToS è caduto in disuso

Il campo è stato di recente riciclato come:

  • Differentiated Services Code Point (DSCP)
    • richiesta di qualità di servizio per real-time streaming
  • Explicit Congestion Notification (ECN)
    • notifica di congestione senza perdita di pacchetti
    • richiede che tutti i nodi di rete lo supportino

Lunghezza Totale

La lunghezza totale potenziale di un datagramma è 65535 bytes inclusa la testata

  • In realtà un pacchetto è al massimo lungo quanto la capacità trasmissiva massima del link fisico: MTU - maximum Transfer Unit
  • Esempio: Ethernet circa 1450 bytes

Attenzione a non presumere che il payload sia onesto

  • Esempio 1: ping ha un payload e può essere modificato
  • Il payload può essere crittografato
  • Il payload può avere contenuto steganografico

Identificativo del Pacchetto

Campo di 16 bit -> max 65535

  • Assegnazione semplice: incremento di 1
  • Quando è in overflow si ritorna a 1 (rollover)

Non ci devono essere due pacchetti diversi con lo stesso identificativo

Ma: i pacchetti possono essere ricevuti fuori sequenza

  • Parcheggiati temporaneamente in un buffer di ricezione in attesa dei pacchetti mancanti
  • Timeout se il pacchetto non arriva

Il timeout deve essere inferiore al tempo di rollover

Timeouts sempre più piccoli con reti sempre più veloci

Time to Live (TTL)

  • Ogni nodo intermedio che smista un pacchetto (router) lo decrementa di 1
    • Quando il valore arriva a zero il pacchetto è scartato
      • per impedire loop di routing infiniti
  • Solitamente (non sempre) viene inviato al mittente un messaggio ICMP per avvertire del fatto
    • se c’è un loop di routing anche il messaggio è perso
    • non si mandano mai messaggi ICMP per informare della perdita di un messaggio ICMP

traceroute

Serve a scoprire il percorso compiuto dai pacchetti

  • Si invia un pacchetto iniziale (sonda) con TTL=1 poi pacchetti successivi sonda col TTL incrementato di 1
  • Il router che scarta il pacchetto ritorna un messaggio ICMP TTL Time Exceeded
  • Quando il pacchetto arriva a destinazione risponde con un altro messaggio

Non funziona sempre:

  • Un router può non inviare un messaggio ICMP
  • Il percorso può cambiare tra una sonda e l’altra
  • Un firewall può semplicemente scartare la sonda e non avvertire (buco nero)

Comportamenti diversi Windows e Linux

  • Windows invia una sonda ICMP Echo Request (ping) e riceve un ICMP Echo Reply (pong)
  • Linux invia una sonda UDP a porta improbabile e riceve un ICMP Port Unreachable

Opzioni IP

Struttura delle opzioni IP:

Options

Alcune opzioni IP:

  • loose source routing (codice 0x83)
    • specifica una lista di indirizzi IP che il datagramma dovrebbe attraversare
  • strict source routing (codice 0x89)
    • specifica una lista di indirizzi IP che il datagramma deve obbligatoriamente attraversare
  • record route (codice 0x07)
    • ogni router indica il suo indirizzo IP sul pacchetto
  • timestamp (codice 0x44)
    • ogni router indica il suo indirizzo IP sul pacchetto e l’istante di transito

All’inizio non vi erano protocolli ausiliari come DNS. Si pensava che numerose opzioni diverse potessero aiutare nello smistamento.

  • 255 opzioni possibili
  • solo una decina veramente implementate

Source routing contiene una lista di indirizzi IP da cui il pacchetto deve (strict) o può (loose) passare. Questo può forzare un percorso alternativo, p.es. tramite uno hacker.

I sistemi operativi moderni non usano il source routing.

In generale le opzioni IP sono deprecate:

  • Firewall che scarta tutti i pacchetti che contengono opzioni
  • Ma molti router fanno transitare pacchetti con opzioni

Problemi di Sicurezza di IP

  • Tutti i campi possono essere scritti da un programma
    • Packet crafting
    • Possono essere invalidi e causare problemi: pacchetti maeziani
  • I campi non sono autenticati
    • Fidarsi o no
    • L'indirizzo mittente può essere falso: spoofing
  • Alcuni campi non sono in uso
    • Si possono usare per informazioni coperte
    • Se non sono vuoti e il valore dipebde dal sistema operativo sono usati nel passive fingerprinting

Packet Crafting

I protocolli TCP/IP sono scritti in C

  • Chiunque puà scrivere programmi o usare strumenti che scrivono pacchetti (packet crafting) -- esempio hping3
  • Il ricevente non sa se il pacchetto è genuino o generato

Motivi:

  • Canali di comunicazione stealth
  • Attacchi diDenial of Service

Marziani:

  • Pacchetti crafted con campi errati o assurdi che possono indurre il programma ricevente a compiere operaziomi pericolose
    • Esempio: header length = 3 (Windows NT pre Service Pack 3 si piantava)
    • Tutti i sistemi operativi controllano se i paccheti sono marziani, li loggano e li scartano
    • Ma l'inventiva degli hacker è grande

Passive Fingerprinting

Ispezionare un pacchetto in transito può dare un idea del sistema operativo del mittente

  • Valore TTL iniziale
  • Se la sonda è un ping o UDP
  • Payload del ping
  • Valore del campo ToS
  • Numero dei pings inviati
    • Windows: 4, Linux: infiniti
  • Opzioni e il loro valore

Nè il mittente nè il destinatario si accorgono che il pacchetto è stato ispezionato in transito

Canali Stealth

Comunicazione fuori banda in campi non usati

Esempio: un'opzione che non esiste

  • Inviare un pacchetto con l'opzione p.es.. 0x42 (non esiste)
  • bbiamo 38 byte di payload stealth

Principio d Umiltà dei router:

  • "Se non riconosco un'ozione, puà darsi che l'abbiano inventata di recente". Il pacchetto passa.

Sicurezza più forte:

  • Se un'opzione non è riconosciuta il pacchetto è scartato

Canali stealth più difficili da riconoscere:

  • Uso del campo ToS
  • Uso dei bit alti del campo TTL (default 32 o 64)

I canali stealth possono permettere ad uno hacker remoto di controllare il computer compromesso

Il programma malefico sul computer compromesso è stato probabilmente installato dall'utente stesso tramite tecniche di Ingegneria Sociale

Stealth02

Circuit Level Gateway

Transport Layer.

Contrasta i marziano e i canali stealth:

  • Estrae il payload del pacchetto IP in arrivo
  • Scarta la testata originale
  • Crea una nuova testata pulita e la antepone al payload originale
  • Fa proseguire il pacchetto

Circuitgw

Frammentazione di Pacchetti

La frammentazione è necessaria:

  • Ogni link ha una MTU: Maximum Tranfer Unit - dimensione massima del pacchetto trasferito
  • Se la dimensione del pacchetto è superiore alla MTU, il pacchetto è frammentato

Ciascun frammenyo:

  • Ha lo stesso ID del pacchetto originario
  • Ha un campo di offset: bytes dall'inizio del pacchetto originale
  • IL campo MF (more fragments) è settato a 1 se non è l'ultimo frammento
  • Viene smistato indipendentemente dagli altri frammenti
  • Può seguire un percorso diverso
  • Può essere frammentato ulteriormente

Solo il ricevente è in grado di ricomporre i pacchetti frammentati

  • Se dopo un timeot qualche frammento ancora manca, l'intero pacchetto viene scartato

Frag01

Flag DF

Dfflag

Path MTU

Il mittente intende inviare un pacchetto di dimensione inferiore alla MTU più piccola dell'intero percorso.

I pacchetti non devono essere frammentati.

Il mittente invia un pacchetto di una certa dimensione iniziale con DF=1.

Se riceve un messaggio ICMP di errore:

  • dimezza la dimensione del pacchetto
  • lo rinvia con DF=1

Se la destinazione conferma la ricezione del pacchetto:

  • Il mittente conosce la MTU minima
  • PMTU: Path Maximum Transfer Unit
  • Tutti gli altri pacchetti avranno questa dimensione

Non funziona sempre (quasi sempre): le condizioni di routing della rete variano nel tempo

Attacchi a Frammentazione

Fragattack

Ping of Death

Pingdeath

Attacco Teardrop

Teardrop

Problemy con il Source Address

32 bits - non esiste la maschera

La maschera è un concetto di routing, non una proprietà del pacchetto

Non vi è alcuna assicurazione che il pacchetto provenga veramente dall'indirizzo mittente specificato.

Se l'indirizzo sorgente è falso, è un caso di spoofing (packet forgery), e quasi certamente un attacco hacker.

Spoofing

L'indirizzo IP sorgente è falso:

  • nascondere l'identità del mittente vero
  • impersonare un terzo, che spesso ha relazioni di fiducia col destinatario

Alcuni servizi compiono autenticazione solo sulla base del Source Address

Spoof01

Ottenere informazioni riservate è più complessp e necessita una modifica del routing, p.es. con falsi messaggi di Route Update messages o col Source Routing

Spoof02