
Binario Go singolo per il test di sicurezza Bluetooth Low Energy su Linux/BlueZ: scansione, enumerazione GATT, lettura/scrittura/notifica, fuzzing delle caratteristiche ed esecuzione di valutazioni strutturate con output JSON.
Un unico binario Go per l'intero flusso di lavoro di assessment Bluetooth Low Energy su Linux/BlueZ: scansione, enumerazione, lettura/scrittura/notifica, fuzzing e valutazione di sicurezza strutturata, con output JSON per script e agenti.
Caeruleus consolida il testing di sicurezza Bluetooth Low Energy (BLE) in un unico binario Go basato sullo stack Linux BlueZ. Comunica con le periferiche tramite BlueZ D-Bus e socket L2CAP/HCI grezzi e copre l'intero ciclo di vita: scoperta dei dispositivi, esplorazione e lettura/scrittura dell'albero GATT, cattura delle notifiche, fuzzing delle caratteristiche scrivibili ed esecuzione di flussi di lavoro ripetibili di valutazione di sicurezza. Ogni comando emette output strutturato -o json / -o jsonl per scripting, reportistica e agenti LLM.
Creato da ingegneri di offensive security per sostituire il solito cumulo di bettercap, gatttool, hcitool, bluetoothctl e script Bleak una tantum, Caeruleus mantiene le astrazioni al livello a cui un umano o un agente lavora effettivamente.
caeruleus: in latino il "blu" di Bluetooth Low Energy
Il flusso di lavoro standard per il testing di sicurezza BLE è una caccia al tesoro tra strumenti che non sono mai stati progettati per funzionare insieme:
hcitool / hciconfig per la configurazione dell'adattatore e la scoperta, entrambi deprecati da BlueZ e assenti in molte distribuzioni moderne.bettercap per ble.recon e ble.enum. Potente, ma installi un intero framework di attacco di rete solo per esplorare un albero GATT.gatttool per leggere e scrivere handle, deprecato da anni ma ancora presente in ogni tutorial.Ognuno parla il proprio dialetto e nessuno emette output leggibile dalla macchina che puoi passare allo step successivo, quindi diventi tu il livello di integrazione, copiando a mano indirizzi MAC e handle tra i terminali. I frontend supportati da BlueZ (bluetoothctl, btmgmt) sono strumenti di gestione generici posizionati al livello di astrazione sbagliato per il lavoro di assessment.
Caeruleus sostituisce l'intero cumulo con un'unica superficie di comandi coerente:
| Caso d'uso | Metodo precedente | Con Caeruleus |
|---|---|---|
| Scoprire dispositivi vicini | hcitool lescan / bettercap ble.recon / bluetoothctl scan on | caeruleus scan |
| Elencare e leggere servizi/caratteristiche | bettercap ble.enum <mac> | caeruleus enumerate -b <mac> --values |
| Sessione interattiva | gatttool -I / bluetoothctl | caeruleus shell -b <mac> |
| Leggere un handle | gatttool --char-read-hnd 0x0013 | caeruleus read -b <mac> -a 0x0013 |
| Scrivere un handle | gatttool -b <mac> --char-write-req -a 0x002c -n $(...) | caeruleus write -b <mac> -a 0x002c --req -s "value" |
| Catturare notifiche | logger Bleak personalizzato | caeruleus listen -b <mac> -a <handle> |
| Verificare l'esposizione non autenticata | script di audit Bleak personalizzati | caeruleus recon / caeruleus assess ... |
| Fuzzare una caratteristica | fuzzer personalizzati / boofuzz | caeruleus fuzz write -b <mac> -a <handle> |
| Parametri di connessione, MTU | hcitool con / btmgmt con-info | caeruleus conn-params -b <mac> |
| Alimentazione e ripristino dell'adattatore | btmgmt power / hciconfig reset / rfkill | caeruleus doctor / caeruleus adapter power cycle |
Output strutturato ovunque. Ogni comando che produce output supporta -o text|json|jsonl. JSON è la rappresentazione canonica, non un export secondario; jsonl trasmette un record per evento per scan --live e listen. enumerate --compact emette una riga key=value per caratteristica per grep o per la finestra di contesto di un LLM.
Salute dello stack BLE. caeruleus doctor esamina lo stato di BlueZ e del kernel e stampa una checklist OK/WARN/FAIL: bluetoothd in esecuzione, adattatore alimentato, nessuna sessione di discovery lasciata aperta, indirizzo in cache di BlueZ rispetto all'indirizzo live del chip MGMT, una sonda di scansione live di 2 secondi ed ExchangeMTU in una banda sicura. Ogni risultato non-OK porta con sé un comando di correzione concreto, e il codice di uscita segue la convenzione grep/diff (0 pulito, 2 in caso di errore).
Teardown pulito. Su SIGTERM/SIGHUP lo strumento esegue il percorso di disconnessione e fa polling finché Connected=false non si propaga attraverso BlueZ, così la periferica torna immediatamente a fare advertising invece di bloccarsi per il suo supervision timeout. Niente più "connessioni fantasma" dopo un crash.
Scripting e automazione. serve/send mantengono un link GATT aperto su un socket Unix così uno script o un agente evita il costo di riconnessione di ~1,5s per comando; batch esegue comandi da stdin su un'unica connessione persistente; listen --trigger-value imposta una notifica, invia una scrittura e cattura la risposta in modo atomico.
Dettagli di comodità. Inferenza del tipo di dispositivo da GAP Appearance più i servizi annunciati (un orologio appare come "Smartwatch", non come codice appearance grezzo); parsing dell'input tollerante (handle come 0x002a, 0X2A o 42; hex come deadbeef, de:ad:be:ef o 0xdeadbeef); caeruleus recipes elenca e cerca per parola chiave 19 flussi di lavoro comuni; conn-params mostra l'intervallo negoziato, la latenza e il supervision timeout che né gatttool né bettercap espongono.
Caeruleus tratta gli agenti LLM come utenti di prima classe. -o json / -o jsonl forniscono output strutturato ed efficiente in termini di token che un agente analizza senza dover fare scraping di tabelle formattate per umani, e il repository include una Agent Skill portabile (skills/caeruleus/SKILL.md) che insegna a qualsiasi assistente compatibile con Agent Skills la superficie dei comandi e una metodologia di assessment consigliata. Punta un agente verso un dispositivo e questo esegue l'intera metodologia dall'inizio alla fine.
Nel nostro benchmark, Opus 4.8 (xHigh) con Caeruleus e la sua skill ha completato l'attività nel 62% del tempo e con il 70% dei token rispetto allo stesso modello con libera scelta degli strumenti (che ha optato per hcitool e script Bleak).
Caeruleus è pensato per Linux con BlueZ (bluetoothd) e un adattatore BLE standard. Non si compila né funziona su macOS o Windows. Alcuni comandi con socket grezzi richiedono root.
Con la toolchain Go: