
BLESuite es un paquete de Python que proporciona una forma más fácil de probar dispositivos Bluetooth Low Energy (BLE)
BLESuite es un paquete de Python que hace que la comunicación con dispositivos Bluetooth Low Energy (BLE) sea más fácil de usar y permite pruebas rápidas de dispositivos BLE. La versión 2 de BLESuite elimina la dependencia de PyGattlib y BlueZ y, en su lugar, utiliza una versión modificada de PyBT (https://github.com/mikeryan/PyBT) para implementar y gestionar nuestra propia pila BLE. Esta versión aumenta la fiabilidad de la comunicación, incrementa la flexibilidad de la comunicación, mejora el escaneo de dispositivos y permite el fuzzing de dispositivos en las capas de host de la pila Bluetooth. La pila utilizada por BLESuite permite intencionadamente el envío de solicitudes/respuestas malformadas a los dispositivos con el fin de habilitar las pruebas de dispositivos.
Características:
blesuite y ble-replayNota para el lector:
Para acceder a la funcionalidad de Bluetooth Low Energy, debe tener acceso a un adaptador Bluetooth que lo soporte.
El objetivo de BLESuite es proporcionar un método simplificado para scriptear rápidamente la comunicación con dispositivos BLE objetivo durante evaluaciones de seguridad. Combinado con la transición de PyGattlib y BlueZ a PyBT, ahora podemos tener más control sobre la pila BLE y usarla para probar varias capas de la pila BLE de un dispositivo objetivo.
Además, BLESuite ya no está restringido a usar únicamente el rol Central. BLESuite ahora soporta el rol Periférico y permite a los usuarios configurar y poner en marcha rápidamente un servidor GATT que puede usarse para probar dispositivos BLE con rol Central (o dispositivos de doble rol).
Las siguientes son instrucciones de instalación para el paquete Python de BLESuite.
Sistemas operativos soportados:
BLESuite fue desarrollado y probado contra Debian 9.3. La librería puede ser compatible con otras distribuciones de Linux, sin embargo, el soporte no está garantizado actualmente.
Nota: Intentos recientes de usar BLESuite con Fedora 28 se lograron instalando los siguientes elementos:
Con Fedora 28, ha habido un problema reportado no reproducible con BLESuite relacionado con un TypeError que no está presente en las instalaciones de Debian 9.3 al intentar manejar una solicitud ATT entrante.
¡Se aceptan contribuciones para la corrección!
Software requerido
Los siguientes son los requisitos para usar BLESuite:
Después de instalar libbluetooth-dev, libpython-dev y python-sphinx, ejecute lo siguiente para instalar las dependencias de Python restantes:
pip install -r requirements.txt
Desde la carpeta docs, ejecute:
make html
Luego, en docs/_build/html estará disponible un conjunto completo de documentación y guías de referencia.
Ejecute el siguiente comando para instalar el paquete de Python:
python setup.py install
Si no desea instalar la API de Python de BDADDR o tiene problemas para instalarla, comente la siguiente línea en setup.py y vuelva a ejecutar el comando anterior:
ext_modules = [c_ext],
Por ahora, BLESuite solo puede soportar el emparejamiento LE Legacy JustWorks. El Security Manager está mayormente delineado, pero la programación criptográfica restante para LESC y los modelos de asociación alternativos aún deben implementarse.
La operación de escritura firmada ATT actualmente no está soportada por BLESuite. Esta no es una operación de uso común, sin embargo, para soportar el modo de seguridad 2, debería estar soportada.
BLESuite actualmente solo soporta direcciones Públicas y Aleatorias (estáticas). Sin embargo, las direcciones Aleatorias pueden ser de dos subtipos: Estáticas o Privadas. Una dirección Privada Aleatoria también puede dividirse en dos subtipos no soportados actualmente por BLESuite: Dirección Privada No Resoluble y Dirección Privada Resoluble (resuelta usando IRK intercambiada durante el emparejamiento).
Como tal, la funcionalidad para establecer estos tipos de direcciones en el adaptador del equipo no está expuesta actualmente por BLESuite. Además, la capacidad de resolver direcciones Aleatorias resolubles de un dispositivo remoto basándose en una IRK intercambiada aún no está implementada.
Con la librería construida, el siguiente paso es crear herramientas de evaluación de seguridad que utilicen esta librería.
Un ejemplo de ello que hemos incluido con esta librería es ble-replay, que puede tomar una captura de paquetes BLE
y reproducir el tráfico GATT hacia un dispositivo objetivo. ble-replay puede ayudar rápidamente a
identificar fallos de seguridad a nivel de aplicación relacionados con ataques de repetición.
Este tipo de herramientas reducen el tiempo dedicado a analizar manualmente capturas de paquetes y a scriptear manualmente casos de prueba de comunicación BLE.