Questa guida spiega cos'è Usbrip programma, come tenere traccia dei dettagli dei dispositivi USB collegati o disconnessi e anche come mostrare la cronologia degli eventi dei dispositivi USB utilizzando lo strumento Usbrip in Linux.
Introduzione
Al giorno d'oggi, i dispositivi USB sono prevalenti. Dovresti utilizzare molti dispositivi con un connettore USB come unità flash, unità esterna, mouse, tastiera, stampante, caricabatterie per telefoni cellulari tutto il giorno, tutti i giorni. Come ogni altro evento, anche la cronologia delle connessioni USB viene tracciata dal sistema operativo Linux. Ogni volta che colleghi o disconnetti un dispositivo USB, la cronologia degli eventi dei dispositivi USB viene tracciata e archiviata in uno o più dei seguenti file nel tuo sistema Linux:
- /var/log/dmesg
- /var/log/daemon.log
- /var/log/kern.log
- /var/log/syslog
- /var/log/messages
Puoi scorrere manualmente questi file per conoscere la cronologia delle connessioni USB o utilizzare uno strumento che aiuta a organizzare facilmente gli artefatti USB in un formato tabellare ordinato. Uno di questi strumenti per tenere traccia della cronologia degli eventi USB è Usbrip .
Informazioni su Usbrip
Usbrip è uno strumento forense da riga di comando per tenere traccia della cronologia di tutte le connessioni dei dispositivi USB in Linux. Analizza i dati di registro del tuo sistema utilizzando journelctl
comando o da file di registro come /var/log/syslog
e /var/log/messages
e visualizza la cronologia degli eventi USB raccolti nell'output standard o in un file.
Il programma usbrip tiene traccia degli artefatti del dispositivo USB e li elenca nelle seguenti colonne:
- Connesso (data e ora)
- Ospite
- VID (ID fornitore)
- PID (ID prodotto)
- Prodotto
- Produttore
- Numero di serie
- Porto
- Disconnesso" (data e ora)
Usbrip è uno strumento gratuito e open source scritto in Python 3 . Per chi se lo stesse chiedendo, il nome Usbrip deriva dalle due parole - USB e Ripper . Non è USB R.I.P.
Funzioni USB
Usbrip ha alcune caratteristiche interessanti. Vorrei citare le seguenti tre caratteristiche degne di nota.
1. Trova l'accesso USB non autorizzato
Questo è lo scopo principale dello strumento Usbrip. Utilizzando lo strumento usbrip, possiamo dimostrare che un dispositivo USB è stato collegato a un sistema Linux specifico, da un utente specifico, entro un intervallo di tempo specifico. In generale, possiamo utilizzare Usbrip in tutti i casi in cui sono coinvolti dispositivi USB.
Come già detto, puoi esportare tutti i dettagli della connessione USB in un JSON
file. Perché scarichiamo i dettagli in un file JSON? Perché possiamo facilmente cercare eventuali "eventi di violazione". Ad esempio, potremmo creare un file, diciamo auth.json
e archiviare l'elenco dei dispositivi USB autorizzati o affidabili in quel file.
Il auth.json
può essere utilizzato per indagare su quali dispositivi USB sono stati collegati e se sono i dispositivi autorizzati o meno. In questo modo è possibile scoprire se qualche utente ha copiato qualcosa dal tuo sistema senza il tuo permesso.
Tieni presente che se installi usbrip utilizzando lo script di installazione, auth.json
il file verrà creato automaticamente nella posizione /var/opt/usbrip/trusted/
al momento dell'installazione. Puoi anche crearne uno tuo in qualsiasi luogo a tua scelta.
2. Trova i dettagli del dispositivo USB
Se vuoi conoscere i dettagli delle specifiche di un dispositivo USB, puoi ottenerli facilmente utilizzando il suo VID o PID. Usbbrip recupererà i dettagli di fornitori, dispositivi e interfacce da usb.ids
database mantenuto su http://www.linux-usb.org/ .
3. Backup degli eventi USB
Se hai installato manualmente Usbrip con -s
(--storages
), puoi eseguire automaticamente il backup degli eventi USB con crontab scheduler.
Ora vediamo come installare e utilizzare Usbrip in Linux per raccogliere eventi di connessione USB.
Installa Usbrip in Linux
Poiché Usbrip è scritto in Python, possiamo installarlo usando Pip gestore di pacchetti.
$ pip install usbrip
Se hai installato usbrip con pip, alcune funzionalità non saranno disponibili. Per ottenere tutte le funzionalità, dovresti installare manualmente usbrip usando il suo script di installazione chiamato install.sh
.
Innanzitutto, assicurati di aver installato i prerequisiti necessari:
- python3-venv
- p7zip
Su Debian, Ubuntu e i suoi derivati, puoi installarli come mostrato di seguito:
$ sudo apt install python3-venv p7zip-full
Git clone repository usbrip:
$ git clone https://github.com/snovvcrash/usbrip.git usbrip
Il comando precedente clonerà il contenuto del repository usbrip e lo memorizzerà in una directory denominata "usbrip" nella directory corrente.
Cd nella directory usbrip:
$ cd usbrip
Rendi eseguibile lo script di installazione:
$ chmod +x ./installers/install.sh
E infine installalo usando il comando:
$ sudo -H ./installers/install.sh -s
Qui abbiamo usato -s
flag per abilitare il modulo di archiviazione. Questo non solo installerà il programma usbrip, ma creerà anche l'elenco dei dispositivi USB affidabili, la cronologia e gli archivi delle violazioni. Prendi nota della tua password segreta. Potresti averne bisogno in seguito.
Una volta completata l'installazione, puoi rimuovere la directory clonata:
$ cd
$ rm -r usbrip/
Mostra la cronologia degli eventi dei dispositivi USB utilizzando Usbrip in Linux
Prima di iniziare ad usarlo, conosciamo l'elenco delle opzioni generali e dei flag disponibili.
1. Ottenere aiuto
Per visualizzare la sezione di aiuto del programma Usbrip, esegui semplicemente:
$ usbrip --help
Risultato di esempio:
usage: usbrip [-h] {banner,events,storage,ids} ...
positional arguments:
{banner,events,storage,ids}
banner show tool banner
events work with USB events
storage work with USB event storage
ids work with USB IDs
optional arguments:
-h, --help show this help message and exit
Come puoi vedere, ci sono quattro comandi principali, ovvero banner
, events
, storage
e ids
.
Per visualizzare l'elenco dei sottocomandi per un comando principale specifico, eseguire:
$ usbrip <command> --help
Esempio:
$ usbrip events --help
Per elencare tutte le opzioni relative a un sottocomando specifico, ad esempio events
, esegui:
$ usbrip events genauth --help
2. Visualizza la cronologia delle connessioni del dispositivo USB
Per mostrare la cronologia delle connessioni dei dispositivi USB, esegui:
$ usbrip events history
Ti verrà chiesto se desideri visualizzare la cronologia degli eventi USB nell'output standard o in un file JSON. Se vuoi visualizzare l'output, premi semplicemente INVIO (che è l'impostazione predefinita) o digita il numero 2 per salvarlo in un file JSON.
Vado con l'output predefinito, quindi ottengo questo output lungo:
_ {{4}} {v2.2.2-1}
_ _ ___| |_ ___[e]___
| | |_ -| . | _[n] . |
|___|___|___|_| [5] _|
x[1]_| https://github.com/snovvcrash/usbrip
[*] Started at 2021-03-27 14:28:31
[14:28:31] [INFO] Trying to run journalctl...
[14:29:10] [INFO] Successfully runned journalctl
[14:29:11] [INFO] Reading journalctl output
100%|█████████████████████████████| 912197/912197 [00:04<00:00, 188838.07line/s]
[?] How would you like your event history list to be generated?
1. Terminal stdout
2. JSON-file
[>] Please enter the number of your choice (default 1): 1
[14:29:48] [INFO] Preparing collected events
[14:29:48] [WARNING] Terminal window is too small to display table properly
[14:29:48] [WARNING] Representation: list
USB-History-Events
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected: 2020-12-26 21:24:23
Host: ostechnix
VID: 0cf3
PID: 3002
Product: ∅
Manufacturer: ∅
Serial Number: ∅
Bus-Port: 1-1.4
Disconnected: 2020-12-26 21:24:24
.
.
.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected: 2021-03-27 11:52:19
Host: ostechnix
VID: 046d
PID: c52b
Product: USB Receiver
Manufacturer: Logitech
Serial Number: ∅
Bus-Port: 1-1.2
Disconnected: ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[*] Shut down at 2021-03-27 14:29:48
[*] Time taken: 0:01:17.624936
Per impostazione predefinita, Usbrip visualizzerà il risultato in formato colonna tabellare. Poiché la mia finestra Terminale è troppo piccola per visualizzare correttamente la tabella, l'output viene visualizzato in formato elenco. Se vuoi fare in modo che Usbrip visualizzi comunque il risultato in formato colonna tabellare, aggiungi -t
bandiera:
$ usbrip events history -t
Puoi personalizzare l'output a tuo piacimento. Nell'esempio seguente, ho usato -q/--quiet
flag per sopprimere il banner e altre informazioni sull'utente, -l/--list
per visualizzare l'output in formato elenco e -n/--number
per visualizzare un numero specifico di uscite.
$ usbrip events history -ql -n 2
Il comando precedente mostrerà solo gli ultimi 2 Cronologia eventi USB senza banner, messaggio informativo e richiesta di interazione dell'utente.
Risultato di esempio:
100%|█████████████████████████████| 912890/912890 [00:05<00:00, 159754.38line/s]
USB-History-Events
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected: 2021-03-27 10:16:08
Host: ostechnix
VID: 0cf3
PID: 3005
Product: ∅
Manufacturer: ∅
Serial Number: ∅
Bus-Port: 1-1.4
Disconnected: ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected: 2021-03-27 11:52:19
Host: ostechnix
VID: 046d
PID: c52b
Product: USB Receiver
Manufacturer: Logitech
Serial Number: ∅
Bus-Port: 1-1.2
Disconnected: ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
3. Salva la cronologia degli eventi USB in un file
Invece di visualizzare la cronologia degli eventi nell'output standard, possiamo salvarla in un file in formato JSON.
Per farlo, esegui il comando per mostrare la cronologia degli eventi USB:
$ usbrip events history
Digitare 2 quando viene richiesto di scegliere come si desidera salvare l'output. Ti verrà nuovamente chiesto di inserire la posizione del nome del file di output. Inserisci semplicemente un percorso a tua scelta o premi INVIO per salvarlo nel file predefinito chiamato history.json
nel $HOME
directory.
_ {{4}} {v2.2.2-1}
_ _ ___| |_ ___[3]___
| | |_ -| . | _[N] . |
|___|___|___|_| [5] _|
x[1]_| https://github.com/snovvcrash/usbrip
[*] Started at 2021-03-29 11:49:40
[11:49:40] [INFO] Trying to run journalctl...
[11:49:41] [INFO] Successfully ran journalctl
[11:49:41] [INFO] Reading journalctl output
100%|███████████████████████████████| 15910/15910 [00:00<00:00, 235574.33line/s]
[?] How would you like your event history list to be generated?
1. Terminal stdout
2. JSON-file
[>] Please enter the number of your choice (default 1): 2
[>] Please enter the output file name (default is "history.json")
:
[11:49:46] [INFO] Generating event history list (JSON)
[11:49:46] [INFO] New event history list: "/home/ostechnix/history.json"
[*] Shut down at 2021-03-29 11:49:46
[*] Time taken: 0:00:05.852216
Puoi visualizzare questo file in qualsiasi momento usando il comando:
$ usbrip events open history.json
4. Mostra la cronologia degli eventi dei dispositivi USB esterni
Per mostrare la cronologia delle connessioni dei dispositivi esterni, usa -e
, --external
bandiera:
$ usbrip events history -q -e
5. Mostra la cronologia degli eventi USB in un intervallo di tempo specifico
Possiamo usare -d
, --date
flag per visualizzare la cronologia degli eventi dei dispositivi USB in un determinato periodo di tempo. Ad esempio, questo comando mostra la cronologia degli eventi che si sono verificati tra gennaio 2021 e marzo 2021:
$ usbrip events history -q -d '2021-01-01' '2021-03-29'
6. Mostra solo determinate informazioni
Potresti essere interessato a visualizzare gli eventi specifici delle connessioni USB. Ad esempio, il comando seguente ti fornirà i dettagli delle colonne, ovvero Connected, Disconnected, Serial e Product name:
$ usbrip events history -q -c conn disconn serial prod -n 20
Qui, -n 20
l'opzione viene utilizzata per visualizzare i 20 record recenti.
7. Cerca i dettagli di dispositivi USB specifici
Potresti essere interessato a visualizzare la cronologia degli eventi di un dispositivo specifico. In tal caso, puoi utilizzare il --manufact
flag per visualizzare tali dettagli:
Nell'esempio seguente, ho visualizzato i 15 eventi recenti del mio ricevitore wireless Logitech. Ho anche elencato i dettagli di sole 4 colonne, ovvero Connesso, Disconnesso, Seriale e Prodotto.
$ usbrip events history -q -c conn disconn serial prod --manufact Logitech -n 15
Allo stesso modo, puoi filtrare gli eventi USB combinando molti campi come PID, VID, porta, nome host, numero seriale ecc.
8. Genera un elenco di dispositivi USB affidabili
Per creare un elenco di dispositivi USB autorizzati, usa authgen
opzione:
$ sudo usbrip events genauth ~/auth.json -a vid pid -n 10 -d '2021-03-29'
Questo comando genererà un elenco di dispositivi USB affidabili come file JSON chiamato auth.json
contenente i primi 10 dispositivi collegati il 29 marzo 2021. Inoltre, questo file conterrà solo i dettagli degli attributi VID e PID.
9. Cerca le violazioni
Se desideri verificare la presenza di accessi USB non autorizzati, cerca semplicemente in auth.json
file che abbiamo creato in precedenza.
$ sudo usbrip events violations ~/auth.json
Puoi anche filtrare l'output a tuo piacimento.
Esempio:
$ sudo usbrip events violations ~/auth.json -a pid -et --host ostechnix --manufact Logitech --serial 0123456789 -c conn disconn
Questo comando cercherà la cronologia degli eventi dei dispositivi USB esterni per le violazioni in base all'elenco dei dispositivi USB attendibili (~/auth.json) per attributo "PID", limitando gli eventi risultanti a quelli che hanno "otechnix" come nome host, " Logitech" come produttore, "0123456789" come numero di serie e visualizza l'output come una tabella con le colonne "Connected", "Disconnected".
Se un dispositivo USB appare nella cronologia ma non in auth.json
file, possiamo dire che c'è un evento di violazione.
Per maggiori dettagli sull'utilizzo, fare riferimento alla pagina GitHub del progetto indicata di seguito.