martes, octubre 01, 2019

BTLEJack & MicroBit: Tu navaja suiza para los ataques BLE (Bluetooth Low-Energy )

Hace poco mi compañero Álvaro Nuñez me hablaba de este proyecto, llamado BTLEJack, el cual a mí me sonaba de haberlo visto en Defcon. Cuando Álvaro me lo volvió a comentar, le eché un ojo y, en efecto, era el mismo proyecto. El proyecto necesita del uso de una placa MicroBit de esas que la BBC, en colaboración con Microsoft, había llevado a los colegios de UK para que los niños empezaran a programar con Scratch y hacer sus propios juegos en este hardware. Un proyecto interesante.

Figura 1: BTLEJack & MicroBit: Tu navaja suiza para los ataques BLE
(Bluetooth Low-Energy )

Hoy vamos a ver qué es, cuáles son las opciones que nos ofrece y cómo podemos sacarle partido en los proyectos profesionales de Ethical Hacking.

¿Qué es BTLEJack? 

Es un proyecto que permite montar una navaja suiza y utilizar la placa Microbit para poder capturar el tráfico Bluetooth Low-Energy (BLE), hacer hijacking de conexiones, hacer jamming, obtener capturas en PCAP y en otros formatos. Es una navaja suiza para el tema BLE en toda regla. También se puede utilizar un sistema Raspberry PI y otros entornos, en vez de una placa Microbit, pero a mí me gustó el entorno Microbit, debido al contexto del hardware, siempre interesante.

Figura 2: Libro de Haking Ético de Pablo González en 0xWord

Hace un tiempo, estuve jugando con temas de BLE, desde patinetes eléctricos, cepillos eléctricos y los famosos Tags “encuentra-todo”, como se puede ver en este artículo Hacking in your life: jugando con los “encuentra-cosas”.


Figura 3: Enviar comandos BLE a un Tile

Esta herramienta, como ya he comentado anteriormente, es una navaja suiza para realizar diferentes acciones sobre dispositivos que utilicen como mecanismo de comunicación el protocolo BLE (BlueTooh Low Energy). Y si quieres probarla, BTLEJack se puede descargar desde su repositorio en Github.

Figura 4: BTLEJack en GitHub

Proporciona todo lo que se necesita para poder realizar sniffing del tráfico a cualquier conexión o paquetes de “advertisement” que se pueda “escuchar” en el aire. Sería un símil con el modo monitor de una tarjeta WiFi, es decir, podemos escuchar los paquetes que circulan por el aire, orientado a BLE. También se puede hacer “atacar” o hacer DoS sobre conexiones BLE existentes. Por otro lado, también se puede hacer hijacking sobre las conexiones e intentar secuestrarlas. Es un proyecto bastante completo en cuanto a funcionalidades e intenciones.

Nos llamó bastante la atención y tuvimos que probarlo. Hay que indicar que nosotros utilizamos la placa BBC MicroBit con un firmware dedicado, es decir, modificado. Como dije anteriormente, puedes utilizar Bluefruir LE de Adafruit o un kit de evaluación nRF51822. En este enlace se puede ver el firmware compatible y los dispositivos, dentro del propio repositorio de BTLEJack.

Figura 5: Btlejack firmware

BTLEJack soporta BLE 4.x y 5.x. En ésta última versión el soporte es limitado, soportando solo 1 Mbps uncoded y no soporta actualizaciones de los mapas de canales. Los requisitos para poder “jugar” con esta aplicación es una placa MicroBit, aunque se recomienda hasta 3 dispositivos, para obtener una menor pérdida de paquetes. Nosotros hemos probado con 2 placas MicroBit y el resultado es bueno. Es más, con un concentrador USB se pueden poner todas las placas MicroBit bajo el mismo USB, ya que el consumo de éste es muy bajo.

¿Por qué 3 placas? 

Si se conectan tres dispositivos, la herramienta puede sniffar en todos los canales de “publicidad”, es decir, en todos los canales de advertisement. Hay que recordar que los canales de advertisement son el 37, 38 y 39. De esta forma, se tiene más posibilidades de poder capturar la solicitud CONNECT_REQ, necesaria para saber que hay un dispositivo que está iniciando una conexión y poder saltar a los canales de datos.

La instalación de la herramienta es sencilla, simplemente, al descargarla de su Github, se debe ejecutar "python 3.x setup.py install" Esto hará que todo lo necesario se ejecute y se instalen las dependencias necesarias.

¿Cómo se preparan las MicroBit?

BTLEJack dispone de una opción que es la –i, con la que se prepararán todas las placas MicroBit conectadas al equipo. Para ello, utilizará la última versión de firmware disponible. Para capturar el tráfico BLE que hay alrededor nuestro, se puede utilizar el parámetro –c. Este parámetro puede ser configurado para sniffar tráfico de cualquier dispositivo a nuestro alcance, o indicarle qué dirección física queremos escuchar.

Figura 6: Ejecución de btlejack

En la imagen se puede observar la captura del paquete CONNECT_REQ, el cual proporciona información sobre una conexión solicitada y un cambio a canales de datos. Se puede ver también la dirección física del origen y del destino. Esto es útil si luego se quiere filtrar las conexiones y el tráfico.

Para un ejemplo cualquiera, podemos ver cómo en el momento que se obtiene el CONNECT_REQ se obtienen los datos que se están intercambiando. Las preguntas que nos podemos hacer son similares a estas:
- ¿Qué ocurre si uno de esos paquetes de datos provoca que una luz se encienda? 
- ¿Y si hace pitar un dispositivo? 
- ¿Si solicita datos de frecuencia cardíaca? 
Este tipo de sniffing proporciona datos que pueden ser utilizados en ataques de replay, tal y como se vio en el ejemplo de los “encuentra-todo”.

Figura 7: Información del paquete capturado

Para la enumeración de conexiones existentes se puede utilizar la opción –s. Con esta opción se puede ver conexiones existentes y el número de paquetes que se están enviando. Esto es útil para capturar el address access.

Con la opción –f se especifica exactamente la conexión que se quiera sniffar. Paralelizando este proceso con varios MicroBit se obtienen beneficios en lo que a pérdida de paquetes y de posibilidades se refiere. La opción –s y –f se utiliza para conexiones que ya están en uso, mientras que la opción –c es para nuevas conexiones que somos capaces de detectar.

Figura 8: Realizando un ataque de Hijacking de sesiones BLE

Con la opción –t se puede lograr un hijacking de la sesión o conexión en curso. Este proceso puede tardar un poco ya que, si no se indica, se debe calcular el channel map, el hop interval y el hop increment. Otra opción es hacer jamming con el parámetro –j, el cual requiere de una conexión abierta.

A la caja de herramientas

Como se puede ver, es una herramienta interesante para la auditoría de dispositivos IoT que hagan uso del protocolo Bluetooth Low-Energy en los entornos empresariales y personales, que tan de moda se encuentra hoy día. Otra herramienta para meter en la mochila del pentester y del usuario curioso que quiere conocer más sobre BLE y sus posibilidades.

Saludos,

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.
Para consultas puedes usar el Buzón Público para contactar con Pablo González

1 comentario:

  1. Buenos días Sr.Alonso me ha surgido un problema, podría contactar conmigo en esta cuenta de gmail, y lo resucitamos jejeje, un saludo.

    ResponderEliminar