Введение

Семейство микроконтроллеров ESP имеет кучу применений как в повседневной жизни, так и в узких отраслях. Рассмотрим микроконтроллер ESP32, так же его интересную прошивку.

WARNING

Важно отметить, что прошивка платы ESP32 для тестирования Wi‑Fi на уязвимости должна использоваться исключительно в рамках законных и этичных целей. Автор статьи не несёт ответственности за неправомерное использование данной информации или применение её в целях нарушения законодательства. Любые действия, основанные на данной статье, должны быть согласованы с соответствующими законами и нормативными актами.

ESP32

ESP32 — это микроконтроллер, разаработанный компанией Espressif Systems. Он представяет собой высокопроизводительный чип, который объединяет в себе процессоры Xtensa LX6 и два ядра Wi‑Fi/Bluetooth. Чип является отличным выбором для разработки умных устройств, датчиков, беспроводных коммуникаций и других проектов. «Старший брат» всеми известной ESP8266. ESP32 также имеет широкую поддержку со стороны сообщества разработчиков. Чип стоит сущие копейки, в интернет‑магазинах его можно встретить по цене в районе 300–400р.

ESP32 Wi-Fi Penetration Tool

Проект представляет собой универсальный инструмент на платформе ESP32 для реализации атак на Wi-Fi.

Включает в себя:

  • Захват и анализ рукопожатия WPA/WPA2

  • Преобразование захваченных рукопожатий в файл HCCAPX, для брутфорса в Hashcat.

  • Атаки деаутентификации с использованием различных методов.

  • Атаки отказа в обслуживании.

  • Форматирование захваченного трафика в формат PCAP.

  • Точка доступа для управления через веб-интерфейс.

Так же проект является частью диссертации самого разработчика risinek, полной академической статьёй можно ознакомиться здесь.

Установка прошивки с Linux

Установка осуществляется довольно простым образом, для начала установим библиотеку python для работы с ESP.

pip install esptool

Установка esptool

После чего скачиваем сам репозиторий в любую удобную нам папку.

git clone https://github.com/risinek/esp32-wifi-penetration-tool

Скачиваем репозиторий

Теперь важный момент, для установки прошивки нам необходимо знать к какому физическому порту подключен наш микроконтроллер, в Windows это посмотреть довольно просто. В Linux же несколько сложнее, в плане поиска нужной нам команды.

Команда называется dmesg, для начала запустим её так просто, чтобы посмотреть что она выведет.

Вывод кманды dmesg:

Теперь подключим наш чип и снова воспользуемся нашей командой.

Ориентируемся на последние строки и видим что новое USB-устройство было замечено на порту ttyUSB0. Теперь когда мы знаем нужный порт, заходим в директорию нашего инструмента и вводим команду установки с официальной страницы.

esptool -p /dev/ttyS5 -b 115200 --after hard_reset write_flash --flash_mode dio --flash_freq 40m --flash_size detect 0x8000 build/partition_table/partition-table.bin 0x1000 build/bootloader/bootloader.bin 0x10000 build/esp32-wifi-penetration-tool.bin

Важно: в строке /dev/ttyS5 изменяем значение на свой порт!

Ожидаем завершения установки и переподключаем наше устройство к питанию. После чего ищем Wi-Fi точку с именем ManagementAP и вводим пароль от точки mgmtadmin. После подключения переходим в панель управления которая находится по адресу 192.168.4.1 и видим наш веб-клиент для настройки и управления инструментом.

Важно: по моим личным наблюдениям, панель управления лучше всего открывать с браузера Firefox, именно на нём он работает стабильней всего!

Тестируем прошивку

Ну что же, нас приветствует донельзя простой интерфейс в котором виден диапазон беспроводных сетей и собственно действия над ними. Рассмотрим всё по-порядку.

Интерфейс

В данном случае все действия будут проводиться над моей Wi-Fi точкой ELTX-2.4GHz_WiFi_5F60. Для атаки нужно просто нажать на нужную вам беспроводную сеть и выбрать какие действия над ней совершать в пункте Attack type и Attack method. В пункте Attack timeout продолжительность атаки. После каждой атаки нас будет отключать от чипа, поэтому нужно переподключаться к нему по точке доступа

PMKID

Немного теории

PMKID (Pairwise Master Key Identifier) — это идентификатор мастера ключа, используемый в протоколе WPA/WPA2 для безопасности беспроводных сетей. PMKID генерируется на основе пароля (PSK) и SSID сети. Он используется для установления безопасного соединения между устройствами и точкой доступа.

EAPOL (Extensible Authentication Protocol over LAN) — это протокол аутентификации, используемый в беспроводных сетях (Wi‑Fi) для установления безопасного соединения между клиентским устройством и точкой доступа. EAPOL обеспечивает защиту от несанкционированного доступа и поддерживает различные методы аутентификации, такие как EAP‑TLS, EAP‑TTLS, PEAP и другие.

В 2018 году участниками hashcat был раскрыт новый тип атаки, который не только полагается на один пакет, так ещё и не требует для этого подключенных клиентов. Многие современные маршрутизаторы прибавляют дополнительное поле в конце первого EAPOL кадра, отправленного самим AP. PMKID получается с использованием данных, которые известны нам.

PMKID вычисляется с использованием HMAC-SHA1, где ключ является PMK, а часть данных представляет собой конкатенацию фиксированной строковой метки «PMK Name», MAC-адрес точки доступа и MAC-адрес станции.

PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)

Поскольку PMK такой же, как в обычном четырехстороннем рукопожатии EAPOL, это идеальный вектор атаки. Мы получаем все необходимые данные в первом кадре EAPOL из AP.

Практика

Выбираем нашу сеть и запускаем атаку PMKID на 5 секунд.

Об успешной атаке будет свидетельствовать подобное сообщение. Здесь нам не нужен будет никакой файл для конвертации, как в случае с классической атакой на PMKID. Тут нам представлен уже готовый хеш для перебора пароля с помощью hashcat.

Поэтому далее мы пишем подобную команду, в которую вставляем готовый хеш с указанием нашего словаря.

hashcat -m 22000 хеш словарь.txt

Вот вам и пароль от точки доступа, при этом никаких взаимодействий с пользователями!

Захват хендшейка

Немного теории

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

Практика

Выбираем нашу сеть, тип атаки, и в качестве метода берём активный захват(деаутентификация пользователей). Таймер можно поставить на минуту.

При успешной атаке, нам высветиться примерно такой результат, с выбором загрузки обычного pcap файла или hccapx по-сути готовый формат для взлома в hashcat.

Но посколько формат hccapx уже устарел для hashcat, может сделать проще и скачать обычный pcap файл и пробросить его через старый добрый aircrack-ng следующей командой.

aircrack-ng -w словарь.txt -b мак адрес -e Имя-точки-доступа файл.pcap

Ну и собственно вот он наш пароль.

Отказ в обслуживании

Ну здесь у нас классическая глушилка, на ESP32 работает моментально, плюсом охватывает широкий диапазон.

Заключение

Сети Wi-Fi крайне популярны и ими пользуется большинство людей. Вот что может с ними сделать маленький чип по цене чебурека. Поэтому защищаем свои беспроводные сети хорошим паролем, а лучше всего используем проводное соединение для большей безопасности.

LHMedia в телеграме:

Комментарии (13)


  1. DSarovsky
    15.05.2024 10:43
    +1

    Здорово, жаль, что 5 ГГц пока нет. А как, если в двух словах (чтобы не копаться долго в исходниках), в прошивке победили закрытое API?

    Помнится, в esp8266 можно было посылать вообще произвольные пакеты (просто массив байтов), из-за чего этот чип нашел применение в хакерских инструментах. ЕМНИП, в том числе поэтому espressif Wi-Fi стек поставляет в виде статических библиотек с экспортированными довольно высокоуровневыми функциями и такой вольности из коробки уже нет.


    1. DoMoVoY
      15.05.2024 10:43

      есть ESP32-C5 с 5GHz. Сработает ли там этот метод?


  1. DieSlogan
    15.05.2024 10:43

    Надо вплотную заняться темой выявления глушилок и всяких PwnGochi, думаю, что скоро это будет актуально как никогда


    1. w12368w
      15.05.2024 10:43

      Есть и индикаторы таких атак на esp8266 на другой прошивке. Но с этой прошивкой не пробовал ...


      1. DieSlogan
        15.05.2024 10:43

        Поделитесь ссылкой?


  1. bBars
    15.05.2024 10:43

    А что особенного при этом в esp32? С помощью него можно что-то, чего нельзя сделать с обычного интерфейса в десктопе? Или это из ряда «даже на esp это получилось»?


    1. mcroitor
      15.05.2024 10:43
      +2

      В карман положить?!


    1. k61n
      15.05.2024 10:43

      Вроде бы если у вас мак, то вроде бы не получится перевести вайфай модуль в режим прослушивания. Поправьте меня, пожалуйста, если я не прав.


      1. bBars
        15.05.2024 10:43

        Ну не только на маке. Допускаю, что при некоторых комбинациях сетевухи и дров можно не суметь и с линукса чего-то сделать.

        Я просто сначала думал, что в модуле esp есть что-то ну прямо совсем специфичное (на аппаратном уровне, например). Вот и пытался выяснить -- что именно.


  1. amaranth
    15.05.2024 10:43

    А какую именно плату с ESP32 использовали ? Они разные есть, например от We Act Studio


    1. amaranth
      15.05.2024 10:43

      ESP32-DEVKITC-32E


    1. kossnikita
      15.05.2024 10:43

      Без разницы в принципе. Главное чтобы ESP32 был


  1. k61n
    15.05.2024 10:43

    Благодарю, познавательно.

    Имеются вопросы и к автору и к аудитории. Как нынче обстоят дела со словарями? Последнее, что я помню это был rockyou2021.

    И с практической точки зрения насколько перехват хэшей целесообразен? У меня роутер с дефолтным паролем из 20 цифр. На видеокарте считать должно примерно 300 лет, если чатГПТ не ошибается.