
Implementación del exploit para CVE-2023-45866 que permite la inyección no autenticada de teclado Bluetooth mediante payloads DuckyScript en Raspberry Pi.
CVE-2023-45866 - Implementación de BluetoothDucky (Usando DuckyScript)
Esta es una implementación del CVE descubierto por marcnewlin [https://github.com/marcnewlin/hi_my_name_is_keyboard]
He creado un ducky_convert.py para intentar no modificar el archivo hid.py tanto como pueda para uso futuro.
Todavía estoy trabajando en algunas ideas de payloads para ello.
Lo tengo funcionando en una Raspberry Pi 4 usando el módulo bluetooth predeterminado. Lo he probado contra cada teléfono que tienen mis amigos y funciona. El único problema que he encontrado es con una marca de teléfonos de Nueva Zelanda llamada Vodafone que lo bloquea por defecto incluso aunque el teléfono no se haya encendido en años (pide emparejamiento), lo cual es gracioso porque es el más seguro.
Todavía tengo que ajustar TODA la terminología relacionada con ducky, pero tengo dispositivos limitados para probar.
REM esto es solo un comentario
string test123
ENTER
Eso debería escribir test123 en un campo de texto y luego presionar ENTER.
Solo estoy subiendo este código para cualquiera que quiera ayudar.
Instrucciones de instalación (Robadas de marcnewlin)
# actualizar apt
sudo apt-get update
sudo apt-get -y upgrade
# instalar dependencias desde apt
sudo apt install -y bluez-tools bluez-hcidump libbluetooth-dev \
git gcc python3-pip python3-setuptools \
python3-pydbus
# instalar pybluez desde el código fuente
git clone https://github.com/pybluez/pybluez.git
cd pybluez
sudo python3 setup.py install
# compilar bdaddr desde el código fuente de 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/
Luego simplemente
git clone https://github.com/pentestfunctions/BluetoothDucky
cd BluetoothDucky
sudo python3 BluetoothDucky.py -i hci0 -t 00:00:00:00:00:00
sudo python3 BluetoothDucky.py --scan
Buscará un archivo payload.txt en el mismo directorio que puede ser simplemente ducky script: prueba algo simple proporcionado en este repositorio para empezar.
Implementar una función de paso para verificar la última letra de la línea del payload enviada, para poder reenviar/continuar desde ahí en caso de fallo en lugar de toda la línea
Galaxy A14/SM-A14F
GUI + D (escritorio)
GUI + E (Correo electrónico)
GUI + F (BUSCAR)
GUI + H (¿Audio de Samsung?)
GUI + K (calendario)
GUI + M (Mapa)
GUI + N (Notificaciones)
GUI + T (¿Música?)
GUI + Q (Notificaciones completas)
GUI + R (Archivos recientes)
GUI + S (¿mensajes?)
GUI + U (Accesibilidad)
GUI + V (volumen)
GUI + Z (Configuración)
ALT + A (Cajón de aplicaciones)
Alt + Espacio (Buscar)