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

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

Основные возможности Wireshark

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

  • Захват пакетов в реальном времени из проводного или любого другого типа сетевых интерфейсов, а также чтение из файла;
  • Поддерживаются такие интерфейсы захвата: Ethernet, IEEE 802.11, PPP, и локальные виртуальные интерфейсы;
  • Пакеты можно отсевать по множеству параметров с помощью фильтров;
  • Все известные протоколы подсвечиваются в списке разными цветами, например TCP, HTTP, FTP, DNS, ICMP и так далее;
  • Поддержка захвата трафика VoIP звонков;
  • Поддерживается расшифровка HTTPS трафика при наличии сертификата;
  • Расшифровка WEP, WPA трафика беспроводных сетей при наличии ключа и handshake;
  • Отображение статистики нагрузки на сеть;
  • Просмотр содержимого пакетов для всех сетевых уровней;
  • Отображение времени отправки и получения пакетов.

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

Как пользоваться Wireshark

Я предполагаю, что программа у вас уже установлена, но если нет, то вы можете ее установить из официальных репозиториев. Для этого наберите команду в Ubuntu:

$ sudo apt install wireshark

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

$ kdesu wireshark

А для Gnome / Unity:

$ gksu wireshark

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

Анализ сетевого трафика

Для начала анализа выберите сетевой интерфейс, например, eth0 и нажмите кнопку Start.

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

  • Верхняя часть - это меню и панели с различными кнопками;
  • Список пакетов - дальше отображается поток сетевых пакетов, которые вы будете анализировать;
  • Содержимое пакета - чуть ниже расположено содержимое выбранного пакета, оно разбито по категориям в зависимости от транспортного уровня;
  • Реальное представление - в самом низу отображается содержимое пакета в реальном виде, а также в виде HEX.

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

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

Для более удобного просмотра можно открыть пакет в новом окне выполнив двойной клик по записи:

Фильтры Wireshark

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

  • ip.dst - целевой ip адрес;
  • ip.src - ip адрес отправителя;
  • ip.addr - ip отправителя или получателя;
  • ip.proto - протокол;
  • tcp.dstport - порт назначения;
  • tcp.srcport - порт отправителя;
  • ip.ttl - фильтр по ttl, определяет сетевое расстояние;
  • http.request_uri - запрашиваемый адрес сайта.

Для указания отношения между полем и значением в фильтре можно использовать такие операторы:

  • == - равно;
  • != - не равно;
  • < - меньше;
  • > - больше;
  • <= - меньше или равно;
  • >= - больше или равно;
  • matches - регулярное выражение;
  • contains - содержит.

Для объединения нескольких выражений можно применять:

  • && - оба выражения должны быть верными для пакета;
  • || - может быть верным одно из выражений.

Теперь рассмотрим подробнее на примерах несколько фильтров и попытаемся рассмотреть все знаки отношений.

Сначала отфильтруем все пакеты, отправленные на 194.67.215.125 (losst.ru). Наберите строку в поле фильтра и нажмите Apply . Для удобства фильтры wireshark можно сохранять, с помощью кнопки Save :

ip.dst == 194.67.215.125

А чтобы получить не только отправленные пакеты, но и полученные в ответ от этого узла можно объединить два условия:

ip.dst == 194.67.215.125 || ip.src == 194.67.215.125

Также мы можем отобрать переданные большие файлы:

http.content_length > 5000

Отфильтровав Content-Type, мы можем выбрать все картинки, которые были загружены, выполним анализ трафика wireshark, пакеты, которого содержат слово image:

http.content_type contains image

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

Например, я хочу вывести в виде колонки ttl (время жизни) пакета. Для этого откройте информацию о пакете, найдите это поле в разделе IP. Затем вызовите контекстное меню и выберите опцию Apply As Column :

Также само можно создать фильтр на основе любого нужного поля. Выберите нужное поле и вызовите контекстное меню, затем нажмите Apply as filter или Prepare as filter , затем выбрать Selected чтобы вывести только выбранные значения или Not selected , чтобы их убрать:

Указанное поле и его значение будет применено или во втором случае подставлено в поле фильтра:

Таким способом вы можете добавить в фильтр поле любого пакета или колонку. Там тоже есть эта опция в контекстном меню. Для фильтрации протоколов вы можете использовать и более простые условия. Например, выполним анализ трафика Wireshark для протоколов HTTP и DNS:

Еще одна интересная возможность программы - использование Wireshark для отслеживания определенного сеанса между компьютером пользователя и сервером. Для этого откройте контекстное меню для пакета и выберите Follow TCP stream .

Затем откроется окно, в котором вы найдете все данные переданные между сервером и клиентом:

Диагностика проблем Wireshark

Возможно, вам интересно, как пользоваться Wireshark 2 для обнаружения проблем в сети. Для этого в левом нижнем углу окна есть круглая кнопка, при нажатии на нее открывается окно Expet Tools . В нем Wireshark собирает все сообщения об ошибках и неполадках в сети:

Окно разделено на такие вкладки, как Errors, Warnings, Notices, Chats. Программа умеет фильтровать и находить множество проблем с сетью и тут вы можете их очень быстро увидеть. Здесь тоже поддерживаются фильтры wireshark.

Анализ трафика Wireshark

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

Для этого сначала нужно остановить захват трафика с помощью красного квадрата на панели. Затем откройте меню File -> Export Objects -> HTTP :

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


Автор: Riccardo Capecchi
Дата публикации: 22 марта 2011 г.
Перевод: А.Панин
Дата публикации перевода: 29 ноября 2012 г.

В этой статье мы рассмотрим процесс применения BPF-фильтров в Wireshark для показа подробностей функционирования сессии HTTP, сессии e-mail, а также рассмотрим процесс мониторинга посетителей выбранного сайта из локальной сети. В качестве заключения я приведу список особо полезных выражений фильтров для использования в Wireshark.

Помимо примера с FTP, описанного в предыдущей части статьи , существует еще один классический пример использования Wireshark - исследование HTTP-сессии. Как и раньше, запустите Wireshark и начните захват трафика с интерфейса, направленного во внешнюю сеть. В настоящее время большая часть HTTP-трафика подвергается сжатию для повышения скорости обмена информацией, поэтому по умолчанию Wireshark производит декомпрессию полезной нагрузки HTTP-пакетов. Вы можете выбрать пункты меню " Edit->Preferences->Protocols->HTTP " и убедиться, что параметр " Uncompress entity bodies " выбран.

Во время захвата пакетов, установите фильтр для отображения исключительно HTTP-трафика, введя http в качестве выражения фильтрации. Каждая веб-страница, которую посещает любой пользователь из вашей сети, будет генерировать вид трафика, который вы будете захватывать - следует ожидать большое количество информации. Возможно, вас интересует вас интересует определенный вид информации или определенный пользователь. Для этого в главном окне, где представлены все принятые пакеты, выберите http-запрос и с помощью правой кнопки мыши выберите пункт меню " Follow TCP Stream ". Wireshark откроет новое окно, содержащее полную реконструкцию HTTP-сессии в хронологическом порядке.

Вы также можете отделить запросы к определенному сайту, например, к Facebook - для того, чтобы увидеть, с каких IP-адресов происходили запросы, выражение в поле фильтра должно быть следующим: http.request.uri contains facebook .

Теперь предположим, что вам захотелось увидеть весь входящий и исходящий трафик для одного определенного компьютера. Вам понадобится фильтр по MAC-адресу для того, чтобы быть уверенным в том, что исследуется нужный клиент. Для получения MAC-адреса целевой системы на другом конце соединения, необходимо осуществить пинг по имени узла или URL для получения IP-адреса системы. После этого используется команда arp: ping target.com arp -a

В списке, выведенном командой arp , необходимо найти IP-адрес, полученный в результате выполнения команды ping . После того, как у вас в распоряжении будет MAC-адрес, скажем, " AA:BB:CC:DD:EE:FF " - введите выражение в поле фильтра: eth.addr == AA:BB:CC:DD:EE:FF

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

Нажмите " Apply " и вы увидите только входящий и исходящий трафик для выбранного IP- или MAC-адреса. В случае применения параметра " ip " отображается весь трафик, относящийся к межсетевому протоколу (Internet Protocol), что подходит в 99% случаев исследования сетей.

Вместо параметра фильтра " ip.addr ", вы можете использовать параметр " host " следующим образом: host 192.168.0.1

После установки такого фильтра, Wireshark захватывает весь трафик, идущий к узлу и от узла с адресом 192.168.0.1 независимо от типа.

Теперь представим, что вы хотите захватить весь трафик для узла, генерируемый приложениями, использующими заданные протоколы, такие, как pop3 , ftp , http или messenger . Введите выражение в поле фильтра: ip.addr == 192.168.0.1 and (http or ftp or messenger or pop)

Это выражение сообщает о том, что следует показывать только трафик, генерируемый или направленный к узлу с IP-адресом 192.168.0.1 и отображать только пакеты, относящиеся к протоколам ftp , pop или messenger .

Вы можете захватывать весь такой трафик, передающийся в сети с заданным адресом или от группы клиентов: ip.addr == 192.168.0 and (http or ftp or messenger or pop)

Наиболее часто используемые фильтры для Wireshark

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

  • ip.addr == 192.168.0.1 - Отображать трафик, передающийся относительно узла 192.168.0.1 в обоих направлениях.
  • tcp.port == 80 - Отображать весь трафик с исходным или целевым портом 80.
  • ip.src == 192.168.0.1 and ip.dst == 10.100.1.1 - Отображать весь трафик, генерируемый узлом 192.168.0.1 и направленный на узел 10.100.1.1
  • ftp - Отображать трафик, относящийся к протоколу FTP
  • http - Отображать трафик, относящийся к протоколу HTTP
  • dns - Отображать трафик, относящийся к протоколу DNS
  • http.request.uri contains string - Отображать HTTP-трафик, в том случае, когда URL содержит строку "string".

Технология BPF-фильтров делает Wireshark мощным и гибким инструментом, но в этой статье перечислена лишь малая часть того, что можно сделать при его помощи. Понадобится еще одна или даже несколько статей для того, чтобы описать такие вещи, как при помощи Wireshark вы можете проверить возможность атак отказа в обслуживании на вашу сеть или проанализировать качество связи для работы VOIP-системы на базе SIP-протокола.

Введение

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

Рассматриваемый в данной статье открытый многоплатформенный анализатор протоколов Wireshark имеет в своем составе две подсистемы фильтров: времени перехвата трафика (capture filters) и отображения (display filters). Как известно, первая подсистема базируется на языке правил библиотеки Pcap (Packet Capture). «Очистка» трафика во время его сбора, в частности, уменьшает количество перехватываемых пакетов, сохраняя тем самым место в памяти или на жёстком диске. Что же касается фильтров отображения, то они, являясь встроенной функцией Wireshark, предназначены для «кастомизации» в графическом интерфейсе программы уже перехваченного трафика.


Об языках фильтров

Возможность перехвата трафика для целей мониторинга и отладки присутствует в сетевом стеке любой операционной системы. Осуществляется она с помощью так называемого пакетного фильтра (Packet Filter), входящего в состав ядра системы и получающего принятые/отправленные пакеты от драйвера сетевой карты. Самыми известными пакетными фильтрами для Unix-подобных ОС являются BPF (Berkeley Packet Filter) и LSF (Linux Socket Filter).

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

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

В мире открытого программного обеспечения фактически стандартом языка фильтров является синтаксис, используемый в библиотеке Pcap. Он является основой не только для Wireshark, но и для других утилит с открытым исходным кодом, таких как, например, общеизвестный в мире Unix консольный сниффер tcpdump. Собственно, Pcap и tcpdump - это совместный проект. В популярной системе обнаружения вторжений Snort в режиме перехвата пакетов также используется формат Pcap для определения правил фильтрации трафика.


Основы фильтров Pcap

Итак, фильтр включает один или несколько примитивов . Примитив обычно состоит из объекта (номера или имени) и одного или нескольких спецификаторов, определяющих протокол (ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp, udp), направление (src, dst, any и т.д.) и тип объекта (host, net, port и т. д.). Например, для перехвата пакетов, в которых исходящий IP-адрес равен 192.168.56.102 следует использовать фильтр вида:

Ip src host 192.168.56.102

Или для записи трафика протокола ARP, в котором участвуют узлы сети 192.168.56.0:

Arp net 192.168.56

Часто используемые спецификаторы сведены в таблицу (необязательные компоненты обозначены - , альтернативные - |, объекты - < >). Полный список можно найти в документации к Pcap (в Linux доступно в руководстве пользователя с помощью команды man pcap-filter).

Для того чтобы объединить несколько примитивов в одно выражения используются логические функции: «и» (обозначается ключевым словом and или &&), «или» (or или ||), «не» (not или!). Например для перехвата трафика протокола SSH для узла 192.168.56.102 подойдет такая конструкция:

Tcp port 22 and host 192.168.56.102

Для совсем сложных выражений следует использовать скобки. Например:

Net 192.168.56.0/24 and (tcp port 21 or tcp port 22)

Фильтры Pcap без ограничений

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

Proto [ exp: size]

где, параметр proto — один из протоколов, поддерживаемых Wireshark; exp - смещение в байтах, относительно начала слоя, заданного в proto, a size — количество байт для извлечения.

Учитывая то, что в примитивах можно применять операции сравнения в нотации языка программирования C (>, =,

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

А вот выбрать на лету из трафика сделанные методом GET HTTP-запросы - не такая простая задача для Pcap. И предложенное в документации решение претендует на оригинальность:

Port 80 and tcp[((tcp & 0xf0) >> 2):4] = 0x47455420

Этот фильтр проверяет наличие байт "G", "E", "T" и "" (шестнадцатиричные значения 47, 45, 54 и 20) сразу после TCP-заголовка, длина которого вычисляется выражением "tcp & 0xf0) >> 2".

Как видно из последнего примера, кроме операций сравнения, пользователю непосредственно в примитивах также доступны бинарные операторы C (+, -, *, /, &, |, >).


О фильтрах отображения

Если говорить об отличиях фильтров отображения от Pcap-фильтров, то кроме формата записи спецификаторов (поля протоколов выглядят как. , например ip.len), можно также назвать дополнительную поддержку английской нотации в операциях сравнения (eq - равно, gt - больше, lt — меньше, ge — больше или равно, le — меньше или равно) и бинарных операторах (and, or, xor, not), а также поддержку подстрок.

Выборка подстрок в полях похожа на извлечение произвольных байт из пакета в Pcap-фильтрах, однако имеет более гибкий синтаксис. Например, такое выражение будет проверять первых 4 байта поле исходного MAC-адреса кадра Ethernet (эквивалентно ):

Eth.src[:4] == 00:1d:72:01

Разумеется, отличием фильтров будет то, что правила Pcap используются при перехвате трафика; в графическом интерфейсе настраиваются в диалоговом окне «Capture options» (кстати, есть возможность запоминать часто используемые выражения). А фильтры отображения работают с пакетами, размещёнными в списке главного окна программы:

Функционально встроенная подсистема фильтрации Wireshark гораздо дружелюбнее к пользователю. В частности, нет необходимости помнить подробности формата сообщения (смещения, размеры полей и т. д.). Необходимое поле сообщения данного протокола можно легко найти в окне настройки правил отображения (Filter Expression), а также выбрать условие и предопределённое значение из списка для данного поля или указать своё собственное. Для любого из множества протоколов, поддерживаемых Wireshark, таким простым способом можно настроить фильтр отображения.

Весьма показательным будет почти академический пример определения момента переполнения буфера TCP-сегментов при помощи нижеприведенного правила отображения:

Tcp.window_size == 0 && tcp.flags.reset != 1

Заключение

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

Оригинал: Weekend Project: Analyze Your Network with Wireshark
Автор: Nathan Willis
Дата публикации: 29 октября 2010 г.
Перевод: В. Семененко
Дата перевода: июль 2011 г.

Введение

Wireshark является программой-анализатором сетевых пакетов с исходным кодом. Без какого-либо специального оборудования или перенастройки эта программа может перехватывать входящие и исходящие данные на любом сетевом интерфейсе компьютера: Ethernet, WiFi, PPP, loopback и даже USB. Обычно Wireshark применяется для выявления проблем в сети, таких, как перегруженность, слишком долгое время ожидания или ошибки протоколов. Но для того, чтобы изучить Wireshark , совсем не нужно ждать, когда произойдет какая-либо поломка. Давайте приступим к обзору этой программы.

Wireshark написан на библиотеках GTK+ и имеет графический интерфейс (GUI). Но помимо GUI, есть консольная реализация программы по имени TShark , обладающая тем же функционалом, что и ее графический вариант. Так как программа очень популярна в качестве административного инструмента для анализа сетей, она имеется в репозиториях практически любого дистрибутива Linux. Есть версии программы под Windows и Mac OS X. Если по каким-либо причинам вы не смогли найти ее в своих репозиториях Linux, всегда можно скачать готовые сборки под различные дистрибутивы с официального сайта. Или же скачать, собрать и установить программу из исходников.

Сразу стоит обратить внимание, что запуск Wireshark необходимо производить с правами root , так как для перехвата трафика программе нужны привилегии суперпользователя для перехода в так называемый неразборчивый режим ("promiscuous mode "). Ядром Wireshark является библиотека libpcap , с помощью которой и производится перехват данных. Программа имеет встроенную поддержку очень большого количества сетевых устройств. Проверить , будет ли ваша сетевая карта работать под этой программой, можно на странице wiki проекта Wireshark . Но практически все современные Ethernet и Wifi карты не имеют каких-либо проблем с совместимостью в этой программе.

Перехват трафика

Запуск новой сессии перехвата производится в окне программы из меню "Capture ". Чтобы увидеть весь список сетевых интерфейсов, которые смогла обнаружить Wireshark , перейдите по пути в меню "Capture > Interfaces ". Появится диалоговое окно, в котором, помимо физических устройств, будет присутствовать псевдо-устройство "any ", которое перехватывает данные со всех других устройств этого списка.
Перед началом можно задать некоторые опции, с которыми будет запускаться перехват. Перейдя по "Capture > Options ", достаточно выбрать:

Фильтры для выборочного анализа трафика (например, по определенному протоколу или диапазону адресов);
- автоматически остановить перехват по достижении указанного в настройках времени;
- отсортировать полученные данные по указанному размеру или дате.

Первое, что вы увидите при запуске новой сессии - окно лога, где будет показываться основная информация о выполняемом программой процессе: источник, приемник, протокол, время и т.п. Вся информация организована в виде таблицы с заголовками. Для большей удобочитаемости Wireshark выполняет цветовое выделение фрагментов текста, изменение цвета фона или пометку наиболее "интересных" пакетов с помощью флагов.

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

Для анализа любого полученного пакета достаточного выбрать его в окне логов. Однако, делать это целесообразно после остановки перехвата данных. Подробная деталировка интересующего пакета будет представлена в отдельном древовидном окне, в котором все его составляющие будут рассортированы по сетевым уровням. К примеру, если у вас есть проблемы с Ethernet, вам нужно анализировать Ethernet-фреймы; если же это протокол HTTP, то вам нужно "погружаться" в уровень протокола http.

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

Анализ данных

Система фильтров является основным способом преобразования полученных данных в нужный вам формат. Для того, чтобы выбрать нужный фильтр, щелкните на кнопке "Filter " в окне программы. Появится окно с опциями на выбор: только TCP; только UDP; все IP-адреса, кроме локальных; все, кроме DNS и ARP; и многие другие. При выборе любого фильтра из списка в окне синтаксиса Wireshark будет отображена полная команда, представляющая собой фильтр в его "развернутом" виде. Это полезно для изучения синтаксиса Wireshark при написании собственных фильтров.

Например, фильтр "Не получать данные по протоколу HTTP и SMTP с адреса 192.168.0.1 " будет выглядеть следующим образом:
not (tcp.port == 80) and not (tcp.port == 25) and ip.addr == 192.168.0.1
Щелкните кнопку "Применить " ("Apply ") и Wireshark отфильтрует в главном окне перехваченные им данные. Конечно, вы можете написать и затем сохранить свой собственный фильтр, нажав кнопку "Расширения " ("Expression "); Wireshark позволяет вручную выбрать логические операторы и известные поля, которые вы можете использовать при составлении своих собственных фильтров.

Меню "Анализ " ("Analyze ") содержит набор более сложных заранее предустановленных опций фильтрации.

1 ."Enable Protocols " предоставляет вам возможность включить или отключить протоколы;
2 ."Specified Decodes " позволяет декодировать определенные протоколы, что может быть полезным при диагностике конкретно выбранного приложения;
3 ."Follow TCP Stream " поможет выбрать отдельное соединение по TCP-протоколу и проследить его состояние от начала и до конца; подобные опции имеются для UDP и SSL-соединений;
4 ."Expert Infos " извлекает сообщения об ошибках и флаги предупреждения (такие, как потерянный или не в очереди сегмент) для быстрого обнаружения проблемы.

Меню "Статистика " ("Statistics ") предоставляет более общий обзор всего набора перехваченных данных. Это меню содержит предустановленные функции для анализа общих параметров сети и предоставляет их в удобном табличном виде. Если вы исследуете сетевой трафик вашей сети в первый раз, этот инструмент поможет вам понять основные принципы ее функционирования. Здесь вы можете проанализировать такие данные, как время ответа; размеры фрагментов, на которые разбиты пакеты; трафик на уровне ссылок и приложений.

Wireshark также может выводит полученную информацию в графическом режиме, что облегчает ее восприятие. Перейдя в "Graphs tool " в меню "Статистика " ("Statistics "), вы можете выбрать пять фильтров для сравнения файлов позаголовочно с помощью выделения различными цветами.

Начало анализа

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

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

Обучающие материалы по этой программе на сайте проекта Wireshark являются незаменимым подспорьем. Wiki имеет несколько страниц, посвященных основным проблемам сети , а также ссылки на другие источники с подобной информацией. Представлена информация по другим программам сетевого анализа и анализа безопасности, таким как Nagios , NMap и tcpdump . Большинство исследований проблем в сети требуют понимания сути стеков протокола TCP/IP, поэтому одна или две хорошие книги по этой тематике потребуются наверняка.

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

Экстра возможности: визуализация, альтернативные перехваты

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

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

Wireshark может экспортировать захваченные данные в файл формата CSV, который в дальнейшем вы можете открыть в любом другом приложении, например, в обыкновенной электронной таблице, наподобие Gnumeric или OpenOffice , или в таком статистическом пакете, как или gnuplot . Хорошие приложения для анализа вы можете найти на forensicswiki.org . Список этих приложений постоянно меняется. К примеру, популярный движок анализа Freebase Gridworks был преобразован в проект Google Refine , который может визуализировать сетевой трафик значительно более удобным способом.

И последнее, но не менее важное. Хотя Wireshark почти всегда позиционируется как сетевой инструмент для анализа, правда заключается в том, что он может анализировать и другие устройства, такие как USB -трафик и даже Unix-сокеты между приложениями.

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

- наличие встроенной экспертной системы, которая позволит быстро разобрать буфер по сервисам или типам ошибок. Что позволит существенно ускорить время локализации проблемы и работать с уже отсортированной и предварительно оцененной для вас информацией. Тут можно обратить внимание на решения от VIAVI Solutions под названием Observer или на ClearSight Analyzer от компании Netscout.

В случае если не выделяют бюджет, а проблемы есть, то остается запастись терпением и кофе и . В сетях передачи данный на скоростях 1 Гбит/сек и выше буфер захвата трафика заполняется мгновенно и на выходе получается достаточно большой массив данных. Этот массив данных, понимая взаимодействие между различными устройствами в сети можно отфильтровать по разным параметрам. Для этого Wireshark имеет несколько возможностей:

    Цветовая кодировка ошибочных пакетов — можно настроить под себя. Пакеты, которые несут в себе ошибку, будут выделены в буфере специальным цветом.

    Фильтр через строку фильтрации. Вы имеете большой опыт в работе с Wireshark и протоколами и можете ввести фильтр самостоятельно. Большой выбор фильтров можно найти .

    Выделение любой области в пакете, правый клик мыши и «Применить как фильтр». Метод для начинающих: очень удобно, так как не надо ломать голову.

Какие основные фильтры существуют для отображения трафика?

Wireshark фильтр по протоколу

Достаточно в строке фильтра ввести название протокола и нажать ввод. На экране останутся пакеты, которые относятся к искомому протоколу. Таким образом, фильтр выглядит:

Если буфер захвата необходимо отфильтровать по нескольким протоколам, то необходимо перечислить все желаемые протоколы и разделить их знаком ||. Например:

arp || http || icmp

Wireshark фильтр по IP адресу и фильтр по MAC

В зависимости от направления трафика фильтр будет немного отличаться. Например, мы хотим отфильтровать по IP адресу отправителя 50.116.24.50:

ip.src==10.0.10.163

По получателю фильтр будет выглядеть ip.dst == x.x.x.x, а если хотим увидеть пакеты в независимости от направления трафика, то достаточно ввести:

ip.addr==50.116.24.50

В случае если нам необходимо исключить какой то адрес из поля отбора, то необходимо добавить!= . Пример:

ip.src!=80.68.246.17

Если мы анализируем трафик внутри локальной сети и знаем MAC адрес пользователя, то можно указать в качестве фильтра Wireshark его MAC адрес, например:

eth.addr == AA:BB:CC:DD:EE:FF

Wireshark фильтр по номеру порта

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

Так же как и с адресами IP и MAС мы можем отдельно фильтровать по портам получения или отправления tcp . srcport и tcp . dstport . Кроме указания номеров портов Wireshark дает отличную возможность отфильтровать буфер по флагам в TCP протоколе. Например, если мы хотим увидеть TCP пакеты с флагом SYN (установление соединения между устройствами), то вводим в строке поиска:

Популярные фильтры

В таблице ниже приведены наиболее популярные фильтры для отображения содержимого буфера захвата:

Фильтр для отображения

Описание

Пример написания

MAC адрес отправителя или получателя

eth.addr == 00:1a:6b:ce:fc:bb

MAC-адрес оправителя

eth.src == 00:1a:6b:ce:fc:bb

MAC-адрес получателя

eth.dst == 00:1a:6b:ce:fc:bb

Протокол ARP - MAC адрес получателя

arp.dst.hw_mac == 00:1a:6b:ce:fc:bb

arp.dst.proto_ipv4

Протокол ARP - IP адрес версии 4 получателя

arp.dst.proto_ipv4 == 10.10.10.10

Протокол ARP - MAC адрес отправителя

arp.src.hw_mac == 00:1a:6b:ce:fc:bb

arp.src.proto_ipv4

Протокол ARP - IP адрес версии 4 отправителя

arp.src.proto_ipv4 == 10.10.10.10

Идентификатор VLAN

IP адрес версии 4 получателя или отправителя

ip.addr == 10.10.10.10

IP адрес версии 4 получателя

ip.addr == 10.10.10.10

IP адрес версии 4 отправителя

ip.src == 10.10.10.10

IP protocol (decimal)

IP адрес версии 6 получателя или отправителя

ipv6.addr == 2001::5

IP адрес версии 6 отправителя

ipv6.addr == 2001::5

IP адрес версии 6 получателя

ipv6.dst == 2001::5

TCP порт получателя или отправителя

TCP порт получателя

tcp.dstport == 80

TCP порт отправителя

tcp.srcport == 60234

UDP порт получателя или отправителя

UDP порт получателя

udp.dstport == 513

UDP порт отправителя

udp.srcport == 40000

vtp.vlan_info.vlan_name

vtp.vlan_info.vlan_name == TEST

bgp.originator_id

Идентификатор BGP (Адрес IPv4)

bgp.originator_id == 192.168.10.15

Следующий хоп BGP (Адрес IPv4)

bgp.next_hop == 192.168.10.15

RIP IPv4 address

rip.ip == 200.0.2.0

Идентификатор маршрутизатора по протоколу OSPF

ospf.advrouter == 192.168.170.8

Номер автономной системы EIGRP

Виртуальный IP адрес по протоколу HSRP

hsrp.virt_ip == 192.168.23.250

Виртуальный IP адрес по протоколу VRRP

vrrp.ip_addr == 192.168.23.250

MAC адрес отправителя или получателя Wi-Fi

wlan.addr == 00:1a:6b:ce:fc:bb

MAC-адрес оправителя Wi-Fi

wlan.sa == 00:1a:6b:ce:fc:bb

MAC-адрес получателя Wi-Fi

wlan.da == 00:1a:6b:ce:fc:bb

А какие фильтры чаще всего используете в своей работе вы?