Правило Snort для проверки содержимого http-запроса не работает
Я пытаюсь проверить содержимое ответа http, чтобы найти в нем содержимое "abbb". Поэтому мое правило было
alert tcp MY_SERVER HTTP_PORTS -> any any(msg:"Страница, к которой обращались, имеет содержимое abbb";to_client; установлено; content:"abb";sid:XXXXX; rev:x;)
к сожалению, это правило, похоже, не работает. Может кто-нибудь сказать, если есть какие-то проблемы с моим правилом.
1 ответ
Для начала вам нужно исправить часть правила to_client, так как это неверный синтаксис. Вам нужно будет изменить это, чтобы:
Поток:to_client, установлено;
Вы можете найти больше о потоке здесь.
Если вы просто ищете контент "abbb", отправляемый с вашего сервера клиенту, вам просто нужно простое совпадение контента, как у вас. Я рекомендую использовать быстрое сопоставление с шаблоном, чтобы повысить эффективность правила. Таким образом, ваш контент будет выглядеть примерно так:
Содержание:"abbb"; fast_pattern: только;
Если сложить это вместе, ваше правило может выглядеть примерно так:
alert tcp MY_SERVER HTTP_PORTS -> any any (msg: "Страница, к которой обращались, имеет содержимое abbb"; поток:to_client, установлен; содержимое:"abbb"; fast_pattern:only; sid:XXXXX; rev:x;)
Если это по-прежнему не срабатывает, то, вероятно, происходит что-то еще. Поскольку вы просто ищете это в содержании, вам нужно проверить глубину проверки в препроцессоре http. Существует server_flow_depth и client_flow_depth. Попробуйте установить для них значение 0 (неограниченно) и посмотрите, срабатывает ли ваше правило после. Например, если значение client_flow_depth равно 300, а содержимое "abbb" не поступает до тех пор, пока не будет выполнено 500 байтов, правило никогда не сработает, потому что snort не настроен для проверки этого уровня полезной нагрузки.
Если у вас включено адаптивное профилирование, вам нужно добавить службу метаданных для http, иначе правило не будет соответствовать трафику http. Это будет выглядеть примерно так:
метаданные: сервис http;
Если вы не используете адаптивное профилирование, тогда оно будет использовать порты в заголовке правила.