GATTacker

Wireless & RF v0.1.5

MITM-прокси для Bluetooth Low Energy GATT-коммуникаций. Клонирует BLE-устройство, подключается к нему от имени легитимного клиента и позволяет перехватывать и модифицировать BLE-трафик в реальном времени. Идеален для атак на IoT-устройства.

v0.1.5
current
Добавлен 25.06.2026 · Обновлён 25.06.2026 · Wireless & RF
Установка
npm install gattacker

# Сканирование и клонирование:
node scan.js
node advertise.js <device-id>

# MITM:
node mitm.js
переведено ИИ

gattacker

Пакет Node.js для Man-in-the-Middle (человек посередине) атак и многого другого в BLE (Bluetooth Low Energy).

Необходимые условия

см.:

https://github.com/sandeepmistry/noble

https://github.com/sandeepmistry/bleno

Установка

npm install gattacker

Использование

Конфигурация

При запуске обоих компонентов настройте переменные в config.env:

  • NOBLE_HCI_DEVICE_ID : noble ("центральное", ws-slave) устройство
  • BLENO_HCI_DEVICE_ID : bleno ("периферийное", advertise) устройство

Если вы запускаете модули "центральное" и "периферийное" на разных компьютерах только с одним интерфейсом BT4, вы можете оставить значения закомментированными.

  • WS_SLAVE : IP-адрес компьютера с ws-slave
  • DEVICES_PATH : путь для хранения json-файлов

Запуск "центрального" устройства

sudo node ws-slave

Подключается к целевому периферийному устройству и выступает в роли websocket-сервера.

Отладка:

DEBUG=ws-slave sudo node ws-slave

Сканирование

Сканирование объявлений (реклам)

node scan

Без параметров сканирует широковещательные объявления и записывает их как json-файлы (.adv.json) в DEVICES_PATH

Исследование служб и характеристик

node scan <периферийное>

Исследует службы и характеристики выбранного периферийного устройства. Сохраняет исследованную структуру служб в 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: не подключается к оригинальному устройству, запускает функцию искажения локально

Будет предпринята попытка вызвать указанную функцию из hookFunctions, добавьте свою собственную. Несколько примеров предоставлены в подкаталоге hookFunctions.

staticValue - статическое значение

Запуск "периферийного" устройства

node advertise -a <файл_объявления_json> [ -s <файл_служб_json> ]

Оно подключается через websocket к ws-slave для пересылки запросов на оригинальное устройство. Статический запуск (-s) устанавливает службы локально, не подключаясь к ws-slave. Вам нужно правильно настроить хуки.

Клонирование MAC-адреса

Для многих приложений необходимо клонировать MAC-адрес оригинального устройства. В helpers/bdaddr предоставлен вспомогательный инструмент bdaddr от Bluez.

cd helpers/bdaddr
make

обертка (wrapper script):

./mac_adv -a <файл_объявления_json> [ -s <файл_служб_json> ]

Дамп, воспроизведение

Файлы дампов сохраняются по пути, настроенному в DUMP_PATH в config.env (по умолчанию dump). Дополнительная информация: https://github.com/securing/gattacker/wiki/Dump-and-replay

Устранение неполадок

Выключите, скрестите пальцы, попробуйте снова ;)

сброс устройства

hciconfig <hci_интерфейс> reset

Запуск ws-slave и advertise на одном компьютере

С такой конфигурацией вы можете столкнуться с различными проблемами.

Попробуйте поменять местами NOBLE_HCI_INTERFACE и BLENO_HCI_INTERFACE

отладка с помощью hcidump

hcidump -x -t <hci_интерфейс>

ЧАВО, дополнительная информация

ЧАВО (FAQ): https://github.com/securing/gattacker/wiki/FAQ

Дополнительная информация: www.gattack.io)

Лицензия

Авторское право (C) 2016 Славомир Ясек, SecuRing slawomir.jasek@securing.pl

Настоящим предоставляется разрешение любому лицу, получившему копию данного программного обеспечения и сопутствующей документации (далее "Программное обеспечение"), на бесвозмездное использование Программного обеспечения без каких-либо ограничений, включая, но не ограничиваясь, права на использование, копирование, изменение, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, а также предоставление указанным лицам Программного обеспечения, при условии соблюдения следующих условий:

Указанное уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ИСКИ, УБЫТКИ ИЛИ ИНУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ ТО В ДЕЙСТВИИ КОНТРАКТА, ДЕЛИКТА ИЛИ ИНАЧЕ, ВОЗНИКШУЮ ИЗ, ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ.

Комментарии
Войдите, чтобы оставить комментарий