Анализ пакетов с помощью wireshark analyzer. Лучшие инструменты пен-тестера: сниферы и работа с пакетами. Обзор программных пакетных снифферов

Анализ пакетов с помощью wireshark analyzer. Лучшие инструменты пен-тестера: сниферы и работа с пакетами. Обзор программных пакетных снифферов

03.11.2019

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

Принципы работы пакетных снифферов

Дальнейшем в рамках данной статьи мы будем рассматривать только программные снифферы, предназначенные для сетей Ethernet. Сниффер — это программа, которая работает на уровне сетевого адаптера NIC (Network Interface Card) (канальный уровень) и скрытым образом перехватывает весь трафик. Поскольку снифферы работают на канальном уровне модели OSI, они не должны играть по правилам протоколов более высокого уровня. Снифферы обходят механизмы фильтрации (адреса, порты и т.д.), которые драйверы Ethernet и стек TCP/IP используют для интерпретации данных. Пакетные снифферы захватывают из провода все, что по нему приходит. Снифферы могут сохранять кадры в двоичном формате и позже расшифровывать их, чтобы раскрыть информацию более высокого уровня, спрятанную внутри (рис. 1).

Для того чтобы сниффер мог перехватывать все пакеты, проходящие через сетевой адаптер, драйвер сетевого адаптера должен поддерживать режим функционирования promiscuous mode (беспорядочный режим). Именно в этом режиме работы сетевого адаптера сниффер способен перехватывать все пакеты. Данный режим работы сетевого адаптера автоматически активизируется при запуске сниффера или устанавливается вручную соответствующими настройками сниффера.

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

Ограничения использования снифферов

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

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

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

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

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

Другая причина, по которой снифферы перестали быть настолько опасными, как раньше, заключается в том, что в настоящее время наиболее важные данные передаются в зашифрованном виде. Открытые, незашифрованные службы быстро исчезают из Интернета. К примеру, при посещении web-сайтов все чаще используется протокол SSL (Secure Sockets Layer); вместо открытого FTP используется SFTP (Secure FTP), а для других служб, которые не применяют шифрование по умолчанию, все чаще используются виртуальные частные сети (VPN).

Итак, те, кто беспокоится о возможности злонамеренного применения пакетных снифферов, должны иметь в виду следующее. Во-первых, чтобы представлять серьезную угрозу для вашей сети, снифферы должны находиться внутри самой сети. Во-вторых, сегодняшние стандарты шифрования чрезвычайно затрудняют процесс перехвата конфиденциальной информации. Поэтому в настоящее время пакетные снифферы постепенно утрачивают свою актуальность в качестве инструментов хакеров, но в то же время остаются действенным и мощным средством для диагностирования сетей. Более того, снифферы могут с успехом использоваться не только для диагностики и локализации сетевых проблем, но и для аудита сетевой безопасности. В частности, применение пакетных анализаторов позволяет обнаружить несанкционированный трафик, обнаружить и идентифицировать несанкционированное программное обеспечение, идентифицировать неиспользуемые протоколы для удаления их из сети, осуществлять генерацию трафика для испытания на вторжение (penetration test) с целью проверки системы защиты, работать с системами обнаружения вторжений (Intrusion Detection System, IDS).

Обзор программных пакетных снифферов

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

Обычно окно любого сниффера с графическим интерфейсом состоит их трех областей. В первой из них отображаются итоговые данные перехваченных пакетов. Обычно в этой области отображается минимум полей, а именно: время перехвата пакета; IP-адреса отправителя и получателя пакета; MAC-адреса отправителя и получателя пакета, исходные и целевые адреса портов; тип протокола (сетевой, транспортный или прикладного уровня); некоторая суммарная информация о перехваченных данных. Во второй области выводится статистическая информация об отдельном выбранном пакете, и, наконец, в третьей области пакет представлен в шестнадцатеричном виде или в символьной форме — ASCII.

Практически все пакетные снифферы позволяют производить анализ декодированных пакетов (именно поэтому пакетные снифферы также называют пакетными анализаторами, или протокольными анализаторами). Сниффер распределяет перехваченные пакеты по уровням и протоколам. Некоторые анализаторы пакетов способны распознавать протокол и отображать перехваченную информацию. Этот тип информации обычно отображается во второй области окна сниффера. К примеру, любой сниффер способен распознавать протокол TCP, а продвинутые снифферы умеют определять, каким приложением порожден данный трафик. Большинство анализаторов протоколов распознают свыше 500 различных протоколов и умеют описывать и декодировать их по именам. Чем больше информации в состоянии декодировать и представить на экране сниффер, тем меньше придется декодировать вручную.

Одна из проблем, с которой могут сталкиваться анализаторы пакетов, — невозможность корректной идентификации протокола, использующего порт, отличный от порта по умолчанию. К примеру, с целью повышения безопасности некоторые известные приложения могут настраиваться на применение портов, отличных от портов по умолчанию. Так, вместо традиционного порта 80, зарезервированного для web-сервера, данный сервер можно принудительно перенастроить на порт 8088 или на любой другой. Некоторые анализаторы пакетов в подобной ситуации не способны корректно определить протокол и отображают лишь информацию о протоколе нижнего уровня (TCP или UDP).

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

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

Введение

В работе компьютерной сети и сетевого стека узлов иногда возникают проблемы, причины которых трудно обнаружить общеизвестными утилитами сбора статистики (такими например, как netstat) и стандартными приложениями на основе протокола ICMP (ping, traceroute/tracert и т.п.). В подобных случаях для диагностики неполадок часто приходится использовать более специфичные средства, которые позволяют отобразить (прослушать) сетевой трафик и проанализировать его на уровне единиц передачи отдельных протоколов («сниффинг», sniffing ).

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

Подобное специализированное программное обеспечение обычно использует «беспорядочный» (promiscuos) режим работы сетевого адаптера компьютера-монитора (в частности, для перехвата трафика сетевого сегмента, порта коммутатора или маршрутизатора). Как известно, суть данного режима сводится к обработке всех приходящих на интерфейс фреймов , а не только предназначенных MAC-адресу сетевой карты и широковещательных, как это происходит в обычном режиме.

Рассматриваемый в данной статье продукт Wireshark является широко известным инструментом перехвата и интерактивного анализа сетевого трафика, фактически, стандартом в промышленности и образовании. К ключевыми особенностям Wireshark можно отнести: многоплатформенность (Windows, Linux, Mac OS, FreeBSD, Solaris и др.); возможности анализа сотен различных протоколов; поддержку как графического режима работы, так и интерфейса командной строки (утилита tshark); мощную систему фильтров трафика; экспорт результатов работы в форматы XML, PostScript, CSV и т. д.

Немаловажным фактом является также то, что Wireshark — это программное обеспечение с открытым исходным кодом, распространяемое под лицензией GNU GPLv2 , т. е. Вы можете свободно использовать этот продукт по своему усмотрению.

Установка Wireshark

Последнюю версию Wireshark для операционных систем Windows и OS X, а также исходный код можно скачать с сайта проекта . Для дистрибутивов Linux и BSD-систем, данный продукт обычно доступен в стандартных или дополнительных репозиториях. Опубликованные в данной статье снимки экранов сделаны с версии 1.6.2 Wireshark для Windows. Более ранние версии программы, которые можно найти в репозиториях Unix-подобных операционных систем, также можно успешно использовать, так как Wireshark давно уже стабильный и функциональный продукт.

Работа Wireshark базируется на библиотеке Pcap (Packet Capture) , предоставляющей собой прикладной интерфейс программирования для реализации низкоуровневых функций взаимодействия с сетевыми интерфейсами (в частности перехвата и генерации произвольных единиц передачи сетевых протоколов и протоколов локальных сетей) . Библиотека Pcap является также основой таких известных сетевых средств, как tcpdump, snort, nmap, kismet и т. д. Для Unix-подобных систем Pcap обычно присутствует в стандартных репозиториях программного обеспечения. Для семейства операционных систем Windows существует версия Pcap, которая называется Winpcap. Ее можно скачать с сайта проекта . Впрочем, обычно в этом нет необходимости, так как библиотека Winpcap включена в пакет установки Wireshark для Windows.

Процесс установки программы не сложен для любой операционной системы, с поправкой, разумеется, на специфику используемой Вами платформы. Например, Wireshark в Debian/Ubuntu устанавливается так, что непривилегированные пользователи по умолчанию не имеют права перехватывать пакеты, поэтому программу нужно запускать с использованием механизма смены идентификатора пользователя sudo (или же произвести необходимые манипуляции согласно документации стандартного DEB-пакета).

Азы работы c Wireshark

Пользовательский интерфейс Wireshark построен на основе библиотеки GTK+ (GIMP Toolkit). Главное окно программы включает следующие элементы: меню, панели инструментов и фильтров просмотра, список пакетов, детальное описание выбранного пакета, отображение байтов пакета (в шестнадцатеричной форме и в виде текста) и строку состояния:

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

Итак, эргономика Wireshark отражает многоуровневый подход к обеспечению сетевых взаимодействий. Все сделано таким образом, что, выбрав сетевой пакет из списка, пользователь получает возможность просмотреть все заголовки (слои), а также значения полей каждого слоя сетевого пакета, начиная от обертки — кадра Ethernet, непосредственно IP-заголовка, заголовка транспортного уровня и данных прикладного протокола, содержащихся в пакете.

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

Проблема поиска необходимых пакетов в больших объемах перехваченного трафика решается двумя типами фильтров : сбора трафика (capture filters) и его отображения (display filters) . Фильтры сбора Wireshark основаны на языке фильтров библиотеки Pcap, т.е. синтаксис в данном случае аналогичен синтаксису утилиты tcpdump . Фильтр представляет собой серию примитивов, объединенных, если это необходимо, логическими функциями (and, or, not). Часто используемые фильтры можно сохранять в профиле для повторного использования .

На рисунке показан профиль фильтров сбора Wireshark:

Анализатор сетевых пакетов Wireshark также имеет свой простой, но многофункциональный язык фильтров отображения . Значение каждого поля в заголовке пакета может быть использовано как критерий фильтрации (например, ip.src — IP-адрес источника в сетевом пакете, frame.len — длина Ethernet-фрейма и т.д.). С помощью операций сравнения значения полей можно сопоставлять заданным величинам (например, frame.len а несколько выражений объединять логическими операторами (например: ip.src==10.0.0.5 and tcp.flags.fin). Хорошим помощником в процессе конструирования выражений является окно настройки правил отображения (Filter Expression) :

Средства анализа сетевых пакетов

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

Одной из полезных функций Wireshark является пункт «Follow TCP Stream» (буквально, «Следовать за TCP-потоком») подменю анализа «Analyze», позволяющий извлечь данные прикладного протокола из TCP-сегментов потока, которому принадлежит выбранный пакет:

Еще один интересный пункт подменю анализа - «Expert Info Composite» , вызывающий окно встроенной экспертной системы Wireshark, которая попытается обнаружить ошибки и замечания в пакетах, автоматически выделить из дампа отдельные соединения и охарактеризовать их. Данный модуль находится в процессе разработки и совершенствуется от версии к версии программы.

В подменю статистики «Statistics» собраны опции, позволяющие рассчитать всевозможные статистические характеристики изучаемого трафика, построить графики интенсивности сетевых потоков, проанализировать время отклика сервисов и т.д. Так, пункт «Protocol Hierarchy» отображает статистику в виде иерархического списка протоколов с указанием процентного отношения к общему трафику, количества пакетов и байт, переданных данным протоколом.

Функция «Endpoint» дает многоуровневую статистику по входящему/исходящему трафику каждого узла. Пункт «Conversations» (буквально, «разговоры») позволяет определить объемы трафика различных протоколов (канального, сетевого и транспортного уровня модели взаимодействия открытых систем), переданного между взаимодействовавшими друг с другом узлами. Функция «Packet Lengths» отображает распределение пакетов по их длине.

Пункт «Flow Graph...» представляет потоки пакетов в графическом виде. При этом, при выборе элемента на графике становится активным соответствующий пакет в списке в главном окне программы:

Отдельное подменю в последних версиях Wireshark отведено IP-телефонии. В подменю «Tools» есть пункт «Firewall ACL Rules» , для выбранного пакета попытается создать правило межсетевого экрана (в версии 1.6.х поддерживаются форматы Cisco IOS, IP Filter, IPFirewall, Netfilter, Packet Filter и Windows Firewall).

Программа также имеет встроенный интерпретатор легковесного языка программирования Lua . Используя Lua, Вы можете создавать собственные «декодеры» протоколов и обработчики событий в Wireshark.

Вместо заключения

Анализатор сетевых пакетов Wireshark является примером Opensource-продукта, успешного как в рамках платформы Unix/Linux, так популярного среди пользователей Windows и Mac OS X. Конечно, кроме Wireshark, существуют тяжеловесные комплексные интеллектуальные решения в области исследования сетевого трафика, функционал которых гораздо шире. Но они, во-первых, стоят больших денег, во-вторых, сложны в освоении и эксплуатации; в-третьих, нужно понимать, что не все можно автоматизировать и никакая экспертная система не заменит хорошего специалиста. Так что, если перед Вами стоят задачи, требующие анализа сетевого трафика, то Wireshark — это инструмент для Вас. А поклонники командной строки могут пользоваться утилитой tshark — консольной версией Wireshark .

Кроме подключения к каналу передачи данных, мопитор должен иметь эффективный способ идентифицировать, какие IP-иакеты перехватывать при их поступлении. Протоколы прикладного уровня Обычно связапы с определенным ТСР-пор- том, например, HTTP использует порг 80. Для отслеживания НТТР-трафика монитор пакетов может ограничиться учетом ТСР-трафика на порту 80. Такое решение может быть принято для каждого конкретного пакета путем анализа поля протокола в IP-заголовке и номеров портов источника и места назначения в TCP- заголовке. Однако выделить весь НТТР-трафик достаточно трудно. Некоторые Web-сайты не используют данный порт, а порты 8000 или 8080. Кроме того, некоторые приложения могут взаимодействовать через порт 80, используя другой протокол. Хотя порты выделяются определенным приложениям, разработчик приложения или системный администратор могут игнорировать эти указания и задействовать порт 80 для приложения, использующего другой протокол.

Кроме того, в Web имеется протокол HTTPS, использующий порт 443. Мопитор пакетов может захватить HTTPS-трафик путем отслеживания ТСР-трафика, содержащего в качестве номера порта источника и места назначения порт 443. Однако данные, передаваемые через HTTPS, зашифрованы с применением Secure Socket Layer (SSL). Монитор не может идентифицировать НТТР-сообщения, передаваемые через эти ТСР-соедииения. Однако может перехватывать ТСР-трафик на порту 443 с целью расчета основных статистических показателей, таких как число соединений и байтов, передаваемых с помощью HTTPS. Другие передачи, инициированные Web-браузером, могут использовать другие протоколы прикладного уровня. В некоторых случаях этот трафик может перехватываться путем мониторинга портов, выделенных этим протоколам. Однако ряд приложений использует протоколы, которые динамически назначают номера порто» при передаче данных. Например, клиент и сервер File Transfer Protocol (FTP) могут динамически выбирать номер порта для ТСР-соединеиия, используемого для передачи данных. Аналогично многие протоколы для передачи мультимедийных потоков Обычно не используют определенные номера портов для передачи данных аудио и видео, о чем подробнее будет говориться далее в разделе 14.4.4.

Перехват трафика с определенными IP- и TCP-заголовками требует применения фильтра к IP-пакетам по мере их поступления. Как Можно более ранняя фильтрация пакетов сокращает издержки, связанные с копированием и обработкой пакетов, которые будут затем отвергнуты. Мопитор пакетов может иметь специальное аннаратное обеспечение, которое осуществляет классификацию пакетов при их приеме сетевой картой. Если аннаратная поддержка отсутствует, пакеты могут отфильтровываться операционной системой или приложением. Большое число программ мониторинга пакетов основывается на ипструмепталыюм средстве tcpdump

LJLM, Tcpj на основе фильтра пакетов Berkeley Packet Filter (BPF) }

© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows