Packet Sniffing
-
Upload
majong-devjfu -
Category
Technology
-
view
2.588 -
download
5
description
Transcript of Packet Sniffing
1
PACKET SNIFFING E ALTRI STRUMENTI PER LA GESTIONE DELLA RETE
2
Analisi delle connessioni attive e delle porte
• Utilizzo dello strumento netstat
• Netstat consente di capire
– Quali connessioni TCP sono attive
– Quali porte sono usate da server che attendono connessioni
– ...
• Noi vedremo solo alcune delle opzioni di netstat. Per uno studio più approfondito si rimanda alla man page del comando
3
Comando netstat
netstat [-tuelapn]
• -t mostra connessioni TCP
• -u mostra connessioni UDP
• NOTA: se non si mette ne -t ne -u netstat mostra tutte le socket, anche quelle di tipo unix (non IP)
• -e mostra informzioni aggiuntive
• -l mostra le socket in stato “listen”
• -a mostra le socket in qualsiasi stato esse siano
• NOTA: se non si mette ne -l ne -a vengono mostrate solo le socket relative a connessioni aperte
• -p mostra il programma associato a quelle socket
• -n mostra informazioni numeriche invece che simboliche per i numeri di porta
4
Esempio nell'uso del comando netstat
$ netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:38960 localhost:ipp ESTABLISHED
tcp 1 0 localhost:42807 localhost:ipp CLOSE_WAIT
tcp 0 0 localhost:ipp localhost:38960 ESTABLISHED
$ netstat -ltu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:time *:* LISTEN
tcp 0 0 localhost:905 *:* LISTEN
tcp 0 0 *:discard *:* LISTEN
tcp 0 0 localhost:mysql *:* LISTEN
udp 0 0 *:xdmcp *:*
udp 0 0 localhost:sunrpc *:*
5
Intrpretazione dell'output
• Caso 1ProtoRecv-Q Send-Q Local Address Foreign Address Statetcp 0 0 localhost:ipp localhost:38960 ESTABLISHED
– cosa significa la coppia localhost:ipp in local address?
– cosa sinifica la coppia localhost:38960 in foreign address?
– Cosa e' lo stato ESTABLISEHED?
• Caso 2tcp 0 0 *:time *:* LISTENtcp 0 0 localhost:mysql *:* LISTEN
– Cosa sono gli * negli indirizzi IP
– Cosa cambia se metto localhost al posto di *?
• Caso 3udp 0 0 *:xdmcp *:*
– Perchè manca lo stato?
6
Netcat
Netcat (nc) è un comando che permette la lettura e la scrittura attraverso le connessioni di rete, utilizzando
TCP e UDP.
E' conosciuto come “il coltellino svizzero della rete”
• nc [-options] hostname port[s] [ports] ...
• nc -l -p port [-options]
7
Netcat – Cosa fa
Netcat può funzionare, quasi indifferentemente, come client o server di una connessione; per questo è uno strumento ottimale per la verifica del funzionamento delle connessioni di rete, e non solo.
In un certo senso è paragonabile idealmente al programma dd, con la differenza che invece di fare riferimento a dei dispositivi, si lavora con la rete a livello di trasporto TCP e UDP: il quarto nel modello OSI/ISO.
8
Netcat – La storia
• Rilasciato da Hobbit per la prima volta nel 1995
• Nonostante l'enorme popolarità non è stato mantenuto attivo dal suo autore, sono nate così nuove versioni (Ncat, GNU netcat, netcat6, OpenBSD's nc, ...)
• Ogni distribuzione GNU/Linux rispettabile mette a disposizione questo strumento
9
Netcat - Opzioni
Alcune delle opzioni principali:
-p specifica la porta locale port
-s specifica l’indirizzo locale addr
-l funziona come demone in ascolto di connessioni
sulla porta port specificata
-e consente i eseguire il comando command dopo la
connessione
-v modalità “verbose” (-vv, ancora più “verbose”)
-z scan-mode
10
Netcat - Esempio
Apertura di una porta
nc -l -p port
Connessione ad una macchina
nc hostname port
Apertura di una root shell
(da root): nc –l –p port –e /bin/sh &
11
Netcat - Esercizio
Connettiamoci ad un server web
1° Passo: Come ci connettiamo?Suggerimento: stare più attenti a lezione!
2° Passo: Cosa dobbiamo dire al server?Suggerimento: Chi ce lo può dire?
3° Passo: Come ce lo facciamo dire?Suggerimento: Meglio ascoltare prima di parlare
4° Passo: Connettiamoci e parliamo col server!
12
SSH
SSH (Secure Shell) è un protocollo che permette
di stabilire una connessione cifrata tra due
device.
Noi faremo riferimento a OpenSSH, un'implementazione opensource disponibile per diverse piattaforme (OpenBSD, Linux, Solaris...)
ssh [options] [username@]host
13
SSH – Cosa fa
Viene utilizzato per le connessioni a host remoti, garantendo la segretezza della comunicazione, inclusa l'autenticazione (Se pensate che sia ovvio vi sbagliate)
L'autenticazione si basa su un tipo di crittografia detta a chiave asimmetrica, mentre il resto della comunica-zione utilizza la più comune crittografia simmetrica
Per funzionare sono necessari due moduli:
• Il client, utilizzato dall'utente per connettersi ad una macchina remota
• il server che riceve e gestisce le connessioni (presente in tutte le distribuzioni GNU/Linux... serie!)
14
SSH – La storia
• 1995, Tatu Ylönen, ricercatore alla Helsinki University of Technology, disegnò la prima versione del protocollo (ora nota come SSH-1)
• Dicembre 1995 Ylönen fondò la SSH Communications Security, che porta avanti lo sviluppo nella direzione di software proprietario
• 1996, nasce la versione 2 conosciuta come SSH-2 e che diventerà standard solo nel 2006 (rfc 4251)
• Lo sviluppo della più conosciuta implementazione opensource viene portato avanti dal team sviluppatore di OpenBSD
15
SSH - Opzioni
Le opzioni più comuni sono:
-p per specificare la porta a cui connettersi
-D per creare un tunnel generico
-L per creare un bind tra una porta locale e un servizio remoto (ip:porta) tramite un terzo host
-R come L, ma al contrario
16
SSH - Esempio
Ipotizziamo di non avere accesso ad un determinato servizio remoto (es. chat con msn) a causa delle policy restrittive dell'uinversità.
Quello che ci serve è un account su un host (con attivo un server ssh) in grado di connettersi a tale servizio.
A quel punto possiamo creare un tunnel che indirizzi le nostre richieste all'host remoto che a sua volta le inoltrerà ai server di tale servizio.
Per fare tutto questo basta un comando:ssh -L 12345:messenger.hotmail.com:1863 user@server-ssh
Poi occorre impostare il programma di chat per connettersi usando il tunnel
17
Packet Sniffing con TCPDump
18
Packet Sniffing
• Nasce come strumento per gli amministratori di sistema per monitorare e gestire il traffico di una rete.
• Consente di raccogliere informazioni dai pacchetti in transito nella LAN.
ANCHE INFORMAZIONI RISERVATE
19
Packet Sniffing
20
Sniffer
• Gli sniffer sono gli strumenti software utilizzati per eseguire Packet Sniffing.
Tra I più noti troviamo:
• Tcpdump
• Wireshark (grafico, ma esiste la versione testuale TShark)
• Dsniff
• Snort
• Sniffit
21
Sniffer
• Uno Sniffer Ethernet è un programma in grado di “ascoltare” tutto il traffico che attraversa un dispositivo di rete piuttosto che intercettare solo quello indirizzato ad essa.
• Per consentire questa funzionalità il dispositivo di rete deve essere impostato in modalità promiscua.
22
Sniffer
• I Packet Sniffer catturano i dati in transito in forma “binaria” (0101011…) e traducono queste informazioni in un formato leggibile.
• Una ulteriore caratteristica è quella di fornire “protocol analisys” → i bit vengono interpretati in base ai protocolli utilizzati (se riconosciuti)
es. Nell'header di un pacchetto IP saranno presenti 32+32 bit da interpretare come indirizzi IP
23
HUB Vs. SWITCH
• Per “sniffare” pacchetti occorre, fondamentalmente far funzionare lo Sniffer su una rete LAN connessa con un HUB e non con uno SWITCH.
• In una rete “hubbed” di n pc (A, B, C, …), se F vuole comunicare con C, i dati passano attraverso l’HUB.
• Gli elaboratori con i dispositivi di rete impostati in modalità promiscua possono raccogliere tutte le informazioni di una rete “hubbed”.
• In una rete switched le cose cambiano!
24
HUB
L’HUB non sa dove si trova C e perciò ritrasmette ciò che ha inviato F a tutti i pc. Quelli non interessati in questa comunicazione ignoreranno i pacchetti ricevuti.
25
SWITCH
• Uno SWITCH “conosce” sia quali sono i pc connessi, sia dove sono.
Ciò rende più impegnativa l’attività di Packet Sniffing…
...ma non impossibile!!
26
Tcpdump
tcpdump [ -adeflnNOpqRStuvxX ] [ -c count ]
[ -C file_size ] [ -F file ]
[ -i interface ] [ -m module ] [ -r file ]
[ -s snaplen ] [ -T type ] [ -w file ]
[ -E algo:secret ] [ expression ]
• Tcpdump stampa a video l’header dei pacchetti in transito su una LAN che corrispondono alle caratteristiche indicate in expression.
• Quando Tcpdump termina la sua esecuzione fornisce un report riguardante il numero di pacchetti ricevuti ed il numero di pacchetti scartati dal kernel.
27
Tcpdump - Opzioni
Le opzioni principali sono:
-c count Termina dopo aver ricevuto count pacchetti
-e Visualizza gli header a livello DATA LINK
-E Utilizza algo:secret per decifrare i pacchetti IPsec
-i Rimane in ascolto sull’interfaccia di rete indicata
-n Non converte gli indirizzi (IP, di porta…) in nomi
-r file Legge i pacchetti dal file file
-X Visualizza i pacchetti in formato hex e ascii
28
Tcpdump - Espressioni
• Con le expression si definiscono i criteri qualitativi coi quali scegliere i pacchetti da visualizzare.
• Le expression consistono in una o più primitive precedute da “qualificatori”.
• I qualificatori sono: type, dir e proto.
29
Tcpdump - Espresioni
• Type: host, net e port
Es. ‘host 155.185.54.156’, ‘port 22’, ecc.
• Dir: src, dst, src or dst
Es. ‘src 155.185.54.156’
• Proto: ether, fddi, tr, ip, ip6, arp, rarp, decnet, tcp and udp
Es. ‘tcp port 21‘, ‘arp net 155.185.54’
30
Esperienza
• Realizzare la rete nella figura di riferimento
• analizzare il traffico tra node1 e node2 utilizzando node3
• Lo switch deve funzionare in modalità hub
• Analisi del traffico:
– Ping
– Sessioni ssh
– Traffico generato con netcat