Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
sparkplugFuzzer — Fuzzer für das Sparkplug-B-IIoT-Protokoll | Kitploit
Tools/GitHubGitHub/bishopfox/sparkplugfuzzer
Dynamische Analyse (Sandboxing)IoT-SicherheitSchwachstellenanalyseSCADA/ICS-SicherheitFuzzingNetzwerksicherheitPenetrationstestsAuthentifizierung
GitHubbishopfox/sparkplugfuzzer

sparkplugFuzzer

Fuzzer für das Sparkplug-B-IIoT-Protokoll

Repository anzeigen
155vor 2 MonatenNoch 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

Sparkplug B MQTT Security Fuzzer

Ein umfassendes Tool zur Sicherheitsbewertung für das Testen von Sparkplug B MQTT-Protokollimplementierungen. Der Fuzzer testet systematisch alle Protokollfelder über alle 9 Nachrichtentypen hinweg, entdeckt aktive Geräte im Netzwerk und erstellt detaillierte Protokolle zur Analyse.

Verantwortungsvolle Nutzung

Dieses Tool sendet fehlerhafte, Injection- und protokollverletzende MQTT-Nachrichten an einen Ziel-Broker. Führen Sie es nur gegen Systeme aus, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Sparkplug B-Broker befinden sich häufig in OT/ICS-Umgebungen, in denen unerwartete Nutzdaten physische Prozesse stören können – gehen Sie davon aus, dass jedes Ziel in Produktionsnähe ist, sofern nicht anders nachgewiesen.

Wenn Sie mit diesem Tool eine Sicherheitslücke in einer Sparkplug B-Implementierung entdecken, befolgen Sie bitte die koordinierte Offenlegung mit dem betroffenen Anbieter. Um ein Sicherheitsproblem in diesem Tool selbst zu melden, siehe SECURITY.md.

Inhaltsverzeichnis

  • Überblick
  • Voraussetzungen
  • Installation
  • Schnellstart
  • Nutzung
    • Befehlszeilenoptionen
    • Fuzz-Kategorien
    • Beispiele
  • Funktionsweise
    • Ausführungsablauf
    • Netzwerkerkennung
    • Authentifizierungsbewertung
    • Gezieltes Fuzzing
  • Ausführen der Tests
  • Ausgabe und Log-Analyse
    • Log-Format
    • Ergebnisse analysieren
  • Protokollabdeckung
    • Nachrichtentypen
    • Datentypen
    • Feldabdeckung
  • Architektur

Überblick

Die Sparkplug B-Spezifikation definiert einen Themen-Namespace und ein Nutzlastformat, das auf MQTT und Google Protocol Buffers für industrielle IoT-Umgebungen (IIoT) basiert. Dieser Fuzzer bewertet die Sicherheit und Robustheit von Sparkplug B-Implementierungen, indem er:

  • Testen aller 19 Metrikdatentypen mit Grenzwerten und Überlaufbedingungen
  • Einschleusen bösartiger Zeichenfolgen (XSS, SQLi, Formatstrings, Path Traversal, Command Injection)
  • Erzeugen von Typinkonsistenzen zwischen deklarierten Datentypen und tatsächlichen Protobuf-Wertfeldern
  • Verletzen der Protokoll-Zustandsmaschinen-Reihenfolge (Daten vor Birth, doppelte Births, Daten nach Death)
  • Korrumpieren serialisierter Protobuf-Nutzlasten auf binärer Ebene
  • Spoofing von Birth/Death-Zertifikaten für entdeckte Netzwerkgeräte
  • Fuzzing von MQTT-Topic-Namespaces mit Sonderzeichen, Groß-/Kleinschreibungsvarianten und strukturellen Verletzungen

Voraussetzungen

  • Python 3.8+
  • MQTT Broker — das zu testende Zielsystem (z.B. Mosquitto, HiveMQ, EMQX oder jeder Sparkplug B-fähige Broker)
  • Autorisierung — dieses Tool ist ausschließlich für autorisierte Sicherheitstests bestimmt

Installation

Auf modernen Debian/Ubuntu/Kali-Systemen (PEP-668) kann --setup nicht per pip install in das systemweite Python installieren – verwenden Sie stattdessen eine virtuelle Umgebung oder pipx. Der empfohlene Weg:```bash python3 -m venv .venv source .venv/bin/activate python3 sparkplug-fuzzer.py --setup

Oder führen Sie es mit `pipx run` aus, wenn Sie die Verwaltung der virtuellen Umgebung nicht selbst übernehmen möchten. Auf älteren Systemen ohne PEP-668-Erzwingung funktioniert `python3 sparkplug-fuzzer.py --setup` direkt.

`--setup` wird:
1. Pip-Abhängigkeiten installieren (`paho-mqtt`, `protobuf`)
2. Einen festgelegten Tag des [Eclipse Tahu](https://github.com/eclipse/tahu)-Repository klonen (siehe `TAHU_REF` im Skript)
3. Die Hilfsmodule `sparkplug_b.py` und `array_packer.py` kopieren
4. `sparkplug_b.proto` in Python-Bindungen kompilieren (verwendet `protoc` falls verfügbar, fällt auf `grpcio-tools` zurück)
5. Den Tahu-Klon bereinigen

Nach der Einrichtung sollte Ihr Verzeichnis Folgendes enthalten:```
sparkplug-fuzzer.py     # The fuzzer
sparkplug_b.py          # Sparkplug B helper module (from Tahu)
array_packer.py         # Array packing helper (from Tahu)
sparkplug_b_pb2.py      # Generated protobuf bindings
requirements.txt        # Python dependencies
Manuelle Einrichtung (falls --setup nicht funktioniert)```bash pip install -r requirements.txt git clone https://github.com/eclipse/tahu.git cp tahu/python/core/sparkplug_b.py . cp tahu/python/core/array_packer.py . protoc --python_out=. sparkplug_b.proto rm -rf tahu ```

Schnellstart```bash

python3 sparkplug-fuzzer.py --setup # first-time setup python3 sparkplug-fuzzer.py -H localhost -p 1883 -v # run fuzzer

Dies wird:
1. Eine Verbindung zum Broker unter `localhost:1883` herstellen
2. 10 Sekunden lang zuhören, um vorhandene Sparkplug-Geräte zu erkennen
3. Den Fuzzer als Sparkplug-Knoten/Gerät einrichten
4. Alle 12 Fuzz-Kategorien (~635+ Testfälle) ausführen
5. Erkannte Geräte mit gefälschten Nachrichten angreifen
6. Ergebnisse in `sparkplug_fuzz.jsonl` schreiben

## Nutzung

### Kommandozeilenoptionen```
python3 sparkplug-fuzzer.py [OPTIONS]
OptionStandardBeschreibung
-H, --hostlocalhostHostname oder IP des MQTT-Brokers
-p, --port1883 (oder 8883 mit --tls)Port des MQTT-Brokers
-u, --usernameKeinerMQTT-Benutzername (liest auch Umgebungsvariable MQTT_USERNAME)
-P, --passwordKeinerMQTT-Passwort (liest auch MQTT_PASSWORD; - übergibt, um von stdin ohne Echo zu lesen)
--tlsausVerbindung über TLS; Standard-Port wird 8883, wenn -p nicht gesetzt
--cafileKeinerCA-Bundle für TLS-Serverzertifikatsprüfung
--insecureausTLS-Hostname-/Zertifikatsprüfung überspringen (nur Testzwecke)
-g, --groupSparkplug B DevicesSparkplug-Gruppen-ID, unter der sich der Fuzzer registriert
-n, --nodeFuzzNodeSparkplug-Edge-Node-ID für den Fuzzer
-d, --deviceFuzzDeviceSparkplug-Geräte-ID für den Fuzzer
-c, --categoriesallLeerzeichen-getrennte Liste der auszuführenden Fuzz-Kategorien
--discovery-time10Sekunden, um passiv auf Netzwerkerkennung zu lauschen
--delay0.1Verzögerung in Sekunden zwischen Fuzz-Nachrichten
--probe-anon-writeausWährend der Erkennung ein QoS=1-Publish senden, um zu bestätigen, ob der Broker unauthentifiziertes PUBLISH akzeptiert
-l, --logsparkplug_fuzz.jsonlName der Ausgabeprotokolldatei (relative Pfade landen in --output-dir; absolute Pfade werden unverändert übernommen)
--output-dir./sparkplug-runs/<UTC-ts>_<host>/Ausgabeverzeichnis pro Durchlauf. Wird erstellt, falls nicht vorhanden.
-v, --verbose0Konsolen-Ausführlichkeit erhöhen (-v = info, -vv = debug). -vv zeigt auch Fuzz-Generator-Überspringungen an, und der gedrosselte paho.mqtt-Logger wird je nach Ausführlichkeit auf INFO/DEBUG gesetzt.
--setup—Alle Abhängigkeiten installieren und beenden
--tahu-path—Pfad zu einem lokalen Klon von eclipse/tahu (oder dem python/core-Verzeichnis). Wird von --setup in abgeschotteten Umgebungen anstelle von git clone verwendet.
--extra-string-payloads—Pfad zu einer Datei mit zusätzlichen String-Injection-Payloads (eine pro Zeile, UTF-8). Wird an die integrierten STRING_FUZZ_VALUES angehängt; ersetzt diese nicht. Maximal 10 MB / 10.000 Payloads. Siehe Benutzerdefinierte String-Korpora.

Fuzz-Kategorien

Tool herunterladen