Sniffare porte usb con GNU/Linux, piccola trattazione tecnica

In modo teorico tutti i bus di comunicazione di un pc possono essere violati ed utilizzai per effettuare lo sniffing dei dati che li attraversano.

Dico in modo teorico perchè poi, all’atto pratico, sorgono delle difficoltà che difficilmente sono superabili se si ha a che fare con un computer custodito ed amministrato come si deve.

Non tutti i bus di comunicazione possono essere sniffati con la stessa facilità, per fare un piccolo esempio concreto si può dire che il bus usb è relativamente facile da compromettere mentre per il Firewire non ci sono problemi di alcun tipo vista la totale noncuranza in fase di progettazione per quel che riguarda la sicurezza della comunicazione rispetto a questo tipo di attacchi.

Uno strumento che ci permette di effettuare questa operazione sulle nostra care linux box prende il nome di usbmon.

Per prima cosa è necessario verificare se tutti i moduli del kernel necessari sono già presenti all’interno del nucleo da voi utilizzato, molto spesso essi sono già all’interno della vostra versione ma non vengono caricati di default e quindi occorre procedere alla loro attivazione attraverso un comando che impartiremo tramite shell:

1
2
mount -t debugfs none_debugs /sys/kernel/debug
modprobe usbmon

anche se so già che non ve ne è alcun bisogno vi ricordo che le operazioni di modprobe, ovvero di caricamento di moduli del kernel, vanno effettuate avendo i privilegi di amministratore del sistema.

Verifichiamo ora quali socket usb sono presenti attraverso il comando:

1
ls /sys/kernel/debug/usbmon

quello che avrete in risposta è una stringa come quella mostrata nello screenshoot che potete vedere qui sotto.

Schermata.png

E’ arrivato il momento di decidere se sniffare qualsiasi porta usb o concentrare le nostre attenzioni sul solo bus al quale magari è attaccata la chiavetta di memoria della quale ci interessa controllare il traffico.

Se volete ascoltare il traffico di tutte le porte sarà sufficiente dare il seguente comando:

1
cat /sys/kernel/debug/usbmon/0u > /tmp/1.mon.out

oppure procedere con l’individualizzazione della porta alla quale siamo interessati.

Per far ciò dovete digitare in una console il seguente comando:

1
cat /proc/bus/usb/devices

In questo modo avrete un listato completo di tutte le periferiche usb collegate al pc come nello screenshoot che segue:

Schermata2.png

potete quindi isolare la porta che più vi interessa analizzando l’output del comando ed identificando il venditore della periferica o altre informazioni che vi potranno portare diritti alla porta utilizzata.

Una volta individuato il gruppo di informazioni che descrive l’hardware da voi cercato potrete comodamente leggere il bus utilizzato alla prima stringa T dove troverete la dicitura Bus=02, esso corrisponderà in modo univoco all’autobus 2.

Ora potete iniziare la cattura con il comando:

1
cat /sys/kernel/debug/usbmon/2u > /tmp/1.mon.out

Personalmente preferisco questo secondo metodo visto che alcune periferiche ormai di uso comune come mouse usb o altro andrebbero ad inquinare le informazioni catturate con i solo segnali poco interessanti costringendoci di fatto a fare una successiva cernita dei risultati ottenuti per estrapolare solo i dati utili.

Ultimata la cattura delle informazione un bel ctrl+c riporterà la shell in condizioni normale e voi potrete dedicarvi all’analisi del file di dump che avete appena salvato con il nome di 1.mon.out.

Non sto ora qui a dilungarmi su come e cosa utilizzare per l’interpretazione dei dati raccolti ma sappiate che molte informazioni sensibili possono attraversare le porte usb lascio quindi a voi il piacere di scoprire le molteplici possibilità che questa tecnica offre.

Se siete di quelli che vedono complotti ai vostri danni in ogni angolo del globo vi consiglio di fare come i ragazzi di LolloBox (saluto con affetto ascii ci vediamo mercoledì sera) e di “murare vive” le porte usb con della sana colla a caldo.

Ciao a tutti.



7 commenti presenti

  1. MrGorefestNo Gravatar marzo 26, 2009 17:56

    ciao, grazie per questo articolo, ero interessato ad una cosa del genere per vedere come comunica il mio Nokia quando lo attivo con modalità Lettore Multimediale.
    Vorrei sapere una cosa: una volta che ho terminato lo sniff come interpreto i dati?
    grazie

  2. ShaytanNo Gravatar marzo 27, 2009 10:33

    Wireshark con la sua buona interfaccia e la potentissima libpcap è in grado di supportare il dump dei dati effettuato con usbmon.
    Il software consente la cattura e l’analisi delle info quindi dovrebbe anche aprire i file di un eventuale dump fatto in altro modo.

  3. MrGorefestNo Gravatar marzo 27, 2009 11:45

    non funziona perchè dice che il file non è in un formato che WireSharck riconosce

  4. ShaytanNo Gravatar marzo 27, 2009 14:04

    E’ necessario vedere se si tratta di una questione di estensione del file o di una vera e propria incapacità di interpretazione.

  5. MrGorefestNo Gravatar marzo 27, 2009 14:06

    “The file isn’t a capture file in a format Wireshark understands.”

  6. ShaytanNo Gravatar marzo 30, 2009 13:36

    Prova a cambiare l’estensione o magari ad aprire da linea di comando con gedit o nano.

  7. MrGorefestNo Gravatar marzo 30, 2009 18:10

    provato…niente…sempre lo stesso errore…

Lascia un commento

Rispetta le regole del blog. La tua e-mail non verrà pubblicata.