Welcome to Энциклопедия сетевых протоколов
Поиск

Модули
· Титульная страница
· Мир протоколов
· Основные темы
· Архив публикаций
· Поиск
· Каталог ссылок
· Участники
· Документы и программы

Выбор языка
Язык интерфейса:


Статистика
20490479
запросов с 22 сентября 2005

Внешняя статистика
Rambler's Top100

  
Правила Snort (часть 4)
Опубликовано 19 окт. 2005 (Ср.) в 14:10:49
Тема: Детектирование попыток вторжения в сеть


Опции детектирования для заголовков пакетов

fragoffset

Опция fragoffset позволяет сравнивать смещение фрагмента дейтаграммы IP с заданным десятичным значением. Для отсечения всех первых фрагментов можно использовать ключевое слово fragbits и просмотр опции More fragments при установке fragoffset: 0 (см. пример ниже).

Формат

fragoffset:[<|>]<целое число>

Ниже приведен пример правила с использованием опции fragoffset

alert ip any any -> any any

(msg: “First Fragment”; fragbits: M; fragoffset: 0;)

ttl

Ключевое слово ttl используется для проверки времени жизни дейтаграмм IP. Эта опция может быть полезна при детектировании попыток трассировки с помощью traceroute.

Формат

ttl:[[<целое число>-]><=]<целое число>;

Приведенный ниже пример проверяет, что значение поля TTL в заголовках пакетов меньше 3.

ttl:<3;

Второй пример позволяет детектировать пакеты со значением TTL от 3 до 5.

ttl:3-5;

tos

Эта опция позволяет проверять в пакетах поле IP TOS (тип обслуживания).

Формат

tos:[!]<целое число>;

В приведенном ниже примере проверяется отличие значения поля TOS от 4

tos:!4;

id

Ключевое слово id используется для проверки наличия в поле IP ID заданного значения. Некоторые программы (эксплойты, сканеры, старые программы) устанавливают в этом поле определенное значение (например, число 31337 весьма популярно среди хакеров).

Формат

id:<целое число>;

В приведенном примере проверяется наличие в поле IP ID значения 31337.

id:31337;

ipopts

Ключевое слово ipopts позволяет проверять наличие в заголовке IP указанных опций. Поддерживается проверка следующих опций IP:

rr - Record route (запись маршрута) eol - End of list (завершение списка опций) nop - No op (нет опции) ts - Time Stamp (временная метка) sec - IP security option (опция безопасности) lsrr - Loose source routing (нежестко заданный отправителем маршрут) ssrr - Strict source routing (жестко заданный отправителем маршрут) satid - Stream identifier (идентификатор потока)2 any - any IP options are set (любые опции)

Чаще всего проверяются опции ssrr и lsrr, которые не используются в распространенных приложениях Internet.

Формат

ipopts:;

В приведенном примере проверяется наличие в заголовке IP опции Loose Source Routing.

ipopts:lsrr;

Отметим, что в правиле недопустимо наличие нескольких ключевых слов ipopts.

fragbits

Ключевое слово fragbits используется для проверки наличия в заголовке IP битов фрагментации и резервного бита. Опция поддерживает следующие параметры:

M - More Fragments (проверять бит MF) D - Don't Fragment (проверять бит запрета фрагментации) R - Reserved Bit (проверять резервный бит)

Для изменения характера проверки могут использоваться перечисленные ниже модификаторы:

+ - соответствует, если установлены указанные биты - - соответствует, если установлен любой из указанных битов ! - обращение (соответствует, если не установлен ни один из указанных битов)
Формат

fragbits:[+-*]<[MDR]>

В приведенном ниже примере проверяется установка флагов More Fragments и Do not Fragment.

fragbits:MD+;

dsize

Ключевое слово dsize используется для проверки размера поля данных пакета. Данная опция позволяет детектировать пакеты аномальных размеров, которые достаточно часто применяются для переполнения буферов.

Формат

dsize: [<>]<целое число>[<><целое число>];

Приведенный ниже фрагмент правила позволяет детектировать пакеты размером от 300 до 400 байтов.

dsize:300<>400;

Отметим, что условие dsize не будет выполняться для пакетов перестроения потока (stream rebuilt packet), независимо от их размера.

flags

Ключевое слово flags используется для проверки наличия заданных флагов TCP. Список проверяемых флагов приведен ниже:

F - FIN (младший бит поля флагов TCP) S - SYN R - RST P - PSH A - ACK U - URG 1 - резервный бит 1 (старший бит байта TCP Flags) 2 - резервный бит 2 0 - отсутствие флагов TCP

Перечисленные ниже модификаторы позволяют менять поведение опции:

+ - соответствует, если установлены указанные биты * - соответствует, если установлен любой из указанных битов ! - обращение (соответствует, если не установлен ни один из указанных битов)

Для создания правил обработки пакетов инициирования сессий (например, пакеты ECN, где установлен флаг SYN и резервные биты 1 и 2), можно задавать маски опций. Маска отделяется от проверяемых флагов запятой. Например, для детектирования SYN-пакетов независимо от значений резервных битов можно задать маску S,12.

Формат

flags:[!|*|+][,];

Для детектирования пакетов с флагами SYN и FIN независимо от значений резервных битов 1 и 2 может использоваться правило

alert tcp any any -> any any (flags:SF,12;)

flow

Опция flow используется вместе со сборкой потоков TCP и позволяет применять правило лишь к некоторым направлениям потока трафика. Вы можете в результате создавать правила, которые будут относиться только к клиентам или только к серверам, что дает возможность легко дифференцировать пакеты, относящиеся к клиентам из $HOME_NET, просматривающим web-страницы, от пакетов, относящихся к серверам, расположенным в $HOME_NET.

Ключевое слово established будет заменять опцию flags: A+, часто используемую применительно к уже организованным соединениям TCP.

Формат

flow: [(established|stateless)]

[,(to_client|to_server|from_client|from_server)]

[,(no_stream|only_stream)]

Таблица 8: Параметры опции flow

Параметр

Описание

to_client

Переключается на серверные отклики от A к B

to_server

Переключается на клиентские запросы от A к B

from_client

Переключается на клиентские запросы от A к B

from_server

Переключается на серверные отклики от A к B

established

Переключается только на организованные соединения TCP

stateless

Переключается независимо от состояния обработчика потока (stream processor) и может быть полезно для детектирования пакетов, направленных на аварийное завершение работы системы

no_stream

Не переключается пакетами перестроения потока (полезно для опций dsize и stream4)

only_stream

Переключается только пакетами перестроения потока

Ниже приведен пример использования опции flow для обнаружения потенциально опасного трафика.

alert tcp !$HOME_NET any -> $HOME_NET 21 (msg: “cd incoming detected”;

flow: from_client; content: ”CWD incoming”; nocase;)


alert tcp !$HOME_NET 0 -> $HOME_NET 0 (msg: “Port 0 TCP traffic”;

flow: stateless;)

flowbits

Опция flowbits используется совместно со средствами отслеживания соединений препроцессора Flow. Это позволяет создавать правила для сеансов транспортного уровня. Опция flowbits наиболее полезна для сеансов TCP.

Для опции flowbits поддерживается 7 ключевых слов. Большинство параметров требует указания определенного пользователем имени специфического состояния, которое будет проверяться. При создании таких имен следует ограничиваться буквами латиницы, цифрами, а также символами точки, дефиса и подчеркивания.

Формат

flowbits: [set|unset|toggle|isset,reset,noalert][,];

Таблица 9: Параметры опции flowbits

Параметр

Описание

set

Устанавливает (определяет) указанное состояние для текущего потока данных.

unset

Отменяет указанное состояние для текущего потока данных.

toggle

Устанавливает указанное состояние, если оно еще не установлено, и отменяет установленное ранее.

isset

Проверяет, установлено ли указанное состояние.

isnotset

Проверяет, что указанное состояние не установлено.

noalert

Отключает для правила генерацию сигнала независимо от остальных опций детектирования.

alert tcp any 143 -> any any (msg: “IMAP login”; content: “OK LOGIN”;

flowbits: set, logged_in; flowbits: noalert;)


alert tcp any any -> any 143 (msg: “IMAP LIST”; content: “LIST”;

flowbits: isset,logged_in;)

seq

Опция seq служит для проверки значения порядковых номеров TCP.

Формат

seq:<целое число>;

Приведенный ниже пример проверяет равенство порядкового номера TCP нулю.

seq:0;

ack

Ключевое слово ack используется для проверки номеров подтверждений TCP.

Формат

ack: <целое число>;

Приведенный пример проверяет равенство нулю порядкового номера подтверждения TCP.

ack:0;

3.6.13 window

Ключевое слово window используется для проверки размера окна TCP.

Формат

window:[!]<целое число>;

В приведенном примере проверяется совпадение размера окна TCP со значением 55808.

window:55808;

itype

Ключевое слово itype используется для проверки типа сообщения ICMP.

Формат

itype:[<|>]<целое число>[<><целое число>];

Приведенный пример позволяет детектировать сообщения ICMP с идентификатором типа, превышающим 30.

itype:>30;

icode

Ключевое слово itype используется для проверки значения кода ICMP.

Формат

icode: [<|>]<целое число>[<><целое число>];

В приведенном примере детектируются сообщения ICMP с кодом более 30.

code:>30;

icmp_id

Ключевое слово icmp_id служит для проверки значений идентификаторов ICMP. Такая проверка может оказаться полезной для обнаружения некоторых программ организации скрытых каналов, которые используют для передачи информации статические поля ICMP. Подключаемый модуль был создан, в частности, для детектирования DdoS-агентов stacheldraht.

Формат

icmp_id:<целое число>;

В приведенном примере проверяется наличие нулевого значения в поле ICMP ID.

icmp_id:0;

icmp_seq

Ключевое слово icmp_seq используется для проверки порядковых номеров ICMP. Такая проверка может оказаться полезной для обнаружения некоторых программ организации скрытых каналов, которые используют для передачи информации статические поля ICMP. Подключаемый модуль был создан, в частности, для детектирования DdoS-агентов stacheldraht.

Формат

icmp_seq: <целое число>;

В приведенном примере детектируются сообщения ICMP с порядковым номером 0.

icmp_seq:0;

rpc

Ключевое слово rpc используется для проверки приложений RPC, номеров версий и процедур в запросах SUNRPC CALL.

Для номера версии и процедуры допускается использование шаблона 0, которому соответствуют любые значения номеров.

Формат

rpc: <номер приложения>, [<номер версии>|*], [<номер процедуры>|*]>;

Ниже показан пример детектирования запросов an RPC portmap GETPORT.

alert tcp any any -> any 111 (rpc: 100000,*,3;);

В силу особенностей машины поиска соответствий детектирование по ключевому слову rpc работает несколько медленней, чем поиск значений RPC с использованием ключевого слова content.

ip_proto

Ключевое слово ip_proto позволяет проверять идентификатор протокола в заголовке IP. Список протоколов вы можете найти в файле /etc/protocols.

Формат

ip_proto:[!><] <имя или номер протокола>;

Приведенный пример позволяет детектировать трафик IGMP.

alert ip any any -> any any (ip_proto:igmp;)

sameip

Ключевое слово sameip позволяет детектировать пакеты с совпадающими адресами IP для получателя и отправителя.

Формат

sameip;

Приведенный пример обеспечивает генерацию сигнала при совпадении IP-адресов получателя и отправителя.

alert ip any any -> any any (sampeip;)



Примечание:

 
Вход
Регистрационное имя

Пароль

[Восстановить пароль]

Если у Вас еще нет учетной записи, Вы можете зарегистрироваться.


Связанные ссылки
· Поиск в разделе Детектирование попыток вторжения в сеть
· Статьи пользователя Николай Малых


Самая популярная статья раздела Детектирование попыток вторжения в сеть:
Правила Snort


Оценка статьи
Средняя оценка: 0
голос.: 0

Оцените эту публикацию:

Отлично
Очень хорошо
Хорошо
Приемлемо
Плохо


Параметры

 Вариант для печати Вариант для печати


Связанные темы

Контроль сетевого трафикаСредства сбора и анализа пакетовВопросы безопасности

"Вход" | Вход/регистрация | 0 коммент.
Комментарии выражают мнение их авторов. Администрация сайта не несет никакой ответственности за достоверность представленных в комментариях посетителей сведений, а также за содержание таких комментариев.

Для публикации своих комментариев Вам нужно зарегистрироваться..
Copyright © Nikolai Malykh
Все права на опубликованные на сайте материалы принадлежат Nikolai Malykh, если в опубликованном на сайте документе явно не указано иное.
Не разрешается воспроизведение опубликованных на сайте документов без согласия правообладателя.

Hosted By Web Hosting by iPage

Copyright © 2005 by Nikolai Malykh
Based on PHP-Nuke by Francisco Burzi. This is free software, and you may redistribute it under the GPL. Author comes with absolutely no warranty.
Время генерации страницы: 0.18 сек.