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
Ferramentas/GitHubGitHub/matheus-garbelini/sweyntooth_bluetooth_low_energy_attacks
Segurança BluetoothGeração de PayloadsAnálise de VulnerabilidadesExploraçãoFuzzingSegurança Sem FioTestes de PenetraçãoSegurança de Hardware e IoT

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
GitHub
matheus-garbelini/sweyntooth_bluetooth_low_energy_attacks

sweyntooth_bluetooth_low_energy_attacks

Prova de Conceito das vulnerabilidades Sweyntooth Bluetooth Low Energy (BLE).

Ver Repositório
332777há 4 anosRevisado pelo Kitploit

SweynTooth - Desencadeando o Caos sobre Bluetooth Low Energy

Este repositório é parte do resultado de uma pesquisa do ASSET Research Group. attack_logo

O SweynTooth cobre uma família de 18 vulnerabilidades em diferentes kits de desenvolvimento de software (SDKs) de Bluetooth Low Energy (BLE) de seis grandes fornecedores de system-on-a-chip (SoC). As vulnerabilidades expõem falhas em implementações específicas de BLE SoC que permitem a um invasor dentro do alcance de rádio acionar deadlocks, crashes e buffer overflows ou contornar completamente a segurança, dependendo das circunstâncias. (Atualização) Também incluímos um script de teste para verificar dispositivos contra a variante BLE KNOB.

Você pode ver mais informações sobre as vulnerabilidades, patches disponíveis e dispositivos afetados no site de divulgação do SweynTooth do ASSET Research Group.

Fitbit, August Smart Lock, Eve Energy, CubiTag e outras coisas "Inteligentes" são afetadas.

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

Bibliotecas incluídas neste PoC

Este PoC utiliza bibliotecas bem mantidas, como Scapy e Colorama. A criação e a dissecação de pacotes BLE são feitas por meio de camadas de protocolo Scapy personalizadas (bluetooth4LE e bluetooth.py). Há um merge em andamento para incluir nossas adições no repositório principal do Scapy.

Começando (Instalação)

Primeiro, certifique-se de ter Python2.7 no seu sistema e os pacotes Python listados no arquivo requirements.txt. Se você estiver usando Ubuntu, execute o seguinte:

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

Em segundo lugar, o SweynTooth usa o Nordic nRF52840 Dongle para enviar/receber pacotes brutos da camada de enlace de/para o periférico vulnerável via rádio. É necessário gravar o firmware do driver na placa antes de iniciar os scripts Python 2.7.

O binário do nosso firmware está no arquivo nRF52_driver_firmware.zip. Você precisa instalar a ferramenta nrfutil para gravar o firmware na placa. Lembre-se de colocar o nRF52840 em modo DFU antes de gravar (reinicie o dongle USB enquanto ele estiver conectado ao seu PC pressionando o pequeno botão de reset).

dongle_reset_button

Você pode executar os seguintes comandos para instalar as dependências do Python e gravar o firmware:

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

Os scripts funcionam no Linux ou no Windows. Você só precisa alterar o parâmetro COM_PORT para corresponder ao nome da porta do nRF52840.

(Método alternativo de gravação do driver nRF52)

Se o método de gravação anterior não funcionar, você também pode gravar o firmware usando o nRF Connect App for Desktop, que oferece uma interface prática para gravar o firmware hex (nRF52_driver_firmware.hex).

Executando os scripts de prova de conceito

Após instalar os requisitos, você pode executar um script de exploit usando o seguinte comando:

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

O primeiro argumento é o nome da porta serial (geralmente /dev/ttyACM0 no Linux) e o segundo é o endereço do dispositivo BLE vulnerável. Você pode usar qualquer scanner BLE ou o aplicativo nRF Connect para descobrir esse endereço.

Tomando como exemplo a vulnerabilidade Key Size Overflow, o script fornece a seguinte saída se o dispositivo vulnerável travar após a falha:

attack_logo

Imagem Docker para Linux (opcional)

Se você deseja usar o SweynTooth por meio de uma imagem Docker para evitar instalar dependências do Python, você pode usar o script auxiliar docker.sh para construir e executar a instância Docker ou baixar a imagem Docker pré-construída (link) disponível na página de releases. O uso de docker.sh está descrito abaixo.

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

Exploits BLE disponíveis

Cada script de exploit corresponde a uma falha. A tabela resumo a seguir mostra a correspondência entre a vulnerabilidade e um script para explorá-la nos SoCs afetados.

De modo geral, produtos que usam os SoCs afetados empregam um watchdog para reiniciar automaticamente o BLE SoC quando ocorre uma falha; portanto, nem todos os produtos podem sofrer deadlock. Ainda assim, deve ser possível obter alguma indicação visual ou sonora do produto se ele travar e reiniciar.

Zero LTK Installation (CVE-2019-19194)

A vulnerabilidade mais crítica do SweynTooth é a Zero LTK Installation, que permite a um invasor contornar completamente o procedimento mais recente de pareamento Bluetooth (secure connections) ao forçar um procedimento de configuração de criptografia com uma LTK preenchida com zeros. Para testar seu dispositivo contra essa vulnerabilidade, o dispositivo deve aceitar ou suportar secure connections como método de pareamento. Você pode executar o PoC da seguinte forma:

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

Observe que os argumentos COM7 e A4:C1:38:D8:AD:A9 variam de acordo com sua configuração. Se o dispositivo for vulnerável, o PoC produz a seguinte saída:

zero_ltk

LLID Deadlock (CVE-2019-17060/1)

O script de deadlock LLID limpa o campo LLID ao enviar solicitações de versão ou de pareamento de forma alternada a cada reconexão com o periférico. Isso é feito para acionar a vulnerabilidade nos SoCs vulneráveis da NXP e da Cypress. Ao executar o script contra o KW41Z vulnerável, a pilha fica em deadlock e deve enviar pacotes Link Layer fora de ordem. O script tenta detectar quando a pilha está em deadlock e gera a seguinte saída para dispositivos KW41Z vulneráveis:

zero_ltk

Dispositivos Cypress vulneráveis geralmente desativam os anúncios (advertisements) após o ataque. Portanto, você deve ver uma mensagem de erro indicando que uma falha foi detectada. Ao testar este script contra um Fitbit Inspire vulnerável, o smartwatch trava imediatamente ou desativa temporariamente seus anúncios. Ataques intermitentes contra esse dispositivo devem causar um mau funcionamento permanente do BLE, exigindo que o usuário reinicie manualmente o Fitbit Inspire.

Testador KNOB (variante Bluetooth Low Energy)

Embora o KNOB tenha afetado principalmente dispositivos Bluetooth Classic devido à redução do tamanho da chave para 1 byte, ainda é possível reduzir a entropia da chave de dispositivos Bluetooth Low Energy para 7 bytes (tamanho mínimo de chave em conformidade) durante o procedimento de pareamento SMP. A implicação dessa redução de entropia BLE em conformidade foi discutida em "Low Entropy Key Negotiation Attacks on Bluetooth and Bluetooth Low Energy" por Antonioli, Daniele et. al.

Disponibilizamos um script simples para verificar quais tamanhos de chave são aceitos por um dispositivo periférico BLE. Você pode executar o testador BLE KNOB da seguinte forma:

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

Não se esqueça de alterar o COM6 e o a4:c1:38:d8:ad:a9 para outros valores de acordo com a porta serial do dongle nRF52 (geralmente /dev/ttyACM0 no Linux) e o endereço do dispositivo BLE em teste. Se a ferramenta detectar que o periférico aceita tamanhos de chave diferentes de 16 bytes, ela os listará conforme mostrado abaixo:

zero_ltk

Capturas

A pasta captures contém algumas capturas de exemplo de cada vulnerabilidade. Também adicionamos alguns casos de não conformidade detectados em alguns SoCs.

Extras

A pasta extras contém alguns scripts adicionais relacionados a não conformidades e algumas variantes do SweynTooth. Consulte a tabela de scripts extras em extras/README.md para obter mais informações.

Agradecimentos

Esta pesquisa foi parcialmente apoiada pela Keysight Technologies.

  • Scapy - Biblioteca de manipulação de pacotes.
  • Colorama - Texto colorido de terminal multiplataforma em Python.
Baixar ferramenta
VulnerabilidadeCVE(s)FornecedorArquivo de script
Link Layer Length OverflowCVE-2019-16336
CVE-2019-17519
Cypress
NXP
link_layer_length_overflow.py
LLID DeadlockCVE-2019-17061
CVE-2019-17060
Cypress
NXP
llid_dealock.py
Truncated L2CAPCVE-2019-17517DialogDA14580_exploit_att_crash.py
Silent Length OverflowCVE-2019-17518DialogDA14680_exploit_silent_overflow.py
Public Key CrashCVE-2019-17520Texas InstrumentsCC2640R2_public_key_crash.py
Invalid Connection RequestCVE-2019-19193Texas InstrumentsCC_connection_req_crash.py
Invalid L2CAP FragmentCVE-2019-19195MicrochipMicrochip_invalid_lcap_fragment.py
Sequential ATT DeadlockCVE-2019-19192STMicroelectronicssequential_att_deadlock.py
Key Size OverflowCVE-2019-19196TelinkTelink_key_size_overflow.py
Zero LTK InstallationCVE-2019-19194TelinkTelink_zero_ltk_installation.py
DHCheck SkipCVE-2020-13593Texas Instrumentsnon_compliance_dhcheck_skip.py
ESP32 HCI DesyncCVE-2020-13595Espressif Systemsesp32_hci_desync.py
Zephyr Invalid SequenceCVE-2020-10061Zephyr Projectzephyr_invalid_sequence.py
Invalid Channel MapCVE-2020-10069
CVE-2020-13594
Zephyr Project
Espressif Systems
Microchip
invalid_channel_map.py