Metodi per individuare uno Sniffer
In teoria, è impossibile individuare uno sniffer perché gli sniffers sono passivi:
loro catturano solamente pacchetti, e non emettono niente. In pratica, qualche
volta è possibile scoprirli. La situazione può essere paragonata a quella di
scoprire ricevitori radio/TV.
Gli sniffer si distinguono in : sniffer detti 'stand-alone' e sniffer detti 'non-stand-alone':
Il primo tipo di sniffer non trasmette nulla, non genera
traffico, è passivo ed è teoricamente impossibile da individuare; il secondo
tipo, invece, non ha solo comportamenti passivi ma genera del traffico ben
identificabile e sulla base di dati e di richieste inviate (ad es. DNS reverse
lookup) è possibile localizzarlo.
In effetti, ciò che si vuole localizzare è proprio lo sniffer non-stand-alone.
Diamo uno sguardo 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 qualche tipo
di risposta. Il trucco, in questo caso, è quello di inviare una richiesta
allindirizzo 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 diverso e non assegnato,ad es.:
00-40-05-A4-79-32;
3.Poichè quest'indirizzo ethernet non è 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 avrà questo filtro e risponderà al ping,
permettendoci di saspettare che su di essa probabilmente sia stato installato uno
sniffer.
Questo è un metodo così ben conosciuto che gli sniffer adottano un filtro MAC
virtuale soprattutto sulle macchine (in genere windows) che possiedono driver
(software) di filtro: esistono degli exploit per windows che permettono di
generare falsi positivi che vanificano la ricerca.
Metodo
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 generare 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) può essere utilizzato per superare le barriere/filtri ai ping
su indirizzo IP ma proprio perché il broadcast 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 più semplice è inviare un ARP request a un
indirizzo non broadcast sospetto: se risponde è 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 più
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 proprio IP
to Ethernet address mapping che verrà archiviato da tutte le macchine;
inviando un ARP non broadcast esso verrà scartato da tutte le interfacce meno
quelle in promiscuous mode, perciò 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.
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 un'ulteriore macchina sita su un segmento
diverso da quello dell'interfaccia sorgente.
La macchina scelta per l'instradamento deve essere priva della possibilità di
instradare tale pacchetto ping, lasciandolo così cadere.
Se la macchina bersaglio risponde comunque al ping è 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: Nel source-routing una opzione è aggiunta alla testata di IP.
I Routers ignoreranno gli indirizzi di destinazione IP e invece considerano il prossimo indirizzo IP. Questo vuol dire che quando un utente
spedisce il pacchetto può dire "per favore spedisca un pacchetto a Bob,
ma instrada esso attraverso Anna". Anna e Bob sono sullo stesso segmento e
perciò, Anna non indirizza ma calerà il pacchetto quando lo riceve.
"Bob" risponderà solamente se
ha sniffato il pacchetto dal cavo. Se Anna indirizza davvero il pacchetto (allora in tal caso
Bob risponderà),allora il campo TTL può
essere usato per verificare se Bob risponde instradando attraverso Anna, o
rispondendo direttamente.
Metodo
decoy:
questo metodo funziona anche all'esterno delle reti locali.
Poiché 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 farà 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 verrà 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 attività compiute.
Metodo host: la traccia di numerosi programmi eseguiti in background
su una macchina, si essi trojan o sniffer (o entrambi), è difficile da rilevare
ma nel caso degli sniffer è evidente che essi debbano riconfigurare
l'interfaccia di rete in modo promiscuous. Il metodo più semplice per scoprire
la presenza di uno sniffer è dunque quello di chiedere alla propria
interfaccia, direttamente, se stà girando in promiscuous mode:
# ifconfig -a
è il programma che ci permetterà di ottenere la risposta.
Ovviamente sarà anche il primo programma ad essere sostituito in modo da
restituire una risposta pilotata.
Una possibile soluzione è 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 può degradare sensibilmente le performance
della rete locale e genera molti false positive ma riesce ad accecare un
eventuale sniffer.
In poche parole è 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 sarà determinato dal tempo di
risposta all'ICMP echo request).
Funzionamento del 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 gira 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 è rappresentato dalla possibilità che lo sniffer faccia
in modo di rispondere al ping in kernel mode, restando così indipendente dal
carico sulla CPU determinato dalla raccolta di tutto il traffico.
Questa funzione genera falsi negativi.
TDR
(Time-Domain Reflectometers): Un TDR è fondamentalmente un cavo Radar. Spedisce impulsi sul cavo, e riflette
dei grafici. Un esperto può guardare il grafico della risposta e dedurre se
qualche dispositivo è attaccato al cavo e scoprirne addirittura la posizione
(in distanza) sul cavo.Questo può scoprire sniffers hardware attaccati al cavo.
TDR fu usato da Ethernet per scoprire i cosiddetti "vampiri", ma
molto raramente vengono utilizzati oggi
per le topologie a stella.
Hub lights:Si può manualmente
controllare l'HUB per vedere se c'è qualche collegamento inaspettato. Aiuta
ad identificare cavi per dedurre dove
(fisicamente) un sniffer del pacchetto è localizzato.
SNMP
monitoring: Piccoli
HUB intelligenti con gestione SNMP possono provvedere a monitorare le HUB
Ethernet (e altro).Delle consolle di gestione lasceranno che si tagli le connessioni / disconnessioni su tutte le
porte. Se si configura il sistema con le informazioni riguardanti le
terminazioni dei cavi, si può seguire le tracce di uno sniffer del
pacchetto.
TOOLS per
scoprire sniffers:
·
AntiSniff
http://www.l0pht.com/antisniff/
·
CPM (Controlli Maniera
Promiscua)
·
Un tool di Carnegie-Mellon che controlla se è abilitata la modalità
promiscua su macchina di UNIX.
·
neped http://www.apostols.org
·
Un tool di Apostols che scopre
sniffers del pacchetto che corre su segmenti locali.
·
sentinel http://www.packetfactory.net
·
cpm (Controlli Maniera Promiscua)
·
Un tools di UNIX per controllare il promiscuous-mode status degli
adattatori.
·
ifstatus
Un altra utilità di UNIX che dovrebbe essere eseguita da crontab
per esaminare quando gli adattatori sono messi in modalità promiscua.