
Un package Node.js pour l'évaluation de la sécurité BLE (Bluetooth Low Energy) utilisant des attaques Man-in-the-Middle et autres.

Un package Node.js pour l'attaque Man-in-the-Middle BLE (Bluetooth Low Energy) et plus.
voir :
https://github.com/sandeepmistry/noble
https://github.com/sandeepmistry/bleno
npm install gattacker
Avant d'exécuter les deux composants, configurez les variables dans config.env :
Si vous exécutez les modules 'central' et 'peripheral' sur des boîtiers séparés avec une seule interface BT4, vous pouvez laisser les valeurs commentées.
sudo node ws-slave
Se connecte au périphérique ciblé et agit comme serveur websocket.
Débogage :
DEBUG=ws-slave sudo node ws-slave
node scan
Sans paramètre, analyse les publicités diffusées et les enregistre sous forme de fichiers json (.adv.json) dans DEVICES_PATH.
node scan <peripheral>
Explore les services et caractéristiques du périphérique choisi. Enregistre la structure de service explorée dans un fichier json (.srv.json) dans DEVICES_PATH.
Pour une falsification active des requêtes/réponses, configurez les fonctions hook pour la caractéristique dans le fichier json des services du périphérique.
Exemple :
{
"uuid": "06d1e5e779ad4a718faa373789f7d93c",
"name": null,
"properties": [
"write",
"notify"
],
"startHandle": 8,
"valueHandle": 9,
"endHandle": 10,
"descriptors": [
{
"handle": 10,
"uuid": "2902",
"value": ""
}
],
"hooks": {
"dynamicWrite": "dynamicWriteFunction",
"dynamicNotify": "customLog"
}
}
Fonctions :
<dynamic|static><Write|Read|Notify>
dynamic : se connecter au périphérique d'origine
static : ne pas se connecter au périphérique d'origine, exécuter la fonction de falsification localement
Il tentera d'invoquer la fonction spécifiée depuis hookFunctions, incluez la vôtre. Quelques exemples sont fournis dans le sous-répertoire hookFunctions.
staticValue - valeur statique
node advertise -a <advertisement_json_file> [ -s <services_json_file> ]
Il se connecte via websocket à ws-slave afin de transmettre les requêtes au périphérique d'origine. L'exécution statique (-s) définit les services localement, ne se connecte pas à ws-slave. Vous devez configurer les hooks correctement.
Pour de nombreuses applications, il est nécessaire de cloner l'adresse MAC du périphérique d'origine. Un outil d'assistance bdaddr de Bluez est fourni dans helpers/bdaddr.
cd helpers/bdaddr
make
script d'encapsulation :
./mac_adv -a <advertisement_json_file> [ -s <services_json_file> ]
Les fichiers de vidage sont enregistrés dans un chemin configuré par DUMP_PATH dans config.env (par défaut dump).
Plus d'informations :
https://github.com/securing/gattacker/wiki/Dump-and-replay
Éteignez, croisez les doigts, réessayez ;)
hciconfig <hci_interface> reset
Avec cette configuration, vous pouvez rencontrer divers problèmes.
Essayez d'échanger NOBLE_HCI_INTERFACE et BLENO_HCI_INTERFACE
hcidump -x -t <hci_interface>
FAQ : https://github.com/securing/gattacker/wiki/FAQ
Plus d'informations : www.gattack.io
Copyright (C) 2016 Slawomir Jasek, SecuRing [email protected]
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.