Packet Sniffing

30
1 PACKET SNIFFING E ALTRI STRUMENTI PER LA GESTIONE DELLA RETE

description

 

Transcript of Packet Sniffing

Page 1: Packet Sniffing

1

PACKET SNIFFING E ALTRI STRUMENTI PER LA GESTIONE DELLA RETE

Page 2: Packet Sniffing

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

Page 3: Packet Sniffing

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

Page 4: Packet Sniffing

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 *:*

Page 5: Packet Sniffing

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?

Page 6: Packet Sniffing

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]

Page 7: Packet Sniffing

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.

Page 8: Packet Sniffing

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

Page 9: Packet Sniffing

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

Page 10: Packet Sniffing

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 &

Page 11: Packet Sniffing

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!

Page 12: Packet Sniffing

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

Page 13: Packet Sniffing

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!)

Page 14: Packet Sniffing

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

Page 15: Packet Sniffing

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

Page 16: Packet Sniffing

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

Page 17: Packet Sniffing

17

Packet Sniffing con TCPDump

Page 18: Packet Sniffing

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

Page 19: Packet Sniffing

19

Packet Sniffing

Page 20: 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

Page 21: Packet Sniffing

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.

Page 22: Packet Sniffing

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

Page 23: Packet Sniffing

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!

Page 24: Packet Sniffing

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.

Page 25: Packet Sniffing

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!!

Page 26: Packet Sniffing

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.

Page 27: Packet Sniffing

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

Page 28: Packet Sniffing

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.

Page 29: Packet Sniffing

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’

Page 30: Packet Sniffing

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