Опубликован: 20.02.2006 | Уровень: специалист | Доступ: платный
Лекция 6:

Сетевые анализаторы

Выражения Tcpdump

Выражения Tcpdump определяют выбор отображаемых сетевых пакетов. Именно здесь происходит реальная работа Tcpdump. Выдаются только те объекты, которые соответствуют выражению; если выражения не заданы, отображаться будут все пакеты. Выражение Tcpdump состоит из одной или нескольких директив, называемых примитивами, которые, в свою очередь, состоят из идентификатора и следующего за ним квалификатора. В табл. 6.3 перечислены три различных вида квалификаторов, а в табл. 6.4 - доступные комбинации примитивов.

Существуют также более сложные выражения, которые можно строить с помощью булевых операций, таких как И, ИЛИ, НЕ, и операций сравнения (больше, меньше и т.п.). Обратитесь к оперативной справке Tcpdump, чтобы детальнее ознакомиться с примерами и методами применения выражений.

Таблица 6.3. Квалификаторы Tcpdump
Квалификатор Описание
тип Определяет, к чему относится идентификатор, заданный как имя или номер. Возможными типами служат host, net и port. Например, host foo, net 128.3 или port 20
направление Определяет направление трафика от определенного идентификатора. Возможными направлениями служат src; dst; src or dst и src and dst (src обозначает исходный адрес, dst - целевой)
протокол Позволяет определить протокол для фильтрации. Возможными протоколами являются ether, fddi, tr, ip, ipv6, arp, rarp, decnet, tcp и udp. Если протокол не задан, то допустимы все протоколы, совместимые с остальной частью выражения. При помощи фильтров с этим квалификатором можно определить, какая машина делает чрезмерное количество arp-запросов, или для отбрасывания на фильтре udp-запросов, которых немало во многих сетях, так как DNS использует udp

Таблица 6.4. Допустимые комбинации примитивов
Комбинация Описание
dst host хост Показывает только трафик, адресованный хосту, который может быть задан IP-адресом или именем
src host хост Показывает только трафик, исходящий из хоста
host хост Показывает как исходящий, так и входящий трафик хоста
ether dst Ethernet-хост Показывает трафик, предназначенный для указанного Ethernet-хоста, который может быть задан либо именем, либо MAC-адресом
ether src Ethernet-хост Показывает трафик, исходящий из Ethernet-хоста
ether host Ethernet-хост Показывает как исходящий, так и входящий трафик Ethernet-хоста
gateway хост Показывает любой трафик, использующий хост в качестве шлюза. Иными словами, трафик, переправляемый с хоста. Так происходит, когда IP-адрес отправителя или получателя не соответствует Ethernet-адресу хоста. Данную возможность целесообразно использовать, когда необходимо отследить весь трафик, проходящий через Интернет-шлюз или некоторый конкретный маршрутизатор
dst net сеть Фильтрует трафик, предназначенный для конкретной сети, заданной в нотации 0.0.0.0. Аналогично ether dst Ethernet-хост за исключением того, что это может быть значительно больше, чем один хост
src net сеть Фильтрует сеть отправителя
net сеть То же, что и две предыдущие инструкции, но трафик разрешен как в заданную сеть, так и из нее
net сеть mask маска_сети Сопоставляется с трафиком в заданную сеть или из нее, с указанной маской сети. Применяется для задания точного размера сети с шагом меньше, чем класс C. В этой комбинации допускается использование примитивов src и dst для указания направления потоков данных
net сеть/длина_маски Сопоставляется с трафиком с сетевыми адресами из указанной сети и заданным числом бит в маске сети. Аналогична предыдущей комбинации
dst port порт Фильтрует трафик TCP и UDP с заданным целевым портом. Здесь можно также специфицировать тип перехватываемого трафика, TCP или UDP. По умолчанию отображается трафик обоих типов
src port порт То же, что и предыдущая комбинация, только перехватывается трафик с заданным исходным портом
less длина Отображает пакеты с длиной, меньшей или равной заданной. Допустима также комбинация len <= длина
greater длина То же, что и предыдущая комбинация, только перехватывается трафик с длиной пакетов больше или равной указанной
ip proto протокол Перехватывает трафик заданного протокола. Допустимыми протоколами служат icmp, icmpv6, igmp, igrp, pim, ah, esp, vrrp, udp и tcp. Имена tcp, udp и icmp должны помещаться между двумя обратными косыми чертами, чтобы они не читались как ключевые слова. Пример: ip proto \tcp\
ip6 proto протокол Аналогично предыдущей комбинация, но для пакетов и типов IPv6
ip6 protochain протокол Ищет пакеты IPv6, имеющие заголовок указанного протокола
ip protochain протокол То же, что и выше, но для пакетов IPv4
ip broadcast Идентифицирует только широковещательный трафик, то есть трафик, имеющий все нули или все единицы в поле целевого адреса
ether multicast Регистрирует вещательные пакеты Ethernet
ip multicast Регистрирует вещательные пакеты IP
ip6 multicast Регистрирует вещательные пакеты IPv6
ether proto протокол Отображает трафик, который имеет указанный тип протокола Ethernet. Допустимыми именами протоколов служат ip, ipv6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx и netbeui. Эти имена являются также идентификаторами, поэтому они должны быть экранированы с помощью обратных косых черт
decnet src хост Перехватывает трафик DECnet с исходным адресом хоста
decnet dst хост Аналогична предыдущей комбинация, но фильтрует целевой адрес хоста
decnet хост Фильтрует трафик DECnet с исходным или целевым адресом хоста
ip Сокращенный вариант описанной выше комбинации ether proto ip. Ловит трафик, соответствующий Ethernet-протоколу ip
ip6 Сокращенный вариант описанной выше комбинации ether proto ip6. Ловит трафик, соответствующий Ethernet-протоколу ip6
arp Сокращенный вариант описанной выше комбинации ether proto arp. Ловит трафик, соответствующий Ethernet-протоколу arp
rarp Сокращенный вариант описанной выше комбинации ether proto rarp. Ловит трафик, соответствующий Ethernet-протоколу rarp
atalk Сокращенный вариант описанной выше комбинации ether proto atalk. Ловит трафик, соответствующий Ethernet-протоколу atalk
aarp Сокращенный вариант описанной выше комбинации ether proto aarp. Ловит трафик, соответствующий Ethernet-протоколу aarp
decnet Сокращенный вариант описанной выше комбинации ether proto decnet. Ловит трафик, соответствующий Ethernet-протоколу decnet
iso Сокращенный вариант описанной выше комбинации ether proto iso. Ловит трафик, соответствующий Ethernet-протоколу iso
stp Сокращенный вариант описанной выше комбинации ether proto stp. Ловит трафик, соответствующий Ethernet-протоколу stp
ipx Сокращенный вариант описанной выше комбинации ether proto ipx. Ловит трафик, соответствующий Ethernet-протоколу ipx
netbeui Сокращенный вариант описанной выше комбинации ether proto netbeui. Ловит трафик, соответствующий Ethernet-протоколу netbeui
vlan идентификатор_ВЛВС Перехватывает пакеты на основе стандарта 802.1Q VLAN. Идентификатор виртуальной локальной сети можно опускать
tcp Сокращенная форма комбинации ip proto tcp
udp Сокращенная форма комбинации ip proto udp
icmp Сокращенная форма комбинации ip proto icmp
iso proto протокол Перехватывает пакеты ВОС с заданным типом протокола - clnp, esis или isis
clnp Сокращенная форма описанной выше комбинации с clnp в качестве протокола
esis Сокращенная форма комбинации iso proto протокол с esis в качестве протокола
isis Сокращенная форма комбинации iso proto протокол с isis в качестве протокола

Примеры применения Tcpdump

Ниже представлены несколько практических примеров применения Tcpdump

Просмотр всего входящего и исходящего трафика определенного хоста

Если вы хотите отслеживать только входящий и исходящий трафик определенного хоста, то можно отфильтровать все остальное с помощью простого выражения "host". Например, чтобы следить за хостом с IP-адресом 192.168.1.1, нужно выполнить инструкцию

tcpdump -n host 192.168.1.1

Наблюдение за входящим и исходящим трафиком определенного порта

Если вы хотите проследить за использованием определенного приложения, можно применить Tcpdump для улавливания всего трафика, направляемого в определенный порт TCP/UDP. Если приложением, за которым вы пытаетесь наблюдать, является Telnet (порт 23), то это можно сделать с помощью следующего выражения Tcpdump:

tcpdump -n port 23

Просмотр всего входящего и исходящего трафика определенного хоста, за исключением некоторых видов трафика

Предположим, что вы хотите следить за одним хостом, как в первом примере, но желаете отфильтровать трафик SSH (если вы подключаетесь к этому хосту посредством SSH, то нефильтрованный вывод Tcpdump будет отображать трафик вашего собственного соединения). Это можно сделать, добавив выражение port с булевой операцией НЕ. Вот как выглядит команда:

tcpdump -n host 192.163.1.1 and not port 22

Выявление вредоносной рабочей станции

Если возникли сетевые проблемы, и вы подозреваете, что вредоносный компьютер норовит затопить вашу сеть, можно применить Tcpdump для быстрого прослеживания виновника. Вне зависимости от того, будет ли это неисправная сетевая плата или ПК с "троянской" программой, вызывающей атаку на доступность, Tcpdump поможет пролить свет на проблему. Сначала попробуйте просто запустить Tcpdump без фильтрации и посмотреть, что порождает большую часть трафика. Используйте опции -a и -e для генерации имен и MAC-адресов.

tcpdump -ae

Отметим, что можно объединять две буквы с одним дефисом. Если вывод на экране проскальзывает слишком быстро, используйте опцию -c 1000, чтобы остановиться после получения 1000 пакетов.

Слежение за определенной рабочей станцией

С помощью Tcpdump вы легко можете запротоколировать трафик, исходящий из определенной рабочей станции, для последующего анализа (убедитесь только, что вы имеете на это законное право). Используйте инструкцию Tcpdump из первого примера с ключом -w для записи в файл. Если в сети применяется динамическое конфигурирование хостов по протоколу DHCP, то предпочтительным может оказаться использование имен SMB (Windows). Пример:

tcpdump -w logfile host 192.168.1.1

где logfile представляет файл протокола. Можно также добавить опции -c или -C для ограничения размера файла вывода.

Поиск подозрительного сетевого трафика

Если у вас вызывает беспокойство сетевая активность в нерабочее время, то можно оставить запущенный Tcpdump, отметив трафик, который вы считаете сомнительным. Можно запустить Tcpdump с установленным флагом gateway 192.168.0.1, заменяя IP-адрес на адрес своего Интернет-шлюза. Если ваша домашняя сеть использует IP-диапазон от 192.168.0.0 до 192.168.0.254, в этом случае будет помечаться весь трафик, проходящий через шлюз Интернета. Если имеется внутренний почтовый сервер, и вы не хотите протоколировать этот трафик, так как он допустим, можно добавить инструкцию

and host != 192.168.0.2

где IP-адрес является адресом почтового сервера. Восклицательный знак действует как булева операция НЕ. Будет помечаться весь входящий трафик, не предназначенный для почтового сервера. Выражение может выглядеть следующим образом:

tcpdump -w logfile gateway 192.168.0.1 and 
host != 192.168.1.2

Для выявления пользователей, применяющих определенное приложение, например, программы потокового видео или аудио, можно уточнить выражение, если известен номер порта. Если вы знаете, что используется порт TCP 1000, то можно применить примитив port для перехвата трафика подозрительного приложения. Пример:

tcpdump -w logfile gateway 192.168.0.1 and 
host != 192.168.1.2 
dst port 1000

Для более сложных сценариев обнаружения вторжений лучше применить одну из систем обнаружения вторжений, описанных в "Системы обнаружения вторжений" , но для быстрого предварительного анализа Tcpdump может быть очень полезным средством.

WinDump: Анализатор Ethernet-трафика для Windows

WinDump

Автор/основной контакт: Loris Degioanni

Web-сайт: windump.polito.it/install/default.htm

Платформы: Windows 95, 98, ME, NT4, 2000, XP

Лицензия: BSD

Рассмотренная версия: 3.8 alpha

Список почтовой рассылки WinPcap:

http://www.mail-archive.com/winpcap-users@winpcap.polito.it/

Наконец появилась программа Tcpdump для Windows. На самом деле, это настоящая UNIX-программа Tcpdump, перенесенная на платформу Windows, поэтому все функции и выражения работают точно так же.

Роман Попов
Роман Попов

После прохождения курса Стандарты инфрмационной безопасности мне предложено получение Удостоверения о повышении квалификации от НИУ ВШЭ по программе Менеджмент информационной безопасности. Программа включает в себя ряд курсов которые я уже ранее проходил. Какой порядок действий в данном случае? Как прозводится перезачет результатов? И какие экщамены мне надо еще доздать чтобы получить удостоверение?

Александр Путятинский
Александр Путятинский

Добрый день по окончании данного курса выдается сертификат?

Гончик Цымжитов
Гончик Цымжитов
Россия, Санкт-Петербург
Александр Косенко
Александр Косенко
Украина, Днепропетровск