Перейти к основному содержимому

Fuzzing (L3-L7)

Плагин Fuzzing (L3-L7) используется для проверки устойчивости сетевых устройств к некорректным и случайно изменяемым полям UDP/TCP-трафика. Он помогает оценить, как тестируемое устройство обрабатывает пакеты с неверной чексуммой, изменяемыми IP/TCP-полями, случайной полезной нагрузкой и одновременно идущими L4-потоками.

Fuzzing не заменяет специализированные L7-сценарии. Проверки WAF на HTTP payload и воспроизведение CVE выполняются отдельными плагинами WAF и Сетевые уязвимости (CVE). Fuzzing (L3-L7) предназначен прежде всего для L3-L4 профиля: некорректные UDP/TCP-пакеты, TCP Flow и UDP Flow.

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

Табл. 188 – Модули Fuzzing (L3-L7)

МодульСторонаЧто проверяет
UDP: неверная чексуммаКлиентОтправку UDP-пакетов с некорректной L4-чексуммой
UDP: случайный IP TTLКлиентОбработку UDP-пакетов с TTL из заданного значения или диапазона
UDP: случайные DSCP/ECNКлиентОбработку UDP-пакетов с изменяемыми ToS-полями
UDP: случайный IP IDКлиентОбработку UDP-пакетов с изменяемым полем IP identification
UDP: случайный Payload DataКлиентОтправку UDP-пакетов со случайной полезной нагрузкой заданного размера
TCP: PSH/ACK без handshakeКлиентОтправку TCP PSH/ACK-пакетов без предварительной сборки TCP-сессии
TCP: неверная чексуммаКлиентОтправку TCP-пакетов с некорректной L4-чексуммой
TCP: случайный SEQКлиентОбработку TCP-пакетов с sequence number из заданного значения или диапазона
TCP: случайный MSSКлиентОбработку TCP-пакетов с изменяемым MSS
TCP: случайный Window ScaleКлиентОбработку TCP-пакетов с изменяемым Window Scale
TCP: случайное окноКлиентОбработку TCP-пакетов с изменяемым receive window
TCP: случайный Payload DataКлиентОтправку TCP-пакетов со случайной полезной нагрузкой заданного размера
TCP Flow: stateful-сессииКлиент, серверСборку валидных TCP-сессий с настраиваемыми TCP-полями
UDP Flow: stateful-потокиКлиент, серверГенерацию валидных UDP flow с настраиваемыми IP-полями

На серверной стороне доступны только flow-модули TCP Flow и UDP Flow. Модули с некорректной чексуммой, stateless TCP-пакетами и случайной полезной нагрузкой отправляются с клиентской стороны.

Настройка модулей

В форме Fuzzing (L3-L7) включите нужные модули переключателями. После включения модуля под ним появляются поля, которые относятся только к этому модулю. Значения можно задавать одним числом или диапазоном через дефис, например 64 или 64-128. Для UDP ECN можно выбрать один или несколько кодов: 00, 01, 10, 11.

Табл. 189 – Настраиваемые поля Fuzzing

ПолеГде используетсяЗначение по умолчаниюДопустимое значение
Payload DataМодули с фиксированной полезной нагрузкой256 байтЧисло или диапазон 0-9000
UDP TTLUDP TTL, UDP Flow1-255Число или диапазон 0-255
UDP DSCPUDP DSCP/ECN, UDP Flow0-63Число или диапазон 0-63
UDP ECNUDP DSCP/ECN, UDP Flow00, 01, 10, 11Один или несколько ECN-кодов
UDP IP IDUDP IP ID, UDP Flow0-65535Число или диапазон 0-65535
UDP Payload DataUDP random payload1-1400 байтЧисло или диапазон 0-9000
TCP SEQTCP SEQ, TCP Flow0-4294967295Число или диапазон 0-4294967295
TCP MSSTCP MSS, TCP Flow536-1460Число или диапазон 0-65535
TCP Window ScaleTCP Window Scale, TCP Flow0-14Число или диапазон 0-255
TCP windowTCP window, TCP Flow1-65535Число или диапазон 0-65535
TCP Payload DataTCP random payload1-1400 байтЧисло или диапазон 0-9000

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

Параметры нагрузки

Общий профиль нагрузки задается в стандартных блоках плагина:

ПараметрКак используется в Fuzzing
Пакетов в секундуОбщий бюджет пакетов в секунду для всех включенных модулей Fuzzing
Общее количество сессийОбщий бюджет сессий для включенных flow-модулей
Подключений в секундуСкорость открытия flow-сессий
ДлительностьВремя работы профиля

При запуске значение Пакетов в секунду делится между всеми включенными модулями Fuzzing: отдельными UDP/TCP stateless-модулями, TCP Flow и UDP Flow. Если число не делится ровно, остаток получает первый модуль по порядку отображения в форме.

Пример: если включено 9 модулей и указано 1000 пакетов в секунду, первый модуль получает 112 пакетов/с, остальные 8 модулей получают по 111 пакетов/с. Если включен только один модуль, он получает весь указанный бюджет.

Параметры Общее количество сессий и Подключений в секунду делятся только между включенными flow-модулями. Если включены TCP Flow и UDP Flow, значение делится между ними поровну; при нечетном числе остаток получает первый flow-модуль. Если включен только один flow-модуль, он получает весь бюджет сессий и скорости открытия.

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

Рекомендации по применению

  • Для проверки обработки некорректных пакетов начните с одного модуля, короткой длительности и небольшой скорости, затем увеличивайте набор модулей и нагрузку.
  • Для проверки устойчивости сессий включайте TCP Flow или UDP Flow вместе с обычным прикладным трафиком, например HTTP, чтобы видеть, что валидные сессии продолжают работать во время Fuzzing.
  • Для подтверждения состава пакетов используйте захват трафика (PCAP) на задаче и сверяйте поля пакетов с выбранными диапазонами.
  • Для WAF payload и CVE-проверок используйте отдельные плагины WAF и CVE Replay: они дают прикладные HTTP/CVE-сценарии и собственные дашборды результатов.