GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Zeigen Sie den Ereignisverlauf von USB-Geräten mit Usbrip in Linux an

In dieser Anleitung wird erklärt, was Usbrip ist Programm, wie man die Details von angeschlossenen oder getrennten USB-Geräten verfolgt und auch wie man den Ereignisverlauf von USB-Geräten mit dem Usbrip-Tool in Linux anzeigt.

Einführung

Heutzutage sind USB-Geräte weit verbreitet. Sie sollten den ganzen Tag über viele Geräte mit einem USB-Anschluss verwenden, z. B. Flash-Laufwerke, externe Laufwerke, Mäuse, Tastaturen, Drucker und Ladegeräte für Mobiltelefone. Wie alle anderen Ereignisse wird auch der Verlauf von USB-Verbindungen vom Linux-Betriebssystem verfolgt. Immer wenn Sie ein USB-Gerät anschließen oder trennen, wird der Ereignisverlauf des USB-Geräts verfolgt und in einer oder mehreren der folgenden Dateien in Ihrem Linux-System gespeichert:

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

Sie können diese Dateien manuell durchgehen, um den Verlauf Ihrer USB-Verbindungen zu erfahren, oder ein Tool verwenden, mit dem Sie die USB-Artefakte einfach in einem übersichtlichen Tabellenspaltenformat organisieren können. Ein solches Tool zum Verfolgen des USB-Ereignisverlaufs ist Usbrip .

Über Usbrip

Usbrip ist ein Befehlszeilen-Forensik-Tool, um den Verlauf aller USB-Geräteverbindungen in Linux zu verfolgen. Es analysiert die Protokolldaten Ihres Systems mit journelctl Befehl oder aus Protokolldateien wie /var/log/syslog und /var/log/messages und zeigt den gesammelten USB-Ereignisverlauf in der Standardausgabe oder einer Datei an.

Das usbrip-Programm verfolgt die USB-Geräteartefakte und listet sie in den folgenden Spalten auf:

  1. Verbunden (Datum &Uhrzeit)
  2. Host
  3. VID (Anbieter-ID)
  4. PID (Produkt-ID)
  5. Produkt
  6. Hersteller
  7. Seriennummer
  8. Hafen
  9. Getrennt" (Datum &Uhrzeit)

Usbrip ist ein kostenloses Open-Source-Tool, das in Python 3 geschrieben wurde . Für diejenigen, die sich fragen, der Name Usbrip leitet sich von den beiden Wörtern ab - USB und Ripper . Es ist kein USB R.I.P.

Usbrip-Funktionen

Usbrip hat ein paar interessante Funktionen. Ich möchte die folgenden drei bemerkenswerten Merkmale erwähnen.

1. Finden Sie nicht autorisierten USB-Zugriff

Dies ist der Hauptzweck des Usbrip-Tools. Mit dem Tool usbrip können wir nachweisen, dass ein USB-Gerät von einem bestimmten Benutzer innerhalb eines bestimmten Zeitintervalls an ein bestimmtes Linux-System angeschlossen wurde. Generell können wir Usbrip in allen Fällen verwenden, in denen es um USB-Geräte geht.

Wie bereits erwähnt, können Sie alle USB-Verbindungsdetails in einem JSON exportieren Datei. Warum speichern wir die Details in einer JSON-Datei? Denn wir können ganz einfach nach „Verletzungsereignissen“ suchen. Zum Beispiel könnten wir eine Datei erstellen, sagen wir auth.json , und speichern Sie die Liste der autorisierten oder vertrauenswürdigen USB-Geräte in dieser Datei.

Die auth.json Datei kann verwendet werden, um zu untersuchen, welche USB-Geräte angeschlossen wurden und ob es sich um autorisierte Geräte handelt oder nicht. Auf diese Weise ist es möglich herauszufinden, ob ein Benutzer ohne Ihre Erlaubnis etwas von Ihrem System kopiert hat.

Bitte beachten Sie, dass bei der Installation von usbrip mit dem Installationsskript die auth.json Die Datei wird automatisch im Verzeichnis /var/opt/usbrip/trusted/ erstellt zum Zeitpunkt der Installation. Sie können auch an einem beliebigen Ort Ihrer Wahl Ihre eigenen erstellen.

2. Details zum USB-Gerät finden

Wenn Sie die Spezifikationsdetails eines USB-Geräts erfahren möchten, können Sie diese einfach anhand der VID oder PID abrufen. Usbbrip ruft die Details von Anbietern, Geräten und Schnittstellen aus der usb.ids ab Datenbank gepflegt unter http://www.linux-usb.org/ .

3. USB-Ereignisse sichern

Wenn Sie Usbrip manuell mit -s installiert haben (--storages )-Option können Sie USB-Ereignisse automatisch mit dem crontab-Scheduler sichern.

Lassen Sie uns nun sehen, wie Sie Usbrip unter Linux installieren und verwenden, um USB-Verbindungsereignisse zu erfassen.

Installieren Sie Usbrip unter Linux

Da Usbrip in Python geschrieben ist, können wir es mit Pip installieren Paketmanager.

$ pip install usbrip

Wenn Sie usbrip mit pip installiert haben, sind einige Funktionen nicht verfügbar. Um alle Funktionen zu erhalten, sollten Sie usbrip manuell mit seinem Installationsskript namens install.sh installieren .

Stellen Sie zunächst sicher, dass Sie die erforderlichen Voraussetzungen installiert haben:

  • python3-venv
  • p7zip

Unter Debian, Ubuntu und seinen Derivaten können Sie sie wie unten gezeigt installieren:

$ sudo apt install python3-venv p7zip-full

Git-Klon-usbrip-Repository:

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

Der obige Befehl klont den Inhalt des usbrip-Repositorys und speichert ihn in einem Verzeichnis namens "usbrip" in Ihrem aktuellen Verzeichnis.

Cd in das usbrip-Verzeichnis:

$ cd usbrip

Machen Sie das Installationsskript ausführbar:

$ chmod +x ./installers/install.sh

Und schließlich installieren Sie es mit dem Befehl:

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

Hier haben wir -s verwendet Flag zum Aktivieren des Speichermoduls. Dadurch wird nicht nur das usbrip-Programm installiert, sondern auch die Liste der vertrauenswürdigen USB-Geräte, des Verlaufs und der Verstöße erstellt. Notieren Sie sich Ihr geheimes Passwort. Möglicherweise benötigen Sie es später.

Sobald die Installation abgeschlossen ist, können Sie das geklonte Verzeichnis entfernen:

$ cd
$ rm -r usbrip/

Ereignisverlauf von USB-Geräten mit Usbrip in Linux anzeigen

Bevor Sie es verwenden, lassen Sie uns die Liste der allgemeinen Optionen und verfügbaren Flags kennen.

1. Hilfe bekommen

Um den Hilfebereich des Usbrip-Programms anzuzeigen, führen Sie einfach Folgendes aus:

$ usbrip --help

Beispielausgabe:

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

Wie Sie sehen können, gibt es vier Hauptbefehle, nämlich banner , events , storage und ids .

Führen Sie Folgendes aus, um die Liste der Unterbefehle für einen bestimmten Hauptbefehl anzuzeigen:

$ usbrip <command> --help

Beispiel:

$ usbrip events --help

Um alle Schalter aufzulisten, die sich auf einen bestimmten Unterbefehl beziehen, zum Beispiel events , ausführen:

$ usbrip events genauth --help

2. Verbindungsverlauf des USB-Geräts anzeigen

Um den Verlauf der USB-Geräteverbindungen anzuzeigen, führen Sie Folgendes aus:

$ usbrip events history

Sie werden gefragt, ob Sie den USB-Ereignisverlauf in der Standardausgabe oder in einer JSON-Datei anzeigen möchten. Wenn Sie die Ausgabe anzeigen möchten, drücken Sie einfach die EINGABETASTE (das ist die Standardeinstellung) oder geben Sie die Zahl 2 ein um es in einer JSON-Datei zu speichern.

Ich gehe mit der Standardausgabe, daher bekomme ich diese lange Ausgabe:

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

Standardmäßig zeigt Usbrip das Ergebnis im tabellarischen Spaltenformat an. Da mein Terminalfenster zu klein ist, um die Tabelle richtig anzuzeigen, wird die Ausgabe im Listenformat angezeigt. Wenn Sie darauf bestehen wollen, dass Usbrip das Ergebnis trotzdem im tabellarischen Spaltenformat anzeigt, fügen Sie -t hinzu Flagge:

$ usbrip events history -t

Sie können die Ausgabe nach Ihren Wünschen anpassen. Im folgenden Beispiel habe ich -q/--quiet verwendet Flag, um das Banner und andere Benutzerinformationen zu unterdrücken, -l/--list um die Ausgabe im Listenformat und -n/--number anzuzeigen um eine bestimmte Anzahl von Ausgängen anzuzeigen.

$ usbrip events history -ql -n 2

Der obige Befehl zeigt nur die letzten 2 an USB-Verlaufsereignisse ohne Banner, Infomeldung und Eingabeaufforderung zur Benutzerinteraktion.

Beispielausgabe:

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. USB-Ereignisverlauf in einer Datei speichern

Anstatt den Ereignisverlauf in der Standardausgabe anzuzeigen, können wir ihn in einer Datei im JSON-Format speichern.

Führen Sie dazu den Befehl zum Anzeigen des USB-Ereignisverlaufs aus:

$ usbrip events history

Geben Sie 2 ein, wenn Sie aufgefordert werden auszuwählen, wie Sie die Ausgabe speichern möchten. Sie werden erneut aufgefordert, den Speicherort des Ausgabedateinamens einzugeben. Geben Sie einfach einen Speicherort Ihrer Wahl ein oder drücken Sie die EINGABETASTE, um ihn in der Standarddatei mit dem Namen history.json zu speichern im $HOME Verzeichnis.

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

Sie können diese Datei jederzeit mit dem Befehl:

anzeigen
$ usbrip events open history.json

4. Ereignisverlauf für externe USB-Geräte anzeigen

Um den Verbindungsverlauf externer Geräte anzuzeigen, verwenden Sie -e , --external Flagge:

$ usbrip events history -q -e

5. USB-Ereignisverlauf zwischen einem bestimmten Zeitraum anzeigen

Wir können -d verwenden , --date Flag, um den Ereignisverlauf des USB-Geräts zwischen bestimmten Zeiträumen anzuzeigen. Dieser Befehl zeigt beispielsweise den Ereignisverlauf an, der zwischen Januar 2021 und März 2021 stattgefunden hat:

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

6. Nur bestimmte Informationen anzeigen

Sie könnten daran interessiert sein, die spezifischen Ereignisse von USB-Verbindungen anzuzeigen. Mit dem folgenden Befehl erhalten Sie beispielsweise nur die Details der Spalten Connected, Disconnected, Serial und Product name:

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

Hier -n 20 Option wird verwendet, um die letzten 20 Datensätze anzuzeigen.

7. Details bestimmter USB-Geräte suchen

Möglicherweise möchten Sie den Ereignisverlauf eines bestimmten Geräts anzeigen. In diesem Fall können Sie den --manufact verwenden markieren, um solche Details anzuzeigen:

Im folgenden Beispiel habe ich die letzten 15 Ereignisse meines drahtlosen Logitech-Empfängers angezeigt. Ich habe auch die Details von nur 4 Spalten aufgelistet, nämlich Verbunden, Getrennt, Seriell und Produkt.

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

Ebenso können Sie die USB-Ereignisse filtern, indem Sie viele Felder wie PID, VID, Port, Hostname, Seriennummer usw. kombinieren.

8. Erstellen Sie eine Liste mit vertrauenswürdigen USB-Geräten

Um eine Liste autorisierter USB-Geräte zu erstellen, verwenden Sie authgen Möglichkeit:

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

Dieser Befehl generiert eine Liste vertrauenswürdiger USB-Geräte als JSON-Datei namens auth.json enthält die ersten 10 Geräte, die am 29. März 2021 verbunden wurden. Außerdem enthält diese Datei nur die Details der VID- und PID-Attribute.

9. Nach Verstößen suchen

Wenn Sie nach unbefugtem USB-Zugriff suchen möchten, durchsuchen Sie einfach die Datei auth.json Datei, die wir zuvor erstellt haben.

$ sudo usbrip events violations ~/auth.json

Sie können die Ausgabe auch nach Ihren Wünschen filtern.

Beispiel:

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

Dieser Befehl durchsucht den Ereignisverlauf der externen USB-Geräte nach Verstößen basierend auf der Liste der vertrauenswürdigen USB-Geräte (~/auth.json) nach dem „PID“-Attribut, beschränkt die resultierenden Ereignisse auf diejenigen, die „ostechnix“ als Hostnamen haben, „ Logitech“ als Hersteller, „0123456789“ als Seriennummer und zeigen die Ausgabe als Tabelle mit den Spalten „Verbunden“, „Getrennt“ an.

Wenn ein USB-Gerät im Verlauf, aber nicht in auth.json erscheint -Datei können wir sagen, dass ein Verletzungsereignis vorliegt.

Weitere Details zur Verwendung finden Sie auf der unten angegebenen GitHub-Seite des Projekts.


Linux
  1. Debuggen Sie Linux mit ProcDump

  2. Entwickeln Sie Netzwerkanwendungen für ESP8266 mit Mongoose unter Linux

  3. So brennen Sie eine ISO-Datei unter Linux mit Etcher auf ein USB-Laufwerk

  4. Analysieren des Bash-Verlaufs unter Linux

  5. Verwenden von Wortmodifikatoren mit Bash-Verlauf in Linux

Erkennen Sie mehr Geräte unter Linux mit diesem USB-ID-Repository

So zeigen Sie Benutzer in MySQL mit Linux an

Verlaufsbefehl in Linux (Bash-Verlauf)

Erstellen Sie einen persistenten bootfähigen USB-Stick mit Ventoy in Linux

So verschlüsseln Sie Blockgeräte mit LUKS unter Linux

USB-Breitband:So verbinden Sie USB-Modemgeräte unter Linux