Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Komfy-Switch-Wifi-Password-Disclosure — Концепт-доказательство и разбор, показывающий, как получить SSID/пароль Wi-Fi от умного выключателя D-Link Komfy через BLE путём реверс-инжиниринга кастомного base64-кодирования iOS-приложения. | Kitploit
Инструменты/GitHubGitHub/jasondoyle/komfy-switch-wifi-password-disclosure
Безопасность BluetoothБезопасность IoTАнализ уязвимостейЭксплуатацияОбратная инженерияМобильная безопасность
GitHubjasondoyle/komfy-switch-wifi-password-disclosure

Komfy-Switch-Wifi-Password-Disclosure

Концепт-доказательство и разбор, показывающий, как получить SSID/пароль Wi-Fi от умного выключателя D-Link Komfy через BLE путём реверс-инжиниринга кастомного base64-кодирования iOS-приложения.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
19 лет назадЕщё не проверено

Komfy-Switch-Wifi-Password-Disclosure

Введение
В этом отчете я подробно опишу свою находку в D-Link's Komfy Switch with Camera — способ извлечения связанных с устройством SSID и пароля Wi-Fi через Bluetooth 4.0 (BLE). Komfy Switch — это продукт для домашней безопасности и автоматизации, который может заменить настенный выключатель в вашем доме, обеспечивая видеонаблюдение, контроль температуры, уровня влажности, качества воздуха и дистанционное управление выключателями света.

Профилирование Bluetooth BLE
Перед тем как копать глубже, я провел краткое профилирование BLE-устройства с помощью iOS-приложения LightBlue. На тот момент устройство Komfy было онлайн и настроено под типичный сценарий использования. При подключении к Komfy через LightBlue я заметил нестандартный GATT-сервис, раскрывающий восемь пользовательских характеристик (или функций). Пара таких характеристик получала необычно большой объем данных, учитывая, что максимум по спецификации BLE составляет 20 байт. Если и периферийное, и ведущее устройство поддерживают это, можно согласовать более высокий MTU для так называемых «длинных» чтений и записей. Первые скриншоты ниже показывают GATT-сервисы и характеристики (начиная с 0xB002 по 0xB00A). Следующие два скриншота показывают две характеристики, на которых сосредоточен этот отчет (0xB006 и 0xB007). Характеристики 0xB006 и 0xB007 отображали SSID Wi-Fi и то, что после декодирования в ASCII выглядело как строка в кодировке base64. Однако декодирование строки из base64 не выявило никаких читаемых данных, как показано на последнем скриншоте.

Приложение Komfy: трассировка вызовов методов
Чтобы лучше понять GATT-характеристики, реализованные устройством Komfy, я выгрузил методы iOS-приложения Komfy с помощью class-dump-z и настроил трассировку интересующих методов. Полный дамп классов можно посмотреть здесь. Меня особенно интересовал класс BLEDevice, а также любые другие методы, связанные с bluetooth. Трассировку методов можно настроить с помощью perl-скрипта Logify.pl, описанного Пратиком здесь.

На скриншоте выше показан вывод трассировки методов во время чистой установки и настройки Komfy. Обратите внимание на пароль Wi-Fi «chipotlemakesmehappy» в открытом виде, а затем на ту же строку, похожую на base64, которую приложение LightBlue получило из GATT-характеристики 0xB007 ранее. Трассировка также показывает вызов метода +[Base64 encode:], что сначала вызвало замешательство, поскольку строка не декодировалась из base64 с помощью стандартной библиотеки. Почти было решено, что декодированное значение зашифровано или дополнительно закодировано, пока не стало ясно, что +[Base64 encode:] — это приватно реализованный метод (не из класса NSData). С этой странной кодировкой нужно было разобраться.

Дисассемблирование с Hopper
Теперь перейдем к реверс-инжинирингу схемы кодирования «base64», реализованной D-Link («реверс-инжиниринг» звучит гораздо сложнее, чем это было на самом деле, судя по конечному результату). Загрузка приложения Komfy в Hopper и анализ методов -[BLEDevice getWifiPassword:] и +[Base64 decode:] были очевидной отправной точкой. Анализ -[BLEDevice getWifiPassword:] подтвердил, что GATT-характеристика 0xB007 действительно получает пароль Wi-Fi.

Просматривая ARM-ассемблер метода +[Base64 decode:], я заметил, что он очень похож на стандартную реализацию класса NSData, поэтому я переключился на изучение +[Base64 encode:]. Hopper быстро намекнул мне на ответ. Рядом с одной из инструкций ассемблера была выведена строковая константа, содержащая все буквы стандартного алфавита base64, но в совершенно другом порядке. Слегка устыдившись того, что не подумал о тривиальной подстановке, не сложнее оригинального шифра Цезаря, я написал скрипт для расшифровки символов base64 — и вуаля! На экране появилось «chipotlemakesmehappy».

По сути, вот как расшифровать и декодировать строку из base64:

Полный autopwn-скрипт здесь.

И да, Chipotle действительно делает меня счастливым.

Запись BLE-перехвата с Ubertooth можно скачать здесь.

Скачать инструмент