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

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

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

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

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

Категории

Все категории
Loading categories
sparkplugFuzzer — Фаззер для протокола Sparkplug B IIoT | Kitploit
Инструменты/GitHubGitHub/bishopfox/sparkplugfuzzer
Динамический анализ (песочница)Безопасность IoTАнализ уязвимостейБезопасность SCADA/ICSФаззингСетевая безопасностьТестирование на ПроникновениеАутентификация
GitHubbishopfox/sparkplugfuzzer

sparkplugFuzzer

Фаззер для протокола Sparkplug B IIoT

Репозиторий
1552 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

Sparkplug B MQTT Security Fuzzer

Инструмент для всесторонней оценки безопасности протокольных реализаций Sparkplug B MQTT. Фаззер систематически тестирует все поля протокола для всех 9 типов сообщений, обнаруживает активные устройства в сети и создает подробные журналы для анализа.

Ответственное использование

Этот инструмент отправляет искаженные, внедряющие и нарушающие протокол сообщения MQTT целевому брокеру. Запускайте его только против систем, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение. Брокеры Sparkplug B часто находятся в средах OT/ICS, где неожиданные полезные нагрузки могут нарушить физические процессы — считайте, что любая цель находится рядом с производственной средой, пока не доказано обратное.

Если вы обнаружите уязвимость в реализации Sparkplug B с помощью этого инструмента, пожалуйста, следуйте скоординированному раскрытию информации с затронутым поставщиком. Чтобы сообщить о проблеме безопасности в самом инструменте, см. SECURITY.md.

Содержание

  • Обзор
  • Предварительные требования
  • Установка
  • Быстрый старт
  • Использование
    • Параметры командной строки
    • Категории фаззинга
    • Примеры
  • Как это работает
    • Поток выполнения
    • Обнаружение сети
    • Оценка аутентификации
    • Целевой фаззинг
  • Запуск тестов
  • Вывод и анализ журналов
    • Формат журнала
    • Анализ результатов
  • Покрытие протокола
    • Типы сообщений
    • Типы данных
    • Покрытие полей
  • Архитектура

Обзор

Спецификация Sparkplug B определяет пространство имен тем и формат полезной нагрузки, построенные на MQTT и Google Protocol Buffers для сред промышленного Интернета вещей (IIoT). Этот фаззер оценивает безопасность и устойчивость реализаций Sparkplug B путем:

  • Тестирования всех 19 типов метрических данных с граничными значениями и условиями переполнения
  • Внедрения вредоносных строк (XSS, SQLi, строки формата, обход пути, внедрение команд)
  • Создания несоответствия типов между объявленными типами данных и фактическими полями значений protobuf
  • Нарушения порядка автомата состояний протокола (данные до рождения, двойные рождения, данные после смерти)
  • Повреждения сериализованных полезных нагрузок protobuf на бинарном уровне
  • Подделки сертификатов рождения/смерти для обнаруженных сетевых устройств
  • Фаззинга пространства имен тем MQTT с помощью специальных символов, вариантов регистра и структурных нарушений

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

  • Python 3.8+
  • MQTT Broker — целевая тестируемая система (например, Mosquitto, HiveMQ, EMQX или любой брокер, поддерживающий Sparkplug B)
  • Разрешение — этот инструмент предназначен только для авторизованного тестирования безопасности

Установка

На современных системах Debian/Ubuntu/Kali (системы PEP-668) --setup не может выполнить pip install в системный Python — сначала используйте виртуальное окружение или pipx. Рекомендуемый путь:```bash python3 -m venv .venv source .venv/bin/activate python3 sparkplug-fuzzer.py --setup

Или запустите через `pipx run`, если вы предпочитаете не управлять виртуальным окружением вручную. На старых системах без принудительного применения PEP-668, простая команда `python3 sparkplug-fuzzer.py --setup` работает напрямую.

`--setup` сделает следующее:
1. Установит зависимости pip (`paho-mqtt`, `protobuf`)
2. Клонирует заданный тег репозитория [Eclipse Tahu](https://github.com/eclipse/tahu) (см. `TAHU_REF` в скрипте)
3. Скопирует вспомогательные модули `sparkplug_b.py` и `array_packer.py`
4. Скомпилирует `sparkplug_b.proto` в привязки Python (использует `protoc`, если доступен, иначе откатывается к `grpcio-tools`)
5. Очистит клон Tahu

После настройки ваша директория должна содержать:```
sparkplug-fuzzer.py     # The fuzzer
sparkplug_b.py          # Sparkplug B helper module (from Tahu)
array_packer.py         # Array packing helper (from Tahu)
sparkplug_b_pb2.py      # Generated protobuf bindings
requirements.txt        # Python dependencies
Ручная настройка (если --setup не работает)```bash pip install -r requirements.txt git clone https://github.com/eclipse/tahu.git cp tahu/python/core/sparkplug_b.py . cp tahu/python/core/array_packer.py . protoc --python_out=. sparkplug_b.proto rm -rf tahu ```

Быстрый старт```bash

python3 sparkplug-fuzzer.py --setup # first-time setup python3 sparkplug-fuzzer.py -H localhost -p 1883 -v # run fuzzer

Это позволит:
1. Подключиться к брокеру на `localhost:1883`
2. Прослушивать 10 секунд для обнаружения существующих устройств Sparkplug
3. Установить фаззер как узел/устройство Sparkplug
4. Запустить все 12 категорий фаззинга (~635+ тестов)
5. Нацелиться на любые обнаруженные устройства с поддельными сообщениями
6. Записать результаты в `sparkplug_fuzz.jsonl`

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

### Параметры командной строки```
python3 sparkplug-fuzzer.py [OPTIONS]
ОпцияПо умолчаниюОписание
-H, --hostlocalhostИмя хоста или IP-адрес MQTT-брокера
-p, --port1883 (или 8883 с --tls)Порт MQTT-брокера
-u, --usernameНетИмя пользователя MQTT (также читает переменную окружения MQTT_USERNAME)
-P, --passwordНетПароль MQTT (также читает MQTT_PASSWORD; передайте - для чтения из stdin без эха)
--tlsвыклПодключение через TLS; порт по умолчанию становится 8883, если -p не указан
--cafileНетПакет CA для проверки сертификата TLS-сервера
--insecureвыклПропустить проверку имени хоста/сертификата TLS (только для тестирования)
-g, --groupSparkplug B DevicesИдентификатор группы Sparkplug, под которым регистрируется фаззер
-n, --nodeFuzzNodeИдентификатор граничного узла Sparkplug для фаззера
-d, --deviceFuzzDeviceИдентификатор устройства Sparkplug для фаззера
-c, --categoriesallСписок категорий фаззинга, разделенных пробелами
--discovery-time10Секунды пассивного прослушивания для обнаружения сети
--delay0.1Задержка в секундах между сообщениями фаззинга
--probe-anon-writeвыклВо время обнаружения отправьте одну публикацию QoS=1, чтобы подтвердить, принимает ли брокер неаутентифицированный PUBLISH
-l, --logsparkplug_fuzz.jsonlИмя выходного файла журнала (относительные пути помещаются внутрь --output-dir; абсолютные пути используются как есть)
--output-dir./sparkplug-runs/<UTC-ts>_<host>/Каталог вывода для каждого запуска. Создается при отсутствии.
-v, --verbose0Увеличивает подробность консоли (-v = info, -vv = debug). -vv также показывает пропуски генератора фаззинга, а ограниченный логгер paho.mqtt переключается на INFO/DEBUG с подробностью.
--setup—Установить все зависимости и выйти
--tahu-path—Путь к локальному клону eclipse/tahu (или его каталогу python/core). Используется --setup в изолированных средах вместо git clone.
--extra-string-payloads—Путь к файлу с дополнительными полезными нагрузками для внедрения строк (по одной на строку, UTF-8). Добавляется к встроенному STRING_FUZZ_VALUES; не заменяет их. Максимум 10 МБ / 10 000 полезных нагрузок. См. Пользовательские строковые корпуса.

Категории фаззинга

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