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
blur — BLURtooth: Explotando la derivación de claves entre transportes en Bluetooth Clásico y Bluetooth de Baja Energía [CVE-2020-15802] [CVE-2022-20361] | Kitploit
Herramientas/GitHubGitHub/francozappa/blur
Seguridad BluetoothAnálisis de VulnerabilidadesExplotaciónSeguridad InalámbricaPapers e InvestigaciónAprendizaje y Educación
GitHubfrancozappa/blur

blur

BLURtooth: Explotando la derivación de claves entre transportes en Bluetooth Clásico y Bluetooth de Baja Energía [CVE-2020-15802] [CVE-2022-20361]

Ver Repositorio
2156hace 4 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
Sitio web

README

Repositorio sobre los ataques BLUR presentados en AsiaCCS'22 en el artículo titulado: BLURtooth: Exploiting Cross-Transport Key Derivation in Bluetooth Classic and Bluetooth Low Energy.

Enlaces útiles: pdf, video, slides, website.

Entrada BibTex:

root@kitploit:~
@inproceedings{antonioli22blur,
    author={Antonioli, Daniele and Tippenhauer, Nils Ole and Rasmussen, Kasper
    and Payer, Mathias},
    title={{BLURtooth: Exploiting Cross-Transport Key Derivation in
    Bluetooth Classic and Bluetooth Low Energy}},
    booktitle={Proceedings of the  Asia conference on computer and
    communications security (ASIACCS)},
    month={May},
    year={2022}
}

Los ataques BLUR han sido asignados CVE-2020-15802 y CVE-2022-20361.

Inicialización

En el resto del README indicamos Bluetooth Classic (alias BR/EDR) como BT, Bluetooth Low Energy como BLE, y Cross-Transport Key Derivation como CTKD. También asumimos que el dispositivo atacante y las víctimas soportan BT, BLE y CTKD. Esto significa que los dispositivos soportan Bluetooth 4.2+ y BT/BLE Secure Connections.

La forma más sencilla de realizar los ataques es usar un dispositivo tanto como víctima como dispositivo atacante. Por ejemplo, recomendamos usar un portátil Linux como víctima/dispositivo atacante y cualquier otro dispositivo como la otra víctima.

Estamos usando una máquina Linux que ejecuta bluez y herramientas bluez. Nos apoyamos en la herramienta btmgmt y puede ser útil echar un vistazo a su código fuente. En particular, usamos su subcomando pair que, entre otros, permite enviar solicitudes de emparejamiento arbitrarias sobre BT/BLE declarando capacidades de entrada/salida arbitrarias.

root@kitploit:~
Usage: pair [-c cap] [-t type] <remote address>

Si deseas reproducir el escenario de ataque exacto presentado en nuestro artículo, debes hacer algo de trabajo adicional. Específicamente, necesitas reproducir la configuración presentada en BIAS attack. Una vez que tu configuración esté lista deberías poder usar la placa de desarrollo como tu Controlador BT/BLE, y el portátil Linux como un Host. Además, deberías poder sniffear los paquetes de la capa de enlace desde el Host (por ejemplo, tráfico BT LMP) y parchear dinámicamente el firmware de la placa de desarrollo en tiempo de ejecución usando internalblue.

Realizar los ataques BLUR

Codificar capacidades NoInputNoOutput (sin desactivar el flag MitM)

Este paso es opcional y requiere parchear tu propio kernel de Linux.

Cuando se usa btmgmt -c 3, bluez automáticamente desactiva el flag de protección MitM, por ejemplo, establece el byte AuthReq a 0x02 en lugar de 0x03. Sin embargo, los ataques BLUR no requieren desactivar este flag, solo requieren declarar capacidades NoInputNoOutput cuando el dispositivo remoto soporta capacidades de entrada/salida. Haciendo este truco, el procedimiento de emparejamiento se degrada a Just Works sin desactivar el flag MitM.

Implementar esta configuración requiere una modificación mínima del kernel de Linux. En particular, en /net/bluetooth/hci_event.c cambiamos:

root@kitploit:~
cp.authentication = conn->auth_type;

por:

root@kitploit:~
cp.authentication = 0x03;

Al hacerlo, codificamos nuestro flag AuthReq a 0x03 independientemente de las capacidades de entrada/salida que declaremos.

Emparejamiento legítimo

Empareja los dispositivos víctimas como de costumbre. Por ejemplo, si estás atacando un teléfono inteligente, emparejalo con tu portátil (actuando tanto como víctima como dispositivo atacante). Puede ser necesaria alguna interacción del usuario como parte del emparejamiento (por ejemplo, Comparación Numérica).

Abrir un shell btmgmt

  • Toma nota de la dirección Bluetooth de la víctima, indicada como REMOTE-BTADD
  • Abre una terminal
  • Ejecuta hciconfig y toma nota de tu índice hci, p.ej., 0
  • Ejecuta sudo btmgmt -i 0
  • Deberías ver un indicador azul en la terminal que contiene [hci0] #

Ataque de suplantación Central sobre BLE, [sobre]escribiendo la clave de emparejamiento BT

Aquí asumo que la víctima está usando una dirección BLE pública. Si usa una dirección aleatoria, cambia la opción -t a 2

Desde la CLI de btmgmt ejecuta:

root@kitploit:~
pair -t 1 REMOTE-BTADD

Si también necesitas degradar la asociación a Just Works ejecuta:

root@kitploit:~
pair -c 3 -t 1 REMOTE-BTADD

El flag -c establece las capacidades de entrada/salida del atacante y un valor de 0x3 corresponde a NoInputNoOutput, mientras que el valor predeterminado para un portátil/teléfono inteligente es 0x1 que corresponde a Display Yes/No.

Ataque de suplantación Periférico sobre BT, [sobre]escribiendo la clave de emparejamiento BLE

En este caso, incluso si suplantamos un periférico BLE, nos emparejamos sobre BT como el Central.

Desde la CLI de btmgmt ejecuta:

root@kitploit:~
pair -t 0 REMOTE-BTADD

Si también necesitas degradar la asociación a Just Works ejecuta:

root@kitploit:~
pair -c 3 -t 0 REMOTE-BTADD

Ataques de sesión no intencionados

Repite los ataques descritos anteriormente mientras suplantas un dispositivo que actualmente es desconocido (es decir, no emparejado) para la víctima.

Preguntas y respuestas (Bluetooth, CTKD, Linux, bluez, Wireshark)

¿Cómo configuro mi dispositivo BT/BLE como descubrible/conectable/emparejable?

Desde la CLI de bluetoothctl puedes configurar discoverable a on o off y pairable. Desde la CLI de btmgmt también puedes establecer el flag connectable.

¿Cómo puedo controlar durante cuánto tiempo mi dispositivo es descubrible?

Desde bluetoothctl, puedes controlar el tiempo de espera de descubribilidad usando discoverable-timeout, por ejemplo, si lo estableces a 0 el dispositivo siempre es descubrible.

¿Cómo puedo comprobar si mi dispositivo BT/BLE soporta emparejamiento o es emparejable?

Para BT, al emparejar con un dispositivo remoto ya sea como Central o Periférico, recibirás el siguiente paquete LMP: LMP not accepted ext (opcode: 0x02) con emparejamiento no permitido (código de error: 0x18)

Para BLE, al emparejar con un dispositivo remoto ya sea como Central o Periférico, recibirás el siguiente paquete SMP: SMP Pairing Failed Command (opcode 0x05) con Pairing Not Supported (razón 0x05).

¿Cómo puedo comprobar si mi dispositivo BT/BLE soporta Secure Connections?

Para BT, al emparejar con un dispositivo remoto, busca el soporte de Secure Connections para el Host y el Controlador en los paquetes de características LMP, por ejemplo, usando el siguiente filtro de visualización de Wireshark: btbrlmp.efeat.scc or btbrlmp.efeat.sch.

Para BLE, al emparejar con un dispositivo remoto, en la Solicitud o Respuesta de Emparejamiento SMP, verifica el byte AuthReq que contiene el flag de Secure Connection, por ejemplo, usando el siguiente filtro de visualización de Wireshark: btsmp.sc_flag == 1.

¿Cómo puedo comprobar si mi dispositivo BT/BLE soporta CTKD?

Para BT, al emparejar con un dispositivo remoto, el tráfico SMP de BLE se canaliza a través de L2CAP. Por lo tanto, usando el filtro de Wireshark btl2cap.payload deberías ver un paquete desde el Central al Periférico que contiene un payload que comienza con 0x01 (Solicitud de Emparejamiento SMP) y otro paquete en la dirección opuesta con un payload que comienza con 0x02 (Respuesta de Emparejamiento SMP). Luego también deberías ver otros paquetes L2CAP sin procesar que codifican la fase de distribución de claves SMP.

Para BLE, al emparejar con un dispositivo remoto, en la Solicitud o Respuesta de Emparejamiento SMP, verifica que tanto el Central como el Periférico estén dispuestos a enviar y recibir una clave de enlace durante la distribución de claves SMP, por ejemplo, usa el siguiente filtro de Wireshark btsmp.key_dist_linkkey or btsmp.key_dist_linkkey.

Descargar herramienta