Uso di sniffer ed intercettazione del traffico IP



Documenti analoghi
Introduzione allo sniffing

Socket API per il Multicast

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)

Firewall e NAT A.A. 2005/2006. Walter Cerroni. Protezione di host: personal firewall

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

Reti di Telecomunicazione Lezione 8

Università degli Studi di Pisa Dipartimento di Informatica. NAT & Firewalls

Introduzione alle applicazioni di rete

ICMP OSI. Internet Protocol Suite. Telnet FTP SMTP SNMP TCP e UDP NFS. Application XDR. Presentation. Session RPC. Transport.

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Reti di Calcolatori. Il software

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

Sicurezza nelle reti

Internetworking TCP/IP: esercizi

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

Cenni di programmazione distribuita in C++ Mauro Piccolo

Internet Control Message Protocol ICMP. Struttura di un Messaggio ICMP. Segnalazione degli Errori

Inizializzazione degli Host. BOOTP e DHCP

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

I Socket. Laboratorio Software M. Grotto R. Farina

Protocollo ICMP, comandi ping e traceroute

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni

Prof. Filippo Lanubile

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

IP (Internet Protocol) sta al livello 2 della scala Tcp/Ip o al livello 3 della scala ISO/OSI. Un indirizzo IP identifica in modo logico (non fisico

Prof. Mario Cannataro Ing. Giuseppe Pirrò

Protocolli di Comunicazione

Transmission Control Protocol

ESERCIZIO NUMERO 1 ESERCIZIO NUM. 2

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Elementi di Sicurezza e Privatezza Laboratorio 6 - Sniffing. Chiara Braghin chiara.braghin@unimi.it

ICMP. Internet Control Message Protocol. Silvano GAI. sgai[at]cisco.com. Mario BALDI. mario.baldi[at]polito.it

Esercitazione 5 Firewall

Internet e protocollo TCP/IP

Lezione n.9 LPR- Informatica Applicata

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Parte II: Reti di calcolatori Lezione 16

L API socket ed i daemon

Reti. Reti. IPv4: concetti fondamentali. arp (address resolution protocol) Architettura a livelli (modello OSI)

Laboratorio di Networking Operating Systems. Lezione 2 Principali strumenti di diagnostica

Packet Filter in LINUX (iptables)

Elementi di Informatica e Programmazione

Il protocollo TCP. Obiettivo. Procedura

Prova in itinere - Rete Internet (ing. Giovanni Neglia) Mercoledì 23 Maggio 2007, ore 15.00

FIREWALL. Firewall - modello OSI e TCP/IP. Gianluigi Me. me@disp.uniroma2.it Anno Accademico 2005/06. Modello OSI. Modello TCP/IP. Application Gateway

Crittografia e sicurezza delle reti. Firewall

Come si può notare ogni richiesta ICMP Echo Request va in timeout in

Il firewall Packet filtering statico in architetture avanzate

HTTP adaptation layer per generico protocollo di scambio dati

Il protocollo IP (Internet Protocol)

Reti di Telecomunicazione Lezione 6

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Telematica II 12. Esercitazione/Laboratorio 4

Antonio Cianfrani. Extended Access Control List (ACL)

INFOCOM Dept. Antonio Cianfrani. Virtual LAN (VLAN)

Elementi sull uso dei firewall

I/O su Socket TCP: read()

Protocolli di rete. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 02 Protocolli - 2/30

Protocollo IP e collegati

3. Introduzione all'internetworking

IL LIVELLO RETE IN INTERNET Protocollo IP

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30

Argomenti della lezione

Internet, così come ogni altra rete di calcolatori possiamo vederla suddivisa nei seguenti componenti:

Introduzione a Wireshark Andrea Atzeni < shocked@polito.it > Marco Vallini < marco.vallini@polito.it >

Livello di Rete. Gaia Maselli

Interprocess Communications - II. Franco Maria Nardini

Rete Internet Prova in Itinere Mercoledì 23 Aprile 2008

Dal protocollo IP ai livelli superiori

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

Elementi di Informatica e Programmazione

Reti di calcolatori. Lezione del 10 giugno 2004

INTRODUZIONE ALLE RETI: UN APPROCCIO PRATICO

Ethereal A cura di Donato Emma demma@napoli.consorzio-cini.it

Router(config)# access-list access-list number {permit deny} {test-conditions}

Lezione 1 Introduzione

8. IP: Instradamento dei datagrammi

Gestione degli indirizzi

Il livello 3 della pila ISO/OSI. Il protocollo IP e il protocollo ICMP

Iptables. Mauro Piccolo

Informazioni Generali (1/2)

Transparent Firewall

Cos'è una vlan. Da Wikipedia: Una LAN virtuale, comunemente

Il routing in Internet Exterior Gateway Protocols

IP Internet Protocol

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

ARP e instradamento IP

Firewall e Abilitazioni porte (Port Forwarding)

Apparecchiature di Rete

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008

Il livello Network del TCP/IP. Il protocollo IP (versione 4)

Sicurezza nelle applicazioni multimediali: lezione 9, firewall. I firewall

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Guida alla configurazione

esercizi su sicurezza delle reti maurizio pizzonia sicurezza dei sistemi informatici e delle reti

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 7 Febbraio 2005, ore 15.00

SWITCH. 100 Mb/s (UTP cat. 5E) Mb/s SWITCH. (UTP cat. 5E) 100 Mb/s. (UTP cat.

Transcript:

Uso di sniffer ed intercettazione del traffico IP Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy http://www.iac.cnr.it/ e-mail: m.bernaschi@iac.cnr.it

Raw Sockets I raw socket permettono di leggere e scrivere pacchetti ICMPv4, IGMP e ICMPv6. Con un raw socket un processo può leggere e scrivere datagrammi IP(v4) con protocolli IP non gestiti dal kernel. Con un raw socket un processo può costruire il proprio header IP usando l opzione IP HDRINCL. 2

Raw Sockets Per creare un raw socket: sockfd=socket(af_inet, SOCK_RAW, protocol); dove protocol è una delle costanti IPPROTO xxx definite in <netinet/in.h> (e.g., IPPROTO ICMP). Normalmente solo il superuser può creare un raw socket. Per definire l opzione IP HDRINCL: setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)); 3

bind può essere utilizzata su un raw socket per definire solo l indirizzo locale: non esiste il concetto di numero di porta con un raw socket. connect può essere utilizzata per definire l indirizzo remoto. 4

Raw Socket Output La scrittura avviene invocando la sendto o la sendmsg e specificando l indirizzo IP di destinazione. Se il socket è stato connesso, è possibile utilizzare write, writev, send. Se viene specificata l opzione IP HDRINCL, il buffer inviato deve iniziare con il primo byte dell header IP. La dimensione dei dati deve tener conto della dimensione dell header IP del chiamante. Il kernel imposta il campo di identificazione dell IPv4. calcola ed inserisce la checksum dell header IP. Su Linux tutti i campi dell header IP devono essere in network byte order. Se non è definita l opzione IP HDRINCL, il kernel crea l header IP 5

e imposta il campo protocollo uguale al terzo argomento della chiamata socket. Non esiste un opzione simile alla IP HDRINCL per IPv6. Quasi tutti i campi in un header IPv6 e tutti gli header per le estensioni sono impostati attraverso delle socket options o gli ancillary data. 6

Raw Socket Input Vengono applicate le seguenti regole: i pacchetti UDP e TCP non sono mai passati ad un raw socket; tutti i pacchetti IGMP vengono passati ai raw socket, dopo che il kernel ha finito di processare il pacchetto IGMP; la maggior parte dei pacchetti ICMP sono passati ai raw socket, dopo che il kernel ha finito di processare il messaggio ICMP; tutti i datagrammi IP con un campo protocollo che il kernel non riconosce sono passati ai raw socket. Su questi datagrammi il kernel si limita ad effettuare delle verifiche di alcuni campi dell header. 7

Raw Socket Input Altre regole: Se un datagramma arriva frammentato, viene riassemblato prima di essere passato al raw socket. I datagramma per un raw socket IPv4 contengono sempre l header IP. L header IPv6 ed eventuali header di estensioni non sono mai passati ad un raw socket IPv6. Se ci sono più processi con raw socket che potrebbero ricevere un datagramma in entrata, ciascuno riceve una copia. Se viene creato un raw socket con un protocollo eguale a 0 e non viene utilizzata né la bind né la connect, il raw socket riceve una copia di ogni datagramma che il kernel passa ai raw socket. 8

Il programma traceroute Indica il percorso per raggiungere un dato host. traceroute usa l ICMP ed il campo TTL nell header IP (per IPv4) o l hop limit (per IPv6): Il valore iniziale che viene raccomandato per il TTL è attualmente 64; ogni router deve decrementare di uno il valore del TTL; quando un router riceve un datagramma IP il cui TTL è 0 o 1 non inoltra il datagramma; il router scarta il datagramma ed invia al host mittente un messaggio ICMP time exceeded. traceroute sfrutta il fatto che il messaggio ICMP contiene, come IP sorgente, l indirizzo del router che ha scartato il datagramma. 9

Il programma traceroute 1. traceroute invia un datagramma IP con un TTL di 1 all host di destinazione; 2. il primo router che riceve il datagramma decrementa il TTL, scarta il datagramma, e manda indietro il pacchetto ICMP time exceeded. In questo modo viene identificato il primo router nel cammino; 3. traceroute invia quindi un datagramma con un TTL uguale a 2 e determina l indirizzo IP del secondo router; 4. la procedura continua fino a quando il datagramma non raggiunge l host di destinazione. A questo punto abbiamo un problema: l host di destinazione NON manda indietro il pacchetto ICMP time exceeded. Come possiamo 10

essere sicuri di aver raggiunto effettivamente la destinazione finale? 11

Il programma traceroute traceroute invia datagrammi UDP all host di destinazione su una porta UDP random (> 30000) in modo da rendere improbabile che ci sia un applicazione che utilizza tale porta (in genere la prima porta utilizzata è la 33434). In questo modo il modulo UDP dell host di destinazione genera un diverso messaggio di errore ICMP: port unreachable. La maggior parte delle versioni per Windows di traceroute utilizzano paccheti ICMP di tipo ECHO REQUEST invece di pacchetti UDP. 12

Il programma traceroute HEADER, POINTERS AND LENGTHS IN ICMP PACKETS IP HEADER IP Header OPTIONS ICMP HEADER IP HEADER IP Header OPTIONS UDP HEADER 20 Bytes 0-40 8 20 0-40 8 IP datagram that generated the ICMP error Notare come siano necessari due socket: un raw socket dal quale leggere tutti i messaggi ICMP ed un socket UDP sul quale inviare i pacchetti-sonda che hanno un TTL crescente. 13

Tracciamento di connessioni Il classico tracciamento basato su traceroute può non essere sufficiente. Firewall o router intermedi possono bloccare i pacchetti UDP utilizzati da traceroute. Possono essere richieste altri informazioni (ad esempio la locazione geografica di un host). Per risolvere il primo problema può essere utilizzato tcptraceroute disponibile su http://michael.toren.net/code/tcptraceroute/ che utilizza pacchetti TCP su porte impostate dall utente. 14

Tracciamento di connessioni http://www.private.org.il/ip2geo.html fornisce indicazioni su possibili tecniche per individuare la locazione geografica di un host a partire dall indirizzo IP. Informazioni sull Internet Routing Register possono essere ottenute dal Routing Access Database: http://www.radb.net che è essenzialmente un whois server. whois -h whois.radb.net 128.223.0.0/16 Un altro sito utile per operazioni di tracciamento è: http://samspade.org 15

Accesso a livello Datalink L accesso a livello datalink (i.e. accesso a livello di device driver) fornisce la possibilità: di ricevere tutti i pacchetti che viaggiano su un dato segmento di rete l interfaccia di rete deve essere posta in modalità promiscua ; di offrire, come normali applicazioni utente, servizi che altrimenti dovrebbero far parte del kernel. Ad esempio un DHCP server. 16

Accesso a livello Datalink Esistono tre approcci possibili per l accesso a livello datalink sotto UNIX/Linux: il Packet Filter (BPF) dei sistemi BSD; la Data Link Provider Interface (DLPI) del SVR4; l interfaccia SOCK PACKET di LINUX. La libreria di dominio pubblico libpcap permette di scrivere programmi indipendenti dallo specifico metodo di accesso. ftp://ftp.ee.lbl.gov/papers/bpf-usenix93.ps.z 17

BSD Packet Filter (BPF) application buffer Filter application buffer Filter process kernel IP Layer BPF DATA LINK (device driver) Network card 18

BSD Packet Filter Il datalink driver invoca il BPF prima di trasmettere il pacchetto e subito dopo che il pacchetto è stato trasmesso in modo da fornire un timestamp accurato. La potenza del BPF è nelle sue capacità di filtraggio. Ogni applicazione che utilizza il BPF può caricare il proprio filtro che viene applicato ad ogni pacchetto. BPF implementa un calcolatore virtuale (basato su registri) che applica i filtri specificati dalle applicazioni ad ogni pacchetto ricevuto. 19

BSD Packet Filter Il BPF utilizza tre tecniche per ridurre l overhead: il filtraggio BPF avviene all interno del kernel in modo da minimizzare la quantità di dati copiata dal BPF all applicazione; normalmente solo una porzione di ogni pacchetto viene passata dal BPF all applicazione (capture length); BPF invia i dati destinati all applicazione in blocchi (buffering). Normalmente il BPF NON viene utilizzato per inviare datagrammi IP. 20

BSD Packet Filter Per accedere il BPF si deve aprire uno speciale device /dev/bpf0, /dev/bpf1,... che non sia già in uso Ci sono circa una decina di comandi (ioctl) che definiscono le caratteristiche del device: caricamento del filtro, definizione del timeout di lettura, abilitazione della modalità promiscua. L I/O viene effettuato utilizzando le classiche read e write. 21

PF PACKET sotto Linux #include <sys/socket.h> #include <netpacket/packet.h> #include <net/ethernet.h> /* the L2 protocols */ packet_socket = socket(pf_packet, int socket_type, int protocol); I socket packet sono utilizzati sotto Linux per ricevere ed inviare pacchetti a livello di device driver (OSI Layer 2). Possono essere utilizzati per permettere all utente di implementare propri protocolli di comunicazione direttamente sopra il livello fisico. 22

PF PACKET sotto Linux Il tipo di socket è SOCK RAW per pacchetti raw che includono l header a livello link (indirizzi hw) o SOCK DGRAM per pacchetti senza l header di livello link. Le informazioni necessarie all header di livello link sono definite in un formato comune nella struttura sockaddr ll: /usr/include/linux/if_packet.h Quando il protocollo è impostato a htons(eth P ALL) vengono ricevuti tutti i protocolli! 23

PF PACKET sotto Linux I pacchetti SOCK RAW sono passati a/dal device driver senza nessuna modifica. Quando si trasmette un pacchetto, questo deve contenere anche l header di livello link (gli indirizzi hw). il SOCK DGRAM opera ad un livello leggermente superiore. L header di livello link è rimosso dal pacchetto prima che questo venga passato all applicazione utente. Per i pacchetti inviati attraverso un SOCK DGRAM viene costruito un header di livello link opportuno sulla base delle informazioni disponibili sull indirizzo di destinazione (in formato sockaddr ll). 24

PF PACKET sotto Linux Paragonando le caratteristiche di Linux al BPF possiamo notare alcune differenze: Non esiste a livello kernel un meccanismo di buffering dei pacchetti e solo recentemente sono state rese disponibili capacità di filtraggio (tramite l opzione SO ATTACH FILTER). Non esiste un meccanismo di filtraggio per device. Se viene specificato ETH P IP nella chiamata a socket, tutti i pacchetti IP da tutti i device (Ethernet, PPP link,...) sono passati al socket. 25