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:
- Verbunden (Datum &Uhrzeit)
- Host
- VID (Anbieter-ID)
- PID (Produkt-ID)
- Produkt
- Hersteller
- Seriennummer
- Hafen
- 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.