Я бы порекомендовал что-то вроде следующего:
alert tcp any any -> any 5466 /
(msg:"FTP command execution"; flow:to_server,established; /
content: "POST"; http_method; nocase; /
content:"/admin_lua_script.html"; fast_pattern; http_uri;/
content:"command=os.execute"; http_client_body; nocase; /
metadata: service http;)
Объяснение:
порт назначения 5466:
По возможности всегда следует указывать порт. Когда у вас есть правила, которые являются «любыми/любыми» для источника/назначения, snort обрабатывает их иначе, чем правила с определенными портами.
Важно: Поскольку этот модуль эксплойта работает через порт 5466 и является http, вам НЕОБХОДИМО чтобы убедиться, что этот порт находится в конфигурации препроцессора http для портов. В частности, ваш snort.conf должен иметь строку конфигурации, похожую на следующую:
препроцессор http_inspect_server: профиль сервера по умолчанию все порты { 80 ... 5466 ...}
(очевидно, не ставьте точки, просто обозначая другие порты, которые вы должны там иметь). Если у вас нет этого порта в конфигурации вашего препроцессора для http, все ваши модификаторы контента http НЕ будут совпадать, потому что snort не будет обрабатывать трафик на этом порту как http, что, вероятно, является основной проблемой, с которой вы сталкиваетесь.
flow:to_server,installed;
Вам нужно проверять только установленные сеансы, в которых поток направляется на сервер. Это будет более эффективно, поскольку snort не будет проверять случайный трафик на наличие неустановленных сессий, и ему не придется проверять трафик, идущий к клиенту, поскольку вы знаете, что направление для этого эксплойта всегда будет идти на сервер. Единственный способ, которым запрос будет успешным, будет, если соединение уже установлено между клиентом и сервером, в противном случае эксплойт не будет успешным, и нет смысла предупреждать об этом.
содержимое: "ПОСТ"; http_метод; nocase;
Вы хотите использовать nocase для совпадения записей, потому что http не требует, чтобы в методе были все заглавные буквы.
содержимое:"/admin_lua_script.html"; fast_pattern; http_uri;
Добавление опции fast_pattern сделает правило более эффективным, так как оно поместит его в быстрое сопоставление с образцом в snort. Вы знаете, что этот контент является статическим и никогда не меняется (включая регистр), поэтому он подходит для быстрого сопоставления шаблонов. Поскольку это единственное совпадение содержимого в правиле, чувствительном к регистру, snort поместит его в быстрое сопоставление шаблонов самостоятельно, но если вы позже измените правило с другим соответствием содержимого, вы захотите, чтобы это было совпадением содержимого для использования. для сопоставителя fast_pattern.
содержание:"команда=os.execute"; http_client_body; nocase;
Это будет в теле клиента, поэтому добавьте параметр http_client_body.
метаданные: служба http;
Если вы используете на основе цели (которая уже несколько дней вы должны быть), вам нужно добавить ключевое слово службы http. Наличие этого в правиле не предотвратит срабатывание правила, если вы не используете таргетинг, поэтому рекомендуется добавить это, если вы знаете, к какому сервису относится этот трафик.
Дополнительное примечание:
SID вашего пользовательского правила должен быть 1000000 или выше, все, что меньше этого, зарезервировано для правил распределения snort. Подробнее об этом читайте здесь
person
johnjg12
schedule
26.02.2015