
Einzelne Go-Binärdatei für Bluetooth-Low-Energy-Sicherheitstests unter Linux/BlueZ: Scannen, GATT enumerieren, Lesen/Schreiben/Benachrichtigen, Charakteristiken fuzzen und strukturierte Assessments mit JSON-Ausgabe durchführen.
Eine einzige Go-Binary für den gesamten Bluetooth-Low-Energy-Assessment-Workflow unter Linux/BlueZ: Scannen, Enumerieren, Lesen/Schreiben/Notify, Fuzzing und strukturierte Sicherheitsbewertung, mit JSON-Ausgabe für Skripte und Agenten.
Caeruleus konsolidiert Bluetooth-Low-Energy-(BLE-)Sicherheitstests in einer einzigen Go-Binary, die auf dem Linux-BlueZ-Stack aufbaut. Es kommuniziert mit Peripheriegeräten über BlueZ D-Bus und rohe L2CAP/HCI-Sockets und deckt den gesamten Lebenszyklus ab: Geräte entdecken, den GATT-Baum durchsuchen und lesen/schreiben, Notifications erfassen, beschreibbare Characteristics fuzzen und wiederholbare Sicherheitsbewertungs-Workflows ausführen. Jeder Befehl gibt strukturierte -o json / -o jsonl-Ausgabe für Skripting, Reporting und LLM-Agenten aus.
Entwickelt von Offensive-Security-Engineers, um den üblichen Haufen aus bettercap, gatttool, hcitool, bluetoothctl und einmaligen Bleak-Skripten zu ersetzen, hält Caeruleus die Abstraktionen auf der Ebene, auf der ein Mensch oder Agent tatsächlich arbeitet.
caeruleus: Lateinisch für das „Blau" in Bluetooth Low Energy
Der Standard-Workflow für BLE-Sicherheitstests ist eine Schnitzeljagd über Tools, die nie dafür entworfen wurden, zusammenzuarbeiten:
hcitool / hciconfig für Adapter-Konfiguration und Discovery, beide von BlueZ als veraltet markiert und in vielen modernen Distributionen nicht mehr vorhanden.bettercap für ble.recon und ble.enum. Leistungsstark, aber man installiert ein komplettes Netzwerk-Angriffs-Framework, nur um einen GATT-Baum zu durchsuchen.gatttool zum Lesen und Schreiben von Handles, seit Jahren veraltet, aber noch in jedem Tutorial.Jedes spricht seinen eigenen Dialekt, und keines gibt maschinenlesbare Ausgabe aus, die man in den nächsten Schritt weiterleiten kann, also wird man selbst zur Integrationsschicht und kopiert MAC-Adressen und Handles manuell zwischen Terminals hin und her. BlueZs eigene unterstützte Frontends (bluetoothctl, btmgmt) sind Allzweck-Management-Tools, die auf der falschen Abstraktionsebene für Assessment-Arbeiten ansetzen.
Caeruleus ersetzt diesen ganzen Haufen durch eine konsistente Befehlsoberfläche:
| Anwendungsfall | Bisherige Methode | Mit Caeruleus |
|---|---|---|
| Geräte in der Nähe entdecken | hcitool lescan / bettercap ble.recon / bluetoothctl scan on | caeruleus scan |
| Services/Characteristics auflisten und lesen | bettercap ble.enum <mac> | caeruleus enumerate -b <mac> --values |
| Interaktive Sitzung | gatttool -I / bluetoothctl | caeruleus shell -b <mac> |
| Ein Handle lesen | gatttool --char-read-hnd 0x0013 | caeruleus read -b <mac> -a 0x0013 |
| Ein Handle schreiben | gatttool -b <mac> --char-write-req -a 0x002c -n $(...) | caeruleus write -b <mac> -a 0x002c --req -s "value" |
| Notifications erfassen | eigener Bleak-Logger | caeruleus listen -b <mac> -a <handle> |
| Unauthentifizierte Exposition prüfen | eigene Bleak-Audit-Skripte | caeruleus recon / caeruleus assess ... |
| Eine Characteristic fuzzen | eigene Fuzzer / boofuzz | caeruleus fuzz write -b <mac> -a <handle> |
| Verbindungsparameter, MTU | hcitool con / btmgmt con-info | caeruleus conn-params -b <mac> |
| Adapter-Stromversorgung und Wiederherstellung | btmgmt power / hciconfig reset / rfkill | caeruleus doctor / caeruleus adapter power cycle |
Strukturierte Ausgabe überall. Jeder Befehl, der Ausgabe erzeugt, unterstützt -o text|json|jsonl. JSON ist die kanonische Repräsentation, kein sekundärer Export; jsonl streamt einen Datensatz pro Ereignis für scan --live und listen. enumerate --compact gibt eine key=value-Zeile pro Characteristic aus, für grep oder ein LLM-Kontextfenster.
BLE-Stack-Zustand. caeruleus doctor durchläuft den BlueZ- und Kernel-Zustand und gibt eine OK/WARN/FAIL-Checkliste aus: bluetoothd läuft, Adapter mit Strom versorgt, keine geleakte Discovery-Sitzung, BlueZ-gecachte Adresse vs. die MGMT-Chip-Live-Adresse, eine Live-2-Sekunden-Scan-Probe und ExchangeMTU in einem sicheren Bereich. Jeder Nicht-OK-Befund enthält einen konkreten Fix-Befehl, und der Exit-Code folgt der grep/diff-Konvention (0 sauber, 2 bei Fehler).
Sauberes Herunterfahren. Bei SIGTERM/SIGHUP führt das Tool den Disconnect-Pfad aus und pollt, bis Connected=false durch BlueZ propagiert, sodass das Peripheriegerät sofort wieder advertiset, statt bis zu seinem Supervision-Timeout zu blockieren. Keine „Geisterverbindungen" mehr nach einem Absturz.
Skripting und Automatisierung. serve/send halten eine GATT-Verbindung über einen Unix-Socket offen, sodass ein Skript oder Agent die ~1,5 s Reconnect-Kosten pro Befehl vermeidet; batch führt Befehle von stdin über eine einzige persistente Verbindung aus; listen --trigger-value richtet eine Notification ein, feuert einen Write ab und erfasst die Antwort atomar.
Praktische Details. Gerätetyp-Inferenz aus GAP Appearance plus beworbenen Services (eine Uhr erscheint als „Smartwatch", nicht als roher Appearance-Code); nachsichtiges Eingabe-Parsing (Handles als 0x002a, 0X2A oder 42; Hex als deadbeef, de:ad:be:ef oder 0xdeadbeef); caeruleus recipes listet und durchsucht per Stichwort 19 gängige Workflows; conn-params legt das ausgehandelte Intervall, die Latenz und das Supervision-Timeout offen, die weder gatttool noch bettercap preisgeben.
Caeruleus behandelt LLM-Agenten als erstklassige Nutzer. -o json / -o jsonl liefern token-effiziente, strukturierte Ausgabe, die ein Agent ohne Scraping von menschenformatierten Tabellen parst, und das Repo enthält einen portablen Agent Skill (skills/caeruleus/SKILL.md), der jedem Agent-Skills-kompatiblen Assistenten die Befehlsoberfläche und eine empfohlene Assessment-Methodik beibringt. Man richtet einen Agenten auf ein Gerät und er führt die gesamte Methodik von Anfang bis Ende aus.
In unserem Benchmark erledigte Opus 4.8 (xHigh) mit Caeruleus und seinem Skill die Aufgabe in 62 % der Zeit und 70 % der Tokens desselben Modells mit freier Tool-Wahl (das zu hcitool und Bleak-Skripten griff).
Caeruleus zielt auf Linux mit BlueZ (bluetoothd) und einen Standard-BLE-Adapter ab. Es lässt sich weder auf macOS noch auf Windows bauen oder ausführen. Eine Handvoll Raw-Socket-Befehle benötigt Root.
Mit der Go-Toolchain: