lunes, enero 13, 2020

BLECTF: Una herramienta para aprender BLE (Bluetooth Low-Energy) con retos CTF (Capture The Flag)

En las pasadas, pero aún recientes, vacaciones navideñas, un viejo conocido me comentó que estuvo viendo mi taller de Cybercamp 2019 sobre Auditoría y Hacking sobre BLE. Esta persona era Javi Cavero y me enseñó una herramienta que estuvo en BlackHat 2018 llamada BLECTF de la que además ha publicado material. Entre ese material, tienes un Write-Up bastante interesante sobre la instalación de BLECTF sobre una placa ESP32. Además, ha ido dando solución a cada rato a los temas y dudas que han surgido, pero si lo que si quieres aprender con esta herramienta no mires su solución de primeras. Intenta primero por tu cuenta, prueba y, después de mucho probar, entontces ya puedes mirar el write-up.

Figura 1: BLECTF: Una herramienta para aprender BLE (Bluetooth Low-Energy)
con retos CTF (Capture The Flag)

La herramienta BLECTF fue desarrollada por Ryan Holeman y tiene como propósito enseñar los conceptos “core” de BLE y las interacciones entre un cliente y el servidor. Como se indica en el Github de la herramienta, uno puede divertirse mientras aprende los conceptos y las interacciones con BLE.

Figura 2: BLE Capture the Flag en GitHub

Para poder “flashear” el CTF se necesita un microcontrolador esp32. Es recomendable hacer uso de un entorno GNU/Linux, por ejemplo, nuestro querido Kali Linux que tanto bien nos hace a los pentesters. Hay una guía de instalación muy sencilla de seguir para llevar a cabo la instalación y puesta en funcionamiento en este enlace.

Figura 3: Pentesting con Kali Linux 2ª Edición.

BLECTF hará las funciones de dispositivo IoT que dispone de BLE para interactuar con él. Por otro lado, para realizar el CTF necesitaremos de un dispositivo Bluetooth para poder hacer de cliente y conectarnos contra la placa esp32 y poder interactuar con ella. Realmente, el dispositivo Bluetooth no es importante, ya que podremos hacerlo con la gran mayoría.

En estos repositorios se muestran diferentes herramientas que se pueden utilizar, desde gatttol hasta bettercap. Nosotros podemos jugar con nuestro querido HomePwn, tal y como se muestra en el artículo de una de las demos que se realizaba en BlackHat Europe 2019.


Figura 4: HomePWN Replay Attack


Volviendo al hilo del artículo, Javi hizo que me picara el gusanillo. Tengo diferente tipo de hardware y de placas, pero no disponía de un microcontrolador esp32. Por esta razón decidí comprar una y ponerme a jugar con ella. La placa tiene un coste muy asequible, ya que no superará los 10 .

La compañía que se encuentra detrás del diseño es Espressif, una compañía China. Integra en un solo chip un procesador Xtensa con 32 bits a una velocidad de 160 MHz. Lo interesante de la placa es la conectividad WiFi y Bluetooth. Para los que hayan leído más sobre el tema, muchos consideran esta placa como la evolución del ESP8266.

Figura 5: Placa con microcrontrolador ESP32

Otras de las características y funciones interesantes que proporciona la placa son la mayor potencia, nueva versión de Bluetooth, diferentes sensores o cifrado a través del hardware. Como se ve, y por un valor de adquisición muy bajo, se tiene una placa con la que se nos pueden ocurrir muchas ideas.

Instalación y puesta en marcha

Lo que no quiero es hacer spoiler de los 20 retos que proporciona este BLECTF, así que vamos a ver cómo poner en marcha esto desde mi experiencia. Yo he probado el proceso en Kali Linux y en Ubuntu 18.04. Es un proceso muy similar en ambos casos, aunque con pequeñas diferencias, las cuales se pueden ver en el artículo de Elvis. Lo primero es instalar todo lo necesario en el entorno:
apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache
También hay que descargar las librerías de espressif. Para ello, se puede hacer un git clone:
git clone --recursive https://github.com/espressif/esp-idf.git
Antes de esto, se puede utilizar la herramienta ESP32 Toolchain, también se puede encontrar como Xtensa Toolchain, para poder incorporar de manera sencilla lo necesario para generar el binario que necesitamos para, posteriormente, flashearlo.
wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
En el archivo $HOME/.profile se recomienda incorporar dos variables de entorno, para que todo sea más sencillo y rápido.
export PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH" 
export IDF_PATH=~/esp/esp-idf
Para la instalación automática de los requisitos y dependencias de esp32 se puede hacer uso del script install.sh que viene con lo descargado de Github sobre esp-idf.

Figura 6: Instalando en Kali Linux

Ahora, habrá que hacer un make que nos ayudará a generar el binario de BLECTF, pero antes se recomienda hacer un make menuconfig para poder configurar lo que queremos que tenga el binario. Al menos, hay que activar el Bluetooth. Sin eso, no podremos jugar con el Bluetooth. En otros sitios puede que os indiquen también que hay que indicar el puerto por el que se conectarán para el flasheo (velocidad, etcétera).

Una vez que el make funciona, puede dar algún problema, en algunos entornos por alguna dependencia que falte, hay que ejecutar el make flash y entonces el proceso se realizará sobre la placa.

Figura 7: Pasando el proceso a la placa

Ya tenemos lista la placa. Ahora toda disfrutar y aprender con este ingenioso CTF con BLE. Seguiré jugando con esta placa y con el tema del BLE. Sin olvidar a nuestra querida Micro:Bit que tanta diversión y tanto potencial tiene.

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",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.
Para consultas puedes usar el Buzón Público para contactar con Pablo González

1 comentario:

Hacker de Cabecera dijo...

Muchas gracias por la mención y el link al artículo! Las posibilidades de la placa y en general del BLE para divertirse con ello son ilimitadas y animo a todo el mundo que le "pique el gusanillo" que no se quede con las ganas!

Un saludo a todos y GRACIAS de nuevo!! ;-)

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares