Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sweyntooth_bluetooth_low_energy_attacks — Prova di concetto delle vulnerabilità Sweyntooth Bluetooth Low Energy (BLE). | Kitploit
Strumenti/GitHubGitHub/matheus-garbelini/sweyntooth_bluetooth_low_energy_attacks
Sicurezza BluetoothGenerazione di PayloadAnalisi delle VulnerabilitàExploitFuzzingSicurezza WirelessPenetration TestingSicurezza Hardware e IoT

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
matheus-garbelini/sweyntooth_bluetooth_low_energy_attacks

sweyntooth_bluetooth_low_energy_attacks

Prova di concetto delle vulnerabilità Sweyntooth Bluetooth Low Energy (BLE).

Vedi Repository
3327774 anni faRevisionato da Kitploit

SweynTooth - Scatenare il caos sul Bluetooth Low Energy

Questo repository fa parte di un risultato di ricerca dell'ASSET Research Group. attack_logo

SweynTooth cattura una famiglia di 18 vulnerabilità in diversi kit di sviluppo software (SDK) Bluetooth Low Energy (BLE) di sei importanti produttori di system-on-a-chip (SoC). Le vulnerabilità espongono difetti in specifiche implementazioni BLE SoC che consentono a un attaccante nel raggio radio di innescare deadlock, crash e buffer overflow o di bypassare completamente la sicurezza, a seconda delle circostanze. (Aggiornamento) Abbiamo anche incluso uno script di test per verificare i dispositivi contro la variante BLE KNOB.

Puoi trovare maggiori informazioni sulle vulnerabilità, le patch disponibili e i dispositivi interessati sul sito di divulgazione SweynTooth dell'ASSET Research Group.

Fitbit, August Smart Lock, Eve Energy, CubiTag e altri dispositivi "Smart" sono interessati.

  • Crash di Fitbit Inspire e deadlock di CubiTag - https://www.youtube.com/watch?v=Iw8sIBLWE_w
  • Crash di Eve Energy e August Smart Lock - https://www.youtube.com/watch?v=rge1XeJVpag&t=6s

Librerie incluse in questo PoC

Questo PoC utilizza librerie ben mantenute come Scapy e Colorama. La creazione e l'analisi dei pacchetti BLE vengono eseguite tramite livelli di protocollo Scapy personalizzati (bluetooth4LE e bluetooth.py). C'è un merge in corso per includere le nostre aggiunte nel repository principale di Scapy.

Per Iniziare (Installazione)

Per prima cosa, devi assicurarti di avere Python2.7 sul tuo sistema e i pacchetti Python elencati nel file requirements.txt. Se stai usando Ubuntu, esegui quanto segue:

root@kitploit:~
sudo apt-get install python2.7
sudo pip install -r requirements.txt

In secondo luogo, SweynTooth utilizza il Nordic nRF52840 Dongle per inviare/ricevere pacchetti grezzi del link layer da e verso la periferica vulnerabile via radio. È necessario flashare il firmware del driver sulla scheda prima di avviare gli script Python 2.7.

Il binario del nostro firmware si trova nel file nRF52_driver_firmware.zip. Devi installare lo strumento nrfutil per flashare il firmware sulla scheda. Ricorda di mettere l'nRF52840 in modalità DFU prima del flashing (resetta il dongle USB mentre è collegato al PC premendo il piccolo pulsante di reset).

dongle_reset_button

Puoi eseguire i seguenti comandi per installare le dipendenze Python e flashare il firmware:

root@kitploit:~
python -m pip install nrfutil pyserial pycryptodome
nrfutil dfu usb-serial -p COM_PORT -pkg nRF52_driver_firmware.zip

Gli script funzionano su Linux o Windows. Devi solo modificare il parametro COM_PORT per farlo corrispondere al nome della porta nRF52840.

(Metodo alternativo di flashing del driver nRF52)

Se il metodo di flashing precedente non ha funzionato, puoi anche flashare il firmware utilizzando la nRF Connect App for Desktop, che offre una bella interfaccia per flashare il firmware hex (nRF52_driver_firmware.hex).

Esecuzione degli script proof of concept

Una volta installati i requisiti, puoi eseguire uno script di exploit con il seguente comando:

root@kitploit:~
python Telink_key_size_overflow.py COM7 A4:C1:38:D8:AD:A9

Il primo argomento è il nome della porta seriale (generalmente /dev/ttyACM0 su Linux) e il secondo è l'indirizzo del dispositivo BLE vulnerabile. Puoi usare qualsiasi scanner BLE o la nRF Connect App per scoprire tale indirizzo.

Prendendo come esempio la vulnerabilità Key Size Overflow, lo script fornisce il seguente output se il dispositivo vulnerabile si blocca dopo il crash:

attack_logo

Immagine Docker per Linux (facoltativo)

Se desideri usare SweynTooth tramite un'immagine docker per evitare di installare le dipendenze Python, puoi usare lo script di supporto docker.sh per creare ed eseguire l'istanza docker oppure scaricare l'immagine docker precompilata (link) disponibile nella pagina delle release. L'utilizzo di docker.sh è descritto di seguito.

root@kitploit:~
---------  HELP -------------
sudo ./docker run <script_name> <serial_port> <ble_target_address> - Start any sweyntooth script by its name (<script_name>)
sudo ./docker build                                                - Build docker container
sudo ./docker build release                                        - Build docker container and create compressed image for release
sudo ./docker shell                                                - Start docker container shell
---------- EXAMPLE ----------
./docker.sh run extras/Microchip_and_others_non_compliant_connection.py /dev/ttyACM0 f0:f8:f2:da:09:63

Exploit BLE disponibili

Ogni script di exploit corrisponde a un difetto. La seguente tabella riassuntiva mostra la corrispondenza tra la vulnerabilità e uno script per sfruttare la vulnerabilità sui SoC interessati.

Generalmente, i prodotti che utilizzano i SoC interessati impiegano un watchdog per riavviare automaticamente il SoC BLE in caso di guasto, quindi non tutti i prodotti possono essere bloccati in un deadlock. Tuttavia, dovrebbe essere possibile ottenere qualche indicazione visiva o audio dal prodotto se lo stesso si blocca e si riavvia.

Installazione LTK Zero (CVE-2019-19194)

La vulnerabilità SweynTooth più critica è l'Installazione LTK Zero, che consente a un attaccante di bypassare completamente la più recente procedura di associazione Bluetooth (connessioni sicure) forzando una procedura di configurazione della crittografia con un LTK riempito di zeri. Per testare il tuo dispositivo contro questa vulnerabilità, il dispositivo deve accettare o supportare le connessioni sicure come metodo di associazione. Puoi eseguire il PoC come segue:

root@kitploit:~
python Telink_zero_ltk_installation.py COM7 A4:C1:38:D8:AD:A9

Nota che gli argomenti COM7 e A4:C1:38:D8:AD:A9 variano in base alla tua configurazione. Se il dispositivo è vulnerabile, il PoC produce il seguente output:

zero_ltk

Deadlock LLID (CVE-2019-17060/1)

Lo script del deadlock LLID azzera il campo LLID quando invia sia le richieste di versione che le richieste di associazione in modo alternato a ogni riconnessione con la periferica. Questo viene fatto per innescare la vulnerabilità sia nei SoC NXP che Cypress vulnerabili. Quando lo script viene eseguito contro il KW41Z vulnerabile, lo stack viene bloccato in un deadlock e dovrebbe inviare pacchetti Link Layer fuori sequenza. Lo script tenta di rilevare quando lo stack è in deadlock e produce il seguente output per i dispositivi KW41Z vulnerabili:

zero_ltk

I dispositivi Cypress vulnerabili generalmente disabilitano l'advertising dopo l'attacco. Pertanto dovresti vedere un messaggio di errore che indica che è stato rilevato un crash. Quando si testa questo script contro un Fitbit Inspire vulnerabile, lo smartwatch si blocca immediatamente o disabilita temporaneamente il suo advertising. Attacchi intermittenti contro questo dispositivo dovrebbero causare un malfunzionamento permanente del BLE, richiedendo all'utente di riavviare manualmente Fitbit Inspire.

KNOB Tester (variante Bluetooth Low Energy)

Mentre KNOB ha colpito principalmente i dispositivi Bluetooth Classic a causa della riduzione della dimensione della chiave a 1 byte, è comunque possibile ridurre l'entropia della chiave dei dispositivi Bluetooth Low Energy a 7 byte (dimensione minima conforme della chiave) durante la procedura di associazione SMP. L'implicazione di tale riduzione conforme dell'entropia BLE è stata discussa in "Low Entropy Key Negotiation Attacks on Bluetooth and Bluetooth Low Energy" di Antonioli, Daniele et al..

Abbiamo reso disponibile un semplice script per verificare quali dimensioni di chiave sono accettate da un dispositivo periferico BLE. Puoi eseguire il tester BLE KNOB come segue:

root@kitploit:~
# Windows
python extras\knob_tester_ble.py COM6 a4:c1:38:d8:ad:a9
# Linux
python extras/knob_tester_ble.py /dev/ttyACM0 a4:c1:38:d8:ad:a9

Non dimenticare di cambiare COM6 e a4:c1:38:d8:ad:a9 con altri valori in base alla porta seriale del dongle nRF52 (di solito /dev/ttyACM0 su Linux) e all'indirizzo del dispositivo BLE in test. Se lo strumento rileva che la periferica accetta dimensioni di chiave diverse da 16 byte, le elencherà come mostrato di seguito:

zero_ltk

Catture

La cartella captures contiene alcune catture di esempio per ogni vulnerabilità. Abbiamo anche aggiunto alcuni casi di non conformità rilevati in alcuni SoC.

Extra

La cartella extras contiene alcuni script aggiuntivi relativi a non conformità e ad alcune varianti di SweynTooth. Consulta la tabella degli script extra in extras/README.md per maggiori informazioni.

Ringraziamenti

Questa ricerca è stata parzialmente supportata da Keysight Technologies.

  • Scapy - Libreria per la manipolazione dei pacchetti.
  • Colorama - Testo colorato nel terminale multipiattaforma in Python.
Scarica lo strumento
VulnerabilitàCVEProduttoreFile script
Overflow della Lunghezza del Link LayerCVE-2019-16336
CVE-2019-17519
Cypress
NXP
link_layer_length_overflow.py
Deadlock LLIDCVE-2019-17061
CVE-2019-17060
Cypress
NXP
llid_dealock.py
L2CAP TroncatoCVE-2019-17517DialogDA14580_exploit_att_crash.py
Overflow Silenzioso della LunghezzaCVE-2019-17518DialogDA14680_exploit_silent_overflow.py
Crash della Chiave PubblicaCVE-2019-17520Texas InstrumentsCC2640R2_public_key_crash.py
Richiesta di Connessione Non ValidaCVE-2019-19193Texas InstrumentsCC_connection_req_crash.py
Frammento L2CAP Non ValidoCVE-2019-19195MicrochipMicrochip_invalid_lcap_fragment.py
Deadlock ATT SequenzialeCVE-2019-19192STMicroelectronicssequential_att_deadlock.py
Overflow della Dimensione della ChiaveCVE-2019-19196TelinkTelink_key_size_overflow.py
Installazione LTK ZeroCVE-2019-19194TelinkTelink_zero_ltk_installation.py
Salto del DHCheckCVE-2020-13593Texas Instrumentsnon_compliance_dhcheck_skip.py
Desync HCI ESP32CVE-2020-13595Espressif Systemsesp32_hci_desync.py
Sequenza Non Valida ZephyrCVE-2020-10061Zephyr Projectzephyr_invalid_sequence.py
Mappa dei Canali Non ValidaCVE-2020-10069
CVE-2020-13594
Zephyr Project
Espressif Systems
Microchip
invalid_channel_map.py