Snort частина 8

Синтаксис. classtype:;

alert tcp any any -> any 25 (msg: "SMTP expn root"; flags: A +; content: "expn root"; nocase; classtype: attempted-recon;)

Опція classtype може мати тільки ті значення для класифікації, які визначені в snort.conf за допомогою config classification. Snort надає стандартний набір класифікації в файлі classification.config. який використовується в поставляються наборах правил.

Задає правилам рівень важливості. Можливо використовувати параметр priority разом з classtype, при цьому зміниться рівень пріоритету параметра classtype.

Синтаксис. priority:;

alert tcp any any -> any 80 (msg: "WEB-MISC phf attempt"; flags: A +; content: "/ cgi-bin / phf"; priority: 10;)

alert tcp any any -> any 80 (msg: "EXPLOIT ntpdx overflow"; dsize:> 128; classtype: attempted-admin; priority: 10;)

Відмінні від зазначених в таблиці ключі Snort фактично ігнорує, тому вони можуть бути записані у вільній формі в форматі "ключ-значення". Кілька ключів поспіль розділяються комами, а ключі і значення відокремлюються між собою пропуском.

metadata: key1 value1; metadata: key1 value1, key2 value2;

alert tcp any any -> any 80 (msg: "Shared Library Rule Example"; metadata: engine shared; metadata: soid 3 | 12345;)

alert tcp any any -> any 80 (msg: "Shared Library Rule Example"; metadata: engine shared, soid 3 | 12345;)

alert tcp any any -> any 80 (msg: "HTTP Service Rule Example"; metadata: service http;)

Ключове слово content має ряд модифікаторів, які змінюють поведінку раніше зазначеного content. Список модифікаторів:

alert tcp any any -> any 139 (content: "| 5c 00 | P | 00 | I | 00 | P | 00 | E | 00 5c |";)

alert tcp any any -> any 80 (content:! "GET";)

Необхідно екранувати наступні символи:

Має схожу функціональність з content. проте працює несклько іншим чином. Основна перевага ключового слова protected_content над content в тому, що воно дозволяє приховати цільової контент, розкриваючи тільки хеш-суму (дайджест) зазначеного контенту. Як і в разі content. основна мета - порівняти рядки певних байтів. Пошук здійснюється шляхом хешування частин вхідних повідомлень і порівняння отриманих результатів з наданої в умови хеш-сумою. Через що проробляється дуже великий обсяг обчислень.

На даний момент з ключовим словом protected_content можливе використання алгоритмів хешування MD5, SHA256, і SHA512. Алгоритм хешування повинен бути зазначений у правилі з використанням ключового слова hash. якщо він не заданий за замовчуванням в конфігурації Snort. Крім того, разом з protected_content обов'язково повинен бути вказаний модифікатор length. щоб вказати довжину вихідних даних.

Як і в разі content. в правилі можливе використання декількох умов protected_content. У правилі допускається спільне використання content і protected_content. Також в protected_content можна використовувати модифікатор заперечення "!".

Ключове слово protected_content має ті ж модифікатори, що і content. за винятком таких:

Синтаксис. protected_content: [!] "", Length: orig_len [, hash: md5 | sha256 | sha512];

Наступні правила спрацьовують на рядку "HTTP".

alert tcp any any <> any 80 (msg: "MD5 Alert"; protected_content: "293C9EA246FF9985DC6F62A650F78986"; hash: md5; offset: 0; length: 4;)

alert tcp any any <> any 80 (msg: "SHA256 Alert"; protected_content: "56D6F32151AD8474F40D7B939C2161EE2BBF10023F4AF1DBB3E13260EBDC6342"; hash: sha256; offset: 0; length: 4;)

Використовується для вказівки алгоритму хешування, який буде використовуватися при зіставленні зі зразком, заданим в умови protected_content. Якщо в конфігурації Snort не вказано алгоритм за замовчуванням, то необхідно вказати використовуваний алгоритм в правилі з protected_content. На даний момент підтримуються наступні алгоритми хешування: MD5, SHA256, і SHA512.

Використовується для завдання вихідної довжини контенту, для якого задана хеш-сума (дайджест) в protected_content. Вказане значення має бути в інтервалі від 0 до 65536.

alert tcp any any -> any 21 (msg: "FTP ROOT"; content: "USER root"; nocase;)

Ключове слово rawbytes є модифікатором для розташованого до нього ключового слова content. дозволяючи працювати з необробленими даними пакета, ігноруючи будь-декодування, вироблене за допомогою препроцесорів.

HTTP Inspect має набір ключових слів http_raw_cookie. http_raw_header. http_raw_uri і ін. для роботи з необробленими даними, які зіставляють певні частини HTTP запитів і відповідей. З даними ключовими словами використовувати rawbytes не потрібно, так як ці умови за замовчуванням працюють з необробленими даними.

Більшість інших препроцесорів за замовчуванням використовують декодувати / нормалізовані дані для зіставлення із зразком. Тому для зіставлення з довільними необробленими даними з пакета необхідно вказувати ключове слово rawbytes.

alert tcp any any -> any 21 (msg: "Telnet NOP"; content: "| FF F1 |"; rawbytes;)