BLESuite é um pacote Python que fornece uma maneira mais fácil de testar dispositivos Bluetooth Low Energy (BLE)
BLESuite é um pacote Python que torna a comunicação com dispositivos Bluetooth Low Energy (BLE) mais amigável e permite testes rápidos de dispositivos BLE. A versão 2 do BLESuite remove a dependência de PyGattlib e BlueZ e, em vez disso, usa uma versão modificada do PyBT (https://github.com/mikeryan/PyBT) para implementar e gerenciar nossa própria pilha BLE. Esta versão aumenta a confiabilidade da comunicação, aumenta a flexibilidade da comunicação, melhora a varredura de dispositivos e permite fuzzing de dispositivos nas camadas de host da pilha Bluetooth. A pilha utilizada pelo BLESuite permite intencionalmente que requisições/respostas malformadas sejam enviadas aos dispositivos a fim de permitir testes de dispositivos.
Recursos:
blesuite e ble-replayNota ao leitor:
Para acessar a funcionalidade Bluetooth Low Energy, você deve ter acesso a um adaptador Bluetooth que a suporte.
O objetivo do BLESuite é fornecer um método simplificado para scriptar rapidamente a comunicação com dispositivos BLE alvo para avaliações de segurança. Com a mudança do PyGattlib e BlueZ para o PyBT, agora podemos ter mais controle sobre a pilha BLE e usá-la para testar várias camadas da pilha BLE de um dispositivo alvo.
Além disso, o BLESuite não está mais restrito apenas ao papel Central. O BLESuite agora suporta o papel Periférico e permite que os usuários configurem e levantem rapidamente um servidor GATT que pode ser usado para testar dispositivos BLE no papel Central (ou dispositivos de papel duplo).
A seguir, as instruções de instalação para o pacote Python BLESuite.
Sistemas operacionais suportados:
O BLESuite foi desenvolvido e testado com Debian 9.3. A biblioteca pode ser suportada por outras distribuições Linux, no entanto, o suporte não é garantido atualmente.
Nota: Tentativas recentes de usar o BLESuite com Fedora 28 foram alcançadas instalando os seguintes itens:
Com o Fedora 28, houve um problema relatado não reproduzível com o BLESuite relacionado a um TypeError que não está presente nas instalações do Debian 9.3 ao tentar lidar com uma requisição ATT recebida.
Contribuições para correção são bem-vindas!
Software necessário
Os seguintes são requisitos para usar o BLESuite:
Após instalar libbluetooth-dev, libpython-dev e python-sphinx, execute o seguinte para instalar as dependências Python restantes:
pip install -r requirements.txt
A partir da pasta docs, execute:
make html
Em seguida, em docs/_build/html, um conjunto completo de documentação e guias de referência estará disponível.
Execute o seguinte comando para instalar o pacote Python:
python setup.py install
Se você não quiser instalar a API Python BDADDR ou estiver tendo problemas para instalá-la, comente a seguinte linha no setup.py e execute novamente o comando acima:
ext_modules = [c_ext],
Até agora, o BLESuite só pode suportar emparelhamento LE Legacy JustWorks. O Security Manager está em grande parte delineado, mas a programação criptográfica restante para LESC e os modelos de associação alternativos ainda precisam ser implementados.
A operação de escrita assinada (signed write) do ATT atualmente não é suportada pelo BLESuite. Esta não é uma operação comumente usada, no entanto, para suportar o modo de segurança 2, ela deve ser suportada.
O BLESuite atualmente só suporta endereços Públicos e Aleatórios (estáticos). No entanto, endereços aleatórios podem ser de dois subtipos: Estático ou Privado. Um endereço privado aleatório também pode ser dividido em dois subtipos não suportados atualmente pelo BLESuite: Endereço privado não resolvível e Endereço privado resolvível (resolvido usando IRK trocado durante o emparelhamento).
Como tal, a funcionalidade para definir esses tipos de endereços no adaptador do host não é exposta atualmente pelo BLESuite. Além disso, a capacidade de resolver endereços aleatórios resolvíveis de um peer com base em um IRK trocado ainda não está implementada.
Com a biblioteca construída, o próximo passo é construir ferramentas de avaliação de segurança que utilizem esta biblioteca.
Um exemplo que incluímos com esta biblioteca é o ble-replay, que pode receber uma captura de pacotes BLE
e reproduzir o tráfego GATT para um dispositivo alvo. O ble-replay pode ajudar rapidamente a
identificar falhas de segurança na camada de aplicação relacionadas a ataques de replay.
Esses tipos de ferramentas diminuem o tempo gasto analisando manualmente capturas de pacotes e scriptando manualmente casos de teste de comunicação BLE.