Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория_Системы_обнаружения_вторжений.doc
Скачиваний:
17
Добавлен:
20.12.2018
Размер:
189.95 Кб
Скачать

Выходные данные WinDump

WinDump выдает огромное количество информации по проходящему в сети трафику, поэтому важно понимать используемый при этом формат. Одна из наиболее трудных задач, стоящих перед аналитиком-новичком, это овладение методом декодирования выходных данных WinDump (вообще, существует множество программ, интерпретирующих такие данные). Эти данные стандартны для разных протоколов (например, TCP, UDP, ICMP), но есть некоторые нюансы. Первым шагом является идентификация исследуемого протокола. Для объяснения общего формата WinDump воспользуемся выходными данными TCP. Это запись TCP, отображаемая с помощью WinDump:

09:32:43:910000 nmap.edu.1173 > dns.net.21: S 62697789:62697789(0) win 512

09:32:43:910000. Временная метка: две цифры для часа, две цифры для минут, две цифры для секунд и шесть цифр для дробной части секунды.

nmap.edu. Хост-имя источника. Если хост-имя по IP-адресу не определяется или если это не запрашивается (параметром -n в WinDump), появляется не хост-имя, а IP-адрес.

1173. Номер порта, или служба порта, источника (например, 21 может соответствовать FTP).

>. Указатель на направление потока от источника к приемнику.

dns.net. Хост-имя назначения.

21. Номер порта назначения.

S. Флаг TCP. S представляет флаг SYN, который указывает запрос для начала соединения TCP.

62697789:62697789(0). Это начальный порядковый номер TCP: конечный порядковый номер TCP (байты данных). Порядковые номера используются в TCP для упорядочения принимаемых данных. В этом случае при установке сеанса работы начальный порядковый номер представляет собой исходный порядковый номер (ISN – initial sequence number), выбираемый как уникальное число для пометки первого байта данных. Конечный порядковый номер – это сумма начального и числа байтов, посланных в границах этого сегмента TCP. Как видим, число байтов данных, посылаемых в виде запроса на установление соединения, равно 0. Дело в том, что начальный и конечный порядковые номера совпадают. При обычном установлении соединения данные не посылаются.

win 512. Размер принимающего буфера TCP (в байтах) на nmap.edu.

Флаги tcp

Для обычных соединений TCP устанавливается один или несколько флагов. Флаги используются для указания функции соединения. В таблице показаны флаги TCP, их представление в WinDump и назначение.

Флаг TCP

Представление флага

Назначение флага

SYN

S

Это запрос на установление соединения, который является первой частью любого соединения TCP.

АСК

ack

Такой флаг обычно используется для подтверждения приема данных от отправителя. Он может объединяться с другими флагами.

FIN

F

Данный флаг указывает на намерение отправителя плавно завершить соединение посылающего хоста с принимающим.

RESET

R

Этот флаг указывает на намерение отправителя немедленно разорвать существующее соединение с принимающим хостом.

PUSH

P

Подобный флаг приводит к немедленному «выталкиванию» данных с посылающего хоста прикладным программным средствам принимающего хоста, без ожидания заполнения буфера. В этом случае главным является не эффективность, а скорость ответа. Для многих интерактивных приложений, например Telnet, это наиболее важный показатель, о чем и пытается сигнализировать флаг PUSH.

URGENT

urg

Этот флаг указывает на то, что преимущество над другими должны иметь «срочные» данные. Примером является нажатие Ctrl+C, приводя­щее к прерыванию загрузки данных FTP.

Заполнитель

.

Если для соединения не установлены флаги SYN, FIN, RESET или PUSH, после порта назначения указывается заполнитель (точка).

Опции командной строки WinDump

WinDump [-adeflnNOpqStvx] [-c count] [-F file] [-I interface]

[-r file] [-s snaplen] [-T type] [-w file] [expression].

Специфические опции Windump: [-D] [-B size].

-a разрешает конвертировать сетевые и широковещательные адреса в имена.

-c выход после обработки count пакетов.

-d выводит содержимое пакета в удобочитаемом виде.

-dd выводит содержимое пакета как фрагмент Си-программы.

-ddd выводит содержимое пакета в десятичном виде.

-e выводит заголовки канального уровня в каждой новой строке.

-f выводит адреса удаленных и локального хостов без преобразования в имена.

-F использовать file с описанием параметров фильтрации (дополнительные выражения в командной строке игнорируются).

-i использовать интерфейс interface для трассировки. Если не определен, WinDump находит активный сетевой интерфейс с наименьшим номером (исключая loopback). В Windows interface — имя сетевого адаптера или его номер (можно узнать, запустив WinDump -D).

-l использует буферизированный вывод на stdout. Полезным может оказаться конструкция вида:

«WinDump -l | tee dat»,

«WinDump -l > dat & tail -f dat».

-n не преобразовывать адреса (т.e. адрес хоста, номер порта и т.д.) в имена.

-N не печатать доменное имя в имени хоста. Т.е. если использован данный флаг, tcpdump напечатает «nic» вместо «nic.ddn.mil».

-O не запускать оптимизатор пакетов. Эта опция полезна, если вы сами анализируете пакеты.

-p не переводить сетевой интерфейс в promiscuous mode.

-q сокращенный вывод. Выводит информацию в сокращенном виде.

-r читает пакеты из файла file (которые созданы при помощи опции -w). Если вы хотите использовать в качестве ввода консоль, то file это «-».

-s выдает snap_len байт каждого пакета (в SunOS-овсоком NIT минимальное количество 96). 68 байт достаточно для протоколов IP, ICMP, TCP и UDP, однако обрезает информацию с более высоких уровней, скажем, DNS и NFS пакетов.

-T принудительная интерпретация пакетов по типу type соответствующих маске «expression». На данный момент известны следующие типы: rpc (Remote Procedure Call), rtp (Real-Time Applications protocol), rtcp (Real-Time Applications control protocol), vat (Visual Audio Tool), и wb (distributed White Board).

-S выводит абсолютный номер TCP-пакета.

-t не выводит время в каждой строке.

-tt выводит неформатированное время в каждой строке.

-v детальный вывод. К примеру, время жизни пакетов и тип сервиса.

-vv более детальный вывод. К примеру, вывод дополнительных полей NFS reply packets.

-w записывает raw-пакеты в file, которые вы сможете в дальнейшем расшифровать с использованием опции -r. Если вы хотите использовать в качестве вывода консоль, то file это «-».

-x выводит каждый пакет в шестнадцатеричном виде (без заголовка). На вывод будет отправлено snap_len байт.

-B устанавливает размер буфера драйвера size в килобайтах. По умолчанию размер буфера 1 мегабайт. Если в процессе работы некоторые пакеты не отображаются, попробуйте увеличить размер буфера. Если у вас РРР-соединение или 10 Мбит Ethernet, то размер буфера можно уменьшить вдвое или втрое.

-D выводит список сетевых устройств, которые присутствуют в вашей системе. Список имеет вид: number – номер сетевого устройства в системе, name – его имя, а за ними следует описание устройства. В последствии вы сможете использовать эти данные для того, чтобы работать со всеми имеющимися сетевыми интерфейсами вашей системы, которые доступны в данный момент. Выбрать устройство можно будет при помощи опции I:

«WinDump -i name»,

«WinDump -i number.

Expression – выражение, которое задает критерий фильтрации пакетов. Если поле expression отсутствует, то выводятся все пакеты. В противном случае выводятся только те пакеты, которые соответствуют маске expression.

Expression может состоять из одного или более примитивов. Примитивы часто состоят из id (имя или номер) определителя. Существует три ключевых типа определителей:

typeопределитель, задающий общую политику. Возможные типы: host, net и port. Например, «host foo», «net 128.3», «port 20». Если type не указан, то по умолчанию используется host.

dirопределитель, указывающий направление передачи пакетов. Возможные варианты src, dst, src or dst и src and dst. Например, «src foo», «dst net 128.3», «src or dst port ftp-data». Если dir не указан, то по умолчанию используется src or dst. Для «null» соединений (это ppp или slip) используется inbound и outbound определитель для указания желаемого направления.

proto – определитель позволяет фильтровать пакеты по конкретному протоколу. Возможные протоколы: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp и udp. Например, «ether src foo», «arp net 128.3», «tcp port 21». Если определитель отсутствует, то никакие пакеты не фильтруются. («fddi» фактически является алиасом для «ether», т.к. в большинстве случаев FDDI-пакеты содержат Ethernet-адрес отправителя и получателя и часто содержат Ethernet-типы пакетов. FDDI-заголовки также содержат другие поля, которых нет в списке фильтров.)

Некоторые специальные примитивы не имеют шаблонов, как например: gateway, broadcast, less, greater и арифметические выражения.

Множество составных выражений фильтров используют слова and, or и not для объединения примитивов. К примеру, «host foo and not port ftp and not port ftp-data». Для упрощения ввода некоторые определители могут быть опущены. К примеру, «tcp dst port ftp or ftp-data or domain» –то же самое, что и «tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain».

Допускаются следующие выражения:

dst host host верно, если поле IP destination пакета – host, может быть адрес или имя хоста.

src host host верно, если поле IP source пакета – host.

host host верно, если source или destination пакета – host. Также могут употребляться префиксы: ip, arp, или rarp как: ip host host что эквивалентно ether proto \ip and host host. Если host – имя с несколькими IP-адресами, то каждый адрес проверяется на соответствие.

ether dst ehost Верно, если Ethernet-адрес получателя – ehost. Ehost – любое из имен /etc/ethers или номер (см. ethers(3N).

ether src ehost верно, если Ethernet-адрес отправителя – ehost.

ether host ehost верно, если Ethernet-адреса получателя или отправителя – ehost.

gateway host верно, если host – gateway. Т.е. Ethernet-адрес отправителя или получателя – host, но ни IP отправителя, ни IP получателя не являются host. Host может быть именем, а также может находиться в /etc/hosts и /etc/ethers. (Что равносильно ether host ehost and not host host, который может использоваться с любым именем или номером для host / ehost.)

dst net net верно, если IP получателя имеет адрес – net. Net – любая запись из /etc/networks или адрес сети.

src net net верно, если IP отправителя имеет адрес – net.

net net верно, если IP получателя или отправителя имеют адрес сети – net.

net net mask mask Верно, если IP-адрес совпадает с net c соответствующей netmask. Может быть определен совместно с src или dst.

net net/len верно, если IP равно net, a маска подсети – len в битовом виде (CIDR-формат). Может быть определен совместно с src или dst.

dst port port верно, если пакет ip/tcp или ip/udp и имеет порт получателя – port. port может быть числом или присутствовать в /etc/services (см tcp(4P) и udp(4P)). Если имя используется для двух или более портов, то проверяются оба номера порта и протоколы. Если используются недопустимые номер порта или имя, то проверяются только номера портов (т.е. dst port 513 выводит трафик tcp/login и udp/who, и port domain выводит tcp/domain и udp/domain).

src port port верно, если порт отправителя – port.

port port верно, если порт отправителя или получателя – port. Некоторые выражения можно комбинировать, к примеру: tcp src port port – только tcp-пакеты у которых порт – port.

less length верно, если длина пакета меньше или равна length, что равносильно len <= length.

greater length верно, если длина пакета больше или равна length, что равносильно len >= length.

ip proto protocol верно, если пакет является IP пакетом с протоколом protocol. Protocol может иметь номер или одно из имен icmp, igrp, udp, nd, или tcp.

ether broadcast верно, если пакет – широковещательный Ethernet-пакет. Выражение ether является необязательным.

ip broadcast верно, если пакет – широковещательный IP-пакет.

ether multicast верно, если пакет – Еthernet multicast-пакет. Выражение ether является необязательным. Это сокращенная запись для «ether[0] & 1!= 0».

ip multicast верно, если пакет – IP-multicast пакет.

ether proto protocol верно, если пакет типа Ethernet. Protocol может быть число или имя: ip, arp, или rarp.

decnet src host верно, если DECNET-адрес получателя – host, который может быть адресом типа «10.123», или DECNET-имя хоста. (DECNET имя хоста поддерживается только в Ultrix системах).

decnet dst host Верно, если DECNET-адрес получателя – host.

decnet host host Верно, если DECNET-адрес получателя или отправителя – host.

proto [exprsize]

Proto один из следующих протоколов ether, fddi, ip, arp, rarp, tcp, udp, или icmp, и показывает уровень протокола для данной операции. Смещение в байтах для данного уровня протокола берется из expr. Size – необязательное, показывает интересующее количество байт по данному смещению, может быть 1,2 или 4, по умолчанию 1.