GNU/Linux >> Tutoriels Linux >  >> Linux

Afficher l'historique des événements des périphériques USB à l'aide d'Usbrip sous Linux

Ce guide explique ce qu'est Usbrip programme, comment suivre les détails des périphériques USB connectés ou déconnectés et également comment afficher l'historique des événements des périphériques USB à l'aide de l'outil Usbrip sous Linux.

Présentation

De nos jours, les périphériques USB sont répandus. Vous devriez utiliser de nombreux appareils avec un connecteur USB tels qu'un lecteur flash, un lecteur externe, une souris, un clavier, une imprimante, un chargeur de téléphone portable toute la journée, tous les jours. Comme tous les autres événements, l'historique des connexions USB est également suivi par le système d'exploitation Linux. Chaque fois que vous connectez ou déconnectez un périphérique USB, l'historique des événements des périphériques USB est suivi et stocké dans un ou plusieurs des fichiers suivants de votre système Linux :

  • /var/log/dmesg
  • /var/log/daemon.log
  • /var/log/kern.log
  • /var/log/syslog
  • /var/log/messages

Vous pouvez parcourir manuellement ces fichiers pour connaître l'historique de vos connexions USB ou utiliser un outil qui permet d'organiser facilement les artefacts USB dans un format de colonne tabulaire soigné. L'un de ces outils pour suivre l'historique des événements USB est Usbrip .

À propos d'Usbrip

Usbrip est un outil d'investigation en ligne de commande permettant de suivre l'historique de toutes les connexions de périphériques USB sous Linux. Il analyse les données de journal de votre système à l'aide de journelctl commande ou à partir de fichiers journaux tels que /var/log/syslog et /var/log/messages et affiche l'historique des événements USB collectés dans la sortie standard ou dans un fichier.

Le programme usbrip suit les artefacts du périphérique USB et les répertorie dans les colonnes suivantes :

  1. Connecté (date et heure)
  2. Hébergeur
  3. VID (identifiant du fournisseur)
  4. PID (identifiant du produit)
  5. Produit
  6. Fabricant
  7. Numéro de série
  8. Port
  9. Déconnecté" (date et heure)

Usbrip est un outil gratuit et open source écrit en Python 3 . Pour ceux qui se demandent, le nom Usbrip est dérivé des deux mots - USB et Ripper . Ce n'est pas USB R.I.P.

Fonctionnalités Usbrip

Usbrip a quelques fonctionnalités intéressantes. J'aimerais mentionner les trois caractéristiques notables suivantes.

1. Trouver un accès USB non autorisé

C'est le but principal de l'outil Usbrip. En utilisant l'outil usbrip, nous pouvons prouver qu'un périphérique USB a été connecté à un système Linux spécifique, par un utilisateur spécifique, dans un intervalle de temps spécifique. En général, nous pouvons utiliser Usbrip dans tous les cas où des périphériques USB sont impliqués.

Comme indiqué précédemment, vous pouvez exporter tous les détails de connexion USB dans un JSON dossier. Pourquoi vidons-nous les détails dans un fichier JSON ? Parce que nous pouvons facilement rechercher des "événements de violation". Par exemple, nous pourrions créer un fichier, disons auth.json , et stockez la liste des périphériques USB autorisés ou de confiance dans ce fichier.

Le auth.json peut être utilisé pour rechercher quels périphériques USB ont été connectés et s'il s'agit de périphériques autorisés ou non. De cette façon, il est possible de savoir si un utilisateur a copié quelque chose de votre système sans votre permission.

Veuillez noter que si vous installez usbrip en utilisant le script d'installation, le auth.json le fichier sera automatiquement créé à l'emplacement /var/opt/usbrip/trusted/ au moment de l'installation. Vous pouvez également créer le vôtre à n'importe quel endroit de votre choix.

2. Rechercher les détails du périphérique USB

Si vous souhaitez connaître les détails des spécifications d'un périphérique USB, vous pouvez facilement les obtenir en utilisant son VID ou son PID. Usbbrip récupérera les détails des fournisseurs, des appareils et des interfaces à partir du usb.ids base de données maintenue à http://www.linux-usb.org/ .

3. Sauvegarder les événements USB

Si vous avez installé Usbrip manuellement avec -s (--storages ), vous pouvez sauvegarder automatiquement les événements USB avec le planificateur crontab.

Voyons maintenant comment installer et utiliser Usbrip sous Linux pour collecter les événements de connexion USB.

Installer Usbrip sous Linux

Puisque Usbrip est écrit en Python, nous pouvons l'installer en utilisant Pip gestionnaire de paquets.

$ pip install usbrip

Si vous avez installé usbrip avec pip, certaines fonctionnalités ne seront pas disponibles. Pour obtenir toutes les fonctionnalités, vous devez installer manuellement usbrip à l'aide de son script d'installation appelé install.sh .

Tout d'abord, assurez-vous d'avoir installé les prérequis nécessaires :

  • python3-venv
  • p7zip

Sur Debian, Ubuntu et ses dérivés, vous pouvez les installer comme indiqué ci-dessous :

$ sudo apt install python3-venv p7zip-full

Référentiel usbrip de clone Git :

$ git clone https://github.com/snovvcrash/usbrip.git usbrip

La commande ci-dessus clonera le contenu du référentiel usbrip et le stockera dans un répertoire nommé "usbrip" dans votre répertoire actuel.

Cd dans le répertoire usbrip :

$ cd usbrip

Rendre le script d'installation exécutable :

$ chmod +x ./installers/install.sh

Et enfin installez-le en utilisant la commande :

$ sudo -H ./installers/install.sh -s

Ici, nous avons utilisé -s drapeau pour activer le module de stockage. Cela installera non seulement le programme usbrip, mais créera également la liste des périphériques USB de confiance, l'historique et les stockages des violations. Notez votre mot de passe secret. Vous pourriez en avoir besoin plus tard.

Une fois l'installation terminée, vous pouvez supprimer le répertoire cloné :

$ cd
$ rm -r usbrip/

Afficher l'historique des événements des périphériques USB à l'aide d'Usbrip sous Linux

Avant de commencer à l'utiliser, prenons connaissance de la liste des options générales et des drapeaux disponibles.

1. Obtenir de l'aide

Pour afficher la section d'aide du programme Usbrip, exécutez simplement :

$ usbrip --help

Exemple de résultat :

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

Comme vous pouvez le voir, il existe quatre commandes principales, à savoir banner , events , storage , et ids .

Pour afficher la liste des sous-commandes d'une commande principale spécifique, exécutez :

$ usbrip <command> --help

Exemple :

$ usbrip events --help

Pour répertorier tous les commutateurs liés à une sous-commande spécifique, par exemple events , exécutez :

$ usbrip events genauth --help

2. Afficher l'historique de connexion des périphériques USB

Pour afficher l'historique des connexions de périphériques USB, exécutez :

$ usbrip events history

Vous serez invité à indiquer si vous souhaitez afficher l'historique des événements USB dans la sortie standard ou dans un fichier JSON. Si vous souhaitez afficher la sortie, appuyez simplement sur ENTER (qui est la valeur par défaut) ou tapez le numéro 2 pour l'enregistrer dans un fichier JSON.

Je vais avec la sortie par défaut, donc j'obtiens cette longue sortie :

                   
         _     {{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

Par défaut, Usbrip affichera le résultat sous forme de colonne tabulaire. Étant donné que ma fenêtre Terminal est trop petite pour afficher correctement le tableau, la sortie est affichée sous forme de liste. Si vous voulez insister pour qu'Usbrip affiche quand même le résultat sous forme de colonne tabulaire, ajoutez -t drapeau :

$ usbrip events history -t

Vous pouvez personnaliser la sortie selon votre goût. Dans l'exemple suivant, j'ai utilisé -q/--quiet drapeau pour supprimer la bannière et d'autres informations sur l'utilisateur, -l/--list pour afficher la sortie sous forme de liste et -n/--number pour afficher un nombre spécifique de sorties.

$ usbrip events history -ql -n 2

La commande ci-dessus n'affichera que le dernier 2 Événements de l'historique USB sans la bannière, le message d'information et l'invite d'interaction de l'utilisateur.

Exemple de résultat :

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. Enregistrer l'historique des événements USB dans un fichier

Au lieu d'afficher l'historique des événements dans la sortie standard, nous pouvons l'enregistrer dans un fichier au format JSON.

Pour ce faire, exécutez la commande pour afficher l'historique des événements USB :

$ usbrip events history

Tapez 2 lorsque vous êtes invité à choisir comment vous souhaitez enregistrer la sortie. Il vous sera à nouveau demandé d'entrer l'emplacement du nom du fichier de sortie. Entrez simplement un emplacement de votre choix ou appuyez sur ENTRÉE pour l'enregistrer dans le fichier par défaut appelé history.json dans le $HOME répertoire.

                      
         _     {{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

Vous pouvez afficher ce fichier à tout moment en utilisant la commande :

$ usbrip events open history.json

4. Afficher l'historique des événements des périphériques USB externes

Pour afficher l'historique de connexion des appareils externes, utilisez -e , --external drapeau :

$ usbrip events history -q -e

5. Afficher l'historique des événements USB entre une période spécifique

Nous pouvons utiliser -d , --date drapeau pour afficher l'historique des événements des périphériques USB entre une certaine période de temps. Par exemple, cette commande affiche l'historique des événements qui ont eu lieu entre janvier 2021 et mars 2021 :

 $ usbrip events history -q -d '2021-01-01' '2021-03-29'

6. Afficher uniquement certaines informations

Vous pourriez être intéressé à voir les événements spécifiques des connexions USB. Par exemple, la commande suivante vous donnera les détails des colonnes à savoir Connecté, Déconnecté, Série et Nom du produit uniquement :

$ usbrip events history -q -c conn disconn serial prod -n 20

Ici, -n 20 est utilisée pour afficher les 20 derniers enregistrements.

7. Rechercher les détails de périphériques USB spécifiques

Vous pourriez être intéressé à afficher l'historique des événements d'un appareil spécifique. Si c'est le cas, vous pouvez utiliser le --manufact flag pour afficher ces détails :

Dans l'exemple suivant, j'ai affiché les 15 événements récents de mon récepteur sans fil Logitech. J'ai également répertorié les détails de seulement 4 colonnes, à savoir Connecté, Déconnecté, Série et Produit.

$ usbrip events history -q -c conn disconn serial prod --manufact Logitech -n 15

De même, vous pouvez filtrer les événements USB en combinant de nombreux champs tels que PID, VID, port, nom d'hôte, numéro de série, etc.

8. Générer une liste de périphériques USB de confiance

Pour créer une liste de périphériques USB autorisés, utilisez authgen choix :

$ sudo usbrip events genauth ~/auth.json -a vid pid -n 10 -d '2021-03-29'

Cette commande générera une liste de périphériques USB de confiance sous la forme d'un fichier JSON appelé auth.json contenant les 10 premiers appareils connectés le 29 mars 2021. De plus, ce fichier ne contiendra que les détails des attributs VID et PID.

9. Rechercher des violations

Si vous souhaitez vérifier tout accès USB non autorisé, recherchez simplement dans le auth.json fichier que nous avons créé plus tôt.

$ sudo usbrip events violations ~/auth.json

Vous pouvez également filtrer la sortie selon votre goût.

Exemple :

$ sudo usbrip events violations ~/auth.json -a pid -et --host ostechnix --manufact Logitech --serial 0123456789 -c conn disconn

Cette commande recherchera dans l'historique des événements des périphériques USB externes des violations basées sur la liste des périphériques USB de confiance (~/auth.json) par attribut "PID", restreindra les événements résultants à ceux qui ont "ostechnix" comme nom d'hôte, " Logitech" en tant que fabricant, "0123456789" comme numéro de série et affiche la sortie sous forme de tableau avec des colonnes "Connecté", "Déconnecté".

Si un périphérique USB apparaît dans l'historique mais pas dans le auth.json fichier, nous pouvons dire qu'il y a un événement de violation.

Pour plus de détails sur l'utilisation, reportez-vous à la page GitHub du projet ci-dessous.


Linux
  1. Déboguer Linux avec ProcDump

  2. Développer des applications réseau pour ESP8266 à l'aide de Mongoose sous Linux

  3. Comment graver un fichier ISO sur une clé USB sous Linux à l'aide d'Etcher

  4. Augmenter le taux d'interrogation USB sur tous les appareils sous Linux ?

  5. Utilisation de plusieurs webcams USB sous Linux

Reconnaître plus d'appareils sous Linux avec ce référentiel d'ID USB

Comment afficher les utilisateurs de MySQL avec Linux

Commande d'historique sous Linux (historique de bash)

Créer une clé USB amorçable persistante à l'aide de Ventoy sous Linux

Comment chiffrer les périphériques de bloc à l'aide de LUKS sous Linux

Haut débit USB :comment connecter des périphériques modem USB sous Linux