Creazione di uno sniffer HW/SW per intercettazioni di rete
Il vantaggio dei sistemi embedded è che possono essere implementati tramite l’utilizzo di hardware non proprio “standardizzato” come può essere un personal computer, questo comporta che la scelta dell’hardware può essere fatta in relazione alle risorse che il sistema dovrà utilizzare per lavorare efficientemente. Esistono varie società specializzate nella progettazione e creazione di piccoli sistemi hardware che, molto spesso, sembrano studiati su misura per particolari necessità.
Se il nostro scopo ultimo è uno sniffer hardware per intercettazioni LAN, le esigenze che devono sicuramente essere soddisfatte sono le seguenti:
- Dimensioni ridotte: il nostro “intercettatore” dovrà essere facilmente occultabile.
- Aspetto: meno lo sniffer appare simile a un computer meglio è, soprattutto se dovrà risiedere all’interno di un armadio rack.
- Potenza di calcolo: se la rete da intercettare è a 1 Gbit c’è bisogno di una discreta potenza di calcolo per processare il flusso di dati in transito.
- Schede di rete multiple: esistono diversi sistemi embedded con più di una scheda di rete (4 – 8 o 16) collegate direttamente sulla scheda madre.
- Velocità di I/O: se si pensa sempre al peggio, cioè avere a che fare con intercettazioni di rete a 1 Gbit, i dischi in dotazione al nostro sistema embedded dovranno essere di ottimo livello (e forse anche configurati in RAID)
Per hardware di questo tipo o per qualsiasi altro network appliance che dovrete creare, vi consiglio di dare un’occhiata al seguente url: www.win-ent.com
Per quanto riguarda la parte software del nostro sniffer utilizzeremo naturalmente Linux; i nuovi kernel delle moderne distribuzioni Linux mettono a disposizione decine di funzionalità utili all’implementazione di un sistema per networking. Tra le più in vista troviamo:
- Bond device: possibilità di unire più canali fisici in un unico canale logico, aumentando così la banda passante a disposizione.
- VLAN: Linux offre un supporto totale alle VLAN, dal supporto completo del protocollo 802.11Q fino ad arrivare a funzioni avanzate come il routing tra VLAN, il firewalling e lo sniffing.
- Bridge device: una distribuzione Linux, tramite i device bridge può trasformarsi in uno switch software.
Oltre alle funzionalità native del kernel, la creazione di uno sniffer prevede che la distribuzione possegga i seguenti pacchetti:
- Bridge utils: un pacchetto di utility user mode per la gestione del bridge del kernel.
- Ebtables: è il pacchetto per la gestione del firewalling di Linux.
- Sniffer: sarà necessario l’uso di uno sniffer di rete per raccogliere e filtrare il flusso di dati in transito.
n.b.: Sappiate che la configurazione dello sniffer è implementabile con qualsiasi distribuzione Linux, ma sappiate anche che alcuni dei comandi utilizzati possono variare tra una distribuzione e un’altra.
La macchina ideale per la creazione del nostro intercettatore dovrà avere almeno tre schede di rete, due delle quali saranno configurate senza indirizzo IP e collegate come porte di uno switch software, la terza sarà dotata di un indirizzo da utilizzare per l’accesso al dispositivo. Per prima cosa bisogna creare lo switch software e poniamo il caso che le nostre schede siano eth0, eth1 e eth2. Le prime due sono quelle che faranno parte dello switch software. Per fare ciò, digitiamo in console i seguenti comandi:
ifconfig eth0 -arp up
ifconfig eth1 -arp up
Questi comandi attivano le due schede di rete senza fornire loro un indirizzo IP e, inoltre, vietando loro l’utilizzo del protocollo ARP. Attivate le porte bisogna utilizzare le bridge utils per la creazione dello switch virtuale:
brctl addbr br0
Questo comando crea il nostro switch virtuale al quale diamo il nome di br0, dove br0 è anche il nome dell’interfaccia virtuale che il sistema operativo assocerà al backplane dello switch di rete. Ora bisogna associare le interfacce di rete allo switch virtuale:
brctl addif br0 eth0
brctl addif br0 eth1
Fatto questo, ora che le due schede sono a tutti gli effetti due porte dello switch br0, dobbiamo aumentare la sicurezza disabilitando il protocollo di spanning tree su br0, in questo modo br0 non si annuncerà al mondo nel caso in cui siano presenti altri switch con questo protocollo attivo:
brctl stp br0 off
Ora non resta che attivare l’interfaccia corrispondente al backplane del nostro switch virtuale:
ifconfig br0 -arp up
Abbiamo br0 che adesso è un’interfaccia di rete come tutte le altre, è quindi possibile utilizzare uno sniffer per catturare il traffico passante su di essa. Possiamo scegliere in una vasta categoria di software, sicuramente in prima linea (per numero di utilizzatori e facilità di utilizzo) troviamo l’indiscusso tcpdump. Il suo punto di forza è la possibilità di utilizzare un potente sistema di filtri che ci permette di intercettare solo il traffico che ci interessa. Il comando da scrivere in console per intercettare il traffico sul backplane dello switch software che abbiamo creato è il seguente:
tcpdump -n -w /var/spool/sniffer/intercettazione.pcap -s0 -C 100 -i br0
Vediamo cosa significa:
- tcpdump: chiaramente richiama il nostro software di sniffing.
- -n: specifica al programma di non effettuare conversioni riguardanti i nomi dei servizi associati alle porte, gli host, ecc., lasciando tutto quello che viene intercettato in formato numerico. Se non specificato accadrebbe che, in un esempio pratico, se il traffico intercettato fosse una connessione ssh, sul record corrispondente alla connessione intercettata verrebbe scritto SSH invece di 22 nella parte che si riferisce alle porte utilizzate.
- -w nomefile: dice al programma di salvare i dati intercettati nel file specificato (in formato pcap).
- -s0: questa opzione è importante perché normalmente tcpdump salva soltanto i primi 68 elementi di un pacchetto intercettato (questo perché solitamente viene utilizzato come strumento di diagnosi dagli amministratori di rete, ai quali interessa più che altro l’header del pacchetto e non il contenuto). Specificando questa opzione il programma catturerà sia l’header che il body del pacchetto.
- -C 100: questa opzione ci permette di gestire una rotazione dei file di output dell’intercettazione, in questo modo eviteremo di dover gestire file di dimensioni smisurate quando andremo ad analizzare il traffico che abbiamo intercettato. Specificando questa opzione tcpdump crea un nuovo file con lo stesso nome più un numero progressivo alla fine del nome del file nel momento in cui vede che il file precedente ha raggiunto la soglia specificata dopo -C.
- -i interfaccia: naturalmente dobbiamo specificare (e lo facciamo tramite questa opzione) quale è l’interfaccia oggetto del nostro sniffing.
Finito il nostro viaggio all’interno dello sniffing di rete posso solo consigliarvi Wireshark (www.wireshark.org) come software da utilizzare per l’analisi dei dati intercettati che, probabilmente è la parte più spiacevole di tutto il processo di intercettazione, vista la mole di dati generata da uno sniffing di rete (la quale comprende una minima parte di dati che ci interessa e che dobbiamo ritrovare all’interno di tutto il resto!).
Non sono stati pubblicati commenti.
Nuovo commento