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

Проверять это во время реального инцидента — слишком поздно. Поэтому работу решения оценивают заранее с помощью приемочных испытаний еще до внедрения СЗИ в инфраструктуру. Такие тесты позволяют проверить, как решение ведет себя под нагрузкой и насколько его реальные возможности соответствуют заявленным характеристикам вендора. 

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

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

Поэтому специалисты обычно собирают собственный набор утилит. Для изменения IP- и MAC-адресов используется один инструмент, для воспроизведения трафика — другой, для подготовки сценариев — третий. В результате тестировщик работает сразу с несколькими интерфейсами и синтаксисами, и значительная часть времени уходит не на сами испытания, а на переключение между инструментами и ручную обработку результатов.

Мы много раз сталкивались с этой проблемой, поэтому решили разработать Attack Replay — открытую утилиту для воспроизведения и модификации сетевого трафика при тестировании СЗИ. Она объединяет в одном интерфейсе функции нескольких популярных инструментов и автоматизирует рутинные операции, связанные с подготовкой и запуском тестов.

В статье покажем, какие задачи решает Attack Replay, как устроен инструмент и какие результаты он уже дал в реальных проектах. А в конце поделимся ссылкой на GitHub с исходным кодом проекта и набором готовых pcap-файлов.

Когда много не значит хорошо: проблемы инструментов автоматизации тестирования СЗИ

Главный инструмент при проведении таких проверок — экспертиза тестировщика, но без автоматизации тоже не обойтись.

В теории для тестирования NGFW, NDR, IPS можно написать свою программу для реализации определенного протокола передачи данных (SMB, SMTP, SSH). Однако это нерационально: охватить всё многообразие протоколов невозможно, поэтому под каждый программу не создашь. Гораздо проще записать трафик в pcap и потом воспроизводить его.

Воспроизводить запросы и ответы из pcap-файла вручную или с помощью программы практически невозможно по двум причинам:

  1. часть трафика шифруется;

  2. скопировать действия из открытой части трафика сложно, поскольку pcap-файлы обычно содержат несколько тысяч пакетов.   

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

В открытом доступе нет «швейцарского ножа» для комплексного тестирования функций безопасности сетевых устройств без адаптации под конкретного вендора или тип защиты. Большинство опенсорсных инструментов ориентировано либо на генерацию трафика определенного типа, либо на проверки узкоспециализированных сценариев.

В итоге возникает целый ряд сложностей при выполнении приемочных испытаний.

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

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

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

  • В-четвертых, возникают проблемы при проведении нагрузочных испытаний. 

Чуть ли не единственный готовый инструмент, который умеет создавать легитимную нагрузку и одновременно генерировать вредоносный трафик, — Cisco TRex. Он бесплатный, с открытым исходным кодом, а по точности результатов и производительности не уступает даже коммерческим продуктам. Однако такой инструмент крайне требователен к структуре pcap-файлов с атаками. 

Основные ограничения Cisco TRex:

  • только один flow (сессия) в одном файле, иначе TRex выдаст ошибку;

  • поддержка только TCP и UDP протоколов (включая DNS, HTTP-подобный трафик и т. д.);

  • TCP-трафик должен начинаться с полноценного установления соединения (SYN SYN-ACK ACK) и завершаться полным закрытием соединения (FIN-ACK, FIN-ACK);

  • не должна быть нарушена последовательность TCP сегментов (SEQ);

  • не должны присутствовать дублирующиеся пакеты (retransmission packets);

  • отсутствие одновременной поддержки IPv4 и IPtv6 в одной сессии TRex;

  • pcap-файл должен содержать полный bidirectional flow (пакеты в обе стороны: клиент → сервер и сервер → клиент);

  • формат: стандартный PCAP (не поддерживается PCAPNG в старых версиях).  

Из-за этих ограничений файлы часто приходится обрезать и редактировать. В результате СЗИ получает «облегченный» поток пакетов, который не соответствует реальной атаке. Многие сигнатуры и поведенческие модели на таком трафике не срабатывают.

Attack Replay: архитектура и компоненты

Мы постоянно проводим приемочные тестирования СЗИ, так что с перечисленными проблемами знакомы не понаслышке и порядком от них устали.

Поэтому, проанализировав проектный опыт и функциональность готовых решений, мы сделали свое решение под названием Attack Replay. Это универсальная open-source утилита для тестирования функций безопасности сетевых средств защиты: NGFW, FW, IDS/IPS, потоковых антивирусов, DPI, NDR и иных сетевых устройств. Она подходит как для функциональных, так и для нагрузочных испытаний. 

Если коротко, то Attack Replay принимает на вход заранее подготовленный pcap (pcapng/cap) файл с записанным вредоносным или легитимным трафиком, который затем воспроизводится в сеть с нужного интерфейса. Тестируемые средства защиты обрабатывают этот поток, как если бы он шел от злоумышленника или обычного пользователя. По итогу теста наша утилита выводит в терминал следующие данные по отправленному трафику: 

  • тип трафика;

  • количество пакетов/байт;

  • число отправленных pcap-файлов;

  • количество ошибок отправки пакетов в ходе теста;

  • продолжительность теста. 

Attack Replay можно использовать не только для функциональных проверок, но и как вспомогательный инструмент при нагрузочных испытаниях. В этом сценарии утилита воспроизводит вредоносный трафик, тогда как легитимная нагрузка создается отдельным генератором трафика.

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

В основе Attack Replay лежат tcpwrite, tcpreplay, tcpprep, tcpreplay-edit и tcpdump. Из каждого взяты только функции, нужные для приемочного тестирования сетевых средств защиты информации, и поверх них собран единый интерфейс с дополнительными опциями и автоматизацией.

Компоненты Attack Replay

Укрупненно Attack Replay делится на три функциональных блока.

  • Блок 1. Изменение IP/MAC-адресов в pcap-файлах. Позволяет редактировать IP- и MAC-адреса в пакетах тестового трафика. Эта возможность используется при проверке функций безопасности, связанных с фильтрацией сетевого трафика по адресным признакам. 

  • Блок 2. Воспроизведение pcap-файлов. Отвечает за отправку трафика из pcap-файлов на тестируемое СЗИ. Позволяет настраивать скорость и режимы воспроизведения, а также задавать количество повторов или продолжительность теста. По итогам теста в терминал выводится статистика отправки трафика. 

  • Блок 3. Вспомогательные функции. Это сервисные возможности для подготовки тестового стенда: автоматическое определение MAC-адресов, просмотр сетевых интерфейсов, вывод справочной информации по доступным режимам работы утилиты.

Интерфейс утилиты

Параметры сгруппированы по назначению: редактирование pcap-файлов, воспроизведение, режимы скорости, вспомогательные команды. Интерфейс полностью русифицирован.

Синтаксис и поддерживаемые расширения

Как видно из синтаксиса, при запуске программы можно указывать и отдельные pcap-файлы, и их целые каталоги. 

Справка по Attack Replay
Справка по Attack Replay

Attack Replay поддерживает форматы PCAP (Packet CAPture), PCAPNG (PCAP Next Generation) и CAP (CAPture), записанные с помощью tcpdump, Wireshark и других утилит. Специфических требований к записанным пакетам нет, поэтому воспроизводить можно любой тип трафика, включая нестандартные протоколы.

Вывод логов по тесту в терминал

В процессе воспроизведения для каждого pcap отображается строка с названием файла и номером итерации, а по итогам — время выполнения. При ошибке сообщается ее код. Если заданы интервалы между воспроизведением файлов, программа выдает уведомления о паузах.

Информация по тесту
Информация по тесту

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

Примеры запусков тестов
Примеры запусков тестов

Вывод результатов теста в терминал

По завершении теста формируется блок ЗАВЕРШЕНО: количество отправленных файлов и время выполнения теста.

Итоговый блок с информацией о завершении теста
Итоговый блок с информацией о завершении теста

Для наглядности предусмотрена цветовая индикация: зеленый — успех, красный — ошибка, желтый — предупреждение, синий и голубой — заголовки. Интерфейс прост: тестировщик может сосредоточиться на проверке средств защиты, а не на изучении синтаксиса.

Подробно о возможностях Attack Replay

Изменение адресов pcap-файлов

Перед воспроизведением тестового трафика его обычно нужно адаптировать под параметры конкретного стенда. Для этого в Attack Replay предусмотрена возможность менять MAC-адреса в pcap-файлах.

Функция позволяет быстро подготовить записанный трафик к испытаниям и использовать его для проверки механизмов фильтрации по сетевым адресам. При необходимости утилита позволяет автоматически определить MAC-адрес назначения и использовать его при подготовке pcap-файлов к воспроизведению. 

Получение MAC-адреса назначения с использованием Attack Replay
Получение MAC-адреса назначения с использованием Attack Replay

Ниже показан пример изменения адресов в pcap-файлах. Более подробное описание параметров и сценариев использования данной функции доступно в документации проекта на GitHub.

Изменение MAC-адресов в pcap-файлах
Изменение MAC-адресов в pcap-файлах

Автоматическая настройка MAC-адресов в pcap-файлах

При запуске воспроизведения можно использовать параметр --ip с указанием ip-адреса тестируемого устройства. Тогда программа самостоятельно определит MAC-адреса источника и назначения и заменит их в pcap-файлах. Заодно утилита определит нужный интерфейс для воспроизведения pcap-файлов, после чего запустит генерацию трафика. Для данного режима также доступен параметр -k для сохранения оригинальных pcap-файлов.

Запуск воспроизведения pcap-файлов с автоматическим определением и заменой MAC-адресов в pcap-файлах
Запуск воспроизведения pcap-файлов с автоматическим определением и заменой MAC-адресов в pcap-файлах

Воспроизведение pcap-файлов

Для базового воспроизведения достаточно указать параметр --intf с названием интерфейса и директорию или файл:

./attack_replay.sh --intf enp0s9 test/

Более тонкую настройку дают дополнительные параметры:

  • -t или --time — время воспроизведения pcap-файлов;

  • -i или --interval — интервал между отправками pcap-файлов;

  • --pps, --mbps или --topspeed — скорость отправки трафика (по умолчанию записанная скорость pcap обычно слишком низкая).

Если указать -i > 0, то воспроизведение pcap-файлов будет осуществляться с указанным интервалом (например, -i 5 раз в 5 секунд).

Запуск воспроизведения pcap-файлов с интервалом в 5 секунд
Запуск воспроизведения pcap-файлов с интервалом в 5 секунд

Если же прописать -i = 0, то в таком случае pcap-файлы будут отправляться без интервала, потоком.

Запуск воспроизведения pcap-файлов с отправкой без интервалов
Запуск воспроизведения pcap-файлов с отправкой без интервалов

Притом Attack Replay дает возможность воспроизводить pcap-файлы определенное количество раз или однократно (по умолчанию настроено 1-кратное повторение).

Воспроизведение одного pcap-файла с повторением в цикле 2 раза с интервалом отправки трафика 3 секунды
Воспроизведение одного pcap-файла с повторением в цикле 2 раза с интервалом отправки трафика 3 секунды

Циклический режим

Это воспроизведение pcap-файлов в цикле без учета времени. Для запуска такого бесконечного цикла применяется параметр -l или --loop (./attack_replay.sh --intf enp0s9 -l -i 3 test/).

Воспроизведение pcap-файлов в бесконечном цикле
Воспроизведение pcap-файлов в бесконечном цикле

Вывод статистики

По умолчанию для всех тестов выводится полная статистика по каждому отправляемому pcap-файлу, для вывода короткой версии статистики по отправляемым pcap-файлам доступен параметр --stats.

Тест с выводом короткой статистики 
Тест с выводом короткой статистики 

По завершении теста с параметром --stats выводится общая статистика по всему отправленному трафику.

Вывод статистики по завершении теста с параметром --stats
Вывод статистики по завершении теста с параметром --stats

Также доступен и тихий режим с помощью параметра --quiet или -q. При использовании данного параметра во время теста будет выводиться только название отправляемого pcap-файла и номер отправляемого файла с номером итерации. По завершении теста будет выведена общая статистика по отправленному трафику за весь тест.

Тихий режим
Тихий режим

Функция изменения MTU

К сожалению, даже четкое следование описанному алгоритму не исключает ошибок, ведь некоторые пакеты в pcap-файлах имеют размер MTU больше стандартного значения сетевых интерфейсов сетевой карты (1500). 

Ошибка, 13 пакетов имеют MTU >1500
Ошибка, 13 пакетов имеют MTU >1500

Не беда! Для решения такой проблемы используется параметр --truncate, задающий всем большеразмерным пакетам значение 1500.

Запуск воспроизведения pcap-файла с изменением размера MTU пакетов на 1500
Запуск воспроизведения pcap-файла с изменением размера MTU пакетов на 1500

Также данную проблему можно решить путем увеличения размера MTU сетевых интерфейсов вручную: ip link set dev eth0 mtu 9000.

Отправка пакетов с указанным snaplen

Параметр --pktlen позволяет отправлять пакеты с указанной в поле snaplen длиной. Использовать его стоит с осторожностью: некоторые инструменты записи pcap могут указать некорректный snaplen, а у старых файлов этот показатель порой имеет очень большое значение, что приводит к ошибке воспроизведения.

Современные утилиты захвата трафика (tcpdump, tshark, Wireshark) корректно заполняют поле snaplen, поэтому в большинстве случаев параметр --pktlen не нужен. Он может пригодиться, если:

  • для воспроизведения используется старый pcap-файл, в котором snaplen равен 0;

  • есть уверенность, что original packet length корректен, а snaplen содержит ошибку инструмента захвата;

  • пакеты в pcap-файле были захвачены не полностью (например, с помощью команды tcpdump -s 64 –w file.pcap).

Запуск воспроизведения pcap-файла с обрезанными пакетами
Запуск воспроизведения pcap-файла с обрезанными пакетами
Запуск воспроизведения pcap-файла с параметром –pktlen
Запуск воспроизведения pcap-файла с параметром –pktlen

Вместо заключения: результаты и перспективы

Attack Replay уже прошел практическую проверку при тестировании трех NGFW и одного NDR. Выборка пока небольшая, но первые выводы сделать можно.

Утилита значительно ускорила подготовку к приемочным испытаниям. Раньше значительная часть времени уходила на подготовку pcap-файлов под ограничения используемых генераторов трафика. Attack Replay позволяет работать с исходными файлами напрямую, без дополнительной ручной обработки.

На практике это позволило отказаться от использования набора разрозненных инструментов для подготовки и запуска испытаний. Функции редактирования адресов, воспроизведения трафика в различных режимах и сбора статистики по результатам тестов собраны в одной утилите. Более того, Attack Replay поддерживает режимы воспроизведения трафика, необходимые для проверки работы механизмов безопасности под нагрузкой, поэтому можно использовать не только для функциональных, но и для нагрузочных тестов.

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

  1. Переход с Bash на C. Bash-скрипт работает, но для дальнейшего развития нужны нормальная обработка ошибок и кроссплатформенность. Еще C нужен для расширения функционала программы и оптимизации работы инструмента. 

  2. Веб-интерфейс централизованного управления. Настройка параметров генерации, выбор целевых хостов и интерфейсов, запуск и мониторинг тестов в реальном времени, статистика и отчеты.

  3. Встроенная библиотека сценариев тестирования. Заранее подготовленные наборы pcap-файлов с различными типами атак и легитимного трафика, включая современные угрозы для NGFW, WAF, IPS и DPI.

  4. Поддержка WAF. Оценка эффективности блокирования OWASP Top 10, SQL-инъекций, XSS-атак и других веб-угроз.

  5. Модуль автоматического определения блокировки атак тестируемым устройством и генерация отчетов.

  6. Поддержка Stateful-режима воспроизведения трафика (с полноценным установлением TCP-соединений). 

Пока же вы можете сами оценить Attack Replay. Исходный код инструмента доступен на GitHub. Там же вы найдете готовые pcap-файлы с атаками и легитимным трафиком. 


PURP — Telegram-канал, где кибербезопасность раскрывается с обеих сторон баррикад

t.me/purp_sec — инсайды и инсайты из мира этичного хакинга и бизнес-ориентированной защиты от специалистов Бастиона

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