
Binario único de Go para pruebas de seguridad de Bluetooth Low Energy en Linux/BlueZ: escanear, enumerar GATT, leer/escribir/notificar, fuzzear características y ejecutar evaluaciones estructuradas con salida JSON.
Un único binario Go para todo el flujo de trabajo de evaluación de Bluetooth Low Energy en Linux/BlueZ: escaneo, enumeración, lectura/escritura/notificación, fuzzing y evaluación de seguridad estructurada, con salida JSON para scripts y agentes.
Caeruleus consolida las pruebas de seguridad de Bluetooth Low Energy (BLE) en un único binario Go construido sobre la pila BlueZ de Linux. Se comunica con los periféricos a través de BlueZ D-Bus y sockets L2CAP/HCI sin procesar, y cubre todo el ciclo de vida: descubrir dispositivos, explorar y leer/escribir el árbol GATT, capturar notificaciones, hacer fuzzing de características escribibles y ejecutar flujos de trabajo de evaluación de seguridad repetibles. Cada comando emite salida estructurada -o json / -o jsonl para scripting, informes y agentes LLM.
Creado por ingenieros de seguridad ofensiva para reemplazar la habitual pila de bettercap, gatttool, hcitool, bluetoothctl y scripts Bleak improvisados, Caeruleus mantiene las abstracciones en el nivel en el que realmente trabaja un humano o un agente.
caeruleus: latín para el "azul" en Bluetooth Low Energy
El flujo de trabajo estándar para las pruebas de seguridad BLE es una búsqueda del tesoro entre herramientas que nunca fueron diseñadas para funcionar juntas:
hcitool / hciconfig para la configuración del adaptador y el descubrimiento, ambos obsoletos en BlueZ y ausentes en muchas distribuciones modernas.bettercap para ble.recon y ble.enum. Potente, pero instalas un framework completo de ataque de red solo para explorar un árbol GATT.gatttool para leer y escribir handles, obsoleto desde hace años pero todavía presente en todos los tutoriales.Cada uno habla su propio dialecto, y ninguno emite salida legible por máquina que puedas canalizar al siguiente paso, así que tú te conviertes en la capa de integración, copiando direcciones MAC y handles entre terminales a mano. Los propios frontends soportados de BlueZ (bluetoothctl, btmgmt) son herramientas de gestión de propósito general situadas en el nivel de abstracción equivocado para el trabajo de evaluación.
Caeruleus reemplaza toda esa pila con una única superficie de comandos consistente:
| Caso de uso | Método anterior | Con Caeruleus |
|---|---|---|
| Descubrir dispositivos cercanos | hcitool lescan / bettercap ble.recon / bluetoothctl scan on | caeruleus scan |
| Listar y leer servicios/características | bettercap ble.enum <mac> | caeruleus enumerate -b <mac> --values |
| Sesión interactiva | gatttool -I / bluetoothctl | caeruleus shell -b <mac> |
| Leer un handle | gatttool --char-read-hnd 0x0013 | caeruleus read -b <mac> -a 0x0013 |
| Escribir un handle | gatttool -b <mac> --char-write-req -a 0x002c -n $(...) | caeruleus write -b <mac> -a 0x002c --req -s "value" |
| Capturar notificaciones | logger Bleak personalizado | caeruleus listen -b <mac> -a <handle> |
| Auditar exposición no autenticada | scripts de auditoría Bleak personalizados | caeruleus recon / caeruleus assess ... |
| Hacer fuzzing de una característica | fuzzers personalizados / boofuzz | caeruleus fuzz write -b <mac> -a <handle> |
| Parámetros de conexión, MTU | hcitool con / btmgmt con-info | caeruleus conn-params -b <mac> |
| Alimentación y recuperación del adaptador | btmgmt power / hciconfig reset / rfkill | caeruleus doctor / caeruleus adapter power cycle |
Salida estructurada en todas partes. Cada comando que produce salida soporta -o text|json|jsonl. JSON es la representación canónica, no una exportación secundaria; jsonl emite un registro por evento para scan --live y listen. enumerate --compact emite una línea key=value por característica para grep o una ventana de contexto de un LLM.
Salud de la pila BLE. caeruleus doctor recorre el estado de BlueZ y del kernel e imprime una lista de verificación OK/WARN/FAIL: bluetoothd en ejecución, adaptador alimentado, sin sesión de descubrimiento filtrada, dirección en caché de BlueZ frente a la dirección en vivo del chip MGMT, una prueba de escaneo en vivo de 2 segundos y ExchangeMTU en una banda segura. Cada hallazgo no-OK incluye un comando de corrección concreto, y el código de salida sigue la convención de grep/diff (0 limpio, 2 en caso de fallo).
Desmontaje limpio. Ante SIGTERM/SIGHUP la herramienta ejecuta la ruta de desconexión y sondea hasta que Connected=false se propaga a través de BlueZ, de modo que el periférico vuelve a anunciarse inmediatamente en lugar de quedarse bloqueado durante su tiempo de supervisión. Se acabaron las "conexiones fantasma" tras un fallo.
Scripting y automatización. serve/send mantienen un enlace GATT abierto sobre un socket Unix para que un script o agente evite el coste de reconexión de ~1,5 s por comando; batch ejecuta comandos desde stdin sobre una única conexión persistente; listen --trigger-value configura una notificación, dispara una escritura y captura la respuesta de forma atómica.
Detalles de comodidad. Inferencia del tipo de dispositivo a partir de GAP Appearance más los servicios anunciados (un reloj aparece como "Smartwatch", no como un código de apariencia sin procesar); análisis de entrada tolerante (handles como 0x002a, 0X2A o 42; hex como deadbeef, de:ad:be:ef o 0xdeadbeef); caeruleus recipes lista y busca por palabra clave 19 flujos de trabajo comunes; conn-params muestra el intervalo negociado, la latencia y el tiempo de supervisión que ni gatttool ni bettercap exponen.
Caeruleus trata a los agentes LLM como usuarios de primera clase. -o json / -o jsonl ofrecen una salida estructurada y eficiente en tokens que un agente analiza sin tener que extraer datos de tablas formateadas para humanos, y el repositorio incluye una Agent Skill portátil (skills/caeruleus/SKILL.md) que enseña a cualquier asistente compatible con Agent Skills la superficie de comandos y una metodología de evaluación recomendada. Apunta un agente a un dispositivo y ejecutará toda la metodología de principio a fin.
En nuestro benchmark, Opus 4.8 (xHigh) con Caeruleus y su skill completó la tarea en el 62 % del tiempo y el 70 % de los tokens del mismo modelo con elección libre de herramientas (que recurrió a hcitool y scripts de Bleak).