Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
USB Spy — Fängt USB-Massenspeicherverkehr auf Block- und Dateiebene ab und analysiert ihn, emuliert USB-Geräte und unterstützt benutzerdefinierte Python-Stubs für Sicherheitsforschung, Forensik und TOCTOU-Schwachstellentests. | Kitploit
Tools/GitLabGitLab/christophe.duvernois/usb-spy
SchwachstellenanalyseExploitationReverse EngineeringForensikDigitale ForensikPenetrationstestsHardware-SicherheitRed TeamingFirmware-Analyse
GitLabchristophe.duvernois/usb-spy

USB Spy

Fängt USB-Massenspeicherverkehr auf Block- und Dateiebene ab und analysiert ihn, emuliert USB-Geräte und unterstützt benutzerdefinierte Python-Stubs für Sicherheitsforschung, Forensik und TOCTOU-Schwachstellentests.

32vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

USB SPY

Logo

License: GPL v3 pipeline

usb-spy ist ein USB-Massenspeicher-Datenverkehrsanalysator, der um einen WiFi- oder Ethernet-fähigen Mikrocontroller herum aufgebaut ist.

Das Board stellt einem Zielsystem ein Festplattenabbild (FAT oder ein beliebiges Dateisystem) als gefälschtes USB-Massenspeichergerät zur Verfügung, während die tatsächlichen Speicherdaten von einem entfernten Server über WiFi oder Ethernet bereitgestellt werden.

Dieser Aufbau ermöglicht es usb-spy, jeden vom Ziel durchgeführten Blockzugriff abzufangen und zu analysieren.

Über die reine Blockverfolgung hinaus versteht usb-spy Dateisysteme und kann jeden zugegriffenen Block der entsprechenden Datei und dem entsprechenden Verzeichnis zuordnen, sodass sofort ersichtlich ist, welche Datei gelesen oder geschrieben wird, anstatt nur rohe Sektornummern.

Zusätzlich kann usb-spy jedes USB-Gerät emulieren, indem Geräteeigenschaften wie Hersteller-ID, Produkt-ID, Seriennummer, Hersteller und Produktname über eine JSON-Konfigurationsdatei angepasst werden. Dies ermöglicht es, bestimmte USB-Geräte zu Test- und Analysezwecken zu imitieren.

Das Tool lässt sich leicht durch vom Benutzer geschriebene Python-Stubs erweitern, sodass Sie benutzerdefinierte Logik für die Behandlung von USB-Lese-/Schreibereignissen und Blockebenenoperationen implementieren können.

Design

Dateisystemerkennung

Wenn ein unterstütztes Dateisystem erkannt wird, führt usb-spy Folgendes aus:

  • Analysiert Dateisystem-Metadaten
  • Löst Blockadressen in Dateipfade auf
  • Zeigt für jeden Zugriff menschenlesbare Dateinamen und Verzeichnisse an

Derzeit unterstützte Dateisysteme:

  • FAT32
  • EXT4

Die Unterstützung für weitere Dateisysteme wird in Zukunft hinzugefügt.

Wenn das Dateisystem nicht unterstützt wird, kann usb-spy trotzdem verwendet werden:

  • Alle USB-Lese-/Schreibvorgänge werden erfasst
  • Zugriffe werden auf der Rohblockebene angezeigt
  • Dateinamen- und Verzeichnisinformationen sind nicht verfügbar

Dies stellt sicher, dass usb-spy auch bei unbekannten, benutzerdefinierten oder proprietären Dateisystemen nützlich bleibt.

Typische Anwendungsfälle

  • Reverse Engineering von USB-Massenspeichern
  • Analyse des Verhaltens von Firmware und Betriebssystemen
  • Verstehen von Dateizugriffsmustern während des Bootvorgangs oder der Laufzeit
  • Sicherheitsforschung und digitale Forensik
  • Erkennen und Ausnutzen von Time-of-Check Time-of-Use (TOCTOU)-Schwachstellen

USB-SPY-Firmware für unterstützte Boards erstellen

SupportedBoard

Firmware-Bauanleitungen für jedes unterstützte Board werden hier beschrieben:

  • Raspberry Pi Pico Board basierend auf RP2040 Mikrocontroller
    • Raspberry Pico W
    • W5500-EVB-Pico
    • W6100-EVB-Pico
  • Adafruit Feather M0 (nicht alle Funktionen werden unterstützt)

USB-SPY-Server-Tool erstellen

Der Quellcode befindet sich im src-Verzeichnis. Es lädt ein FAT-Image, stellt es über einen TCP-Port bereit und protokolliert jeden Zugriff auf das Image.

Um Informationen zu Dateien und Verzeichnissen auszugeben, verlässt sich das Tool auf die TheSleuthKit-Bibliothek.

Um es zu erstellen, führen Sie den folgenden Befehl im Stammverzeichnis aus

Alle Submodule abrufen

root@kitploit:~
git submodule update --init --recursive

Dann führen Sie den waf configure-Befehl aus.

root@kitploit:~
./waf configure

Es überprüft und erstellt alle benötigten Abhängigkeiten. Um das Projekt dann tatsächlich zu erstellen, führen Sie

root@kitploit:~
./waf build

Das Binärprogramm befindet sich im wbuild-Verzeichnis

FAT32-Image erstellen

Wir können dies einfach mit dem mtools-Dienstprogrammpaket tun

Erstellen einer 2-MB-Datei

root@kitploit:~
dd if=/dev/zero of=disk.img bs=1M count=2

Ein FAT-Dateisystem darauf setzen (verwenden Sie -F für FAT32, sonst ist es automatisch)

root@kitploit:~
mformat -i disk.img ::

Eine Datei hinzufügen

root@kitploit:~
mcopy -i disk.img example.txt ::

Dateien auflisten

root@kitploit:~
mdir -i disk.img ::

Eine Datei extrahieren

root@kitploit:~
mcopy -i disk.img ::/example.txt extracted.txt

usb-spy ausführen

Führen Sie den Spy mit dem neu erstellten Image aus

root@kitploit:~
./usb-spy -v disk.img

Schließen Sie das Board an den USB-Anschluss des Ziels an.

Ein bestimmtes USB-Gerät emulieren

Um ein bestimmtes USB-Gerät zu emulieren, können Parameter über eine JSON-Konfigurationsdatei überschrieben werden:

Die folgende JSON-Datei emuliert ein Kingston DataTraveler USB-Gerät:

root@kitploit:~
{
	"vendor_id": 2385,
	"product_id": 5734,
	"bcd_device": 272,
	"product_rev": "3.0",
	"manufacturer": "Kingston",
	"product_name": "DataTraveler",
	"serial": "509C4BBFACCDE742880C026B",
	"language": 1033
}

Führen Sie den Spy mit dieser Konfigurationsdatei aus

root@kitploit:~
./usb-spy -c config/kingston.json disk.img

Die dmesg-Ausgabe für dieses Gerät:

root@kitploit:~
usb 1-8: New USB device found, idVendor=0951, idProduct=1666, bcdDevice= 1.10
usb 1-8: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-8: Product: DataTraveler
usb 1-8: Manufacturer: Kingston
usb 1-8: SerialNumber: 509C4BBFACCDE742880C026B
usb-storage 1-8:1.0: USB Mass Storage device detected
scsi host6: usb-storage 1-8:1.0
scsi 6:0:0:0: Direct-Access     Kingston DataTraveler     3.0  PQ: 0 ANSI: 2

Eigenes Verhalten implementieren

Wenn Sie Ihre eigene Logik für jedes Lese-/Schreibereignis implementieren möchten, können Sie dies einfach in Python tun.

Implementieren Sie die USBImage-Klasse in Python wie in diesem dummy-Image:

root@kitploit:~
class USBImage:
    def __init__(self, *args, **kwargs):
        """
        Initialize the USBImage.
        :param args: should contain:
            - filename: The name of the file to manage.
        :param kwargs: Arbitrary arguments passed from the c++ command line including:
            readOnly: Whether the interface is read-only.
            verbose: Whether to enable verbose logging.
            block: Whether to enable block mode.
        """
        pass

    def getBlockNumber(self):
        """Get block number"""
        return 100

    def getBlockSize(self):
        """Get block size"""
        return 512

    def read(self, lba, buffer, size):
        """Read block"""
        print(f"read block={lba} size={size}")
        for i in range(size):
            buffer[i] = (lba + i) % 256  # Simulate reading data
        return size

    def write(self, lba, buffer, size):
        """Write block"""
        print(f"write block={lba} size={size}")
        print(buffer)
        return size

    def flush(self):
        """Flush block"""
        print("flush data")

Und führen Sie den Spy mit Ihrem Python-Modul aus.

root@kitploit:~
./usb-spy --py python/dummy.py disk.img

Sie können auch beliebige Argumente von der Befehlszeile an Ihre Python-Klasse übergeben. Argumente sind in den kwargs verfügbar.

root@kitploit:~
./usb-spy --py python/dummy.py --py-args arg1=2 --py-args arg2=Hello disk.img

Sie können auch mit dem rawimage-Beispiel beginnen, das eine vollständige Implementierung (~100 Codezeilen) dessen bietet, was nativ in der usb-spy-Binärdatei implementiert ist.

Haftungsausschluss

Dieses Projekt wird "wie besehen" zur Verfügung gestellt. Es gibt keine Garantie für Richtigkeit, Sicherheit oder Eignung für einen bestimmten Zweck.

Die Verwendung der Tools und Firmware erfolgt auf eigenes Risiko. Der Autor und die Mitwirkenden übernehmen keine Verantwortung für Schäden, Datenverlust oder rechtliche Konsequenzen, die durch die Nutzung dieser Software oder Hardware entstehen können.

Mitwirken

Beiträge sind willkommen! Bitte befolgen Sie diese Schritte:

  1. Forken Sie das Repository.
  2. Erstellen Sie einen neuen Branch für Ihre Funktion oder Fehlerbehebung.
  3. Reichen Sie einen Pull-Request mit einer detaillierten Beschreibung ein.

Lizenz

License: GPL v3

Dieses Projekt ist unter der GNU General Public License v3.0 lizenziert. Weitere Informationen finden Sie in der Datei LICENSE.

Tool herunterladen