GNU/Linux >> Linux Esercitazione >  >> Linux

Mostra la cronologia degli eventi dei dispositivi USB utilizzando Usbrip in Linux

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:

  1. Connesso (data e ora)
  2. Ospite
  3. VID (ID fornitore)
  4. PID (ID prodotto)
  5. Prodotto
  6. Produttore
  7. Numero di serie
  8. Porto
  9. 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.


Linux
  1. Sviluppa applicazioni di rete per ESP8266 utilizzando Mongoose in Linux

  2. Come masterizzare un file ISO su un'unità USB in Linux usando Etcher

  3. Cronologia della riga di comando in Linux

  4. Comando della cronologia di Linux

  5. Aumentare la frequenza di polling USB su tutti i dispositivi in ​​Linux?

Riconosci più dispositivi su Linux con questo repository di ID USB

Come mostrare gli utenti in MySQL usando Linux

Comando della cronologia in Linux (Cronologia di Bash)

Crea USB avviabile persistente usando Ventoy in Linux

Come crittografare i dispositivi a blocchi utilizzando LUKS su Linux

Banda larga USB:come collegare dispositivi modem USB su Linux