
BLESuite is a Python package that provides an easier way to test Bluetooth Low Energy (BLE) device
BLESuite è un pacchetto Python per rendere la comunicazione con dispositivi Bluetooth Low Energy (BLE) più user-friendly e consente test rapidi dei dispositivi BLE. La versione 2 di BLESuite rimuove la dipendenza da PyGattlib e BlueZ e utilizza invece una versione modificata di PyBT (https://github.com/mikeryan/PyBT) per implementare e gestire la propria pila BLE. Questa versione aumenta l'affidabilità della comunicazione, incrementa la flessibilità di comunicazione, migliora la scansione dei dispositivi e consente il fuzzing dei dispositivi ai livelli host della pila Bluetooth. La pila utilizzata da BLESuite consente intenzionalmente l'invio di richieste/risposte malformate ai dispositivi al fine di consentire il test dei dispositivi.
Caratteristiche:
blesuite e ble-replayNota per il lettore:
Per accedere alla funzionalità Bluetooth Low Energy, è necessario disporre di un adattatore Bluetooth che la supporti.
L'obiettivo di BLESuite è fornire un metodo semplificato per scrivere rapidamente script di comunicazione con dispositivi BLE target per valutazioni di sicurezza. Grazie al passaggio da PyGattlib e BlueZ a PyBT, ora abbiamo più controllo sulla pila BLE e possiamo usarla per testare vari livelli della pila BLE di un dispositivo target.
Inoltre, BLESuite non è più limitato al solo ruolo Central. BLESuite ora supporta il ruolo Peripheral e consente agli utenti di configurare e avviare rapidamente un server GATT utilizzabile per testare dispositivi BLE con ruolo Central (o dispositivi a doppio ruolo).
Le seguenti sono istruzioni per l'installazione del pacchetto Python BLESuite.
Sistemi operativi supportati:
BLESuite è stato sviluppato e testato su Debian 9.3. La libreria può essere supportata da altre distribuzioni Linux, tuttavia il supporto non è attualmente garantito.
Nota: I recenti tentativi di utilizzare BLESuite con Fedora 28 hanno avuto successo installando i seguenti elementi:
Con Fedora 28, è stato segnalato un problema non ripetibile con BLESuite relativo a un TypeError che non è presente nelle installazioni Debian 9.3 quando si tenta di gestire una richiesta ATT in arrivo.
Contributi per la correzione benvenuti!
Software richiesto
I seguenti sono i requisiti per utilizzare BLESuite:
Dopo aver installato libbluetooth-dev, libpython-dev e python-sphinx, eseguire quanto segue per installare le rimanenti dipendenze Python:
pip install -r requirements.txt
Dalla cartella docs, eseguire:
make html
Quindi in docs/_build/html sarà disponibile un set completo di documentazione e guide di riferimento.
Eseguire il seguente comando per installare il pacchetto Python:
python setup.py install
Se non si desidera installare l'API Python BDADDR o si riscontrano problemi nell'installazione, commentare la seguente riga in setup.py e rieseguire il comando precedente:
ext_modules = [c_ext],
Attualmente, BLESuite supporta solo l'associazione LE Legacy JustWorks. Il Security Manager è stato per lo più delineato, ma la programmazione crittografica rimanente per LESC e i modelli di associazione alternativi devono ancora essere implementati.
L'operazione di scrittura firmata (signed write) ATT non è attualmente supportata da BLESuite. Non è un'operazione comunemente usata, tuttavia per supportare la modalità di sicurezza 2 dovrebbe essere supportata.
BLESuite attualmente supporta solo indirizzi Public e Random (statici). Tuttavia, gli indirizzi Random possono essere di due sottotipi: Static o Private. Un indirizzo Random Private può anche essere suddiviso in due sottotipi non attualmente supportati da BLESuite: indirizzo Private non risolvibile e indirizzo Private risolvibile (risolto utilizzando l'IRK scambiata durante l'associazione).
Di conseguenza, la funzionalità per impostare questi tipi di indirizzi sull'adattatore host non è attualmente esposta da BLESuite. Inoltre, la capacità di risolvere indirizzi Random risolvibili di un peer basata su un'IRK scambiata non è ancora implementata.
Con la libreria creata, il passo successivo è costruire strumenti di valutazione della sicurezza che utilizzino questa libreria.
Un esempio di questo tipo che abbiamo incluso con questa libreria è ble-replay, che può ricevere una cattura di pacchetti BLE
e riprodurre il traffico GATT verso un dispositivo target. ble-replay può aiutare rapidamente a
identificare difetti di sicurezza a livello applicativo legati agli attacchi di replay.
Questi tipi di strumenti riducono il tempo speso ad analizzare manualmente le catture di pacchetti e a scrivere manualmente script per i casi di test di comunicazione BLE.