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.