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
btlejack — Coltellino svizzero per Bluetooth Low Energy | Kitploit
Strumenti/GitHubGitHub/virtualabs/btlejack
Sicurezza BluetoothExploitSicurezza WirelessPenetration Testing
GitHubvirtualabs/btlejack

btlejack

Coltellino svizzero per Bluetooth Low Energy

Vedi Repository
2.1k2092 anni faRevisionato da Kitploit

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

BtleJack: un nuovo coltellino svizzero per Bluetooth Low Energy #####################################################

Btlejack fornisce tutto il necessario per sniffare, disturbare e dirottare dispositivi Bluetooth Low Energy. Si basa su uno o più dispositivi BBC Micro:Bit <http://microbit.org/>_ che eseguono un firmware dedicato. Potresti anche voler utilizzare un Adafruit Bluefruit LE sniffer <https://www.adafruit.com/product/2269>_ o un nRF51822 Eval Kit <https://www.waveshare.com/wiki/BLE400>_, dato che abbiamo aggiunto il supporto per questi dispositivi.

La versione attuale di questo strumento (2.0) supporta BLE 4.x e 5.x. Il supporto per BLE 5.x è limitato, in quanto supporta solo il PHY 1Mbps non codificato e non supporta gli aggiornamenti della mappa dei canali.

Requisiti

Hai bisogno di un sistema basato su UNIX (ad esempio un Raspberry Pi). Se usi un BBC Micro:Bit, avrai bisogno da uno a tre dispositivi Micro:Bit (tre dispositivi consigliati) e per ogni dispositivo una porta USB libera. Il consumo energetico di un Micro:Bit è piuttosto basso, quindi puoi usare una singola porta USB e un hub passivo per alimentare le tre unità consigliate.

Se colleghi 3 microbit contemporaneamente al tuo computer, Btlejack sarà in grado di sniffare su tutti i canali pubblicitari e avrà molte più possibilità di catturare la richiesta di connessione.

Come installare

Per prima cosa, installa il software client Python3 btlejack con Pip:

::

$ sudo pip3 install btlejack

Poi, collega il tuo dispositivo Micro:Bit al computer con un cavo USB, monta il dispositivo di archiviazione di massa associato (il punto di montaggio deve contenere MICROBIT), ed esegui il seguente comando:

::

$ btlejack -i

Questo programmerà ogni dispositivo Micro:Bit collegato al tuo computer, rendendoli pronti all'uso con Btlejack. Utilizzerà la versione corretta del firmware per il software client corrente, quindi è altamente consigliato eseguire questa procedura di installazione del firmware ogni volta che aggiorni Btlejack.

Se stai usando un Bluefruit LE sniffer o un nRF51822 Eval Kit, utilizza un programmatore SWD esterno per flashare il tuo dispositivo con questo firmware <https://github.com/virtualabs/btlejack-firmware/raw/master/dist/btlejack-firmware-ble400.hex>_.

Tieni i tuoi dispositivi collegati e sei pronto!

NOTA Funziona solo con sistemi compatibili posix.

Come usare Btlejack

Usare Btlejack è abbastanza semplice. Btlejack può:

  • utilizzare vari dispositivi
  • sniffare una connessione BLE esistente
  • sniffare nuove connessioni BLE
  • disturbare una connessione BLE esistente
  • dirottare una connessione BLE esistente
  • esportare i pacchetti catturati in vari formati PCAP

Specificare i dispositivi da usare

Btlejack normalmente cerca di rilevare e utilizzare automaticamente i dispositivi compatibili collegati (solo Micro:Bit per ora), ma poiché il firmware può essere hackerato o modificato per funzionare con altre schede basate su nRF51822, fornisce un'opzione specifica per permettere la compatibilità con questi dispositivi.

L'opzione -d ti permette di specificare uno o più dispositivi con Btlejack. Nota che questa opzione disabiliterà il rilevamento automatico dei dispositivi, e dovresti aggiungere tanti dispositivi quanti ne servono:

::

$ btlejack -d /dev/ttyACM0 -d /dev/ttyACM2 -s

Sniffare una connessione esistente

Prima, trova una connessione esistente da targetizzare con btlejack:

::

$ btlejack -s BtleJack version 1.1

[i] Enumerating existing connections ... [ - 54 dBm] 0xcd91d517 | pkts: 1 [ - 46 dBm] 0xcd91d517 | pkts: 2

Il primo valore (in dBm) mostra la potenza del segnale, maggiore è questo valore, migliore sarà la connessione sniffata.

Il secondo valore (esadecimale) è l'access address associato, un valore a 32 bit che identifica un collegamento tra due dispositivi compatibili Bluetooth Low Energy.

L'ultimo valore è il numero di pacchetti visti con questo access address. Più alto è questo valore, più è probabile che il corrispondente access address sia in uso.

Poi, usa l'opzione -f per seguire una connessione specifica:

::

$ btlejack -f 0xdda4845e BtleJack version 1.1

[i] Detected sniffers:

Sniffer #0: fw version 1.1

[i] Synchronizing with connection 0xdda4845e ... ✓ CRCInit: 0x2a035e ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 15 [i] Synchronized, packet capture in progress ... LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70 LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70

Se stai usando più di 1 microbit, Btlejack parallelizzerà alcune operazioni di sniffing per velocizzare il recupero dei parametri di connessione!

Sniffare nuove connessioni

L'opzione -c supportata da btlejack ti permette di specificare l'indirizzo BD target, oppure potresti voler usare any per catturare qualsiasi nuova connessione creata.

::

$ btlejack -c any BtleJack version 1.1

[i] Detected sniffers:

Sniffer #0: version 1.1 Sniffer #1: version 1.1 LL Data: 05 22 df b4 6f 95 c5 55 c0 0a f6 99 23 40 1d 7b 2f 0a 9a f4 93 01 12 00 27 00 00 00 d0 07 ff ff ff ff 1f 0b [i] Got CONNECT_REQ packet from 55:c5:95:6f:b4:df to 40:23:99:f6:0a:c0 |-- Access Address: 0x0a2f7b1d |-- CRC Init value: 0x93f49a |-- Hop interval: 39 |-- Hop increment: 11 |-- Channel Map: 1fffffffff |-- Timeout: 20000 ms

LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 0b 06 0c 08 0f 00 09 41 LL Data: 03 06 0c 07 1d 00 d3 07

oppure potresti voler specificare l'indirizzo BD target:

::

$ btlejack -c 03:e1:f0:00:11:22

Disturbare una connessione

Una volta che una connessione è stata identificata tramite il suo access address, puoi disturbarla usando l'opzione -j:

::

$ btlejack -f 0x129f3244 -j̀

Dirottare una connessione BLE

Btlejack è anche in grado di dirottare una connessione esistente; usa l'opzione -t per farlo. Una volta dirottata, Btlejack ti fornirà un prompt che ti permette di interagire con il dispositivo dirottato.

Prima, dirotta una connessione esistente:

::

$ btlejack -f 0x9c68fd30 -t -m 0x1fffffffff BtleJack version 1.1

[i] Using cached parameters (created on 2018-08-11 01:48:24) [i] Detected sniffers:

Sniffer #0: fw version 1.1

[i] Synchronizing with connection 0x9c68fd30 ... ✓ CRCInit: 0x81f733 ✓ Channel map is provided: 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 9 [i] Synchronized, hijacking in progress ... [i] Connection successfully hijacked, it is all yours \o/ btlejack>

Poi usa i seguenti comandi per interagire con il dispositivo:

  • discover: esegue l'enumerazione dei servizi e delle caratteristiche, fornirà tutte le informazioni su servizi e caratteristiche
  • write: scrive dati su un handle di valore specifico
  • read: legge dati da un handle di valore specifico
  • ll: invia un pacchetto raw a livello di collegamento (per ninja)

Comando discover ^^^^^^^^^^^^^^^^^^

Il comando discover invierà e riceverà pacchetti Bluetooth LE e recupererà tutti gli UUID dei servizi e i parametri, così come gli UUID delle caratteristiche e i parametri:

::

btlejack> discover start: 0001 end: 0005 start: 0014 end: 001a start: 0028 end: ffff Discovered services: Service UUID: 1801 Characteristic UUID: 2a05 | handle: 0002 | properties: indicate (20) \ value handle: 0003

Service UUID: 1800 Characteristic UUID: 2a04 | handle: 0019 | properties: read (02) \ value handle: 001a

Characteristic UUID: 2a00 | handle: 0015 | properties: read (02) \ value handle: 0016

Characteristic UUID: 2a01 | handle: 0017 | properties: read (02) \ value handle: 0018

Service UUID: 1824 Characteristic UUID: 2abc | handle: 0029 | properties: write indicate (28) \ value handle: 002a

Comando read ^^^^^^^^^^^^^^

Il comando read accetta un singolo parametro, l'handle di valore corrispondente alla caratteristica da cui vuoi leggere:

::

btlejack> read 0x16 read>> 4c 47 20 77 65 62 4f 53 20 54 56

Comando write ^^^^^^^^^^^^^^^

Il comando write accetta tre parametri:

::

btlejack> write

Formati di dati supportati:

  • hex: dati esadecimali (es. "414261")
  • str: stringa di testo, può essere racchiusa tra virgolette

Comando ll ^^^^^^^^^^^^

Quest'ultimo comando permette di inviare PDU del livello di collegamento Bluetooth Low Energy, in forma esadecimale, come specificato nel Volume 6, Parte B, Capitolo 2.4.

Esportazione file PCAP

Una caratteristica interessante di Btlejack è la possibilità di esportare i dati catturati in un file PCAP.

Btlejack supporta i seguenti formati DLT:

  • DLT_BLUETOOTH_LE_LL_WITH_PHDR (stesso)
  • DLT_NORDIC_BLE (quello usato dallo sniffer Nordic)
  • DLT_BLUETOOTH_LE_LL (supportato nelle versioni più recenti di Wireshark)

Il file di output può essere specificato usando l'opzione -o, mentre il formato di output può essere specificato con l'opzione -x. I valori validi per il formato sono: ll_phdr, nordic, o pcap (default).

::

$ btlejack -f 0xac56bc12 -x nordic -o capture.nordic.pcap

Il tipo di esportazione ll_phdr è utile quando si sniffa una connessione crittografata, poiché è supportato anche da crackle <https://github.com/mikeryan/crackle>_. Quindi, se vuoi sniffare e rompere connessioni crittografate, questa è la strada da seguire.

Potresti anche aver bisogno di dire a crackle di usare una strategia di cracking specifica, usando l'opzione -s:

::

$ crackle -i some.pcap -s 1

Cache delle connessioni

Btlejack utilizza una cache delle connessioni per memorizzare alcuni valori relativi alla connessione al fine di velocizzare le cose. Questa cache può causare alcuni problemi, specialmente se un access address è già stato visto in precedenza.

Questa cache può essere svuotata con l'opzione -z:

::

$ btlejack -z

Analisi live dei pacchetti con Wireshark

Btlejack 2.0 introduce una nuova opzione -w che permette di specificare un percorso FIFO (esistente o meno) per eseguire l'analisi live dei pacchetti:

::

$ btlejack -c any -w /tmp/blepipe

Puoi persino usare un FIFO e un file di output contemporaneamente:

::

$ btlejack -c any -w /tmp/blepipe -o blepackets.pcap

Suggerimento per usare btlejack su un Raspberry Pi

Se hai precedentemente abilitato virtual ethernet over USB (RNDIS), ad esempio per configurare un Raspberry Pi Zero W tramite USB, devi disabilitarlo di nuovo (ovvero rimuovere dtoverlay=dwc2 da boot/config.txt e modules-load=dwc2,g_ether da boot/cmdline.txt, poi sudo reboot), perché questo altrimenti interferirebbe con le connessioni USB degli sniffer.

Supporto per Bluetooth LE 5 & 5.1

Questa versione supporta Bluetooth Low Energy versioni 5 e 5.1 e in particolare il nuovo algoritmo di selezione dei canali introdotto nella versione 5 (CSA #2). Tuttavia, poiché l'hardware utilizzato non supporta i due nuovi PHY aggiunti dalla versione 5, sarà in grado solo di sniffare, disturbare e forse dirottare connessioni che utilizzano il PHY 1Mbps non codificato.

Si prega inoltre di notare che l'attuale implementazione di CSA #2 inclusa in Btlejack non supporta, per ora, gli aggiornamenti della mappa dei canali.

Sniffare una nuova connessione BLE 5

Btlejack rileva automaticamente l'algoritmo di selezione dei canali utilizzato, quindi non devi preoccuparti e cattura i pacchetti come al solito.

Sniffare una connessione BLE 5 esistente

Sniffare una connessione BLE 5 esistente (che utilizza il PHY 1Mbps non codificato, e solo questo PHY) non è così difficile. Per prima cosa, devi specificare che vuoi targetizzare una connessione BLE 5 usando l'opzione -5. Si prega di notare che non c'è modo di sapere se una connessione esistente utilizza CSA #2 o CSA #1, quindi devi provare entrambe le tecniche finché una non funziona.

::

$ btlejack -f 0x11223344 -5

Btlejack recupererà quindi la mappa dei canali utilizzata e poi il valore dell'intervallo di salto:

::

$ btlejack -f 0x11223344 -5 [i] Synchronizing with connection 0x11223344 ... ✓ CRCInit: 0x40d64f ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 160

Poi proverà a recuperare il valore del contatore PRNG di questa connessione:

::

$ btlejack -f 0x11223344 -5 [i] Synchronizing with connection 0x11223344 ... ✓ CRCInit: 0x40d64f ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 160 ✓ CSA2 PRNG counter = 5137 [i] Synchronized, packet capture in progress ...

Una volta fatto, Btlejack è sincronizzato con questa connessione e processerà i pacchetti come al solito.

Disturbare una connessione BLE 5 esistente

Niente di nuovo qui, tranne che devi specificare che stai attaccando una connessione BLE 5, usando l'opzione -5.

Si prega di notare che puoi ottimizzare questo attacco specificando anche la mappa dei canali e il valore dell'intervallo di salto da usare, utilizzando rispettivamente i flag -m e -p. Entrambi DEVONO essere forniti, altrimenti non funzionerebbe.

Dirottare una connessione BLE 5 esistente

Non sono riuscito a dirottare una connessione BLE 5 in questo momento, poiché questo attacco è sensibile al tempo. I miei dispositivi BLE 5 usano una latenza di 0, quindi non consentono alcun ritardo e causano il fallimento di questo attacco.

Quando avrò tra le mani alcuni legittimi dispositivi BLE 5, migliorerò questa funzionalità.

Scarica lo strumento