GLI SNIFFER:
- cos'e' uno sniffer
- cos'e' una rete locale
- protocollo 'Ethernet'
- cos'e' un pacchetto
- cosa significa 'promiscuous mode'
- MAC address: indirizzi IP e physical address
- differenze tra uno sniffer e un 'key logger'
- possibile collocazione di uno sniffer
- livelli di rischio
- su quali piattaforme puo' essere installato uno sniffer...
- ... e dove lo trovo
- come ti frego lo sniffer!
- come individuo uno sniffer
- conclusioni
- note
- credits & NO copyright
- cos'e' uno sniffer?
Uno sniffer e' un qualsiasi strumento, sia esso un software o un apparato hardware,
che raccoglie le informazioni che viaggiano lungo una rete (network). Questa
rete puo' utilizzare un protocollo di comunicazione qualunque: Ethernet, TCP/IP
(Internet si basa principalmente su questo protocollo), IPX o altri.
Generalmente si utilizzano software sniffer e il termine in questione si riferisce
a: 'The Sniffer Network Analyzer', il nome del primo programma di questo tipo,
sviluppato dalla Network Associates, Inc. e protetto da trademark. Tuttavia
la parola 'sniffer' e' ora di uso comune come 'PC' o 'kleenex' e con essa ci
riferiamo a tutti i programmi che implementano quelle stesse funzioni.
Si possono dividere i vari tipi di sniffer in due grandi branche: i prodotti
commerciali che sono rivolti agli amministratori di rete e alla manutenzione
interna delle reti stesse e i prodotti sviluppati nell'underground informatico,
spesso dotati di un'incredibile varieta' di funzioni ulteriori rispetto ai 'tool'
commerciali;
entrambi possono essere utilizzati come mezzo per accedere ad una rete.
Se vogliamo fare una distinzione che non si basi solo sul prezzo del prodotto
o sulla sua provenienza, possiamo considerare i software precedenti come un
tutt'uno e rapportarli ad applicativi come gli 'analizzatori di rete' (network
analyzer) che danno la possibilita' di fare qualche operazione in piu' rispetto
al semplice ascolto e archiviazione dei dati di passaggio su una rete, come
compilare statistiche sul traffico e sulla composizione dei pacchetti.
Le funzioni tipiche degli sniffer non differiscono di molto e possono essere
riassunte sinteticamente in:
* conversione e filtraggio dei dati e dei pacchetti in una forma leggibile dall'utente
* analisi dei difetti di rete, ad es. perche' il computer 'a' non riesce a dialogare
con 'b'
* analisi di qualita' e portata della rete (performance analisys), ad es.per
scoprire 'colli di bottiglia' lungo la rete
* setacciamento automatizzato di password e nomi di utenti (in chiaro o, piu'
spesso cifrati) per successiva analisi
* creazione di 'log', lunghi elenchi che contengono la traccia, in questo caso,
del traffico sulla rete
* scoperta di intrusioni
in rete attraverso l'analisi dei log del traffico
Pensate ad una rete come ad un paesaggio dinamico, ad esempio un fiume: in esso
i pacchetti scorrono liberamente lungo il percorso che offre minor resistenza.
Uno sniffer e' l'entita' che immerge le mani nel fiume e filtra i pacchetti
tra le sue dita (facendone una copia senza alterare i pacchetti).
- cos'e' una rete locale?
Una rete locale (Local Area Network, LAN) e' un insieme di macchine, di computer,
interallacciate entro uno spazio fortemente delimitato sia dal punto di vista
fisico che comunicativo: il numero delle macchine e' (quasi sempre) conosciuto
ed esse possono comunicare entro canali predefiniti, generalmente rappresentati
da connessioni ad alta velocita'.
Ethernet e' probabilmente il protocollo piu' 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 comunita' informatica un documento intitolato: 'Ethernet: distributed
packet switching for local computer networks'.
L'idea sviluppata dai due ricercatori era destinata a rivoluzionare l'infomatica
commerciale; prima dell'introduzione di ethernet, le reti, soprattutto quelle
piu' 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: piu' persone poteva accedere
direttamente alle risorse attraverso dei limitati terminali.
Il protocollo ethernet, invece, e' stato sviluppato sul concetto di condivisione:
tutte le macchine di una rete locale condividono la stessa connessione, lo stesso
cavo, e l'harware che implementa il protocollo ethernet e' costruito in modo
da filtrare e ignorare tutto il traffico che non appartiene alla LAN. Questo
e' possibile perche' ogni hardware ethernet ignora tutti i frame il cui indirizzo
MAC del destinatario non corrisponde al proprio (o ai
propri), impedendo alla workstation di accervi.
Uno sniffer puo' eliminare questo filtro e portare cosi' l'harware 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.
Di seguito saranno esposti i concetti di 'pacchetto', 'promiscuous
mode' e 'MAC address'.
- cos'e' un pacchetto?
Tutto cio' che viene trasferito e lasciato circolare in una rete e' suddiviso
e 'incapsulato' in unita' ben definite chiamate 'pacchetti'; sara' 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 piu' avanti), che specifica la sua destinazione, e ad
esso sono associati altri parametri (header) che serviranno a instradare e 'riassemblare'
i pacchetti, operazione compiuta dalla macchina del destinatario.
Poiche' 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 che nella sua forma riassemblata, alla ricerca delle informazione
cui si mira.
- cosa significa 'promiscuous mode'?
Il termine promiscuous mode si riferisce alla modalita' di configurazione dell''ethernet
adapter' in cui e' permesso a tutte le macchine l'ascolto di tutto il traffico
di rete, non solo quello proprio.
Un ethernet adapter, o ethernet card, e' l'hardware che permette l'accesso ad
una rete tramite questo protocollo; in altre parole, per poter utilizzare un
computer connesso ad una rete locale come base per uno sniffer, sara' necessario
dotarsi di un software particolare (un promiscuous driver per ethernet card,
ad esempio) che permetta la configurazione in promiscuous mode.
Uno sniffer, dunque, non e' altro che un software (o un hardware) che ascolta
e non ignora i pacchetti che vengono inviati lungo le connessioni, archiviando
poi le informazioni di passaggio su supporti come dischi rigidi o altro (sulla
base del volume di traffico che si intende monitorare si potra' optare per la
propria RAM, veloce ma poco capiente, oppure supporti che concedano piu' spazio,
come l'HD appunto, purtroppo molto piu' lenti ma che permettono un'analisi dei
dati da farsi a posteriori con la dovuta calma).
- MAC address e indirizzi IP:
Poiche' molte macchine possono condividere una singola connessione ethernet,
ognuna di esse deve possedere un identificatore (ricordate che, in realta',
e' la scheda di rete, l'hardware, a possedere un indirizzo, non la macchina
in se'); questo non succede quando comunichiamo con una connessione dial-up
utilizzando il nostro modem casalingo, perche' si presuppone che tutti i dati
che inviamo siano destinati all'entita' che risiede all'altro capo della linea
(in genere il nostro Internet Service Provider, che ci assegnera' un indirizzo
IP dinamico). Tuttavia, se comunichiamo attraverso una rete ethernet dobbiamo
specificare esattamente a quali macchina 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.
Cio' e' possibile 'inserendo' un numero esadecimale (cioe' con notazione a 16
cifre; il MAC address e' composto, invece, da 12 digit) in ogni destinazione
ethernet ;
questo numero, in apparenza astruso e' l'indirizzo MAC.
Eccone un esempio: 00-40-05-A5-4F-9D
Il MAC address e' composto da 48 bit (8bit = 1byte ;
il bit e' l'unita' di misura fondamentale dell'informatica).
Questi 48 bit verranno divisi in due meta': 24 bit identificano il nome del
produttore della ethernet card, i riamanenti 22 bit identificano il nemero di
serie UNICO assegnato alla scheda dallo stesso produttore: in questo modo l'indirizzo
MAC di due ethernet adapter non sara' mai uguale; questo serial number e' 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 interallacciate alla nostra tramite
il protocollo TCP/IP
(Transport Control Protocol over Internet Protocol, in realta' e' un'intera
famiglia di protocolli): tuttavia non e' possibile inviare e ricevere i dati
nella loro forma originale allo stesso modo in cui non e' 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 e' gestita dai diversi protocolli,
a partire dall'ethernet, cosi' dovremo trattare i nostri dati in modo che i
protocolli possano 'capire' cosa farne.
Il compito dello sniffer non sara' solo quello di registrare e archiviare dati
ma si potra' istruirlo a riconoscere e suddividere i vari header (intestazioni)
dei pacchetti per tracciare e controllare solo i pacchetti che soddisfino le
piu' 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 questo 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 piu' o meno questa forma: [IP packet=(10.0.0.23
===> 192.168.100.54)]
Questo compito e' svolto dalle applicazioni (dai software) usate da alice per
spedire i dati lungo la rete e consiste in una operazione d'incapsulazione successiva
dei dati in un pacchetto che all''esterno' presenta i suoi dati TCP, poi quelli
IP. Poiche', generalmente, i dati passano da reti ethernet, al pacchetto ora
descritto saranno aggiunti altri tre strati: il primo e' l'identificativo dell'ethertype
(comunica all'applicazione TCP/IP della destinazione di processare i dati),
all'esterno di quest'ultimo sara' visibile il MAC address sorgente e infine
quello del destinatario (se il destinatario e' inserito in una LAN)
-----------------------
* MAC add. destinatario
** MAC add. sorgente
*** ethertype
==================
# IP info
## TCP info
................................
# DATI
................................
==================
* CRC
-----------------------
Solo allora alice inviera' il pacchetto a barbara ed esso attraversera' il primo
router sulla via per la sua destinazione finale; ogni
router che il pacchetto incontrera', leggendo la destinazione IP decidera' il
corretto cammino dei dati verso barbara.
Dobbiamo pero' tener conto di alcuni fattori:
alice conosce solamente l'indirizzo IP di barbara e il percorso che fara' il
pacchetto fino al suo primo router (locale);
alice non sa nulla della struttura di internet ne' del percorso che il pacchetto
compira' 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'attivita' che compiamo sulla tastiera del computer
o cio' che avviene sul nostro schermo. Quest'attivita', compiuta da programmi
definiti key logger, equivale a leggere cio' che viene battuto sulla
tastiera sopra le spalle di chi scrive. Essa potra' rivelare ugualmente, forse
con minor dispendio di risorse, password o altri dati sensibili ma non sara'
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.
Vediamo, dunque, dove e' piu' probabile trovare uno sniffer all'interno di una
LAN e quali gradi di rischio corre la rete stessa:
- possibile collocazione di uno sniffer:
In realta' uno sniffer potrebbe essere installato ovunque sulla rete, tuttavia
esistono dei punti strategici che, permettendo la raccolta di determinate informazioni,
sono favoriti rispetto ad altri. Uno di questi e' un qualsiasi punto adiacente
ad una macchina in cui si puo' presumere passino notevoli quantita' di password;
ad esempio un gateway di rete oppure un nodo che ospiti traffico in entrata
e in uscita verso l'esterno della rete stessa.
Se la LAN e' connessa con l'esterno si puo presumere che lo sniffer cerchera'
di controllare e copiare le procedure d'utenticazione con le altre reti, cosa
che permetterebbe di aumentare in via esponenziale le possibilita' invasive
di chi gestisce lo sniffer.
Come regola generale, terremo conto del fatto che lo sniffer sara' installato,
sia esso hardware o software, all'interno dello stesso blocco di rete (net
of trust) del network che si e' inteso controllare.
Ovviamente esistono numerose eccezioni che rendono spesso difficile individuare
i punti esatti in cui cercare uno sniffer all'interno della rete. Questo e'
ancor piu' vero per alcuni tool, decisamente costosi e non alla portata di tutti
(chi ha orecchie per intendere, intenda), sviluppati per operare analisi di
traffico al livello dello stesso cavo di rete (cable sniffer); possono cosi'
essere impiantati direttamente sulla connessione fisica del network.
Gli sniffer (software) sono molto meno subdoli di quel che si pensi, per fortuna,
e la loro locazione piu' probabile, in una LAN, e', come abbiamo visto, sui
server che la gestiscono per intero o nei nodi intermedi ma quel che piu' ci
interessa e' porre l'accento sulla possibilita' che questi prodotti offrono,
se usati con costanza e cognizione, di ottenere risultati che vanno dall'aquisizione
di password alla raccolta di dati sensibili, solo per citare alcuni degli obiettivi
piu' nefasti.
Sicuramente rappresentano un pericolo per la nostra privacy, intesa nel suo
senso piu' lato, o possono portare, ad esempio, agli stessi risultati di intercettazioni
telefoniche e ambientali, a causa, spesso, dell'eccessiva sicurezza con cui
si pensa di poter disporre del mezzo informatico.
Torneremo piu' avanti su questi punti; limitiamoci, per ora, ad analizzare i
rischi dal punto di vista della sicurezza della rete e della sua connessione.
- livelli di rischio:
gli sniffer rappresentano un rischio elevato per una rete o per il pc dell'utente
medio. La semplice esistenza di uno sniffer in rete rappresenta una falla e
una minaccia alla sicurezza e alla riservatezza delle comunicazioni all'interno
della rete stessa.
Se la LAN che utilizzate e' sottoposta al 'controllo' di uno sniffer ci sono
due possibilita': un intruso, dall'esterno, e' riuscito ad entrare all'interno
della rete e installare lo sniffer, oppure un utente o il gestore della rete
stessa sta' combinando qualcosa che potrebbe andare ben oltre la manutenzione
e il monitoraggio delle connessioni. In ogni caso la vostra privacy, o peggio
la sicurezza stessa di tutte le comunicazioni, e' compromessa.
Prendiamo come esempio la situazione che potrebbe interessare l'utente medio
durante l'utilizzo delle reti universitarie:
se le connessioni utilizzate per accedere a internet o le connessioni, poniamo,
dal pc al server dell'aula informatica, abitualmente usata dagli studenti, e'
monitorata da uno sniffer, qualsiasi dato sensibile in passaggio sulla LAN controllata e' a rischio d'intercettazione e successiva archiviazione (e magari utilizzo).
In base alla quantita' di traffico prodotto e alla quantita' di traffico raccolta
dallo sniffer (abbiamo visto come cio' dipenda dalle scelte di chi installa
lo sniffer e in base alla 'memoria' disponibile) possiamo stabilire che i dati
maggiormente a rischio sono proprio le password personali utilizzate per accedere
ai piu' svariati servizi di rete (login utente, accesso al proprio spazio su
disco) o servizi internet (la vostra mail-box!), poiche' la richiesta d'accesso
e, quindi, di invio della password rientra nei primi pacchetti che vengono inviati
per ogni tentativo di connessione al servizio prescelto dall'utente ed e' il
primo dato che viene filtrato dallo sniffer.
Generalmente, poi, i servizi in rete o web utilizzano protocolli d'utenticazione
del tutto in chiaro (non cifrati).
Dal punto di vista dell'analista di sicurezza lo sniffing e' un attacco di secondo
livello. L'intruso si e' gia' introdotto nella rete e ora cerca di compromettere
maggiormente la sicurezza del sistema.
Comunque, cio' che puo' essere raccolto dallo sniffer, non e' rappresentato
solamente dagli elenchi degli utenti o le password d'accesso ai servizi ma puo'
contenere dati che spaziano dal numero della (onnipresente) carta di credito
ad altri dati finanziari, fino al testo del messaggio spedito via e-mail.
Come si diceva prima,pero', e' improbabile che uno sniffer sia dotato di supporti
che gli permettano di catturare tutto il traffico in passaggio su un dato network;
in piu' all'aumentare del traffico in una rete aumentano anche i pacchetti che
saranno persi: dai rapporti tecnici relativi agli sniffer e' emerso che, in
network dotati di connessioni ad alta velocita' e con volumi di traffico elevati,
una parte considerevole dei dati sfugge alla cattura dello sniffer.
D'altro canto cio' non significa che una rete piu' grande fornisca, di per se',
una maggiore sicurezza ai suoi utenti.
- sistemi operativi e sniffer:
Oramai gli sniffer possono essere installati ed eseguiti su qualsiasi piattaforma,
ma, anche se non fosse cosi', sarebbero comunque una minaccia: ricordate che
gli sniffer agiscono e catturano pacchetti di dati, non interagiscono direttamente
con la macchina e possono prescindere dal sistema operativo.
Potrete trovare vari tipi di sniffer per ogni piattaforma; ecco alcuni di questi
programmi e i relativi link:
- per windows (aka Findus ... )
* Netwok Associates
Sniffer per DOS
* The Gobbler and Beholder
* Klos PacketView
* tcpdump (in origine
per Unix)
* win NT server - questa distribuzione di NT e' fornita di un programma chiamato
'Network Monitor', lo trovate nel folder 'Administrative Tools'
* BlackICE Pro (nasce come tool anti-intrusione
ma puo' essere usato come sniffer -non promiscuo- dei pacchetti in entrata e
uscita dalla macchina in cui e' installato
* CiAll
* EtherPeek
* Intellimax LanExplorer
* Tritocom LANdecoder32
* SpyNet/PeepNet
* Analyzer
- per Macintosh
* EtherPeek
anche per findus
- per Unix/Linux
generalmente vengono utilizzate le libpcap
e/o le BPF (Berkeley Packet Filters)
* tcpdump
* sniffit
* snort (sniffer
e logger con estese capacita' di filtraggio)
* karpski
* SuperSniffer v.1.3
* esniff
per Sun OS
* exdump
* trinux (una distribuzione Linux 'floppy
bootable' che contiene numerosi tool di sicurezza tra cui vari sniffer)
Eventualmente visitate anche il sito di packet.storm
dove troverete sicuramente altri sniffer e tool simili.
- Come posso impedire che qualcuno monitori
i miei dati con uno sniffer?
Non ci sono molte soluzioni efficaci a questo problema, soprattutto se la maggior
parte del vostro traffico e' in passaggio su Internet. Mentre potete configurare
la LAN in modo che l'attivita' di sniffing sia menomata (ad esempio sostituendo
gli hub con degli switch, tanto per cominciare), potrete adottare, in via generale,
delle precauzioni estremamenti efficaci che comportano l'uso della crittografia
nelle vostre comunicazioni.
E' sempre buona regola non dimenticare mai, prima di utilizzare tali strumenti
crittografici, che l'utilizzo semplicistico della crittografia porta sempre
ad una maggiore vulnerabilita' delle comunicazioni poiche' una non corretta
installazione o configurazione dello specifico tool potrebbe non riportare errori
visibili nella fase di invio dei dati ma la comunicazione rimarrebbe in chiaro
anche per l'eventuale sniffer.
Inoltre si dimentica spesso che i dati non nascono cifrati ma da vengono trasformati
da dati in chiaro in dati cifrati: sarebbe stupido lasciare i dati 'sorgente'
alla merce' di tutti...
E' anche il caso di ricordare che la crittografia non incide sul potere dello
sniffer di intercettare i dati in transito ma impedisce a colui che analizzera'
i dati archiviati di poterli leggere come accade con dati inviati in chiaro.
Da ultimo, e' necessario fare riferimento alla distinzione tra 'header' del
pacchetto e dati contenuti nel pacchetto stesso: se lo strumento crittografico
da noi utilizzato (ad es. PGP) cifra solamente i dati che con il pacchetto vengono
trasportati, il gestore dello sniffer potra' comunque conoscere il contenuto
degli header e ricavare da essi informazioni come provenienza e destinazione
del pacchetto, e quant'altro gli header possano rivelare.
Esistono ovviamente prodotti che cifrano tutto il pacchetto, header compresi.
Ecco alcuni esempi di strumenti che usano la crittografia:
* SSL (Secure Sockets Layer) , utilizzato da numerosi browser come IExplorer
e Netscape Navigator;
non fornisce una sicurezza di alto livello, soprattutto se vengono utilizzati
algoritmi con 'chiavi' troppo corte
Il miglior prodotto in assoluto e': Apache
SSL
* PGP e S/MIME, sono prodotti che permettono la cifrazione delle e-mail: il
primo, se utilizzato e configurato nel modo corretto, e' di gran lunga il miglior
prodotto che possiate utilizzare per proteggere la privacy della vostra posta
[pgpi.org]; il secondo e' un built-in di numerosi
client di posta elettronica di Netscape e Microsoft
* ssh (Secure Shell), e' il 'de facto' standard per il login a macchine Unix
(quindi anche Linux) da internet (in remoto). Sostituite immediatamente telnet
con ssh
* VPNs (Virtual Private Networks), forniscono comunicazioni cifrate attraverso
Internet; sono facilmente vulnerabili ai RAT (Remote Access Trojan) con sniffing
plug-in; sono tool che vengono installati a monte della connessione VPN e permettono
il monitoraggio delle comunicazione prima che vengano cifrate.
alcuni strumenti che utilizzano la crittografia forniscono anche forme di autenticazione
(invio delle password) sicure ed esistono anche numerose altre soluzioni che
impediscono la lettura della password in chiaro:
* SMB/CIFS, in ambiente windows/samba (samba v2 o posteriore, winNT con service
pack 3 o posteriore)
* Kerberos v5, sia per win2000 che per Unix
* Stanford SRP (Secure Remote Password), rafforza la sicurezza (quasi nulla)
di telnet e ftp (per windows e per unix)
- come individuare uno sniffer:
Si distingue tra sniffer detti 'stand-alone' e tutti gli altri sniffer;
il primo tipo si sniffer non trasmette nulla, non genera traffico, e' passivo
ed e' teoricamente impossibile da individuare; il secondo tipo, invece, non
ha solo comportamenti passivi ma genera del traffico ben identificabile e sulla
base di dei dati e delle richieste (ad es DNS reverse lookup) inviate e' possibile
localizzarlo.
In effetti, cio' che si vuole localizzare e' proprio lo sniffer non-standalone.
Diamo uno sguardo generali ai metodi di individuazione:
* metodo 'ping': molti sniffer vengono eseguiti su macchine che operano
in rete secondo la gerarchia TCP/IP; in breve, se inviamo una richiesta a queste
macchine esse ci forniranno un qulche tipo di risposta. Il trucco, in questo
caso, e' quello di inviare una richiesta alindirizzo IP della macchina sospetta
ma non al suo ethernet adapter.
1. poniamo che la macchina sospetta abbia indirizzo IP: 10.0.0.1 e MAC address:
00-40-05-A4-79-31
2. ci poniamo sullo stesso segmento di rete della macchina sospetta e inviamo
un 'ICMP echo request' (ping) all'indirizzo IP della macchina e a un
indirizzo MAC iverso e non assegnato,
ad es.: 00-40-05-A4-79-32
3. poiche' quest'indirizzo ethernet non e' assegnato a nessuna delle interfacce
sulla LAN, nessuno dovrebbe rispondere: l'indirizzo MAC viene confrontato con
il proprio e se non corrispondente viene scartato
4. se la macchina sospetta possiede un ethernet adapter in promiscuos mode non
avra' questo filtro e rispondera' al ping, permettendoci di sapere che su di
essa e' probabile sia stato installato uno sniffer.
Questo e' un metodo cosi' ben conosciuto che gli sniffer adottano un filtro
MAC virtuale soprattutto sulle macchine (in genere windows) che possieno driver
(software) di filtro: esistono degli exploit per windows che permettono di generare
falsi positivi che vanificano la ricerca.
* metodi ping, parte seconda: per ovviare all'inconveniente di cui sopra usate
il metodo ping su ogni servizio attivo in rete che generi risposte conosciute,
ad es: TCP connection request, protocollo UDP sulla porta 7 (echo); oppure utilizzate
ogni protocollo che possa ingenerare un errore sulla macchina bersaglio, ad
esempio corrompendo gli header IP in modo da generare un ICMP error.
Ancora, l'indirizzo broadcast (sia locale, 255.255.255.255, che diretto, es.:10.0.0.255)
puo' essere utilizzato per superare le barriere/filtri ai ping su indirizzo
IP ma proprio perche' il braodcast address genera risposte da tutte le interfacce
potrebbe essere disabilitato (a causa di attacchi smurf).
* metodo ARP: simile al metodo ping ma si usa il protocollo ARP (Address Resolution
Protocol); il metodo piu' semplice e' inviare un ARP request a un indirizzo
non broadcast sospetto: se risponde e' in promiscuos mode...
una variante si avvantaggia della cache ARP di ogni macchina, ossia l'archivio
in cui vengono immagazzinati, per alcuni minuti o per un tempo piu' lungo, le
informazioni relative sia al mittente che al destinatario del traffico generato
da una determinata interfaccia.
In altre parole, quando si invia un ARP in broadcast, si include il prorpio
'IP to Ethernet address mapping' che verra' archiviato da tutte le macchine;
inviando un ARP non broadcast esso verra' scartato da tutte le interfacce meno
quelle in promiscuos mode, percio' al successivo invio di un ping sull'indirizzo
di broadcast riceveremo risposte con ARP request e non. Ovviamente le risposte
prive di ARP request provengono da interfacce che avevano sniffato l'ARP frame
in precedenza.
[documentazione in spagnolo
(!!!!) che fornisce anche un programma per utilizzare questo metodo]
* metodo DNS: come si suggeriva in precedenza, molti sniffer operano un reverse
DNS lookup automatico sugli indirizzi IP che vedono. In questo modo, dall'osservazione
del traffico DNS (Domain Name Service), individueremo le interfacce in promiscuous
mode.
Per aumentare tale tipo di traffico si operi un ping sweep su una lunga
serie di indirizzi IP non assegnati attraverso tutti i segmenti di rete. Qualsiasi
interfaccia che generi traffico di reverse DNS lookup su tali indirizzi IP ha
sicuramente sniffato l'ARP frame
* metodo 'source route': si crei un pacchetto ping introducendo il parametro
loose source in modo da instradare il pacchetto
attraverso una macchina ulteriore su un un segmento diverso da quello dell'interfaccia
sorgente;
la macchina scelta per l'instradamento deve essere priva della possibilita'
di instradare tale pacchetto ping, laciandolo cosi' cadere;
se la macchina bersaglio risponde comunque al ping e' probabile che l'abbia
sniffato;
se si vuole essere sicuri della mancanza di instradamento verso l'interfaccia
bersaglio si controlli il TTL (Time To Live) della risposta per capire se proviene
direttamente, quindi a seguito di sniffing, o a seguito di corretto instradamento
[dettagli].
* metodo 'decoy':
questo medono funziona anche all'esterno delle reti locali.
Poiche' quello che molti sniffer cercano sono password e nomi utente, il metodo
decoy fornisce password ad account inesistenti che serviranno unicamente a tracciare
la presenza di un eventuale sniffer.
Consiste semplicemente di un client e di un server posti ognuno ad un capo della
rete locale; il client fara' girare uno script che connetta, via telnet, pop
o imap, comunque in chiaro, il client al server attraverso account privi di
privilegi reali (gli account possono essere, anzi, del tutto virtuali).
Quando verra' tentato l'accesso a questi account utilizzando tali informazioni,
potranno essere utilizzati sistemi standard per la prevenzione delle intrusioni
in modo da registrare tutte le attivita' compiute.
* metodo 'host': la traccia di numerosi programmi eseguiti in background su
una macchina, siano essi trojan o sniffer (o entrambi), e' difficile da rilevare
ma nel caso degli sniffer e' evidente che essi debbano riconfigurare l'interfaccia
di rete in modo promiscuo. Il metodo piu' semplice per scoprire la presenza
di uno sniffer e' dunque quello di chiedere alla propria interfaccia, direttamente,
se sta' girando in promicuouos mode:
# ifconfig -a
e' il programma che ci permettera' di ottenere la risposta.
Ovviamente sara' anche il primo programma ad essere sostituito in modo da restituire
una risposta pilotata.
Una possibile soluzione e' la reinstallazione dell''ifconfig' o la sua esecuzione
direttamente da una distribuzione
cd-rom.
In internet sono inoltre disponibili utility in grado di interrogare direttamente
l'interfaccia come ifconfig.
* metodo 'latency': questo metodo puo' degradare sensibilmente le performance
della rete locale e genera molti 'false positive' ma riesce ad accecare un eventuale
sniffer.
In poche parole, e' necessario inondare la rete di traffico, generandolo come
meglio si creda, e, durante l'operazione inviare dei ping all'interfaccia sospetta
per verificarne un eventuale sovraccarico (che sara' determinato dal tempo di
risposta all'ICMP echo request).
Come funziona il latency method? Le interfacce non promiscue non raccoglieranno
tutto il traffico in passaggio, saranno solo rallentate nelle loro prestazioni
dal sovraccarico generale, ma l'interfaccia che girasse in promiscuous mode
verrebbe sommersa da tutti i pacchetti in passaggio, determinando un latenza
rilevante nell'invio della risposta ad un ping.
Un possibile problema e' rappresentato dalla possibilita' che lo sniffer faccia
in modo di rispondere al ping in 'kernel mode', restando cosi' indipendente
dal carico sulla CPU determinato dalla raccolta di tutto il traffico.
Questa funzione genera falsi negativi.
- conclusioni:
Le conclusioni traetele voi.
Dopo aver capito cos'e' uno sniffer, come funziona e su cosa si basa, la domanda
da porsi e': chi usa gli sniffer?
Difficilmente troverete uno sniffer installato sul vostro pc a casa, non serve
che stia li' per monitorare le vostre connessioni.
Soprattutto, anche se trovaste lo sniffer, difficilmente riuscireste a scorpire
chi lo ha installato.
====================================================================================
- back to index -
NOTE:
- MAC: Media Access Control; la struttura logica che
informa il protocollo ethernet e' composta da molti sottostrati (sublayer):
PHY, MAC, LCC; l'indirizzo ethernet e' considerato parte del MAC sublayer
- qual'e' l'indirizzo MAC della mia scheda di rete?
win 9x: eseguite il programma <winipcfg.exe>
win NT:eseguite il programma <ipconfig /all>
Linux: eseguite il programma <ifconfig>
- qual'e' l'indirizzo MAC delle macchine (delle schede di rete) con cui sono
in comunicazione?
win NT e Linux: eseguite il comando <arp -a>
oppure eseguite il comando: <netstat -na>
- gli ultimi due bit del MAC address:
un bit indica se l'indirizzo e' multicast/broadcast,
l'altro indica se l'indirizzo e' stato riassegnato come 'indirizzo gestito localmente
(locally administered address)':
il MAC address assumerebbe la forma 02-xx-xx-xx-xx-xx (primo byte:00000010)
se l'indirizzo fosse anche gestito localmente oppure 01-xx-xx-xx-xx-xx (primo
byte:00000001) se l'indirizzo MAC fosse multicast/broadcast oppure 03-xx-xx-xx-xx-xx
(primo byte:00000011) se l'indirizzo MAC corrispondesse ad entrambe le caratteristiche.
- pattern:
in generale va individuata una classe di traffico. (es. il traffico da A verso
B e viceversa di una certa applicazione, supponiamo 'talk') poi bisogna ricondurre
il traffico a dei pattern ad es. un pattern plausibile
P={ IP_SRC=A|B, IP_DST=B|A, TCP_DST=talk} [dove SRC indica l'indirizzo
sorgente, DST l'indirizzo del destinatario, TCP_DST indica che l'applicazione
e' 'talk' su protocollo TCP] e infine istruire lo sniffer a raccogliere solo
il traffico che soddisfa P.
E' da notare che i pattern possono essere molto piu' sofisticati e dettagliati,
ma ancora piu' importante e' notare che tutta la traffic analisys e' possibile
solo se gli header sono in chiaro, ovvero se non sono stati cifrati.
- back to index -
- indirizzi IP:
Il protocollo IP e' responsabile di mascherare le differenze esistenti tra le
varie componenti che costituiscono internet (reti, router, il nostro web-server
personale, etc). Per ottenere questo risultato si e' dovuto introdurre un sistema
di indirizzamento universale basato su identificativi di prefissata lunghezza,
denominati indirizzi IP.
Gli ideatori del protocollo stabilirono di assegnare un indirizzo IP ad ogni
interfaccia, ad ogni hardware, connesso alla rete internet, sia esso appartenente
ad una workstation, ad un server o ad un nodo intermedio (gateway). Queste entita'
potranno essere fisicamente connesse a internet per mezzo di tipologie diverse
di collegamento: alcune stazioni utilizzeranno connessioni telefoniche commutate,
altre utilizzeranno connessioni LAN. Indipendentemente dalla soluzione adottata,
ad ogni interfaccia dovranno' essere associati uno o piu' indirizzi IP.
I nodi intermedi della rete internet altro non sono che dispositivi d'interconnesione
in grado di processare datagrammi (o pacchetti) IP e per questo vengono chiamati
router o IP gateway. La loro funzione fondamentale e' quella di regolare il
flusso del traffico IP da una rete all'altra. Questo implica, pero', che il
gateway possieda egli stesso piu' interfacce; cosi' ad ogni interfaccia del
router saranno associati uno o piu' indirizzi IP.
Non esiste una regola che stabilisca quando assegnare piu' indirizzi IP ad ogni
interfaccia; l'unica regola sempre valida e' l'impossibilita' di destinare lo
stesso indirizzo IP a due interfacce distinte contemporaneamente presenti in
internet, pena l'impossibilita' di distinguerle.
Sul fronte opposto, se ad una interfaccia non sia stato preliminarmente assegnato
alcun indirizzo, nessun datagramma IP potra' raggiungerla.
E' possibile affermare che, ad ogni entita' che vuol far parte di internet,
dev'essere preliminarmente associato un indirizzo IP univoco e universale, che
la conttraddistingua da tutte le altre interfacce distribuite sulla rete.
La rete internet e' disseminata di apparati in possesso di indirizzi IP univoci
e, conseguentemente, di entita' raggiungibili dal traffico della rete. I nodi
intermedi, anch'essi raggiungibili dal traffico si occupano addirittura di smistarlo
verso le stazioni a cui e' associato l'indirizzo IP del destinatario. Tuttavia,
non facciamoci trarre in inganno, l'instradamento del pacchetto conteneti dati
utente (ad esempio: relativi a servizi internet come il web) avviene esclusivamente
attraverso l'indirizzo IP del destinatario.
Ciascun IP e' cotituito da 32 bit: essi vengono resi facilmente comprensibili
e memorizzabili all'uomo attraverso una notazione a 4 serie di cifre decimali
separate da punti. Secondo tale notazione, ogni cifra (compresa tra 0 e 255)
rappresenta un byte dell'indirizzo IP. L'indirizzo 00001010000000000000000000000001
(32 bit) puo' essere cosi' comodamente espresso in 10.0.0.1 .
Appurata la necessita' di associare un indirizzo IP ad ogni nodo, gli ideatori
del protocollo stesso stabilirono di assegnare a stazioni appartenenti ad una
stessa rete locale indirizzi di una stesso tipo (uno stesso 'pool' di indirizzi
IP). Lo scopo fondamentale era quello di semplificare l'instradamento dei datagrammi.
Pensiamo dunque ad un indirizzo IP come se fosse diviso in due parti distinte:
- i bit piu' 'significativi' stabiliscono il gruppo di appartenenza (la rete
locale di appartenenza)
- i bit meno significativi stabiliscono l'identita' della stazione all'interno
del gruppo
Secondo l'idea originaria l'indirizzamento prevedeva una semplice gerarchia
a due livelli; i primi bit rappresentano il network address, comune ad
un gruppo di stazioni; i rimanenti bit rappresentano un identificativo univoco
all'interno della rete locale (host address):
network address
|
host address
|
1 1 0 0 0 0 0
0. 1 0 1 0 1 0 0 0 . 0 0 0 0 0 1 1 1 . |
1 0 0 0 0 1 1
0 |
Gli indirizzi di rete vengono assegnati da un'autorita' nazionale (o regionale)
competente, sulla base delle necessita' di ciascuna organizzazione che ne fa richiesta.
Per ottenere un pool d'indirizzi IP sara' necessario sottoporre all'attenzione
dell'autorita' competente la topologia della propria rete, indicando, tra l'altro:
- il numero delle stazioni client attive
- il numero dei server e dei servizi internet attivi
- un dettagliato piano di sviluppo dell'infrastruttura di rete per il prossimo
futuro
L'insieme di network address e di host address compone il vero e proprio indirizzo
IP dell'interfaccia della stazione o del gateway.
Quando fu progettato il protocollo IP, si penso' che 32 bit potessero fornire
un numero di combinazioni di indirizzi piu' che sufficente per far fronte a tutte
le richieste ma il problema dell'esaurimento degli indirizzi IP si pose fin dai
primi anni del protocollo, poco dopo il passaggio della maggior parte delle reti
(arpanet compresa) al protocollo IP.
Problema che si e' complicato con la difficolta', d'altro canto, dell'utilizzo
esaustivo di tutti gli indirizzi assegnati ad un'organizzazione. Il numero di
stazioni ospitate in una rete locale varia considerevolmente da organizzazione
a organizzazione, rendendo innanzitutto indispensabile stabilire pool di indirizzi
di dimensioni differenti per poter accomodare le diverse necessita' dell'utenza,
senza sprecare indirizzi IP.
Per questo motivo sono state definite tre diverse classi di indirizzi IP, in grado
di ospitare un diverso numero di interfacce; le classi originariamente definite
furono: A, B e C.
Il numero di interfacce che possono essere ospitate da una rete locale e' di fatto
dipendente dal numero di bit riservati all'host address. Le diverse classi si
differenziano fondamentalmente per la diversa lunghezza in bit del network address
e dell'host address.
Indipendentemente dalla classe di indirizzo, poi, due particolari indirizzi non
potranno essere assegnati ad alcuna interfaccia: l'indirizzo con i bit dell'host
address tutti a zero (xxx.xxx.xxx.000) e quello con tutti i bit dell'host address
a uno (xxx.xxx.xxx.255): il primo identifica la rete nel suo complesso, mentre
il secondo individua un indirizzo di broadcast locale.
Un significato speciale hanno anche gli indirizzi IP: 0.0.0.0 e 255.255.255.255;
al primo e' stato assegnato il significato di 'questa stazione', al secondo
e' stato assegnato il significato di 'tutte le stazioni'.
Le classi di indirizzi IP:
A |
0 |
(network) +7 bit |
host (24 bit) |
B |
10 |
(network) +14 bit |
(16 bit) |
C |
110 |
(network) +21 bit |
host (8 bit) |
E |
1111 |
riservati a sperimentazione |
Le reti di classe A comprendono gli indirizzi che presentano il bit piu' vicino
a zero: questa proprieta', tradotta in notazione decimale, significa che ogni
rete di classe A ha il primo byte compreso tra 0 e 126, con 8 bit riservati
al network address e 24 riservati all'host address; il numero di reti e' fissato
a 126 il numero di interfacce possibili con una rete di classe A e': 16'777'214
(2^24 -2).
La rete 127.x.x.x, sempre di classe A e' riservata e viene definita rete di
loopback mentre l'indirizzo IP 127.0.0.1, il local host address e' adibito a
funzionalita' diagnostiche della rete o, ad esempio, per la comunicazione tra
server e client residenti sulla stessa macchina senza interfacce fisiche.
Le reti di classe B comprendono indirizzi IP che presentano il bit piu' significativo
a uno e il seguente a zero (cioe' il primo byte compreso tra 128 e 191); la
classe B riserva 16 bit al network address e altrettanti all'host address.
Il numero complessivo di reti e' fissato a 16128, mentre il numero di stazioni
che possono trovare posto in una rete di classe B e': 65'534 (2^16-2).
Le reti di classe C sono sensibilmente piu' numerose delle altre e rappresentano
la soluzione ideale per numerose organizzazioni di limitate dimensioni.
Gli indirizzi delle reti di classe C sono individuati dal valore dei primi tre
bit (1 1 0) per ottenere un primo byte compreso tra 192 e 223. 24 bit sono riservati
al network address, i rimanenti 8 sono lasciati all'host address.
Il numero complessivo di reti di classe C e' fissato a 2'097'152 mentre il numero
di interfacce possiili e' stato limitato a 254 (2^8 -2)
Le classi speciali D ed E hanno funzioni particolari: la prima (primo byte tra
224 e 239) e' riservata alla trasmissione di datagrammi IP in modalita' multicast,
la seconda (primo byte compreso tra 240 e 254) e' utilizzata a fini sperimentali.
- back to index -
- CRC:
ciclical redundancy check: risultato di una funzione (hash o 'checksum') che
ci permette di sapere se i dati non siano stati corrotti nel trasferimento per
problemi, ad esempio, di connessione - lunghezza 4 bit.
- router:
dispositivo che inoltra e instrada il traffico tra reti. Le decisioni sull'instradamento
sono fatte sulla base dei network layer e su tabelle d'instradamento (routing
tables), spesso predefinite dai protocolli d'instradamento.
- loose source routing:
viene aggiunto il parametro loose source all'header IP del pacchetto ping. con
questo metodo il router principale instradera' il pacchetto non piu' direttamente
all'indirizzo di destinazione ma attraverso una ulteriore macchina indicata
nell'opzione source route.
Questo significa inviare un pacchetto dicendo: <invia il pacchetto alla macchina
sospetta 'A' ma instradalo prima attraverso l'interfaccia 'B', grazie>
In questo scenario 'A' e 'B' sono sullo stesso segmento e 'B' non deve essere
in grado instradare il pacchetto ad 'A'.
Se 'A' riceve comunque il pacchetto e' in promiscuous mode.
Il TTL e' un campo che indica la 'vita' del pacchetto, ovvero
quanti salti (hop), quanti instradamenti puo' subire prima di essere scartato;
e' un valore 'k' che viene degradato di una unita' ad ogni salto fino a k=0.
Se la risposta al nostro ping ha TTL=k-1 il ping e' stato sniffato (ci e' arrivato
senza l'instradamento richiesto, cioe' con un solo salto), se TTL=k-(n. di hop
richiesti dal parametro loose source) allora il ping era stato instradato correttamente
(e si dovra' riprovare ... ;-))
=============
NO (c) copyright:
=============
questo documento e' liberamente distribuibile in qualsiasi forma
si ringraziano:
thomas,
odo,
vecna,
terminal.c,
trz
e tutto il LOA
Per ulteriori informazioni leggete la FAQ di Robert Graham:http://www.robertgraham.com/pubs/sniffing-faq.html
e i capitoli su ethernet, TCP/IP di maximum
security.
- back to top -