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

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

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

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

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

Категории

Все категории
Loading categories
Preferred-Network-List-Sniffer — Инструмент разведки для захвата и отображения SSID из списка предпочтительных сетей устройства. | Kitploit
Инструменты/GitHubGitHub/aleksamcode/preferred-network-list-sniffer
Сниффинг и анализ пакетовРазведкаАудит Wi-FiСбор информацииБезопасность беспроводных сетейRed Teaming
GitHubaleksamcode/preferred-network-list-sniffer

Preferred-Network-List-Sniffer

Инструмент разведки для захвата и отображения SSID из списка предпочтительных сетей устройства.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
17597 месяцев назадПроверено Kitploit

Предпочтительный сниффер списка сетей - PNLS

License: MIT

Предпочтительный сниффер списка сетей (PNLS) — это инструмент для аудита Wi-Fi Red Team с простым веб-интерфейсом, способный перехватывать SSID1 из списка предпочтительных сетей (PNL)2 устройства. Это достигается путём сканирования Probe Request'ов в ближайшей окрестности, которые затем анализируются для получения SSID и другой информации и, наконец, передаются в веб-интерфейс. Основной мотивацией для этого проекта было исследование 802.11 Probe Request'ов и рисков для конфиденциальности, связанных с передаваемыми ими данными.

Общая схема PNLS

Рис. 1: Общая схема системы PNLS

[!WARNING] Все материалы в этом проекте предназначены только для целей исследования безопасности.

[!NOTE]

  • Этот проект является частью моих текущих исследований в области защиты конфиденциальности в сетях Wi-Fi.

    • Презентация объёма работ
  • Чтобы отслеживать текущую работу над PNLS, смотрите доску проекта.

Содержание

  • Предпочтительный сниффер списка сетей - PNLS
    • Содержание
    • Как собрать PNLS
      • Требования
      • Предварительные условия
    • Настройка
      • Использование Docker
      • Использование предварительно собранного Docker-образа
      • Без Docker
    • Probe Requests
    • Фильтрация SSID
    • Архитектура
      • Почему Асинхронный серверный шлюзовой интерфейс?
      • Почему WebSockets?
      • Модель Pub-Sub
    • Скриншоты
    • Акронимы
    • Ссылки

Как собрать PNLS

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

Требования

  • Raspberry Pi (RPi)
  • Подходящий блок питания для RPi (см. документацию по блоку питания)
  • Micro SD-карта (см. документацию по SD-картам)
  • USB Wi-Fi адаптер (опционально)
    • Используется для увеличения радиуса действия при захвате пакетов.
  • HDMI-кабель (опционально)
    • Используется для отображения веб-интерфейса с RPi вместо удалённого подключения с компьютера.

Предварительные условия

  • ОС Kali Linux
    • Необходима для использования режима мониторинга и инструмента aircrack-ng. Вы можете загрузить образ Kali Linux ARM здесь.
      • Альтернативно можно использовать другую ОС, но потребуется пропатчить3 ядро с помощью nexmon4 или использовать беспроводной адаптер, поддерживающий режим мониторинга. Вот ссылка на поддерживаемые USB-адаптеры для Raspberry Pi.
      • Также необходимо установить инструмент aircrack-ng, так как он предустановлен только в Kali Linux.
  • Запустите сетевой интерфейс в режиме мониторинга с помощью: sudo airmon-ng start wlan0 [2].

[!NOTE]

Образ Kali использует ядро Re4son, которое включает драйверы для внешних Wi-Fi-карт и прошивку Nexmon для встроенной беспроводной карты на RPi 3 и 4 [3].

Устройство PNLS RPi 4

Рис. 2: PNLS, работающий на RPi 4 с внешней антенной и внешним аккумулятором

Устройство PNLS RPi 4 AWUS036ACS

Рис. 3: PNLS, работающий на RPi 4 в корпусе с антенной AWUS036ACS

Устройство PNLS RPi 4 AWUS036ACM

Рис. 4: PNLS, работающий на RPi 4 с антенной AWUS036ACM

Настройка

Если вы не хотите использовать Docker, перейдите к настройке без Docker.

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

Быстрая настройка экземпляра для разработки:

root@kitploit:~
# Сначала клонируйте этот репозиторий.
git clone https://github.com/AleksaMCode/Preferred-Network-List-Sniffer.git
# Перейдите в корневую папку проекта.
cd Preferred-Network-List-Sniffer
# Соберите образы backend и frontend.
docker compose build
# Запустите серверы backend и frontend.
docker compose up
# Перейдите в папку сниффера.
cd sniffer
# Запустите сервис Sniffer.
sudo python3 sniffer.py

Использование предварительно собранного Docker-образа

В настоящее время образов для нескольких платформ нет, проект поддерживает только архитектуру ARM64v8. Загрузите последние предварительно собранные образы из реестра контейнеров GitHub и запустите их локально.

root@kitploit:~
# Сначала клонируйте этот репозиторий.
git clone https://github.com/AleksaMCode/Preferred-Network-List-Sniffer.git
# Перейдите в корневую папку проекта.
cd Preferred-Network-List-Sniffer
# Загрузите предварительно собранные образы.
docker pull ghcr.io/aleksamcode/pnls-backend-ghcr:latest
docker pull ghcr.io/aleksamcode/pnls-frontend-ghcr:latest
# Запустите серверы backend и frontend.
docker compose up
# Перейдите в папку сниффера.
cd sniffer
# Запустите сервис Sniffer.
sudo python3 sniffer.py

Без Docker

  • Backend: для запуска серверов ASGI и Redis и необходимых служб смотрите эти инструкции.

  • Frontend: для запуска сервера React смотрите эти инструкции.

Вот скриншот, когда всё было запущено «вручную»:

  • Сверху слева: сервер Redis
  • Сверху справа: сервер ASGI
  • Снизу слева: сервис Sniffer
  • Снизу справа: сервер React

Скриншот PNLS на Kali

Рис. 5: Скриншот PNLS

Probe Requests

Probe Requests — это управляющие кадры 802.11, которые используются для подключения устройств к ранее ассоциированным беспроводным точкам доступа (AP). Когда устройство включает Wi-Fi, но не подключено к сети, оно периодически отправляет пачку Probe Request'ов, содержащих SSID из своего PNL. Эти кадры отправляются незашифрованными, и любой, кто осуществляет радиочастотный (RF) мониторинг, может захватить и прочитать их. Probe отправляются на широковещательный адрес DA (ff:ff:ff:ff:ff:ff). После отправки устройство запускает таймер Probe. По истечении таймера устройство обрабатывает полученный ответ. Если устройство не получило ответа, оно переходит на следующий канал и повторяет процесс. Существует два типа Probe Request'ов:

  • Направленные Probe Requests: используют конкретный SSID из PNL устройства

  • Null Probe Requests: используют шаблонный SSID (пустой SSID)

    • Пустые запросы отправляются, чтобы получить ответ от всех доступных AP в зоне действия.

    • В дополнение к фильтрации кадров 802.11 Probe Request из всех захваченных пакетов Sniffer также будет отфильтровывать шаблонные SSID.

Фильтрация SSID

При захвате Probe Request'ов в местах с крупной локальной сетью и большим количеством Wi-Fi-клиентов PNLS неизбежно будет захватывать много Probe Request'ов, содержащих SSID этой сети. Фильтрация таких SSID может быть полезна, так как они не представляют для нас ценности и могут увеличить нагрузку на сокеты. Отфильтровывание этих SSID не только снизит нагрузку на сокетные соединения, но и предотвратит спам упомянутых SSID в веб-интерфейсе.

При использовании этой функции вам потребуется внести небольшие изменения в исходный код. А именно, необходимо обновить список SSID_FILTER в файле settings.py, добавив значение, которое должен игнорировать Sniffer. После обновления пересоберите проект и запустите PNLS.

Архитектура

Этот проект использует событийно-ориентированную архитектуру (EDA), построенную поверх архитектур, управляемых сообщениями. Хотя в этом проекте используется централизованное решение (всё запускается с RPi), благодаря слабой связанности компонентов в результате использования EDA при необходимости можно создать децентрализованное решение. PNLS состоит из издателя событий (sniffer), потребителя событий (веб-приложение) и канала событий. Здесь канал событий реализован как промежуточное ПО, ориентированное на сообщения (MOM).

Диаграмма развёртывания системы PNLS

Рис. 6: Диаграмма развёртывания системы PNLS

Почему Асинхронный серверный шлюзовой интерфейс?

Асинхронный серверный шлюзовой интерфейс (ASGI) предоставляет стандартизированный интерфейс между асинхронными Python-веб-серверами и службами [4]. ASGI был выбран из-за необходимости проекта в долгоживущем WebSocket-соединении для обеспечения асинхронного взаимодействия между разными клиентами. Кроме того, он позволяет использовать фоновые корутины во время вызовов API. PNLS использует реализацию uvicorn для Python для работы с ASGI-веб-сервером.

Почему WebSockets?

Благодаря использованию протокола связи WebSocket мы можем обеспечить полнодуплексную двустороннюю связь. Хотя этому проекту не нужна двусторонняя связь, ему требуется взаимодействие в реальном времени между компонентами системы. Таким образом, перехваченные данные будут доступны конечному пользователю сразу после захвата.

Модель Pub-Sub

MOM проекта реализована через брокер сообщений на основе Redis. В модели «издатель-подписчик» (pub-sub) Sniffer отвечает за создание сообщений, а веб-приложение (подписчик) регистрируется для определённого Topic (канала Redis). Когда Sniffer отправляет сообщение в Topic, оно распространяется всем подписанным потребителям, что обеспечивает асинхронную и масштабируемую связь. PNLS использует легковесный протокол сообщений Redis Pub/Sub для широковещательной рассылки сообщений с целью распространения кратковременных сообщений с низкой задержкой и высокой пропускной способностью [5][6]. Таким образом, удаётся избежать накладных расходов, связанных с кодированием структур данных в форме, пригодной для записи на диск. Благодаря этому такое решение потенциально может обеспечить более высокую производительность [7]. На рисунке ниже показана упрощённая активность системы через событийно-ориентированный рабочий процесс.

Диаграмма последовательности pub-sub

Рис. 7: Диаграмма последовательности модели Pub-Sub в PNLS

[!NOTE] Реализованная MOM не предоставляет постоянного хранилища или очереди сообщений для накопления данных, что означает потерю сообщений, если они публикуются в Topic без подписчиков.

Скриншоты

Ниже приведён пример веб-интерфейса, отображающего опубликованные тестовые SSID.

Веб-интерфейс PNLS - пример с тестовыми SSID

Рис. 8: Веб-интерфейс PNLS - пример с тестовыми SSID

Акронимы

Ссылки

  1. Репозиторий Nexmon на GitHub
  2. Документация Aircrack-ng
  3. Документация Kali на ARM
  4. Документация ASGI
  5. Программное обеспечение для очередей сообщений и брокеров с низкой задержкой
  6. Redis - Pub/Sub Определение
  7. Stephen M. Rumble, Ankita Kejriwal, and John K. Ousterhout, “Log-Structured Memory for DRAM-Based Storage,” at 12th USENIX Conference on File and Storage Technologies (FAST)
  8. Включение режима мониторинга и инъекции пакетов на Raspberry Pi

Footnotes

  1. Идентификатор набора услуг (SSID) — это 802.11 ID, используемый для именования сети Wi-Fi, состоящий максимум из 32 символов, которые могут содержать буквы с учётом регистра, цифры и специальные символы, длиной не более 32 символов. ↩

  2. Список предпочтительных сетей — это коллекция сохранённых SSID с дополнительными настройками, созданная при первом подключении устройства к этим сетям. ↩

  3. Broadcom официально никогда не поддерживал режим мониторинга, что ограничивало полезность беспроводных карт в устройствах Raspberry Pi [8]. Проект Nexmon представляет собой патч прошивки для чипов Broadcom, используемых в устройствах RPi [1]. Этот патч позволит вам использовать режим мониторинга на вашем устройстве RPi. ↩

  4. Среда патчинга прошивки на C для чипов Broadcom/Cypress Wi-Fi, которая включает режим мониторинга, инъекцию кадров и многое другое. ↩

Скачать инструмент
PNLСписок предпочтительных сетей
PNLSПредпочтительный сниффер списка сетей
SSIDИдентификатор набора услуг
UIПользовательский интерфейс
RPiRaspberry Pi
OSОперационная система
APТочка доступа
RFРадиочастота
EDAСобытийно-ориентированная архитектура
MOMПромежуточное ПО, ориентированное на сообщения
ASGIАсинхронный серверный шлюзовой интерфейс
pub-subиздатель-подписчик