Home
Contents

CommView - Мониторинг и анализ сети

Prev Page Next Page
 
Введение
О программе CommView
Что нового
Работа с программой
Краткий обзор
Выбор сетевого адаптера для работы
Текущие IP-соединения
Пакеты
Log-файлы
Просмотр Log-файлов
Правила
Универсальные правила
Предупреждения
Реконструкция TCP-сессий
Реконструкция UDP-потоков
Поиск пакетов
Статистика и отчёты
Использование псевдонимов (алиасов)
Генератор пакетов
Визуальный конструктор пакетов
Определение изготовителя NIC
Захват по расписанию
Удаленный мониторинг (Remote Agent)
Использование RPCAP
Сбор трафика на логическом адаптере обратной связи (loopback)
Информация о портах
Установка опций
Часто задаваемые вопросы (FAQ)
Анализ VoIP
Введение
Работа с анализатором VoIP
Сессии SIP and H.323
Потоки RTP
Регистрации
Станции
Ошибки
Log-файлы звонков
Отчет
Воспроизведение звонка
Просмотр VoIP log-файлов
Работа со списками в анализаторе VoIP
Файлы NVF
Дополнительные возможности
Перехват больших объемов трафика
Запуск нескольких копий программы
Невидимый режим
Параметры командной строки
Обмен данными с вашим приложением
Пользовательский модуль декодирования
Формат Log-файлов CommView
Покупка и поддержка

Универсальные правила

Универсальные правила являются мощным и гибким механизмом создания фильтров с помощью булевой логики. Требуются лишь элементарные знания математики и логики; синтаксис правил несложен для понимания.

Обзор

Чтобы создать новое правило, задайте ему произвольное имя в поле Имя, выберите действие (Захват пакетов/Игнорировать пакеты), в поле Формула задайте формулу, пользуясь синтаксисом, описанным ниже, и нажмите Добавить/Изменить. Новое правило будет добавлено в список и немедленно активизировано. Вы можете задать неограниченное количество правил, но активными из них буду лишь те, возле которых будет установлена метка. Любое правило можно включить/выключить, изменяя соответствующий флажок, либо совсем удалить правило с помощью кнопки Удалить. Если активны сразу несколько правил, вы можете выполнить комбинированное правило, нажав на кнопку Оценить. Обратите внимание, что отдельные правила объединяются логическим оператором OR ("ИЛИ"). Пример: для трех активных правил RULE1, RULE2, RULE3, результирующим будет правило RULE1 OR RULE2 OR RULE3.

Можно пользоваться составными правилами совместно с обычными, описанными в предыдущей главе. Однако, если вы владеете булевой логикой, рекомендуем пользоваться только составными, так как они более гибки. Обычные правила объединяются с составными с помощью логического оператора AND ("И").

Описание синтаксиса

dir – Направление пакета. Возможные значения - in (входящий), out (исходящий) и pass (транзитный).

etherproto – Протокол Ethernet (13-й и 14-й байты пакета). Допустимыми значениями являются числа (например, etherproto=0x0800 соответствует протоколу IP) или известные аббревиатуры (например, etherproto=ARP, что соответствует  0x0806).

ipproto – Протокол IP. Допустимыми значениями являются числа (например, ipproto!=0x06 соответствует протоколу TCP) или известные аббревиатуры (например, ipproto=UDP, что соответствует 0x11).

smac – MAC источника. Допустимыми значениями являются MAC-адреса источников в шестнадцатеричном виде (например, smac=00:00:21:0A:13:0F) или алиасы.

dmac – MAC получателя.

sip IP- или IPv6-адрес источника. Допустимыми значениями являются IP-адреса, записанные через точку (например, sip=192.168.0.1 или sip= fe80::02c0:26ff:fe2d:edb5), IP-адреса с карт-бланшами (например, sip!=*.*.*.255, кроме адресов IPv6), сетевые адреса с масками подсетей (например, sip=192.168.0.4/255.255.255.240 или sip=192.168.0.5/28), диапазоны IP-адресов (то есть, sip from 192.168.0.15 to 192.168.0.18 или sip in 192.168.0.15 ... 192.168.0.18) или алиасы. Для работы с адресами IPv6 требуется версия Windows XP или выше, а также установленный протокол IPv6.

dip -  IP-адрес получателя.

sport – Номер порта-источника пакета TCP или UDP. Допустимыми значениями являются числа (например, sport=80 соответствует HTTP), диапазоны (то есть, sport from 20 to 50  или sport in 20..50 для любых портов в диапазоне от 20 до 50)  или алиасы, известные операционной системе (например, sport=ftp, что соответствует порту 21). Проверить список алиасов, известных ОС, можно нажав Вид => Информация о портах.

dport – Порт-получатель пакетов TCP или UDP.

flag – Флаг TCP. Допустимыми значениями являются числа (например, 0x18 соответствует PSH ACK), одна или несколько букв из следующего списка: F (FIN), S (SYN), R (RST), P (PSH), A (ACK) и U (URG) или ключевое слово has, означающее,  что флаг содержит определённое значение. Например: flag=0x18, flag=SA, flag has F.

size – Размер пакета. Допустимыми значениями являются числа (например, size=1514) или диапазоны (size from 64 to 84 или size in 64..84 для размеров с 64 до 84 байтов).

str – Содержимое пакета. Задает условие, что пакет должен содержать определённую строку. Функция имеет три аргумента: образец поиска, местоположение, чувствительность к регистру. Первый аргумент – строка, например, 'GET'. Второй аргумент – число, показывающее смешение строки в пакете. Счёт начинается с нуля – первый байт пакета надо искать, задавая смещение равное 0. Чтобы искать строку в любом месте пакета, задайте смещение равным –1. Третий аргумент устанавливает чувствительность к регистру и может принимать значения false (без учёта регистра) или true (с учётом регистра). Второй и третий аргументы необязательны, по умолчанию имеют значения –1  и false соответственно (искать во всём пакете, без учёта регистра). Примеры: str('GET',-1,false), str('GET',-1), str ('GET').

hex - Содержимое пакета. Задает условие, что пакет должен содержать определённый 16-ричный набор.  Функция имеет два аргумента: образец поиска и местоположение. Первый аргумент – 16-ричная величина, например, 0x4500. Второй аргумент – число, задающее смещение внутри пакета. Отсчёт ведется с нуля, т. е. первый байт пакета соответствует смещению, равному 0. Чтобы искать во всём пакете, задайте смещение равным –1. Второй аргумент необязателен, по умолчанию имеет значение –1  (искать во всём пакете). Пример: hex(0x04500, 14) , hex(0x4500, 0x0E), hex (0x010101).

bit - Содержимое пакета. Задает условие, что пакет должен содержать по указанному смещению определённый бит, имеющий значение 1. В этом случае функция вернёт код возврата true. Если же искомый бит имеет значение 0 или находится за пределами пакета - функция вернёт код возврата false. Первый аргумент – номер бита в байте, начиная с нуля; допустимые значения 0-7. Таким образом, если вы ищете восьмой бит, установите номер равным семи. Второй аргумент – число, обозначающее смещение байта в пакете, начиная с нуля, то есть, если нужен первый байт пакета – смещение должно быть равно 0. Оба аргумента обязательны, например: bit(0, 14) , bit(5, 1).

Вышеописанные ключевые слова можно использовать со следующими операторами:

and - конъюнкция, булево И.

or  - дизъюнкция, булево ИЛИ.

not - булево отрицание.

= - Арифметическое равенство.

!= - Арифметическое неравенство.

<> - Арифметическое неравенство.

> - Арифметическое условие "больше, чем".

< - Арифметическое условие "меньше, чем".

( ) – скобки, управляющие порядком вычисления правил.

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

Примеры

Ниже приведены несколько примеров, поясняющих синтаксис правил. К каждому правилу даны комментарии, отделяемые двойной косой чертой.

· dir!=pass // Захватывать только входящие и исходящие пакеты. Транзитные пакеты игнорируются.
· (smac=00:00:21:0A:13:0E or smac=00:00:21:0A:13:0F) and etherproto=arp // Захватывать пакеты ARP, посылаемые двумя компьютерами с MAC 00:00:21:0A:13:0E и 00:00:21:0A:13:0F.
· ipproto=udp and dport=137 // Захватывать пакеты UDP/IP, посылаемые в порт 137.
· dport=25 and str('RCPT TO:', -1, true) // Захватывать пакеты TCP/IP или UDP/IP, содержащие строку "RCPT TO:" и направляемые в порт 25.
· not (sport>110) // Захватывать все пакеты, кроме тех, что имеют порт-источник с номером выше 110.
· (sip=192.168.0.3 and dip=192.168.0.15) or (sip=192.168.0.15 and dip=192.168.0.3) // Захватывать только IP-пакеты, следующие между двумя хостами, 192.168.0.3 и 192.168.0.15. Все остальные игнорируются.
· ((sip from 192.168.0.3 to 192.168.0.7) and (dip = 192.168.1.0/28)) and (flag=PA) and (size in 200..600) // Захватывать  TCP-пакеты, размер которых лежит в диапазоне от 200 до 600 байтов, приходящие с IP-адресов в диапазоне  192.168.0.3 - 192.168.0.7, причем IP-адреса получателей находятся в сегменте 192.168.1.0/255.255.255.240, и имеющие TCP-флаг PSH ACK.
· Hex(0x0203, 89) and (dir<>in) // Захватывать пакеты, содержащие 0x0203 в смещении 89, при этом направление пакета - не "входящий".