Linux-Forensik in Form der Verfolgung des Verbindungsverlaufs von USB-Geräten. Linux-Forensik in Form der Verfolgung des Verbindungsverlaufs von USB-Geräten. Anzeige angeschlossener USB-Geräte

💖 Gefällt es dir? Teilen Sie den Link mit Ihren Freunden

Beim Anschließen eines USB-Flash-Laufwerks oder eines anderen USB-Geräte und auf dem Computer wird eine Reihe von Dateien erstellt, mit denen Sie darauf zugreifen können. Wenn Sie arbeiten Dateimanager Alles ist recht einfach, aber sobald es um die Konsole geht, wird alles viel schwieriger.

Für jeden Einsteiger ist es wichtig, angeschlossene Geräte identifizieren zu können, seien es USB-Sticks, SD-Karten o.ä Festplatten um nicht etwas an der falschen Stelle zu schreiben oder die falsche Festplatte zu formatieren. In diesem Artikel betrachten wir verschiedene Möglichkeiten, an einen Computer angeschlossene Linux-USB-Geräte anzuzeigen.

Im Operationssaal Linux-System Es kommt eine spezielle Managementphilosophie zum Einsatz. Alle Objekte, einschließlich Geräte, gelten als Dateien. Wenn ein Gerät mit dem System verbunden wird, wird eine Datei dafür im Verzeichnis /dev/ erstellt.

Normalerweise wird das Gerät automatisch im Ordner /media/username/device_label/ gemountet, nachdem Sie ein USB-Flash-Laufwerk oder ein anderes Speichergerät an ein System mit installierter Desktop-Umgebung angeschlossen haben, und Sie können dann vom Gerät aus auf die Dateien in diesem Ordner zugreifen . Es gibt jedoch Situationen, in denen Sie den USB-Stick manuell mounten müssen und diese Option dann nicht hilft.

Alle Gerätedateien befinden sich im Verzeichnis /dev/. Hier finden Sie die SDA- und HDA-Dateien Festplatte sowie SDA1- oder HDA1-Dateien, die Ihnen den Zugriff auf Festplattenpartitionen ermöglichen. All das haben wir im Artikel bereits ausführlich besprochen. Mit dem folgenden Befehl können Sie eine Liste aller Geräte im Verzeichnis /dev/ anzeigen:

Nun muss noch geklärt werden, welche dieser Gerätedateien zu USB-Geräten gehören und welche Geräte genau.

So zeigen Sie Linux-USB-Geräte an

Um detailliertere Informationen zu jedem an Ihr System angeschlossenen Gerät zu erhalten und eine Liste der Linux-Geräte anzuzeigen, können Sie den Befehl df verwenden. Es wird verwendet, um den freien Speicherplatz anzuzeigen:

Anhand der Gesamtgröße und des belegten Speicherplatzes können Sie feststellen, welches Gerät Ihr Flash-Laufwerk ist. Diese Art der Anzeige von Linux-Geräten ist jedoch nicht sehr praktisch und funktioniert nur mit einem bereits gemounteten Flash-Laufwerk. Es gibt mehrere weitere, die genauere Informationen liefern.

Der Befehl lsblk zeigt eine Liste aller an Ihren Computer angeschlossenen Blockgeräte an. Das Dienstprogramm zeigt nicht nur ihre Größe, sondern auch ihren Typ (Festplatte/Partition) sowie die Haupt- und Nebengerätenummern an. Hier ist es etwas einfacher, ein Flash-Laufwerk zu finden, wir sehen zwei Festplatten, und wenn die erste mit einer Größe von 698 Gigabyte eine Festplatte ist, dann ist die zweite definitiv ein Flash-Laufwerk:

Es gibt noch eine andere Möglichkeit: das Dienstprogramm fdisk. Damit können Sie die Partitionstabelle auf allen an den Computer angeschlossenen Blockgeräten anzeigen. Das Dienstprogramm muss jedoch als Superuser ausgeführt werden:

Sie können das angeschlossene USB-Gerät auch herausfinden, indem Sie sich die Kernel-Nachrichtenwarteschlange dmesg ansehen. Hier werden Informationen zu allen Vorgängen gespeichert, die im Kernel stattfinden. Hier wird der Name des gerade an den Computer angeschlossenen Flash-Laufwerks angezeigt. Um Kernel-Meldungen anzuzeigen, führen Sie Folgendes aus:

Um zu sehen, welche der SD-Geräte USB sind, verwenden Sie den folgenden Befehl:

ls -l /dev/disk/by-id/usb*

USB-Unterstützung ist seit Version 2.2.7 im Kernel enthalten und wir können sagen, dass diese Technologie bereits getestet wurde und es beim Anschluss solcher Geräte keine Probleme geben sollte. Sie müssen lediglich eine Kamera, ein Flash-Laufwerk, einen Drucker oder ein anderes Gerät anschließen und es wird automatisch erkannt. Ob der Drucker funktioniert, hängt beispielsweise von der Verfügbarkeit der Treiber ab.

Um die Situation einschätzen zu können, schauen wir uns an, wie die USB-Unterstützung implementiert ist und wo man nach Informationen zu angeschlossenen Geräten suchen kann, obwohl alles Gesagte teilweise auch für USB gilt. Implementierung der USB-Unterstützung in Linux Linux-USB Project (www.linux-usb.org) ist die Anlaufstelle für Informationen. In heutigen Computern gibt es drei Arten von Controllern, die sich in der Schnittstelle zur Interaktion mit Geräten unterscheiden. Dies sind OHCI (Open Host Controller Interface), UHCI (Universal Host Controller Interface) und EHCI (Enhanced Host Controller Interface). Die ersten beiden unterstützen die USB-Version 1.1, die letzte Version 2.0 bietet Übertragungsgeschwindigkeiten von bis zu 480 Mbit/s. UHCI-Controller sind etwas einfacher und günstiger, benötigen aber aufwendige Treiber und belasten den Prozessor stärker. Es ist immer noch sehr einfach, Ihren Controller-Typ herauszufinden:

$lspci -v
00:02.0 USB-Controller: nVidia Corporation MCP55 USB-Controller (rev a1) (prog-if 10)

Flags: Busmaster, 66 MHz, schnelles Devsel, Latenz 0, IRQ 11
Speicher bei fe02f000 (32-Bit, nicht vorabrufbar)
Fähigkeiten:

00:02.1 USB-Controller: nVidia Corporation MCP55 USB-Controller (rev a2) (prog-if 20)
Subsystem: Biostar Microtech Int'l Corp. Unbekanntes Gerät 3405
Flags: Busmaster, 66 MHz, schnelles Devsel, Latenz 0, IRQ 5
Speicher bei fe02e000 (32-Bit, nicht vorabrufbar)
Fähigkeiten:

Wie Sie sehen, habe ich beide Arten von Controllern: OHCI und EHCI. Wenn Sie einen selbst zusammengestellten Kernel verwenden, aktivieren Sie den erforderlichen Treiber im Punkt „USB Host Controller Drivers“. Ich werde Sie nicht mit allen Optionen belasten; alle Parameter, die im Kernel verfügbar sind, können durch Eingabe von „cat /usr/src/linux/.config |“ angezeigt werden grep -i usb".

Denken Sie auch daran, dass die Arbeit mit USB durch SCSI-Emulation erfolgt, sodass Sie die Parameter für die SCSI-Unterstützung aktivieren müssen.
Um direkt mit USB-Geräten arbeiten zu können, wird im virtuellen Dateisystem /proc ein Verzeichnis /proc/bus/usb erstellt, das über /etc/fstab gemountet wird:

keine /proc/bus/usb usbfs noauto 0 0
Wenn Ihre Datei keine solche Zeile enthält, kann dies bedeuten, dass die Entwickler Sie vor unnötigen Gedanken bewahrt haben und USBFs in den Startskripten einbinden. In welchem ​​konkreten Skript dies geschieht, erfahren Sie durch die Eingabe von „ sudo grep -iR "usbfs" /etc/*". In KUbuntu ist beispielsweise ein Skript für das Mounten von USB verantwortlich /etc/init.d/mountdevsubfs.sh. Sie können das Dateisystem für USB wie folgt manuell in /proc/bus/usb mounten:

$ sudo mount -t usbdevfs none /proc/bus/usb

Danach folgt der Befehl „ montieren | grep usbfs" sollte das Vorhandensein der Zeile anzeigen:

procbususb auf /proc/bus/usb Typ usbfs (rw)

Und das Fazit“ lsmod» geladene Module usbcore, Treibermodul ohci_hcd, ehci_hcd, uhci_hcs, sowie ein Modul, das dem Treiber des angeschlossenen Geräts entspricht scanner.o, drucker.o, usb_storage.
Informationen zum Anschließen eines USB-Geräts erhalten Sie unter /var/log/dmesg und direkt von /proc. Wenn das Verzeichnis /proc/bus/usb leer bedeutet, dass das virtuelle USB-Dateisystem nicht gemountet ist. Innerhalb des Verzeichnisses sollten sich mehrere Dateien mit Namen wie 001, 002 entsprechend der Anzahl der Controller und eine Gerätedatei befinden, die über alle Geräte „weiß“:

$ cat /proc/bus/usb/devices

T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh=10
B: Alloc= 0/800 us (0 %), #Int= 0, #Iso= 0
D: Ver= 2,00 Cls=09(Hub) Sub=00 Prot=01 MxPS=64 #Cfgs= 1

S: Hersteller=Linux 2.6.20-15-generic ehci_hcd
S: Produkt=EHCI-Host-Controller
S: Seriennummer=0000:00:02.1


E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh=10
B: Alloc= 0/900 us (0 %), #Int= 0, #Iso= 0
D: Ver= 1,10 Cls=09(Hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 2.06
S: Hersteller=Linux 2.6.20-15-generic ohci_hcd
S: Produkt=OHCI-Host-Controller
S: Seriennummer=0000:00:02.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(Hub) Sub=00 Prot=00 Driver=Hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms

T: Bus=01 Lev=01 Prnt=01 Port=07 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1307 ProdID=0163 Rev= 1.00
S: Hersteller=????????y
S: Produkt=USB-Massenspeichergerät
S: Seriennummer=9fe1ad57805553
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 80mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=16ms

Es ist einfach, die Ausgabe zu entschlüsseln. Suchen Sie nach Details in der Dokumentation ( /usr/src//Documentation/usb/proc_usb_info.txt). Lassen Sie mich nur sagen, dass der Brief T gibt die Topologie an, Bus Und Ebene zeigt an, an welchem ​​Bus das Gerät angeschlossen ist und den Pegel, Spd zeigt die Geschwindigkeit an, MxCh- wie viele andere Geräte können daran angeschlossen werden, Treiber- Fahrer. Driver=hub zeigt beispielsweise an, dass es sich um einen Hub handelt, und Driver=usb-storage ist ein USB-Gerät zum Speichern von Informationen.
Im KUbuntu-Repository finden Sie mehrere Dienstprogramme, die Ihnen helfen, USB zu verstehen. Wenn Sie also lsusb verwenden, erhalten Sie noch mehr Informationen über USB-Geräte. Wenn Ihnen die Konsole nicht gefällt, verwenden Sie usbview.

Das ist im Grunde alles, was ich über den Anschluss heißer Geräte an einen Computer mit Linux sagen wollte. Ich hoffe, dass Sie ab heute keine Probleme mehr damit haben werden.




Im Rahmen meines Eintauchens in eine der Disziplinen (während meines Studiums in der Fachrichtung Compeza) habe ich an einem interessanten Projekt gearbeitet, das ich nicht einfach in den Tiefen des „Univer“-Ordners auf einer externen Festplatte vergraben möchte fahren.

Dieses Projekt heißt usbrip und ist ein kleines Open-Source-Konsolendienstprogramm für die Linux-Forensik, insbesondere für die Arbeit mit dem Verlauf von USB-Geräteverbindungen. Das Programm ist in reinem Python 3 geschrieben (unter Verwendung einiger Module von Drittanbietern) und erfordert keine anderen Abhängigkeiten als den Python 3.x-Interpreter und einige Zeilen von Anforderungen.txt, in einer Zeile mit pip3 aufgelöst.

In diesem Beitrag werde ich einige der Funktionen dieser Software beschreiben und ein kurzes Handbuch mit einem Link zur Download-Quelle hinterlassen.

Schneiden! (...ich meine Cut!)

Screenshots

Verbindungsverlauf von austauschbaren USB-Geräten abrufen:


Suchen Weitere Informationenüber ein USB-Gerät nach Modellkennung (PID):

Beschreibung

Wie bekannt, Betriebssystem GNU/Linux-basierte Systeme reagieren sehr empfindlich auf die Protokollierung verschiedener Arten von Ereignissen, und das Anschließen/Trennen von USB-Geräten ist keine Ausnahme. In Kombination mit einer der „Textströme als universelle Schnittstellen“ der UNIX-Philosophie können Informationen über die Artefakte solcher Ereignisse (in unterschiedlichem Detaillierungsgrad) je nach Verteilung in einer oder mehreren der folgenden Dateien gefunden werden:
  • /var/log/kern.log* ;
  • /var/log/syslog* ;
  • /var/log/messages* ;
  • /var/log/dmesg* ;
  • /var/log/daemon.log* .
FORENSIC-PROOF zeigt uns zu diesem Thema sogar dieses Bild (etwas unvollständig, aber egal):

Für seine Arbeit findet usbrip universelle Versionen für alle Linux-Builds, die auf Debian basieren (Ubuntu, Linux Mint usw.) und RPM (CentOS, Fedora, openSUSE usw.), Protokolldateien, nämlich: /var/log/syslog* oder /var/log/messages* , analysiert sie auf der Suche nach notwendige Informationen und verwandelt die gefundenen Spuren von USB-Geräteverbindungen in wunderschöne Platten (oder Listen – was auch immer Sie möchten).

USBrip kann auch:

  • Erstellen Sie Listen autorisierter (vertrauenswürdiger) Geräte in Form von JSON-Dateien.
  • Suche nach „anstößigen Ereignissen“ basierend auf der Liste der vertrauenswürdigen Geräte: Ereignisse (USB-Verbindung/Trennung), die USB-Geräte betrafen, die nicht als vertrauenswürdig markiert waren;
  • Suchen Sie nach zusätzlichen Informationen zu einem USB-Gerät anhand seiner VID (Vendor ID) und/oder PID (Product ID).

Referenz

Holen Sie sich eine Liste der verfügbaren Module:

$ python3 usbrip.py -h
Rufen Sie eine Liste der verfügbaren Submodule für ein bestimmtes Modul ab:

$python3 usbrip.py<модуль>-H
Rufen Sie eine Liste der verfügbaren Optionen für ein bestimmtes Submodul ab:

$python3 usbrip.py<модуль> <подмодуль>-H

Syntax

$ python3 usbrip.py Banner $ python3 usbrip.py Ereignisverlauf [-q] [-t | -l] [-e] [-n ANZAHL DER EREIGNISSE] [-d DATUM [DATUM...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] $ python3 usbrip .py Ereignisse gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-q] [-e] [-n ANZAHL DER EREIGNISSE] [-d DATUM [DATUM...]] [-f LOGFILE [LOGFILE...]] Verstöße gegen $ python3 usbrip.py-Ereignisse<ВХОДНОЙ_ФАЙЛ.JSON>[-q] [-t | -l] [-e] [-n ANZAHL DER EREIGNISSE] [-d DATUM [DATUM...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] $ python3 usbrip .py-IDs suchen [-q] [--vid VID] [--pid PID] [--offline] $ python3 usbrip.py ids herunterladen [-q]

Optionen

Von den Submodulen „Ereignisverlauf“, „Ereignisse gen_auth“, „Verstöße gegen Ereignisse“, „ID-Suche“ und „ID-Download“ unterstützte Optionen: -q, --quiet lassen die Anzeige von Bannern und Informationsmeldungen (grün) aus und tun dies Stellen Sie während der Ausführung keine Fragen ########################################## ## ##################################### Optionen, die vom „Ereignisverlauf“ unterstützt werden. events gen_auth" submodules ", "events Violences": -e, --external sucht nur nach entfernbaren USB-Geräten (mit Verbindungsinformationen) -n ANZAHL DER EREIGNISSE, --number ANZAHL DER EREIGNISSE Die Anzahl der letzten Ereignisse nach Datum, die auftreten angezeigt werden -d DATUM [DATUM. ..], --date DATUM [DATUM...] Liste der Daten, nach denen Ereignisse bei der Suche gefiltert werden -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] Liste der Protokolldateien (falls nicht angegeben, wird der Ereignisverlauf anhand der Standardprotokolldateien durchsucht: /var/log/syslog* oder /var/log/messages*, abhängig von der Betriebssystemversion) ##### ######## ######################################## ######## ###################### Von den Submodulen „Ereignisverlauf“ und „Ereignisverletzungen“ unterstützte Optionen: -t, -- Tabelle generiert eine Ausgabe in Form einer Tabelle (wenn die Größe des Terminalfensters nicht ausreicht, um die Tabelle korrekt anzuzeigen, wird die Ausgabe automatisch in Form einer Liste generiert; Bei Angabe des Flags -t wird die Ausgabe zwangsweise in Form einer Tabelle generiert) -l, --list generiert die Ausgabe als Liste -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] Liste der Spalten, die beim Erstellen einer Tabelle verwendet werden (hat nur Auswirkungen, wenn eine Ausgabe in Form einer Tabelle generiert wird); Erlaubte Schlüssel: „conn“, „user“, „vid“, „pid“, „prod“, „manufact“, „serial“, „port“, „disconn“. ############################################### ################################## Optionen, die von den Submodulen „ids search“ und „ids download“ unterstützt werden: - -vid VID-Anbieter-ID oder USB-Gerätehersteller-ID (normalerweise 4 hexadezimale Ziffern) --vid PID-Produkt-ID oder USB-Gerätemodell-ID (normalerweise 4 hexadezimale Ziffern) --offline, falls angegeben, nach zusätzlichen Informationen über das USB-Gerät in der Datenbank suchen Identifikatordaten werden erstellt, ohne sie (die Datenbank) vorher zu aktualisieren.

Anwendungsbeispiele

Zeigt den Verbindungsverlauf aller USB-Geräte an, lässt das Banner weg, Informationsmeldungen (grün) und stellt auch keine Fragen während der Ausführung (-q, --quite), wodurch die Ausgabe in Form einer Liste generiert wird (-l, -- Liste), einschließlich der darin enthaltenen 100 zuletzt gefundenen Ereignisse (-n ANZAHL DER EREIGNISSE, --number ANZAHL DER EREIGNISSE):
$ python3 usbrip.py Ereignisverlauf -ql -n 100
Zeigt den Verbindungsverlauf von entfernbaren USB-Geräten (-e, --external) an und generiert die Ausgabe in Form einer Tabelle mit den Feldern (Spalten) „Verbunden“, „VID“, „PID“, „Getrennt“ und „Seriennummer“. ” (-c COLUMN [COLUMN...], --column COLUMN [COLUMN...]), Filtern der Suche nach Datum (-d DATE [DATE...], --date DATE [DATE...] ), wobei die Informationen aus externen Protokolldateien übernommen werden (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py Ereignisverlauf -et -c conn vid pid disconn serial -d "9. Dezember" "10. Dezember" -f /var/log/syslog.1 /var/log/syslog.2.gz
Erstellen Sie eine Tabelle mit dem Verbindungsverlauf aller USB-Geräte und leiten Sie die Ausgabe zur weiteren Analyse in eine Datei um. Für den Fall, dass der Ausgabestream kein Standard-STDout ist („|“ oder „>“ zum Beispiel), sind spezielle Streams nicht in den Ausgabedaten vorhanden. Zeichen, die für die Schriftfarbe im Terminal verantwortlich sind, also Textdatei wird nicht mit unleserlichen Zeichen übersät sein. Es sollte auch beachtet werden, dass usbrip einige UNICODE-Konstanten verwendet. Daher wäre es eine gute Idee, die Kodierung der erstellten Datei sofort in UTF-8 zu konvertieren, um sie korrekt anzuzeigen (z. B. mit encov) und auch den Windows-Stil zu verwenden Zeilenumbrüche für eine bessere Portabilität (z. B. mit awk):
$ python3 usbrip.py Verlauf Ereignisse -t | awk "( sub("$", "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
Notiz: Besonderes loswerden Zeichen, die für die Farbe verantwortlich sind, sind auch möglich, wenn die Ausgabe bereits an stdout gesendet wurde. Dazu müssen Sie die empfangenen Daten in eine neue Datei usbrip.txt kopieren und eine weitere awk-Anweisung hinzufügen:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
Erstellen Sie eine Liste vertrauenswürdiger Geräte in Form einer JSON-Datei (trusted/auth.json), die das erste enthält drei Am 26. September verbundene Geräte:
$ python3 usbrip.py events gen_auth Trusted/auth.json -n 3 -d „26. September“
Suchen Sie anhand der Liste der vertrauenswürdigen Geräte (trusted/auth.json) im Verbindungsverlauf von Wechsel-USB-Geräten nach „verletzenden Ereignissen“ und generieren Sie die Ausgabe in Form einer Tabelle mit „Verbunden“, „VID“ und „PID“. ” Felder:
$ python3 usbrip.py Ereignisse Verstöße vertrauenswürdig/auth.json -et -c conn vid pid
Weitere Informationen zu einem USB-Gerät anhand seiner VID und PID finden:
$ python3 usbrip.py ids search --vid 0781 --pid 5580
Laden Sie die USB-Geräte-ID-Datenbank herunter/aktualisieren Sie sie (Quelle

Im Rahmen meines Eintauchens in eine der Disziplinen (während meines Studiums in der Fachrichtung Compeza) habe ich an einem interessanten Projekt gearbeitet, das ich nicht einfach in den Tiefen des „Univer“-Ordners auf einer externen Festplatte vergraben möchte fahren.

Dieses Projekt heißt

usbrip

und ist ein kleines Open-Source-Konsolendienstprogramm für die Linux-Forensik, insbesondere für die Arbeit mit dem Verlauf von USB-Geräteverbindungen. Das Programm ist in reinem Python 3 geschrieben (unter Verwendung einiger Module von Drittanbietern) und erfordert keine anderen Abhängigkeiten als den Python 3.x-Interpreter und einige Zeilen von

Anforderungen.txt

Mit pip3 in einer Zeile aufgelöst.

In diesem Beitrag werde ich einige der Funktionen dieser Software beschreiben und ein kurzes Handbuch mit einem Link zur Download-Quelle hinterlassen.

$ python3 usbrip.py IDs herunterladen

Links und Nachtrag

Sie können das Dienstprogramm von herunterladen

GitHub

Alle Abhängigkeiten zum Ausführen und korrekte Bedienung angegeben in

Anforderungen.txt

Danke für die Aufmerksamkeit!

P.S.

Ja, der Stil des Banners und der Informationsbotschaften ist vom Projekt inspiriert

sqlmap

USB – Universal Serial Bus wurde von einem Unternehmenskonsortium mit dem Ziel entwickelt, einen einzigen, einfachen Bus für den Anschluss von Peripheriegeräten bereitzustellen.

Das USB-Design ermöglicht den schnellen Anschluss von Geräten über Standardbuchsen. Zu den USB-Geräten gehören: Tastaturen, Mäuse, Drucker, Scanner, Festplatten, Flash-Laufwerke, Kameras, Modems, Netzwerkadapter und Kolumnen, und ihre Liste wächst ständig.

Die Linux-Unterstützung für USB-Geräte ist recht umfassend, einige Geräte erfordern jedoch spezielle Treiber und andere, hauptsächlich Drucker und Scanner, werden möglicherweise nicht oder nur teilweise unterstützt.

Computersysteme können einen oder mehrere Controller oder Hubs enthalten, die dafür ausgelegt sind USB-Anschlüsse Geräte oder andere (externe) Hubs. Der Hub kann bis zu 7 Geräte unterstützen, die wiederum über zusätzliche Hubs verfügen können. Nabe im Inneren Systemeinheit Root-Hub genannt. Jede Sterntopologie kann bis zu 127 Hubs oder Geräte unterstützen.

Apropos USB-Anschluss Damit meinen wir die Fähigkeit, USB im Computer und in der Buchse für den Anschluss zu unterstützen, nicht interne Adresse Port, den das Gerät verwendet.

Mehrschichtig USB-Systeme Ermöglicht dem Host, die Eigenschaften eines USB-Geräts zu bestimmen, einschließlich Klasse, Herstellername, Gerätename, Spannungsanforderungen, Geschwindigkeit, USB-Unterstützungsstufe und andere Merkmale.

Linux USB-Geräteunterstützungsmodul

USB-Geräte werden derzeit unter Linux vollständig unterstützt. Die meisten Änderungen traten im 2.6-Kernel-Zweig auf, obwohl es auch in den 2.2-Kerneln einige Unterstützung gab. Linux unterstützt sowohl USB 2.0 als auch frühere Spezifikationen. Aufgrund des Hot-Plug-Charakters von USB erfolgt die Unterstützung typischerweise über Kernel-Module, die je nach Bedarf geladen oder entladen werden können.

Mit dem Befehl lspci können Sie USB-Geräte anzeigen:

Root@localhost:~:# lspci | grep -i usb 00:03.0 USB-Controller: USB 1.1-Controller von Silicon Integrated Systems (Rev. 0f) 00:03.1 USB-Controller: USB 1.1-Controller von Silicon Integrated Systems (Rev. 0f) 00:03.3 USB-Controller: USB 2.0-Controller von Silicon Integrated Systems

Die Befehlsausgabe zeigt, dass im System 3 USB-Controller vorhanden sind.

Mit dem Befehl lsmod können Sie geladene USB-Module anzeigen:

Root@localhost:~:# lsmod | EGREP "USB | HCI | HID | MOUSE | Modul" Modulgröße von HID_MICROSOft 3232 0 USBHID 32992 0 HID 39040 2 HID_MICROSOft, USBHID OHCI_HCD 24332 0 PSMOUS 41644 0 SSB 38444 1 OHCI_HCD EHCD Ci_HCD CI_HCDCD 315 0 SSB 38444 1 OHCI_HCDCD CI_HCD CI_HCD CI_HCDCD CI_HCDCD Ci_HCDCD CI_HCDCD CI_HCDCD Ci_HCDCDCDCD.

Anzeige angeschlossener USB-Geräte

Eine Zusammenfassung der aktuell angeschlossenen USB-Geräte ist in der Datei /proc/bus/usb/devices enthalten. Sie können es mit dem folgenden Befehl anzeigen:

Root@localhost:~:# cat /proc/bus/usb/devices T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3 B: Alloc= 0/900 us (0 %), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(Hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev= 2.06 S: Hersteller=Linux 2.6.29.6 ohci_hcd S: Produkt=OHCI Host Controller S: SerialNumber=0000:00:03.1 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt = 0 #EPs= 1 Cls=09(Hub) Sub=00 Prot=00 Treiber=Hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3 B: Alloc= 28/900 us (3 %), #Int= 2, #Iso= 0 D: Ver= 1.10 Cls=09( hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev= 2.06 S: Hersteller=Linux 2.6.29.6 ohci_hcd S: Produkt=OHCI Host Controller S: SerialNumber=0000:00: 03.0 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(Hub) Sub=00 Prot=00 Driver=Hub E: Ad =81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=1,5 MxCh= 0 D: Ver= 2,00 Cls=00(>ifc) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=045e ProdID=00db Rev= 1.73 S: Hersteller=Microsoft S: Produkt=Natural� Ergonomische Tastatur 4000 C:* #Ifs = 2 Cfg#= 1 Atr=a0 MxPwr=100mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID) Sub=01 Prot=01 Driver=usbhid E: Ad=81(I) Atr =03(Int.) MxPS= 8 Ivl=10ms I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID) Sub=00 Prot=00 Driver=usbhid E: Ad=82(I) Atr =03(Int.) MxPS= 8 Ivl=10ms T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6 B: Alloc= 0/800 us (0 % ), #Int= 0, #Iso= 0 D: Ver= 2.00 Cls=09(Hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev= 2.06 S: Hersteller= Linux 2.6.29.6 ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:00:03.3 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs = 1 Cls=09(Hub) Sub=00 Prot=00 Treiber=Hub E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

In der Auflistung entspricht Spd=480 dem USB 2.0-Bus und Spd=12 entspricht USB 1.1-Geräten. Weiter in der Liste können Sie sehen, dass derzeit 1 USB-Gerät an das System angeschlossen ist – Microsoft Natural Pregnant Keyboard 400 (Spd=1,5).

Natürlich tippe ich diesen Text auf dieser Tastatur.

Die Hierarchie der USB-Geräteverbindungen kann mit dem Befehl lsusb mit der Option -t angezeigt werden:

Root@localhost:~:# lsusb -t Bus# 3 `-Dev# 1 Anbieter 0x1d6b Produkt 0x0001 Bus# 2 `-Dev# 1 Anbieter 0x1d6b Produkt 0x0001 `-Dev# 2 Anbieter 0x045e Produkt 0x00db Bus# 1 `-Dev# 1 Anbieter 0x1d6b Produkt 0x0002

Informationen zu einem bestimmten USB-Gerät können mit dem folgenden Befehl abgerufen werden:

Root@localhost:~:# lsusb -vd 0x045e:0x00db Bus 002 Gerät 002: ID 045e:00db Microsoft Corp. Natural Ergonomische Tastatur 4000 V1.0 Gerätedeskriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (auf Schnittstellenebene definiert) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x045e Microsoft Corp. idProduct 0x00db Natural ergonomische Tastatur 4000 V1.0 bcdDevice 1.73 iManufacturer 1 Microsoft iProduct 2 natürliche ergonomische Tastatur 4000 iSerial 0 bNumConfigurations 1 Konfigurationsdeskriptor: bLength 9 bDescriptorType 2 wTotalLength 59 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Busbetrieben) Remote Wakeup MaxPower 100 mA Schnittstellendeskriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Keyboard iInterface 0 ** UNRECOGNIZED: 09 21 11 01 00 01 22 3c 00 Endpoint Descriptor oder: bLength 7 bDescriptor Geben Sie 5 bEndpointAddress ein 0x81 EP 1 IN bmAttributes 3 Übertragungstyp Interrupt-Synchronisierungstyp Keine Verwendungstypdaten wMaxPacketSize 0x0008 1x 8 Bytes bInterval 10 Schnittstellendeskriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 Keine Unterklasse bInterfaceProto Spalte 0 Keine iInterface 0 ** NICHT ERKENNT: 09 21 11 01 00 01 22 56 00 Endpunktdeskriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Übertragungstyp Interrupt Synchronisierungstyp Keine Verwendungstypdaten wMaxPacketSize 0x0008 1x 8 Bytes bInterval 10 Gerätestatus: 0x0000 (Bus Angetrieben )

Anschließen eines USB-Geräts im Handumdrehen

Neue Systeme unterstützen das Anschließen von USB-Geräten im laufenden Betrieb (Hot-Plugging). Dies bedeutet, dass das Gerät an ein laufendes System angeschlossen wird, das:

  • Bestimmen Sie den Typ des USB-Geräts, suchen Sie den Treiber und führen Sie ihn aus;
  • Ordnen Sie den Treiber dem Gerät zu.
  • Benachrichtigen Sie andere Subsysteme über das USB-Gerät.


Freunden erzählen