учебники, программирование, основы, введение в,

 

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

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

Грубо говоря, сетевой анализатор (network sniffer) прослушивает или "обнюхивает" ("sniffs") пакеты определенного физического сегмента сети. Это позволяет анализировать трафик на наличие некоторых шаблонов, исправлять определенные проблемы и выявлять подозрительную активность. Сетевая система обнаружения вторжений является ничем иным, как развитым анализатором, который сопоставляет каждый пакет в сети с базой данных известных образцов вредоносного трафика, аналогично тому, как антивирусная программа поступает с файлами в компьютере.
В отличие от средств, описанных ранее, анализаторы действуют на более низком уровне. Если обратиться к эталонной модели ВОС, то анализаторы проверяют два нижних уровня - физический и канальный.


Номер уровня модели ВОС

Название уровня

Примеры протоколов

Уровень 7

Прикладной уровень

DNS, FTP, HTTP, SMTP, SNMP, Telnet

Уровень 6

Уровень представления

XDR

Уровень 5

Уровень сеанса

RPC

Уровень 4

Транспортный уровень

NetBIOS, TCP, UDP

Уровень 3

Сетевой уровень

ARP, IP, IPX, OSPF

Уровень 2

Канальный уровень

Arcnet, Ethernet, Token ring

Уровень 1

Физический уровень

Коаксиальный кабель, оптоволокно, витая пара

Физический уровень - это реальная физическая проводка или иная среда, примененная для создания сети. На канальном уровне происходит первоначальное кодирование данных для передачи через конкретную среду. Сетевые стандарты канального уровня включают беспроводной 802.11, Arcnet, коаксиальный кабель, Ethernet, Token Ring и многое другое. Анализаторы обычно зависят от типа сети, в которой они работают. Например, для анализа трафика в сети Ethernet вы должны иметь анализатор Ethernet.
Существуют анализаторы коммерческого класса, от таких производителей, как Fluke, Network General и других. Обычно это специальные аппаратные устройства, которые могут стоить десятки тысяч долларов. Хотя эти аппаратные средства способны осуществлять более глубокий анализ, можно создать недорогой сетевой анализатор с помощью программного обеспечения с открытыми исходными текстами и недорогого ПК на Intel-платформе.
В данной лекции рассматриваются несколько сетевых анализаторов Ethernet с открытыми исходными текстами. Я решил остановиться в этой лекции на Ethernet, так как этот протокол наиболее употребителен в локальных сетях. Весьма вероятно, что ваша организация использует сеть Ethernet или она взаимодействует с подобными организациями.
Когда-то сетевой мир был очень фрагментированным в том, что касалось стандартов передачи физического и канального уровней; не существовало единого доминирующего стандарта для ЛВС. Корпорация IBM сделала свою топологию Token Ring стандартом для своих сетей ПК. Многие компании, которые первоначально использовали оборудование IBM, применяли Token Ring, потому что у них не было выбора. Arcnet, в силу своей дешевизны, был популярен в небольших компаниях. Ethernet доминировал в университетских и исследовательских средах. Существовало множество других протоколов, таких как AppleTalk компании Apple для компьютеров Macintosh. Эти протоколы обычно были специфичными для конкретного производителя. Однако с развитием Интернета стандарт Ethernet стал набирать все большую популярность. Поставщики оборудования начали стандартизацию и сосредоточились на дешевых платах Ethernet, концентраторах и коммутаторах. На сегодняшний день Ethernet стал фактическим стандартом для локальных сетей и Интернета. Большинство компаний и организаций выбрали его из-за невысокой стоимости и по соображениям совместимости.
Краткая история Ethernet
Боб Меткалф изобрел Ethernet в 1973 году в исследовательском центре Xerox в Пало Альто. (Из того же "инкубатора изобретений" вышли лазерный принтер и графический пользовательский интерфейс.) Боб и его группа разработали и запатентовали "многоточечную систему связывания данных с обнаружением коллизий", которая позже стала известна как Ethernet. Затем Боб организовал компанию, специализирующуюся на создании оборудования для этого нового протокола. Со временем она превратилась в 3Com - одну из крупнейших сетевых компаний в мире. К счастью, Ethernet был выпущен как общественное достояние, поэтому другие компании могли вносить свой вклад в эти спецификации. Для Token Ring и большинства других сетевых протоколов того времени это было не так. Если бы Ethernet остался в частной собственности или был ограничен оборудованием только одной компании, то, возможно, он не превратился бы в доминирующий сегодня стандарт. Со временем он был принят как официальный стандарт IEEE (International Electrical and Electronic Engineers - Институт инженеров по электротехнике и электронике), что практически гарантировало его широкое признание корпоративными и правительственными пользователями во всем мире. На основе Ethernet были разработаны другие стандарты, такие как Fast Ethernet, Gigabit Ethernet и Wi-Fi.
Ethernet регламентирует как управление физической средой, так и программное кодирование данных, передаваемых по сети. Так как Ethernet имеет широковещательную топологию и все компьютеры потенциально могут "говорить" одновременно, в нем предусмотрен механизм обработки коллизий - когда два компьютера одновременно посылают пакеты данных. Если обнаруживается коллизия, то обе стороны повторно посылают данные после задержки со случайной длительностью. В большинстве случаев это работает вполне успешно. Однако это также является недостатком архитектуры Ethernet. Все компьютеры, подключенные к сети Ethernet, пересылают данные по одному и тому же физическому кабелю, и плата Ethernet видит весь проходящий трафик. Плата Ethernet предназначена для обработки только тех пакетов, которые ей адресованы, но вы легко можете заметить здесь потенциальные проблемы безопасности.
Представьте себе, что почтальоны, вместо того, чтобы раскладывать корреспонденцию по почтовым ящикам адресатов, просто вываливали бы ее посреди улицы, так что каждый житель должен копаться в этой куче в поисках адресованной ему почты, оставляя другую корреспонденцию на месте. (Было бы любопытно взглянуть на подписчиков "Плейбоя" и на получателей повесток о просрочке налоговых платежей.) Подобная вымышленная система не слишком безопасна, да и время получателей расходуется не особенно эффективно, но, в сущности, именно так спроектирован Ethernet.
В наше время для повышения эффективности большинство сетей Ethernet являются коммутируемыми. Это означает, что каждый порт Ethernet видит не весь трафик, а только тот, что предназначен для подключенной к нему машины. Это помогает сгладить некоторые проблемы приватности и перегрузки, но в каждый порт все же приходит много широковещательного трафика. Обычно широковещательный трафик направляется во все порты сети с целью обнаружения или для информации. Это относится к таким протоколам, как DHCP, где машина посылает широковещательное сообщение, разыскивая в сети какой-либо из серверов DHCP, чтобы получить у него адрес. Машины под управлением Microsoft Windows также известны тем, что генерируют обильный широковещательный трафик.
В локальных сетях Ethernet присутствуют и другие типы широковещательного трафика. Одним из них является протокол разрешения адресов (Address Resolution Protocol - ARP), который используется, когда машина впервые пытается узнать, какой адрес уровня доступа к среде передачи (MAC-адрес) соответствует определенному IP-адресу. В сетях Ethernet MAC-адреса являются 12-значными шестнадцатеричными числами и присваиваются платам при производстве. Каждый производитель имеет собственный диапазон чисел, поэтому обычно по MAC-адресу можно узнать, кто сделал плату. Если машина знает IP-адрес, но не адрес Ethernet, она посылает пакеты ARP, спрашивая: "Кому принадлежит этот адрес?" Получив ответ, машина сможет затем послать остальную часть сообщения по правильному MAC-адресу. Именно этот тип трафика оставляет локальные сети Ethernet восприимчивыми для атак анализатора, даже если они используют коммутацию вместо широковещания всего трафика во все порты. Кроме того, если хакерам удастся получить доступ к коммутатору (эти устройства зачастую плохо защищены), они могут превратить свой собственный порт в порт "монитора" или "зеркала", который показывает трафик других портов.

Особенности применения сетевых анализаторов

Чтобы применять сетевые анализаторы этично и продуктивно, необходимо выполнять следующие рекомендации.

Всегда получайте разрешение

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

Разберитесь в топологии сети

Прежде чем настраивать анализатор, убедитесь, что вы полностью понимаете физическую и логическую организацию вашей сети. Проводя анализ в неправильном месте сети, вы либо получите ошибочные результаты, либо не сможете увидеть то, что ищете. Проверьте, что между анализирующей рабочей станцией и тем, что вы собираетесь наблюдать, нет маршрутизаторов. Маршрутизаторы будут направлять трафик в сегмент сети, только если происходит обращение к расположенному там узлу. Аналогично, если вы находитесь в коммутируемой сети, вам понадобится сконфигурировать порт, к которому вы подключились, как порт "монитора" или "зеркала". Разные производители используют различную терминологию, но по сути вам необходимо, чтобы порт действовал как концентратор, а не как коммутатор, так как он должен видеть весь трафик, идущий через коммутатор, а не только тот, что направлен на вашу рабочую станцию. Без такой настройки порт монитора будет видеть только то, что направлено в порт, к которому вы подключены, и сетевой широковещательный трафик.

Используйте жесткие критерии поиска

В зависимости от того, что вы ищете, использование открытого фильтра (то есть показ всего) сделает вывод данных объемным и трудным для анализа. Используйте специальные критерии поиска, чтобы сократить вывод, который выдает ваш анализатор. Даже если вы не знаете точно, что ищете, можно, тем не менее, написать фильтр для ограничения результатов поиска. Если вы ищете внутреннюю машину, задайте критерии для просмотра только исходных адресов внутри вашей сети. Если вы пытаетесь отследить определенный тип трафика, скажем, трафик FTP, то ограничьте результаты только тем, что приходит в порт, используемый приложением. Поступая таким образом, вы сделаете результаты анализа значительно более полезными.

Установите эталонное состояние сети

Применив сетевой анализатор во время нормальной работы и записав итоговые результаты, вы получите эталонное состояние, которое можно сравнивать с результатами, полученными во время попыток выделения проблемы. Анализатор Ethereal, рассматриваемый в этой лекции, создает для этого несколько удобных отчетов. Вы получите также некоторые данные для отслеживания использования сети в зависимости от времени. При помощи этих данных можно определить, когда сеть насыщается и каковы основные причины этого - перегруженный сервер, рост числа пользователей, изменение типа трафика и т.п. Если есть точка отсчета, проще понять, кто и в чем виноват.

Этот список для обсуждения программ. По нему также рассылаются объявления, поэтому, если вы в него входите, вам нет нужды подписываться на первый список.
Оба списка архивируются, поэтому вы можете выполнять поиск среди старых сообщений. Список обсуждения программ доступен также в формате еженедельного итогового дайджеста.
Существует много доступных анализаторов - как свободных, так и коммерческих, но Tcpdump доступен наиболее широко и недорог. Он поставляется с большинством дистрибутивов UNIX, включая Linux и BSD. На самом деле, если у вас достаточно свежий дистрибутив Linux, то, весьма вероятно, что вы уже имеете установленный и готовый к употреблению Tcpdump.

Установка Tcpdump

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

  1. Чтобы анализатор Tcpdump работал, он должен иметь возможность перевести сетевую плату в так называемый режим прослушивания (или неразборчивый режим - promiscuous mode). Это означает, что сетевая плата будет перехватывать весь трафик Ethernet, а не только тот, что адресован ей. Каждая операционная система по-своему обрабатывает трафик платы Ethernet. Чтобы предоставить общую ссылку для программистов, была создана библиотека pcap. В UNIX она называется libpcap, а в Windows - WinPcap. Эти низкоуровневые драйверы могут изменять способ, которым плата обычно обрабатывает трафик. Они должны быть установлены до Tcpdump.

Если Tcpdump уже присутствует в системе, то установлены и драйверы. В противном случае возьмите их из каталога misc на компакт-диске, приложенном к этой книге, или с Web-сайта Tcpdump. Не забудьте установить их перед установкой Tcpdump.
Примечание: Для libpcap требуются также интерпретируемые языки Flex и Bison или, в качестве замены, - Lex и Yacc. Если у вас их нет, найдите их на дистрибутивном диске своей операционной системы или в Сети, и установите, чтобы установка libpcap прошла успешно.

  1. Установите libpcap, распаковав ее и выполнив стандартные команды компиляции:
./configure
make
make install

Если во время компиляции вы получите предупреждение вида "Cannot determine packet capture interface" ("Невозможно определить интерфейс перехвата пакетов"), то ваша сетевая плата не поддерживает режим прослушивания, и для применения Tcpdump придется взять другую плату. Большинство современных плат должны поддерживать этот режим.

  1. После установки libpcap распакуйте пакет Tcpdump и перейдите в его каталог.
  2. Выполните те же команды компиляции:
./configure
make
make install

Tcpdump готов к употреблению.

Запуск Tcpdump

Существует ряд операций для фильтрации вывода, чтобы найти определенный тип трафика или снизить общий объем вывода. На самом деле, в активно используемой сети нефильтрованный вывод Tcpdump будет пролетать на экране быстрее, чем вы сможете его прочитать! Однако прямо сейчас для демонстрации возможностей Tcpdump запустим его из командной строки, набрав просто

tcpdump

Вы увидите весь нефильтрованный трафик TCP, проходящий через плату Ethernet вашей машины. Он может выглядеть примерно так, как в примере на листинге 6.1.

12:25:38.504619 12.129.72.142.http > 192.168.1.3.3568: . ack 1418369642 
 win 31856 <nop,nop,timestamp 72821542 25475802> (DF)
12:25:38.504758 192.168.1.3.3568 > 12.129.72.142.htt: . ack 1 
 win 40544 <nop,nop,timestamp 25486047 72811295> (DF)
12:25:38.507753 192.168.1.3.4870 > 65.83.241.167.domain: 11414+ PTR? 1
 42.72.129.12.in-addr.arpa. (44) (DF)
12:25:38.561481 65.83.241.167.domain > 192.168.1.3.4870: 11414 NXDomain*- 0/1/0 (113)
12:25:38.562754 192.168.1.3.4870 > 65.83.241.167.domain: 11415+ PTR? 
 3.1.168.192.in-addr.arpa. (42) (DF)
12:25:38.609588 65.83.241.167.domain > 192.168.1.3.4870: 11415 NXDomain 0/1/0 (119)
12:25:38.610428 192.168.1.3.4870 > 65.83.241.167.domain: 1416+ PTR? 
 167.241.83.65.in-addr.arpa. (44) (DF)
12:25:38.649808 65.83.241.167.domain > 192.168.1.3.4870: 11416 1/0/0 (69)
12:25:43.497909 arp who-has 192.168.1.1 tell 192.168.1.3
12:25:43.498153 arp reply 192.168.1.1 is-at 0:6:25:9f:34:ac
12:25:43.498943 192.168.1.3.4870 > 65.83.241.167.domain: 11417+ PTR? 
 1.1.168.192.in-addr.arpa. (42) (DF)
12:25:43.533126 65.83.241.167.domain > 192.168.1.3.4870: 11417 NXDomain 0/1/0 (119)
12:25:44.578546 192.168.1.1.8783 > 192.168.1.255.snmptrap: Trap(35) 
 E:3955.2.2.1 192.168.1.1 enterpriseSpecific[specific-trap(1)!=0] 43525500[|snmp]

На первый взгляд, выдача кажется запутанной, но если разбить ее на составляющие, то смысл начинает проясняться. Первое число является временной меткой с точностью до долей секунды, так как в активно используемой сети каждую секунду проходит множество пакетов. Следующее число - это IP-адрес отправителя пакета, за которым следует > (знак больше), а затем целевой адрес. Наконец, могут присутствовать некоторые комментарии и другие данные. В примере можно видеть несколько различных видов трафика, включая трафик DNS (domain), ARP и SNMP.
По умолчанию Tcpdump выполняется, пока не будет остановлен нажатием Ctrl+C или другим сигналом прерывания. Когда Tcpdump останавливается, он выдает сводные данные о просмотренном трафике, включая:

  • пакеты, полученные фильтром. Это количество пакетов, обработанных фильтром Tcpdump, а не общее число пакетов TCP в сети, если только вы не выполняете Tcpdump без критериев фильтрации;
  • пакеты, отброшенные ядром. Число пакетов, которые были отброшены в связи с отсутствием ресурсов в системе. Эта возможность поддерживается не всеми системами. Даже когда она поддерживается, число может быть неточным, если сеть очень загружена или машина анализатора очень медленная.

 

Заголовки пакетов TCP/IP
В этом разделе описывается содержимое заголовков пакетов TCP/IP, чтобы вы могли разобраться в выводе Tcpdump. Структура пакетов TCP/IP определена в документе RFC 793 для TCP-части и в RFC 791 для IP-части. Полный текст этих спецификаций можно найти по адресу http://www.rfc-editor.org. Является графическим представлением заголовков TCP и IP. Заголовки обоих типов имеют длину не менее 20 байт и обычно представляются 32-битными секциями (4 байта) с адресами, опциями и другими настройками сеансов.
Рассмотрим сначала IP-часть, так как это нижний уровень сетевой модели. Заголовок протокола IP содержит адреса получателя и отправителя пакета. Так как каждый адрес занимает 32 бита (4 октета по 8 бит каждый), то исходный и целевой IP-адреса вместе составляют 8 байт. В первой части заголовка помещаются различные переключатели и опции пакета. Первая строка содержит несколько бит, которые идентифицируют версию IP. Большинство сетей используют IP версии 4 (IPv4), но более новая 128-битная система IP, называемая IP версии 6 (IPv6), существует уже несколько лет и постепенно получает признание. Предполагается, что IPv6 разрешит проблемы адресного пространства IP, выделяя до 128 бит для адресной части, что должно удовлетворить любые мыслимые потребности. IPv6 решает также проблемы безопасности и верификации, имеющиеся в IPv4. Но в настоящее время вы в подавляющем большинстве случаев будете видеть пакеты IPv4. Затем следуют значения длины заголовка и типа сервиса (последний служит для дифференциации при определении приоритетов пакетов). Заключительный фрагмент этой строки представляет общую длину заголовка, которая обычно одинакова для всех пакетов (20 байт), но может меняться для новых протоколов, таких как IPv6.
В двух следующих строках располагаются идентификатор пакета и контрольная сумма, помогающая проверять его корректность. Наконец, имеются IP-адреса отправителя и получателя и поле опций, которое может иметь переменную длину или дополняться нулями и произвольными данными.
Заголовок TCP отвечает за создание сеанса TCP и функции более высокого уровня. Обычно он имеет длину 20 байт и начинается с номеров исходного и целевого портов по 16 бит каждый. Именно поэтому номера портов не могут быть больше 65535 (216 равно 65536). (Интересно, что выбор всех этих чисел, вроде бы абсолютно произвольный, всегда на чем-то основан.)
Номера портов, как упоминалось ранее, определяют программу, которой необходимо направлять пакеты на удаленной машине, и идентифицируют сеанс на локальной машине. Следующая строка содержит порядковый номер. Он используется для сборки пакетов в правильном порядке на удаленном конце, даже если они приходят в другом порядке. Это один из аспектов отказоустойчивости сеансов TCP. Кроме того, имеется номер подтверждения, также длиной 32 бита, который позволяет проверить, что пакет идет с правильной машины. Следующая строка содержит 4-битную секцию, называемую смещением данных, которая определяет, сколько 32-битных строк или "слов" имеется в заголовке (обычно 4); за ней располагаются 6 бит, зарезервированных для будущих применений. Затем следует 6-битная секция, называемая флагами TCP. Вторая половина этой строки служит для согласования размера окна и говорит получателю, сколько бит готов принять отправитель. Флаги TCP весьма важны, здесь задаются различные управляющие биты, контролирующие обработку пакетов. Каждый тип коммуникаций TCP задается одним битом, единица соответствует включению, ноль - отключению. В табл. 6.1 перечислены шесть полей раздела флагов TCP и описано их применение. Примечание: Каждое "поле" имеет ширину один бит (просто - единица или ноль, включено или выключено).


Таблица 6.1. Поля флагов TCP

Флаг TCP

Полное имя

Описание

URG

Указатель срочности

Показывает приоритет TCP-пакетов

ACK

Подтверждение

Помечает этот пакет как подтверждение получения

PSH

Выталкивание

Выталкивает поставленные в очередь данные из буферов

RST

Сброс

Сбрасывает соединение TCP по завершении или после разрыва

SYN

Синхронизация

Синхронизирует соединение

FIN

Завершение

Завершает передачу

Обычно только один или два из этих флагов установлены (биты заданы как единица), но, как мы видели в, ничто не мешает отправить пакет со всеми битами взведенными (сканирование XMAS) или выключенными (сканирование NULL), чтобы попытаться запутать удаленную систему.
Следом располагается контрольная сумма TCP и указатель срочности. Затем идет строка со всеми TCP-опциями пакета, такими как дополнительные контрольные суммы, метки времени и т.д. Эта строка дополняется до 32 бит нулями, если опции не заполняют ее целиком. Наконец, следует полезная нагрузка - данные пакета. Может показаться, что на отправку одного пакета уходит слишком много накладных административных расходов (примерно 48 байт для каждого пакета), но это на самом деле обеспечивает относительно устойчивое соединение в сети, которая не всегда обладает сквозной надежностью (как Интернет). В действительности, чтобы избежать дополнительных расходов TCP, некоторые протоколы, не требующие соединения, используют UDP - протокол без установления соединений с меньшими накладными расходами.
В стандартном сеансе Tcpdump с обычным уровнем подробности вывода вы увидите метку времени, за которой следует порядковый номер TCP. Затем выдаются IP-части, включая исходный и целевой адреса, разделенные знаком > (больше), означающим, что пакет идет отсюда туда. В конце располагается информационное поле, которое показывает, что делает пакет. Можно использовать опции -v или -vv, чтобы получить от Tcpdump более подробные данные о заголовке (см. следующий раздел).
Обычно вы будете запускать Tcpdump с некоторыми установленными опциями или фильтрами, чтобы уменьшить и сфокусировать вывод. Общий вид инструкции запуска Tcpdump таков:
Tcpdump опции выражения
Замените опции и выражения одной или несколькими допустимыми переменными. Опции Tcpdump перечислены в.


Таблица 6.2. Опции Tcpdump

Опция

Описание

-a

Пытается преобразовать адреса в имена. Это создает дополнительную нагрузку на систему и может привести к потере пакетов

-c число

Останавливает Tcpdump после обработки заданного числа пакетов

-C размер_файла

Ограничивает размер выходных файлов заданным числом байт

-d

Выдает процедуру сопоставления пакетов с образцом в удобочитаемом виде и затем останавливается

-dd

Выдает процедуру сопоставления пакетов с образцом в виде фрагмента программы на языке Си

-ddd

Выдает процедуру сопоставления пакетов с образцом в виде десятичных чисел

-e

В каждой строке выдачи печатает заголовок канального уровня (в сетях Ethernet это MAC-адрес)

-E алгоритм:секрет

Использует встроенную в Tcpdump возможность расшифровывать на лету пакеты, зашифрованные по протоколу IPsec ESP. Разумеется, чтобы использовать эту опцию, вы должны располагать разделяемым секретным ключом. В число возможных значений параметра "алгоритм" входят des-cbc, 3des-cdc, blowfish-cbc, r3c-cbc, приведенный 128-cbc. Кроме того, оно может быть пустым. По умолчанию используется des-cbc. Значением параметра "секрет" должен служить секретный ключ ESP в текстовом виде. Дополнительную информацию об IPsec

-F файл

Использует файл (а не сеть) для ввода данных. Это удобно для анализа событий "постфактум".

-i интерфейс

Читает из заданного интерфейса, когда на анализирующей машине имеется несколько сетевых интерфейсов. По умолчанию Tcpdump использует действующий интерфейс с наименьшим номером. В системах Linux можно использовать также параметр any для перехвата пакетов из всех сетевых интерфейсов

-n

Не преобразовывает адреса в имена

-N

Не печатает в именах хостов имя домена вышележащего уровня. Это полезно, если вам необходимо представить обезличенную версию вывода и вы не хотите раскрывать, чья это сеть

-p

Не переводит интерфейс в режим прослушивания. Используется только при исследовании трафика, направленного в анализирующий компьютер

-q

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

-T тип

Заставляет интерпретировать пакеты, выбранные заданным в выражении фильтром, в соответствии с указанным типом

-t

Не печатает метку времени в каждой строке

-tt

Печатает неформатированную метку времени в каждой строке

-ttt

Печатает интервал времени между пакетами

-tttt

Печатает в каждой строке дату, а затем метку времени в подразумеваемом формате

-v

Использует чуть более подробный вывод, включающий время жизни, идентификатор, общую длину и поля опций каждого пакета

-vv

Предоставляет более детальный вывод. Пакеты NFS и SMB полностью декодируются

-vvv

Предоставляет еще более подробный вывод. Это может существенно замедлить работу анализатора

-w имя_файла

Записывает пакеты в указанный файл вместо вывода их на экран. Таким образом результаты "вынюхивания" без участия человека можно сохранить и проанализировать их позже. Например, если в вашей сети происходят какие-то странные вещи, вы можете запустить Tcpdump на ночь, чтобы перехватить весь необычный трафик. Не забудьте написать хороший фильтр, иначе полученный наутро файл может оказаться слишком большим

-x

Выводит каждый пакет (без заголовка канального уровня) в шестнадцатеричном виде.

-X

Выводит содержимое пакетов и в шестнадцатеричном, и в текстовом видах

Выражения 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

Выражения 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 может быть очень полезным средством.

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

Установка WinDump
Лорис Дижон был настолько любезен, что не только перенес Tcpdump на платформу Windows, но и сделал установку WinDump еще более простой, чем у UNIX-аналога.

  1. Как и для Tcpdump в UNIX, сначала, до того как можно будет запускать WinDump, необходимо установить библиотеки перехвата пакетов. Специальная версия библиотек для Windows называется WinPcap. Она присутствует на компакт-диске в каталоге Misc. Самая свежая версия доступна также на Web-сайте программы.
  2. Установите библиотеки WinPcap, щелкнув мышью на этом файле.
  3. Загрузите исполнимый файл WinDump и поместите его в каталог, откуда он должен запускаться.

Никаких дополнительных действий по установке не требуется.
Применение WinDump
WinDump применяется точно так же, как и Tcpdump - из командной строки. Просто перейдите в командный режим в Windows и выполните команду в каталоге, в котором находится исполнимый файл WinDump. Все команды и выражения работают так же, но в табл. 6.5 представлены несколько команд, специфических для Windows-версии.
На Web-сайте также доступны исходные тексты для тех, кто хочет внести свой вклад или сделать собственные усовершенствования. Однако, одно предостережение: данный вид программирования для Windows - удел крутых парней, хорошо разбирающихся в сетевых протоколах.
Это все, что нужно для работы в Windows или UNIX. Если вы хотите иметь что-то большее, чем просто интерфейс командной строки, воспользуйтесь описанным ниже средством, предлагающим для вынюхивания графический интерфейс.


Таблица 6.5. Дополнительные команды WinDump

Команда

Описание

-B

Устанавливает размер буфера драйвера в килобайтах для сеанса перехвата. Если пакеты теряются слишком часто, попробуйте немного увеличить это значение. По умолчанию используется 1 МБ (-В 1000)

-D

Печатает список доступных сетевых интерфейсов в вашей системе. Выводится имя интерфейса, его номер и описание, если таковое имеется. Эти параметры можно использовать для задания интерфейса перехвата с помощью ключа Tcpdump -i

Ethereal предлагает все выгоды средства командной строки, такого как Tcpdump, а также ряд дополнительных преимуществ. Он обладает удобным пользовательским графическим интерфейсом, поэтому не нужно изучать все опции командной строки. Кроме того, он предлагает значительно больше аналитических и статистических возможностей. К числу прочих достоинств Ethereal относятся:

  • Более ясный формат вывода. По сравнению с необработанными наборами перехваченных пакетов в Tcpdump, выдачу Ethereal значительно легче читать и понимать.
  • Поддержка значительно большего числа форматов протоколов. Ethereal может интерпретировать более 300 различных сетевых протоколов, что охватывает почти все когда-либо изобретенные виды сетей.
  • Поддержка большего числа физических форматов сетей. Сюда входят новые протоколы, такие как IP поверх ATM и FDDI.
  • Возможность интерактивно просматривать и сортировать перехваченные сетевые данные.
  • Возможность сохранения выдачи в виде обычного текста или в формате PostScript.
  • Наличие режима фильтрации вывода с широкими возможностями, включая выделение цветом некоторых пакетов. Имеется графический интерфейс создания фильтра, облегчающий данный процесс.
  • Возможность следить за потоком TCP и просматривать его содержимое в текстовом виде. Это может быть очень полезно, когда требуется читать межсерверные сообщения, чтобы отслеживать проблемы электронной почты или Web. Данная возможность позволяет оперативно следить за общением между взаимодействующими узлами.
  • Возможность работать с рядом программ и библиотек перехвата. Ethereal, помимо libpcap, работает также со специализированным оборудованием. В число поддерживаемых программ входят Sniffer и Sniffer Pro от Network Associates; LANalyser от Novell; некоторые устройства от Cisco, Lucent и Toshiba; некоторые беспроводные устройства анализа, такие как NetStumbler и Kismet Wireless. Ethereal работает как встраиваемый модуль для многих из этих программ и устройств.
  • Возможность сохранять сеансы в нескольких форматах. Это полезно, если вы хотите проводить дополнительный анализ с помощью других средств, таких как libcap (по умолчанию), Sun Snoop, Microsoft Network Monitor и Sniffer от Network Associates.
  • Поддержка терминального режима командной строки, предназначенного для тех, кому не по душе графический интерфейс, хотя подавляющая часть полезных свойств Ethereal проистекает из его графического инструментария.

Ethereal настолько полезен в качестве сетевого средства, что он был оценен на web-сайте Insecure.org, посвященном безопасности, как занимающий вторую позицию по популярности среди доступных средств сетевой безопасности. Помимо собственно безопасности, Ethereal допускает множество применений; на самом деле его можно использовать и как универсальное средство анализа сети.

Установка Ethereal для Linux

  1. Прежде чем загружать Ethereal, необходимо располагать библиотеками libpcap и библиотеками разработки GTK. Если вы загружали описанные в предыдущих лекциях сканеры портов или уязвимостей, то все библиотеки должны быть уже установлены. В противном случае следует загрузить библиотеки GTK или установить их с дистрибутивных компакт-дисков вашей ОС. libpcap можно взять с прилагаемого к книге компакт-диска или на сайте http://www.tcpdump.org, GTK - на http://www.gtk.org.
  2. Затем необходимо решить, использовать ли RPM или компилировать исходные тексты. Существует множество пакетов RPM для различных версий Linux. Если такой пакет есть для вашего дистрибутива, то можно использовать его и пропустить процесс компиляции. В противном случае придется выполнить компиляцию.
  3. Чтобы скомпилировать Ethereal, сначала загрузите и распакуйте самый свежий дистрибутив. Стандартная установка должна годиться для большинства применений. Просмотрите файл INSTALL, если захотите задать дополнительные параметры времени компиляции.
  4. Перейдите в каталог установки и, как обычно, наберите
./configure
make

make install
Теперь можно запустить Ethereal, набрав ./ethereal в командной строке или щелкнув мышью на исполнимом файле в X-Window. Чтобы запускать Ethereal в среде X-Window, необходимо быть пользователем root. Для запуска Ethereal в режиме командной строки можно набрать ./tethereal.
Установка Ethereal для Windows

  1. Прежде чем запускать Ethereal, необходимо установить библиотеки WinPcap. Если вы уже установили в своей Windows-системе описанные в предыдущих лекциях сканеры портов или уязвимостей, то библиотеки у вас уже есть и можно переходить к шагу 2. Убедитесь, что ваша версия WinPcap не ниже, чем 2.3. Если вы работаете на многопроцессорной машине или на машине с новыми процессорами Pentium с технологией многопоточности, то необходимо использовать WinPcap 3.0 или выше, но результаты все равно могут быть непредсказуемы, так как Ethereal не очень хорошо работает с несколькими процессорами.
  2. Средства GTK для графического интерфейса включены в пакет установки Ethereal. Загрузите с web-сайта Ethereal самораспаковывающийся файл установки. (Я рекомендую устанавливать бинарный файл, а не заниматься компиляцией на Windows-машине. Это существенно проще и не требует компилятора под Windows.)
  3. После загрузки файла сделайте на нем двойной щелчок мышью. Программа проведет вас через процесс установки. Когда это будет сделано, на рабочем столе появится иконка, после чего можно начинать работу с Ethereal.

Применение Ethereal
Независимо от применяемой версии, Windows или Linux, почти все операции и интерфейсы схожи. После запуска Ethereal вы увидите экран с тремя разделами. В этих окнах отображаются перехваченные данные и другая информация о сеансе.
В верхней трети экрана выводится поток пакетов в порядке получения, хотя результаты можно отсортировать почти любым образом, щелкая мышью на заголовках колонок. В табл. 6.6 перечислены выводимые данные для каждого пакета или кадра.
В следующем разделе экрана более детально отображается каждый выделенный пакет. Вывод организован таким образом, чтобы в целом соответствовать модели ВОС, поэтому сначала идут детали канального уровня и т.д. Небольшие символы плюс можно раскрыть, чтобы отобразить еще больше информации на каждом уровне. Удивительно, как много подробностей о каждом пакете можно увидеть. Ethereal действует как электронный микроскоп для сетевых пакетов!
В последнем разделе показано реальное содержимое пакета в шестнадцатеричном и, где возможно, в текстовом виде. Бинарные файлы и зашифрованный трафик по-прежнему будут выглядеть как мусор, но весь открытый текст станет виден. В этом проявляется мощь анализатора (и опасность его присутствия в сети).


Таблица 6.6. Данные потока пакетов

Данные

Описание

Номер пакета

Присваивается Ethernet

Время

Время получения пакета. По умолчанию, оно устанавливается как время, прошедшее с начала сеанса перехвата, но можно сконфигурировать вывод астрономического времени, даты и времени или даже интервалов между пакетами (это полезно для анализа функционирования сети)

Исходный адрес

Адрес, откуда пришел пакет. В IP-сетях это IP-адрес

Целевой адрес

Адрес, куда направляется пакет, также обычно IP-адрес

Протокол

Протокол четвертого уровня, используемый пакетом

Информация

Некоторая сводная информация о пакете, обычно поле типа

Запуск сеанса перехвата

Имеется множество допустимых опций и фильтров. Начните с максимально открытого сеанса перехвата. Выберите Start в меню Capture. Появится окно Capture
В табл. 6.7. описаны опции, которые можно задавать перед началом сеанса.


Таблица 6.7. Опции перехвата Ethereal

Опция

Описание

Interface (Интерфейс)

Выбирает интерфейс для перехвата из выпадающего меню. Ethereal автоматически определяет все доступные интерфейсы и выдает их. Можно также задать одновременный перехват на всех интерфейсах, совсем как в Tcpdump

Limit each packet to x bytes (Ограничить каждый пакет x байтами)

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

Capture packets in promiscuous mode (Перехват пакетов в режиме прослушивания)

Подразумеваемая опция. Выключите ее, если хотите перехватывать только потоки данных, направленные в вашу машину-анализатор

Filter (Фильтр)

Щелкните мышью на кнопке Filter, чтобы создать фильтр, используя выражения в стиле Tcpdump. Вам будет предложено задать имя фильтра (которое можно будет использовать в будущих сеансах) и ввести выражение

Capture file(s) (Файлы перехвата)

Щелкните мышью на кнопке File, если хотите читать данные из файла, а не перехватывать их "вживую"

Display options (Опции отображения)

По умолчанию отключены, но их можно включить, если вы хотите наблюдать движение пакетов в реальном масштабе времени. Если перехват происходит в загруженной сети или ваша машина слишком медленная, то поступать так не рекомендуется, поскольку это может затопить сеанс и вызвать потерю пакетов. Однако отображение весьма полезно, если вы хотите понаблюдать за трафиком, чтобы получить общее представление о природе потоков данных в сети

Capture limits (Пределы перехвата)

Здесь представлено несколько дополнительных опций для задания условий завершения перехвата. Помимо остановки вручную, можно заставить Ethereal остановиться после перехвата некоторого числа x пакетов или килобайт данных или после того, как пройдет определенное число секунд

Name resolution (Разрешение имен)

Можно указать, должен или нет Ethereal разрешать имена на различных уровнях сетевой модели. Можно выборочно разрешать имена MAC-адресов, сетевые имена (SMB или имена хостов), и/или имена транспортного уровня. Включение всех этих опций, особенно DNS, может существенно замедлить перехват

После установки опций щелкните мышью на OK, и сеанс начнется. Появится окно, в котором в реальном масштабе времени отображается статистика сеанса . Если сеанс настроен для показа пакетов в реальном времени, вы будете наблюдать их в окне, по мере того как они проходят по среде передачи Сеанс можно остановить в любое время, щелкнув мышью на кнопке Stop в окне статистики или выбрав Stop в меню Capture. Если вы задали опции пределов перехвата, то по их достижении сеанс остановится автоматически. Теперь можно анализировать результаты сеанса и манипулировать ими
Щелкая мышью на заголовках вверху окна, можно переупорядочить результаты по этому заголовку, так что можно сортировать вывод по исходным и целевым адресам, протоколу или информационному полю. Это помогает организовать данные, если вы ищите трафик определенного вида, например, все запросы DNS или весь трафик, связанный с почтой. Конечно, в первую очередь стоит написать фильтр для перехвата трафика определенного вида

Опции отображения

В табл. 6.8 перечислены команды из меню Display, при помощи которых можно воздействовать на способ отображения пакетов на экране


Таблица 6.8. Опции меню Diplay Ethereal

Пункт меню

Описание

Подменю Options

Здесь можно установить глобальные параметры, такие как способ вычисления поля времени. Можно также включить автоматическую прокрутку трафика и разрешение имен, так как по умолчанию они отключены

Colorize display

Можно указать, чтобы пакеты определенных видов окрашивались определенным цветом. Это облегчает восприятие вывода и фокусирует внимание на нужной информации

Collapse/expand all

Показывать либо все детали каждого элемента, либо только верхний уровень

Средства Ethereal

Вместе с Ethereal поставляется несколько встроенных аналитических средств. Данная программа построена в архитектуре со встраиваемыми модулями, поэтому другие программы могут взаимодействовать с Ethereal, или вы можете написать свою собственную. Доступ к этим возможностям находится в меню Tools (табл. 6.9)


Таблица 6.9. Опции меню Tools Ethereal

Пункт меню

Описание

Summary

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

Protocol hierarchy statistics

Выдает статистическое представление трафика вашей сети. Показывает, какой процент сеанса перехвата составляет каждый тип пакетов. Можно свернуть или распахнуть представление, чтобы увидеть основные уровни или второстепенные протоколы определенного уровня

Statistics

Содержит ряд отчетов, специфичных для определенных типов протоколов. Дополнительную информацию по этому вопросу можно найти в документации Ethereal

Plugins

Показывает встраиваемые модули анализатора пакетов, которые вы загрузили. Это декодировщики для новых протоколов, которые можно добавлять к Ethereal, не изменяя основной версии программы. И поскольку это архитектура со встраиваемыми модулями, можно писать свои собственные

Сохранение вывода Ethereal

Закончив перехват и анализ данных в Ethereal, можно сохранить их либо для анализа дополнительными средствами, либо для предоставления другим пользователям. С помощью опции Save As меню File можно выбрать подходящий формат, включая libpcap (по умолчанию), Sun Snoop, LANalyser, Sniffer, Microsoft Network Monitor и Visual Networks

Приложения Ethereal

Теперь, после знакомства с основами Ethereal, представим несколько практических приложений, для которых его можно использовать.
Оптимизация сети
Выполняя широко открытый перехват сети и используя затем статистические отчеты, можно понять, насколько загружена ваша сеть и на какой вид пакетов приходится основная часть трафика. Проанализировав эти данные, можно решить, что пришло время перейти на коммутируемую сеть 100 Мбит/с или разделить два отдела на маршрутизируемые ЛВС вместо одной большой сети. Можно также определить, что требуется установить сервер WINS (слишком много запросов имен SMB, передаваемых по сети), или что некоторый сервер необходимо перенести в демилитаризованную зону или на отдельный порт маршрутизатора, чтобы удалить ассоциированный с ним трафик из сети.
Поиск дефектов в работе серверов приложений
С вашим почтовым сервером не удается установить соединение? Возникли проблемы с DNS? Устранить подобные дефекты прикладного уровня бывает крайне сложно. Однако, применяя Ethereal, можно подключиться к сети и понаблюдать за коммуникациями между серверами. Можно увидеть реальные сообщения серверов для таких протоколов, как SMTP или HTTP, и, следя за потоком TCP, определить, где возникает проблема.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика