Правило Snort для проверки содержимого http-запроса не работает

Я пытаюсь проверить содержимое ответа http, чтобы найти в нем содержимое «abbb». Итак, мое правило было

alert tcp MY_SERVER HTTP_PORTS -> any any(msg:"Доступ к странице имеет контент abbb";to_client; установлен; контент:"abb";sid:XXXXX; rev:x;)

к сожалению, это правило, кажется, не работает. Может кто-нибудь, пожалуйста, скажите, есть ли какие-то проблемы с моим правилом.


person goldenptr    schedule 21.06.2014    source источник


Ответы (1)


Для начала вам нужно исправить часть правила to_client, так как это недопустимый синтаксис. Вам нужно будет изменить это, чтобы быть:

поток: к_клиенту, установлен;

Подробнее об этом можно узнать здесь.

Если вы просто ищете контент «abbb», отправленный с вашего сервера клиенту, вам просто нужно простое совпадение контента, как у вас. Я рекомендую использовать здесь быстрое сопоставление с образцом, чтобы повысить эффективность правила. Таким образом, соответствие вашего контента будет выглядеть примерно так:

содержание: "аббб"; fast_pattern: только;

Собрав это вместе, ваше правило может выглядеть примерно так:

alert tcp MY_SERVER HTTP_PORTS -> любой любой (msg: «Доступ к странице имеет контент abbb»; поток: к_клиенту, установлен; контент: «abbb»; fast_pattern: только; sid: XXXXX; версия: x;)

Если это все еще не срабатывает, возможно, что-то еще происходит. Поскольку вы просто ищете это в содержании, вам нужно проверить глубину проверки в препроцессоре http. Есть server_flow_depth и client_flow_depth. Попробуйте установить для них значение 0 (неограниченно) и посмотрите, сработает ли после этого ваше правило. Например, если у вас было значение client_flow_depth, равное 300, а содержимое «abbb» появилось только после 500 байт, то правило никогда не сработает, потому что snort не настроен на проверку так далеко в полезной нагрузке.

Если у вас включено адаптивное профилирование, вам необходимо добавить службу метаданных для http, иначе правило не будет соответствовать http-трафику. Это будет выглядеть примерно так:

метаданные: служба http;

Если вы не используете адаптивное профилирование, оно будет использовать порты в заголовке правила.

person johnjg12    schedule 16.07.2014