Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
btlejack — Navaja suiza de Bluetooth Low Energy | Kitploit
Herramientas/GitHubGitHub/virtualabs/btlejack
Seguridad BluetoothExplotaciónSeguridad InalámbricaHacking de HardwarePruebas de PenetraciónSeguridad de HardwareSeguridad de Hardware e IoTTop en Seguridad Bluetooth #2Top en Hacking de Hardware #15Top en Seguridad de Hardware e IoT #14
2.1k20911hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Top en Seguridad de Hardware #17
GitHubvirtualabs/btlejack

btlejack

Navaja suiza de Bluetooth Low Energy

Ver Repositorio

BtleJack: una navaja suiza de Bluetooth Low Energy #####################################################

Btlejack proporciona todo lo que necesitas para esnifar, interferir y secuestrar dispositivos Bluetooth Low Energy. Se basa en uno o más dispositivos BBC Micro:Bit <http://microbit.org/>_ que ejecutan un firmware dedicado. También es posible que quieras usar un sniffer Bluefruit LE de Adafruit <https://www.adafruit.com/product/2269>_ o un Kit de evaluación nRF51822 <https://www.waveshare.com/wiki/BLE400>_, ya que hemos añadido soporte para estos dispositivos.

La versión actual de esta herramienta (2.0) es compatible con BLE 4.x y 5.x. El soporte para BLE 5.x es limitado, ya que solo admite el PHY sin codificar de 1 Mbps y no admite actualizaciones del mapa de canales.

Requisitos

Necesitas un sistema basado en UNIX (por ejemplo, una Raspberry Pi). Si usas el BBC Micro:Bit, necesitarás de uno a tres dispositivos Micro:Bit (se recomiendan tres dispositivos) y para cada dispositivo un puerto USB libre. El consumo de energía de un Micro:Bit es bastante bajo, por lo que puedes usar un solo puerto USB y un hub pasivo para alimentar las tres unidades recomendadas.

Si conectas 3 microbits al mismo tiempo en tu computadora, Btlejack podrá esnifar en todos los canales de publicidad y tendrá muchas más posibilidades de capturar la solicitud de conexión.

Cómo instalar

Primero, instala el software cliente de Python3 btlejack con Pip:

::

$ sudo pip3 install btlejack

Luego, conecta tu dispositivo Micro:Bit a tu computadora con un cable USB, monta el dispositivo de almacenamiento masivo asociado (el punto de montaje debe contener MICROBIT), y ejecuta el siguiente comando:

::

$ btlejack -i

Esto programará cada dispositivo Micro:Bit conectado a tu computadora y los dejará listos para usar con Btlejack. Usará la versión de firmware correcta para el software cliente actual, por lo que se recomienda encarecidamente realizar este procedimiento de instalación de firmware cada vez que actualices Btlejack.

Si estás usando un sniffer Bluefruit LE o un Kit de evaluación nRF51822, entonces usa un programador SWD externo para flashear tu dispositivo con este firmware <https://github.com/virtualabs/btlejack-firmware/raw/master/dist/btlejack-firmware-ble400.hex>_.

Mantén tus dispositivos conectados y ¡listo!

NOTA Esto solo funciona con sistemas compatibles con POSIX.

Cómo usar Btlejack

Usar Btlejack es bastante fácil. Btlejack puede:

  • usar varios dispositivos
  • esnifar una conexión BLE existente
  • esnifar nuevas conexiones BLE
  • interferir una conexión BLE existente
  • secuestrar una conexión BLE existente
  • exportar paquetes capturados a varios formatos PCAP

Especificar dispositivos a usar

Btlejack normalmente intenta autodetectar y usar dispositivos compatibles conectados (solo Micro:Bit por el momento), pero dado que el firmware puede ser hackeado o modificado para funcionar con otras placas basadas en nRF51822, proporciona una opción específica para permitir la compatibilidad con estos dispositivos.

La opción -d te permite especificar uno o más dispositivos con Btlejack. Ten en cuenta que esta opción deshabilitará la detección automática de dispositivos, y deberías agregar tantos dispositivos como necesites:

::

$ btlejack -d /dev/ttyACM0 -d /dev/ttyACM2 -s

Esnifar una conexión existente

Primero, encuentra una conexión existente para atacar con btlejack:

::

$ btlejack -s BtleJack version 1.1

[i] Enumerating existing connections ... [ - 54 dBm] 0xcd91d517 | pkts: 1 [ - 46 dBm] 0xcd91d517 | pkts: 2

El primer valor (en dBm) muestra la potencia de la señal, cuanto mayor sea este valor, mejor será la conexión esnifada.

El segundo valor (hex) es la dirección de acceso asociada, un valor de 32 bits que identifica un enlace entre dos dispositivos compatibles con Bluetooth Low Energy.

El último valor es el número de paquetes vistos con esta dirección de acceso. Cuanto mayor sea este valor, más probable será que la dirección de acceso correspondiente esté en uso.

Luego, usa la opción -f para seguir una conexión específica:

::

$ btlejack -f 0xdda4845e BtleJack version 1.1

[i] Detected sniffers:

Sniffer #0: fw version 1.1

[i] Synchronizing with connection 0xdda4845e ... ✓ CRCInit: 0x2a035e ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 15 [i] Synchronized, packet capture in progress ... LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70 LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70

Si estás usando más de 1 microbit, Btlejack paralelizará algunas de las operaciones de esnifado para acelerar la recuperación de los parámetros de conexión.

Esnifar nuevas conexiones

La opción -c soportada por btlejack te permite especificar la dirección BD objetivo, o puedes usar any para capturar cualquier nueva conexión creada.

::

$ btlejack -c any BtleJack version 1.1

[i] Detected sniffers:

Sniffer #0: version 1.1 Sniffer #1: version 1.1 LL Data: 05 22 df b4 6f 95 c5 55 c0 0a f6 99 23 40 1d 7b 2f 0a 9a f4 93 01 12 00 27 00 00 00 d0 07 ff ff ff ff 1f 0b [i] Got CONNECT_REQ packet from 55:c5:95:6f:b4:df to 40:23:99:f6:0a:c0 |-- Access Address: 0x0a2f7b1d |-- CRC Init value: 0x93f49a |-- Hop interval: 39 |-- Hop increment: 11 |-- Channel Map: 1fffffffff |-- Timeout: 20000 ms

LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 0b 06 0c 08 0f 00 09 41 LL Data: 03 06 0c 07 1d 00 d3 07

o también puedes especificar la dirección BD objetivo:

::

$ btlejack -c 03:e1:f0:00:11:22

Interferir una conexión

Una vez que una conexión es identificada por su dirección de acceso, puedes interferirla usando la opción -j:

::

$ btlejack -f 0x129f3244 -j̀

Secuestrar una conexión BLE

Btlejack también puede secuestrar una conexión existente, usa la opción -t para hacerlo. Una vez secuestrada, Btlejack te dará un prompt que te permitirá interactuar con el dispositivo secuestrado.

Primero, secuestra una conexión existente:

::

$ btlejack -f 0x9c68fd30 -t -m 0x1fffffffff BtleJack version 1.1

[i] Using cached parameters (created on 2018-08-11 01:48:24) [i] Detected sniffers:

Sniffer #0: fw version 1.1

[i] Synchronizing with connection 0x9c68fd30 ... ✓ CRCInit: 0x81f733 ✓ Channel map is provided: 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 9 [i] Synchronized, hijacking in progress ... [i] Connection successfully hijacked, it is all yours \o/ btlejack>

Luego usa los siguientes comandos para interactuar con el dispositivo:

  • discover: realiza la enumeración de servicios y características, te dará toda la información sobre servicios y características.
  • write: escribe datos en un manejador de valor específico.
  • read: lee datos de un manejador de valor específico.
  • ll: envía un paquete sin procesar de la capa de enlace (para ninjas).

Comando discover ^^^^^^^^^^^^^^^^^^

El comando discover enviará y recibirá paquetes Bluetooth LE y recuperará todos los UUID de servicios y parámetros, así como los UUID de características y parámetros:

::

btlejack> discover start: 0001 end: 0005 start: 0014 end: 001a start: 0028 end: ffff Discovered services: Service UUID: 1801 Characteristic UUID: 2a05 | handle: 0002 | properties: indicate (20) \ value handle: 0003

Service UUID: 1800 Characteristic UUID: 2a04 | handle: 0019 | properties: read (02) \ value handle: 001a

Characteristic UUID: 2a00 | handle: 0015 | properties: read (02) \ value handle: 0016

Characteristic UUID: 2a01 | handle: 0017 | properties: read (02) \ value handle: 0018

Service UUID: 1824 Characteristic UUID: 2abc | handle: 0029 | properties: write indicate (28) \ value handle: 002a

Comando read ^^^^^^^^^^^^^^

El comando read acepta un solo parámetro, el manejador de valor correspondiente a la característica de la que deseas leer:

::

btlejack> read 0x16 read>> 4c 47 20 77 65 62 4f 53 20 54 56

Comando write ^^^^^^^^^^^^^^^

El comando write acepta tres parámetros:

::

btlejack> write

Formatos de datos soportados:

  • hex: datos hexadecimales (ej. "414261")
  • str: cadena de texto, puede estar encapsulada entre comillas dobles

Comando ll ^^^^^^^^^^^^

Este último comando te permite enviar PDU de la capa de enlace de Bluetooth Low Energy, en formato hexadecimal, como se especifica en el Volumen 6, Parte B, Capítulo 2.4.

Exportación de archivos PCAP

Una característica interesante de Btlejack es la posibilidad de exportar los datos capturados a un archivo PCAP.

Btlejack soporta los siguientes formatos DLT:

  • DLT_BLUETOOTH_LE_LL_WITH_PHDR (igual)
  • DLT_NORDIC_BLE (el usado por el sniffer de Nordic)
  • DLT_BLUETOOTH_LE_LL (compatible con las últimas versiones de Wireshark)

El archivo de salida puede especificarse mediante la opción -o, mientras que el formato de salida puede especificarse con la opción -x. Los valores de formato válidos son: ll_phdr, nordic, o pcap (por defecto).

::

$ btlejack -f 0xac56bc12 -x nordic -o capture.nordic.pcap

El tipo de exportación ll_phdr es útil al esnifar una conexión cifrada, ya que también es compatible con crackle <https://github.com/mikeryan/crackle>_. Así que si quieres esnifar y romper conexiones cifradas, esta es la opción a seguir.

También es posible que necesites indicar a crackle que use una estrategia de descifrado específica, mediante la opción -s:

::

$ crackle -i some.pcap -s 1

Caché de conexión

Btlejack utiliza una caché de conexión para almacenar algunos valores relacionados con la conexión con el fin de acelerar las cosas. Esta caché de conexión puede causar algunos problemas, especialmente si una dirección de acceso ha sido vista previamente.

Esta caché se puede vaciar con la opción -z:

::

$ btlejack -z

Volcado de paquetes en vivo con Wireshark

Btlejack 2.0 introduce una nueva opción -w que te permite especificar una ruta FIFO (existente o no) para realizar un análisis en vivo de paquetes:

::

$ btlejack -c any -w /tmp/blepipe

Incluso puedes usar un FIFO y un archivo de salida al mismo tiempo:

::

$ btlejack -c any -w /tmp/blepipe -o blepackets.pcap

Consejo para usar btlejack en una Raspberry Pi

Si has habilitado previamente ethernet virtual sobre USB (RNDIS), por ejemplo, para configurar una Raspberry Pi Zero W a través de USB, debes deshabilitarlo nuevamente (es decir, elimina dtoverlay=dwc2 de boot/config.txt y modules-load=dwc2,g_ether de boot/cmdline.txt, luego sudo reboot), porque esto interferiría con las conexiones USB de los sniffer.

Soporte para Bluetooth LE 5 y 5.1

Esta versión es compatible con las versiones 5 y 5.1 de Bluetooth Low Energy y especialmente con el nuevo algoritmo de selección de canal introducido en la versión 5 (CSA #2). Sin embargo, dado que el hardware utilizado no soporta los dos nuevos PHY agregados desde la versión 5, solo podrá esnifar, interferir y quizás secuestrar conexiones que utilicen el PHY sin codificar de 1 Mbps.

Ten en cuenta también que la implementación actual de CSA #2 incluida en Btlejack no admite actualizaciones del mapa de canales, por el momento.

Esnifar una nueva conexión BLE 5

Btlejack detecta automáticamente el algoritmo de selección de canal utilizado, por lo que no tienes que preocuparte y solo capturar paquetes como de costumbre.

Esnifar una conexión BLE 5 existente

Esnifar una conexión BLE 5 existente (que utiliza el PHY sin codificar de 1 Mbps, y solo este PHY) no es tan difícil. Primero, debes especificar que deseas atacar una conexión BLE 5, utilizando la opción -5. Ten en cuenta que no hay forma de saber si una conexión existente utiliza CSA #2 o CSA #1, por lo que debes probar ambas técnicas hasta que una funcione.

::

$ btlejack -f 0x11223344 -5

Btlejack recuperará entonces el mapa de canales utilizado y luego el valor del intervalo de salto:

::

$ btlejack -f 0x11223344 -5 [i] Synchronizing with connection 0x11223344 ... ✓ CRCInit: 0x40d64f ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 160

Luego intentará recuperar el valor del contador PRNG de esta conexión:

::

$ btlejack -f 0x11223344 -5 [i] Synchronizing with connection 0x11223344 ... ✓ CRCInit: 0x40d64f ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 160 ✓ CSA2 PRNG counter = 5137 [i] Synchronized, packet capture in progress ...

Una vez hecho esto, Btlejack está sincronizado con esta conexión y procesará los paquetes como de costumbre.

Interferir una conexión BLE 5 existente

Aquí no hay nada nuevo, excepto que debes especificar que estás atacando una conexión BLE 5, usando la opción -5.

Ten en cuenta que puedes optimizar este ataque especificando también el mapa de canales y el valor del intervalo de salto a utilizar, usando respectivamente las opciones -m y -p. Ambos DEBEN ser proporcionados, de lo contrario no funcionará.

Secuestrar una conexión BLE 5 existente

No he logrado secuestrar una conexión BLE 5 en este momento, ya que este ataque es sensible al tiempo. Mis dispositivos BLE 5 usan una latencia de 0, lo que no permite ningún retraso y hace que este ataque falle.

Cuando consiga algunos dispositivos BLE 5 legítimos, mejoraré esto.

Descargar herramienta