Правило Snort для пакетов ESP - PullRequest
0 голосов
/ 13 апреля 2019

Мне интересно, возможно ли написать правило snort, соответствующее пакету ESP с поддельным значением SPI.

Пакеты, о которых я хочу предупредить:
00: 00: 00.000000 IP xxxx> xxxx: ESP (spi = 0x00000000, seq = 0x29)

Необработанный пакет будет выглядеть примерно так:

4500 XXXX XXXX XXXX XXXX -> 20 байтов заголовка IP
0000 0000 XXXX XXXX XXXX ->Заголовок ESP, начинающийся с 4 байтов нулей
XXXX ...

Вот почему мое лучшее предположение - попытка сопоставления:
1) IP Proto равен ESP
2) необработанных байтов наначало заголовка ESP равно 0x00000000

До сих пор я придумал следующее:

alert ip any any -> any any \  
(ip_proto:esp; content: "|00 00 00 00|"; offset:0; depth: 4;)  

К сожалению, это не работает.Я полагаю, что это потому, что Snort начинает смотреть на «content:» в полезной нагрузке.Я попытался использовать опцию pkt_data, чтобы сбросить курсор обнаружения на начало транспортного уровня.По инструкции: «pkt_data: эта опция устанавливает курсор, используемый для обнаружения, в необработанную полезную нагрузку транспорта»

Я предполагал, что это будет обманом для запуска проверки содержимого: сразу после заголовка IP.К сожалению, нет результата.

Я где-то здесь ошибаюсь?Или Snort просто не может сопоставить необработанные байты в заголовке ESP?Любая помощь / мнение будет принята с благодарностью!

1 Ответ

0 голосов
/ 14 апреля 2019

Нет хорошего способа сделать это, кроме как написать свой собственный препроцессор.Snort в настоящее время не имеет ничего, что выставляет значение ESP spi для языка конфигурации правил.

Хотя верно, что существует поддержка для декодирования данных ESP, это все еще только предоставляет расшифрованную полезную нагрузку вашим правилам.

Чтобы избавить вас от каких-либо проблем, byte_test может показаться вероятным, но оно очень конкретно позволяет вам манипулировать полезной нагрузкой только .Например, следующий не позволит вам проверить порт назначения UDP в заголовке на 2049:

 ...byte_test:2,=,2049,-2,big;
...