
Пакет Node.js для оценки безопасности BLE (Bluetooth Low Energy) с использованием атак типа «человек посередине» и других атак.

Пакет Node.js для BLE (Bluetooth с низким энергопотреблением) Man-in-the-Middle и не только.
см.:
https://github.com/sandeepmistry/noble
https://github.com/sandeepmistry/bleno
npm install gattacker
Для запуска обоих компонентов настройте переменные в config.env:
Если вы запускаете модули "central" и "peripheral" на разных машинах с одним интерфейсом BT4, можно оставить значения закомментированными.
sudo node ws-slave
Подключается к целевому периферийному устройству и действует как веб-сокет-сервер.
Отладка:
DEBUG=ws-slave sudo node ws-slave
node scan
Без параметров сканирует передаваемые рекламные пакеты и записывает их в json-файлы (.adv.json) в DEVICES_PATH
node scan <peripheral>
Изучает сервисы и характеристики выбранного периферийного устройства. Сохраняет структуру сервисов в json-файл (.srv.json) в DEVICES_PATH.
Для активного перехвата/изменения запросов/ответов настройте функции-хуки для характеристик в json-файле сервисов устройства.
Пример:
{
"uuid": "06d1e5e779ad4a718faa373789f7d93c",
"name": null,
"properties": [
"write",
"notify"
],
"startHandle": 8,
"valueHandle": 9,
"endHandle": 10,
"descriptors": [
{
"handle": 10,
"uuid": "2902",
"value": ""
}
],
"hooks": {
"dynamicWrite": "dynamicWriteFunction",
"dynamicNotify": "customLog"
}
}
Функции:
<dynamic|static><Write|Read|Notify>
dynamic: подключение к оригинальному устройству
static: без подключения к оригинальному устройству, запуск функции изменения локально
Она попытается вызвать указанную функцию из hookFunctions; добавьте свои. Несколько примеров предоставлены в подкаталоге hookFunctions.
staticValue - статическое значение
node advertise -a <advertisement_json_file> [ -s <services_json_file> ]
Оно подключается через websocket к ws-slave для пересылки запросов к оригинальному устройству. При статическом запуске (-s) сервисы настраиваются локально, без подключения к ws-slave. Необходимо правильно настроить хуки.
Для многих приложений необходимо клонировать MAC-адрес оригинального устройства. Вспомогательный инструмент bdaddr из Bluez предоставлен в helpers/bdaddr.
cd helpers/bdaddr
make
скрипт-обертка:
./mac_adv -a <advertisement_json_file> [ -s <services_json_file> ]
Файлы дампа сохраняются в путь, заданный в DUMP_PATH в config.env (по умолчанию dump).
Подробнее:
https://github.com/securing/gattacker/wiki/Dump-and-replay
Выключите, скрестите пальцы, попробуйте снова ;)
hciconfig <hci_interface> reset
При такой конфигурации могут возникнуть различные проблемы.
Попробуйте переключить NOBLE_HCI_INTERFACE и BLENO_HCI_INTERFACE
hcidump -x -t <hci_interface>
FAQ: https://github.com/securing/gattacker/wiki/FAQ
Дополнительная информация: www.gattack.io
Copyright (C) 2016 Slawomir Jasek, SecuRing [email protected]
Настоящим предоставляется разрешение, бесплатно, любому лицу, получившему копию данного программного обеспечения и сопутствующей документации (далее — "Программное обеспечение"), без ограничения обращаться с Программным обеспечением, включая, без ограничения, права на использование, копирование, модификацию, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, а также разрешать лицам, которым предоставляется Программное обеспечение, делать это, при соблюдении следующих условий:
Указанное выше уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ КОНКРЕТНОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ В КОЕМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, УБЫТКАМ ИЛИ ИНЫМ ТРЕБОВАНИЯМ, ВОЗНИКАЮЩИМ ИЗ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ЕГО ИСПОЛЬЗОВАНИЕМ, ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.