COSA E’ UNA RETE LOCALE?
Una rete locale
(Local Area Network, LAN) è un insieme di macchine, di computer, interllacciate
entro uno spazio fortemente delimitato sia dal punto di vista fisico che
comunicativo: il numero delle macchine è (quasi sempre) conosciuto ed esse
possono comunicare entro canali predefiniti, generalmente rappresentati da
connessioni ad alta velocità.
Ethernet è probabilmente il protocollo più conosciuto e utilizzato per gestire
una LAN.
IL PROTOCOLLO ETHERNET:
Nel 1976 Bob
Metcalfe e David Boggs, del Palo Alto Research Center (Xerox) presentarono alla
comunità informatica un documento intitolato: 'Ethernet: distributed packet
switching for local computer networks'.
L'idea sviluppata dai due ricercatori era destinata a rivoluzionare l'informatica
commerciale; prima dell'introduzione di ethernet, le reti, soprattutto quelle
più sviluppate erano tutte dipendenti dai mainframe di rete (computer
specializzati che suddividevano e instradavano le connessioni) e prima ancora
si utilizzava il metodo del time sharing in cui il mainframe addirittura
svolgeva anche funzioni di calcolo per il sistema: più persone potevano
accedere direttamente alle risorse attraverso dei limitati terminali.
Il protocollo ethernet, invece, è stato sviluppato sul concetto di condivisione:
tutte le macchine di una rete locale condividono la stessa connessione, lo
stesso cavo, e l'hardware che implementa il protocollo ethernet è costruito in
modo da filtrare e ignorare tutto il traffico che non appartiene alla LAN. Questo
è possibile perché ogni hardware ethernet ignora tutti i frame il cui indirizzo
MAC del destinatario non corrisponde al proprio (o ai propri), impedendo alla
workstation di entrarvi.
Uno sniffer può eliminare questo filtro e portare così l'hardware ethernet in 'promiscuous
mode', permettendo alla macchina 'A' di 'vedere' tutto il traffico che
intercorre tra 'B' e 'C', sempre che condividano lo stesso cavo/segmento di
rete.
COS'E' UN PACCHETTO?
Tutto ciò che è
trasferito e lasciato circolare in una rete è suddiviso e 'incapsulato' in
unità ben definite chiamate 'pacchetti'; sarà necessaria qualche decina di
pacchetti per trasferire questo documento al vostro computer, ad esempio. Ogni
pacchetto viene etichettato con un indirizzo IP e/o un indirizzo MAC (di cui
discuteremo più avanti), che specifica la sua destinazione, e ad esso sono
associati altri parametri (header) che serviranno ad instradare e
'riassemblare' i pacchetti, operazione compiuta dalla macchina del
destinatario.
Poiché tutto il traffico di una rete deve essere ridotto in pacchetti lo
sniffer non deve far altro che raccogliere tale traffico e analizzarlo sia
nella sua forma frammentaria sia nella sua forma riassemblata, alla ricerca
delle informazioni cui si mira.
COSA SIGNIFICA “PROMISCUOUS MODE” ?
Il termine
promiscuous mode si riferisce alla modalità di configurazione dell''ethernet
adapter' in cui è permesso a tutte le macchine l'ascolto di tutto il traffico
di rete, non solo quello proprio.
Un ethernet adapter, o ethernet card, è l'hardware che permette l'accesso ad
una rete tramite questo protocollo; in altre parole, per utilizzare un computer
connesso ad una rete locale come base per uno sniffer, sarà necessario dotarsi
di un software particolare (un promiscuous driver per ethernet card, ad
esempio) che permetta la configurazione in promiscuous mode.
Settare un adattatore in questa
modalità è inutile a meno che l'hacker non abbia un programma di setup per
manipolare i frame ricevuti.
I programmi di sniffing lasciano
l'adattatore in modalità promiscua quando terminano. Questo causa problemi
poiché il traffico verrà rigettato nel
software anziché nell' hardware.
Uno sniffer, dunque, non è altro che un software (o un hardware) che ascolta e
non ignora i pacchetti che sono inviati lungo le connessioni, archiviando
poi le informazioni di passaggio su supporti come dischi rigidi o altro (sulla
base del volume di traffico che s’intende monitorare si potrà optare per la
propria RAM, veloce ma poco capiente, oppure supporti che concedano più spazio,
come l'HD appunto, purtroppo molto più lenti ma che permettono un'analisi dei
dati da farsi a posteriori con la dovuta calma).
MAC ADDRESS ED INDIRIZZI IP:
Poiché molte
macchine possono condividere una singola connessione ethernet, ognuna di esse
deve possedere un identificatore (ricordate che, in realtà, è la scheda di
rete, l'hardware, a possedere un indirizzo, non la macchina in sé); questo non
succede quando comunichiamo con una connessione dial-up utilizzando il nostro
modem casalingo, perché si presuppone che tutti i dati che inviamo siano
destinati all'entità' che risiede all'altro capo della linea (in genere il
nostro Internet Service Provider, che ci assegnerà un indirizzo IP dinamico).
Tuttavia, se comunichiamo attraverso una rete ethernet dobbiamo specificare
esattamente a quali macchine andranno consegnati i pacchetti inviati, anche se
la rete fosse composta solamente da due computer: ricorderete che il protocollo
ethernet fu sviluppato per permettere a migliaia di macchine di dialogare fra
loro.
Ciò è possibile 'inserendo' un numero esadecimale (cioè con notazione a 16
cifre; il MAC address è composto, invece, da 12 digit) in ogni destinazione
ethernet;
questo numero, in apparenza astruso è l'indirizzo MAC.
Eccone un esempio: 00-40-05-A5-4F-9D
Il MAC address è composto da 48 bit (8bit = 1byte ; il bit è l'unita' di misura
fondamentale dell'informatica).
Questi 48 bit verranno divisi in due metà: 24 bit identificano il nome del
produttore della ethernet card, i rimanenti 22 bit identificano il numero di
serie UNICO assegnato alla scheda dallo stesso produttore: in questo modo
l'indirizzo MAC di due ethernet adapter non sarà mai uguale; questo serial
number è chiamato OUI (Organizationally Unique Identifier) –e gli ultimi 2 bit?
Il protocollo ethernet ci permette anche di comunicare con macchine che non
risiedono sulla nostra stessa rete ma sono interllacciate alla nostra tramite
il protocollo TCP/IP (Transport Control Protocol over Internet Protocol, in
realtà è un'intera famiglia di protocolli): tuttavia non è possibile inviare e
ricevere i dati nella loro forma originale allo stesso modo in cui non è
possibile inviare per posta (snail mail) una lettera senza averla imbustata e
dotata di francobollo e indirizzo del destinatario.
L'invio dei dati e la loro gestione in rete è gestita dai diversi protocolli,
dall’ethernet, così dovremo trattare i nostri dati in modo che i protocolli
possano 'capire' cosa farne.
Il compito dello sniffer non sarà solo quello di registrare e archiviare dati ma
si potrà istruirlo a riconoscere e suddividere i vari header (intestazioni) dei
pacchetti per tracciare e controllare solo i pacchetti che soddisfino le più
svariate e complesse regole (pattern) che possano interessare chi controlla lo
sniffer.
Vediamo cosa succede con una breve spiegazione:
'A' (alice) possiede un indirizzo IP: 10.0.0.23 (tutti i pacchetti inviati
da 'A' saranno marcati con quest’indirizzo)
'B' (barbara) possiede invece l'indirizzo IP: 192.168.100.54
Per comunicare con 'Barbara', che si trova in una rete diversa, 'Alice' deve
creare un pacchetto IP che abbia circa questa forma: [IP packet=(10.0.0.23
===> 192.168.100.54)]
Questo compito è svolto dalle applicazioni (dai software) usate da alice per
spedire i dati lungo la rete e consiste in un’operazione d'incapsulazione
successiva dei dati in un pacchetto che all''esterno' presenta i suoi dati TCP,
poi quelli IP. Poiché, generalmente, i dati passano da reti ethernet, al
pacchetto ora descritto saranno aggiunti altri tre strati: il primo è
l'identificativo dell'ethertype (comunica all'applicazione TCP/IP della
destinazione di processare i dati), all'esterno di quest'ultimo sarà visibile
il MAC address sorgente e infine quello del destinatario (se il destinatario è
inserito in una LAN)
-----------------------
* MAC add. destinatario
** MAC add. sorgente
*** ethertype
==================
# IP info
## TCP info
................................
# DATI
................................
==================
*CRC
-----------------------
Solo allora Alice
invierà il pacchetto a Barbara ed esso attraverserà il primo router sulla via
per la sua destinazione
finale; ogni router che il pacchetto incontrerà, leggendo la destinazione IP
deciderà il corretto cammino dei dati verso barbara.
Dobbiamo però tener conto di alcuni fattori:
alice conosce solamente l'indirizzo IP di barbara e il percorso che farà il
pacchetto fino al suo primo router (locale);
alice non sa nulla della struttura di internet ne’del percorso che il pacchetto
compirà dopo essere stato processato dal suo router.
Tutti i router, tranne quello che gestisce l'indirizzo destinatario, possono
leggere gli indirizzi ethernet ma li ignorano e instradano nuovamente il
pacchetto.
Lo sniffer forza questa regola e copia il pacchetto per archiviarlo sul suo
supporto di preferenza.
Ricordiamo che, parlando di sniffer, non ci riferiamo a strumenti che
registrano l'attività che compiamo sulla tastiera del computer o ciò che
avviene sul nostro schermo. Quest'attività, compiuta da programmi definiti key
logger, equivale a leggere ciò che viene battuto sulla tastiera sopra le
spalle di chi scrive. Essa potrà rivelare ugualmente, forse con minor dispendio
di risorse, password o altri dati sensibili ma non sarà mai in grado di
osservare il traffico che intercorre tra due terminali o su un intera rete di
macchine. Quest'operazione, e la susseguente analisi dei dati raccolti, viene
fatta, per l'appunto, attraverso gli sniffer.
Si.
Primo:si può nascondere il proprio indirizzo MAC.
Si ricordi che l'indirizzo di MAC è parte dei dati del
frame. Perciò quando si spedisce un
frame di Ethernet sul filo,si possono
ricoprire i contenuti nel frame.
Secondo:alcuni adattatori permettono la
riconfigurazione in runtime l'indirizzo di MAC. Ad esempio, delle schede
permettono la riconfigurazione dell'indirizzo attraverso il pannello di
controllo di WINDOWS.
Terzo:Si può ribruciare
(esempio: la riprogrammazione dell'EEPROM) l'indirizzo nella scheda.
Bisogna avere un program/hardware che conosce le specifiche del chipset della
scheda. Questo cambia la scheda fornendo un nuovo indirizzo MAC.