Wireshark уроки на русском версии 2.4 1. Wireshark: Анализ трафикa в Linux и Windows

Главная / Обзоры 

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

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

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

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

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

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

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

sudo apt install wireshark

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

А для Gnome / Unity:

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

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

Для начала анализа выберите сетевой интерфейс, например 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.. Наберите строку в поле фильтра и нажмите 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.0 для обнаружения проблем в сети. Для этого в левом нижнем углу окна есть круглая кнопка, при нажатии на неё открывается окно Expet Tools . В нём Wireshark собирает все сообщения об ошибках и неполадках в сети:

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

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

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

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

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

Программа одинаково корректно работает в среде многих операционных систем, включая Windows, UNIX, Linux, Mac OS, Free BSD, Solaris, Open BSD, Net BSD и т. д. Сами по себе приложения такого типа иногда называют снифферами.

Данная программа позволяет достаточно легко отследить трафик с использованием множества сетевых протоколов типа DNS, FDDI, FTP, HTTP, ICQ, IPV6, IPX, IRC, MAPI, MOUNT, NETBIOS, NFS, NNTP, POP, PPP, TCP, TELNET, X25 и т. п.

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

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

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

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

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

После этого можно запускать основное приложение.

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

Сам процесс работы с программой довольно прост

Для запуска перехвата сетевых пакетов нужно просто зайти в главное меню, а именно Menu/Capture Options, а затем в поле Interface выбрать необходимый интерфейс и нажать кнопку Start.

Вот собственно и все.

Естественно, можно воспользоваться и дополнительными настройками, представленными в этом окне.

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

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

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

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

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

Собственно, ничего сложного в этом нет. Напоследок заметим, что формирования графического интерфейса используется универсальная библиотека GTK+, что и позволяет быстро и удобно обрабатывать входные данные множества форматов.

На этой странице вы найдете ответы на самые популярные вопросы по снифферу WireShark:
⦁ где скачать WireShark бесплатно;
⦁ почему не надо скачивать Wireshark с торрентов;
⦁ где взять WireShark на русском (русификатор);
⦁ где взять инструкции для WireShark на русском,
⦁ руководство по работе с WireShark.

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

Где бесплатно скачать WireShark?

Скачивайте программу только с этой страницы!

Где cкачать WireShark на русском?

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

Где взять инструкции для работы с WireShark?

Если вы хотите постичь все возможности и стать профессиональным пользователем WireShark, то это можно сделать двумя способами.
⦁ Способ первый.
Метод проб и ошибок. Захватывайте трафик, пытайтесь анализировать его, общайтесь с коллегами на различных форумах и группах. Например, тут: https://ask.wireshark.org/
⦁ Способ второй.
Можно окончить официальные курсы и получить сертификат пользователя или инструктора. Подготовится к курсам можно, освоив данное руководство: http://www.wiresharkbook.com/epg.html
Эта книга является идеальным ресурсом для подготовки к экзамену!

Руководство пользователя

Официальное руководство пользователя сниффера Wireshark доступно на английском языке (русского нет) в различных версиях:
⦁ онлайн руководство: https://www.wireshark.org/docs/wsug_html_chunked
⦁ скачать руководство в архиве.

1. Введение

Wireshark – это анализатор сетевого трафика. Его задача состоит в том, чтобы перехватывать сетевой трафик и отображать его в детальном виде. Анализатор сетевого трафика можно сравнить с измерительным устройством, которое используется для просмотра того, что происходит внутри сетевого кабеля, как например вольтметр используется электриками для того чтобы узнать что происходит внутри электропроводки (но, конечно, на более высоком уровне). В прошлом такие инструменты были очень дорогостоящими и проприетарными. Однако, с момента появления такого инструмента как Wireshark ситуация изменилась. Wireshark – это один из лучших анализаторов сетевого трафика, доступных на сегодняшний момент. Wireshark работает на основе библиотеки pcap. Библиотека Pcap (Packet Capture) позволяет создавать программы анализа сетевых данных, поступающих на сетевую карту компьютера. Разнообразные программы мониторинга и тестирования сети, сниферы используют эту библиотеку. Она написана для использования языка С/С++ так что другие языки, такие как Java, .NET и скриптовые языки использовать не рационально. Для Unix-подобных систем используют libpcap библиотеку, а для Microsoft Windows NT используют WinPcap библиотеку. Программное обеспечение сетевого мониторинга может использовать libpcap или WinPcap, чтобы захватить пакеты, путешествующие по сети и в более новых версиях для передачи пакетов в сети. Libpcap и WinPcap также поддерживают сохранение захваченных пакетов в файл и чтение файлов содержащих сохранённые пакеты. Программы написанные на основе libpcap или WinPcap могут захватить сетевой трафик, анализировать его. Файл захваченного траффика сохраняется в формате, понятном для приложений, использующих Pcap.

2.1 Для чего используется Wireshark?

  • Системные администраторы используют его для решения проблем в сети.
  • Аудиторы безопасности используют его для выявления проблем в сети.
  • Разработчики используют его для отладки сетевых приложений.
  • Обычные пользователи используют его для изучения внутреннего устройства сетевых протоколов.
2.2 Возможности Wireshark
  • Работает на большинстве современных ОС (Microsoft Windows, Mac OS X, UNIX). Wireshark – продукт с открытым исходным кодом, распространяемый на основании лицензии GPL. Его можно использовать на любом количестве компьютеров, не опасаясь за ввод лицензионных ключей, продление лицензии и другие неприятные мероприятия. Поэтому сообществу очень легко добавлять в него поддержку новых протоколов в виде плагинов или напрямую вшить её в исходный код.
  • Перехват трафика сетевого интерфейса в режиме реального времени. Wireshark может перехватывать трафик различных сетевых устройств, отображая его имя (включая беспроводные устройства). Поддерживаемость того или иного устройства зависит от многих факторов, например от операционной системы.
  • Множество протокольных декодировщиков (TELNET, FTP, POP, RLOGIN, ICQ, SMB, MySQL, HTTP, NNTP, X11, NAPSTER, IRC, RIP, BGP, SOCKS 5, IMAP 4, VNC, LDAP, NFS, SNMP, MSN, YMSG и другие).
  • Сохранение и открытие ранее сохраненного сетевого трафика.
  • Импорт и экспорт файлов из других пакетных анализаторов. Wireshark может сохранять перехваченные пакеты в большое количество форматов других пакетных анализаторов, например: libpcap, tcpdump, Sun snoop, atmsnoop, Shomiti/Finisar Surveyor, Novell LANalyzer, Microsoft Network Monitor, AIX"s iptrace.
  • Позволяет фильтровать пакеты по множеству критерий.
  • Позволяет искать пакеты по множеству критерий.
  • Позволяет подсвечивать захваченные пакеты разных протоколов.
  • Позволяет создавать разнообразную статистику.
Ниже перечислены некоторые вещи, которые Wireshark делать не умеет.
  • Wireshark – это не система обнаружения вторжений. Он не предупредит о том, если кто-то делает странные вещи в сети. Однако если это происходит, Wireshark поможет понять что же на самом деле случилось.
  • Wireshark не умеет генерировать сетевой трафик, он может лишь анализировать имеющийся. В целом, Wireshark никак не проявляет себя в сети, кроме как при резолвинге доменных имен, но и эту функцию можно отключить.
2.3 Установка

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

Установка снифера Wireshark под Windows является тривиальной задачей и производится мастером установки.Если на компьютере отсутствует библиотека WinPcap, то она будет установлена вместе со снифером. На шаге выбора компонентов можно установить некоторые сопутствующие инструменты:

  • TShark – консольный анализатор сетевого трафика;
  • Rawshark – фильтр «сырых» пакетов;
  • Editcap – утилита, позволяющая открывать сохраненные пакетные дампы и изменять их;
  • Text2Pcap – утилита для конвертации HEX-дампов (побайтовое представление) пакетов в формат Pcap;
  • Mergecap – утилита для соединения нескольких дампов в один файл;
  • Capinfos – утилита для предоставления информации о сохраненных дампах;
  • Некоторые плагины расширенной статистики.
Сразу после установки снифер готов к работе.

2.4 Интерфейс Wireshark

Интерфейс программы Wireshark представлен на рисунке 1.

Рисунок 1 – Главное окно программы Wireshark


Рассмотрим интерфейс более подробно. Сверху находится стандартные для Windows приложений меню и тулбар, на них подробно останавливаться смысла не имеет. Далее следует фильтр, в нем можно задавать критерии фильтрации пакетов, подробное описание работы с ним рассмотрим позже. Следом идет окошко со списком всех перехваченных пакетов. В нем доступна такая информация как: номер пакета, относительное время получения пакета (отсчет производится от первого пакета; параметры отображения времени можно изменить в настройках), IP адрес отправителя, IP адрес получателя, протокол, по которому пересылается пакет, а также дополнительная информация о нем. Как можно заметить, разные протоколы подсвечены разными цветами, что добавляет наглядности и упрощает анализ. Далее видно окно, в котором представлена детальная информация о пакете согласно сетевой модели OSI (подробнее см. Википедию). Ну, и самое нижнее окно показывает нам пакет в сыром HEX виде, то есть побайтово. Конфигурация интерфейса может быть легко изменена в меню View. Например, можно убрать окно побайтового представления пакета (оно же Packet Bytes в меню View), так как в большинстве случаев (кроме анализа данных в пакете) оно не нужно и только дублирует информацию из окна детального описания.

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

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

  • перехват трафика различных видов сетевого оборудования (Ethernet, Token Ring, ATM и другие);
  • прекращение перехвата на основе разных событий: размера перехваченных данных, продолжительность перехвата по времени, количество перехваченных пакетов;
  • показ декодированных пакетов во время перехвата;
  • фильтрация пакетов с целью уменьшить размер перехваченной информации;
  • запись дампов в несколько файлов, если перехват продолжается долго.
    Движок не может выполнять следующие функции:
  • перехват трафика с нескольких сетевых интерфейсов одновременно (однако, существует возможность запустить несколько копий Wireshark – каждая для своего интерфейса);
  • прекращение перехвата в зависимости от перехваченной информации.
Чтобы начать перехват трафика нужно иметь права Администратора на данной системе и выбрать правильный сетевой интерфейс. Итак, начнем. Чтобы выбрать сетевой адаптер, с которого будет выполняться перехват нужно нажать на кнопку Interfaces на тулбаре, либо их меню Capture > Interfaces… (отмечены красным цветом на рисунке 2).

Рисунок 2 – Выбор интерфейса для перехвата


После нажатия на одну из этих кнопок появится окно со списком сетевых интерфейсов, доступных в системе (рисунок 3).

Рисунок 3 – Список сетевых интерфейсов


На этом списке можно увидеть такую информацию как название интефейса, IP адрес интерфейса, сетевая активность интерфейса (представлена в виде общего количества пакетов с момента появления окна и количество пакетов в секунду). Также из этого окна можно посмотреть настройки перехвата (рисунок 4) и информацию об интерфейсе (рисунок 5).

Рисунок 4 – Настройки перехвата

Рисунок 5 – Информация об интерфейсе


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

3. Практика перехвата

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

3.1 Утилита ping

Нажмем Win+R и введем в строке выполнить cmd. Откроется консоль, введем там команду ping , как показано на рисунке 6. IP адрес следует писать, исходя из конфигурации конкретной сети.

Рисунок 6 – Выполнение команды ping


Теперь, если опрос хоста прошел так же успешно, как показано на рисунке, откроем окно Wireshark, чтобы посмотреть на это более подробно. Там мы скорее всего увидим полный бардак и разбираться в этом нужно будет очень долго. Тут нам на помощь и придут фильтры! Утилита ping работает по протоколу ICMP, поэтому впишем название этого протокола в строку фильтра и нажмем Apply. Должно получиться нечто похожее на рисунок 7.

Рисунок 7 – Фильтрация по протоколу ICMP


Здесь мы можем наблюдать как происходит Echo Request и Echo Reply в протоколе ICMP изнутри: какие тестовые данные посылаются, какие флаги символизируют о том, что это именно Echo Request, и другую не менее важную информацию.

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

В этом пункте рассматривается перехват документа, передающегося по протоколу FTP без шифрования, и убедимся, что при использовании шифрования на основе TLS ничего полезного мы перехватить не сможем. В качестве FTP сервера используется Cerberus FTP Server, в качестве клиента – любой браузер, например, Internet Explorer (в данной работе использовался плагин к Mozilla Firefox под названием FireFTP).
Запускаем захват пакетов в Wireshark и делаем фильтр по протоколу FTP для удобства (набираем «ftp or ftp-data» без кавычек). Набираем в строке адреса браузера адрес нашего FTP сервера: ftp:// и жмем Enter. На сервере будет лежать текстовый документ под названием test.txt, скачиваем его. Теперь посмотрим, что произошло в снифере, и какие пакеты мы перехватили. На рисунке 8 можно видеть, что перехватить можно не только данные, которые передаются по протоколу, но и логин с паролем.

Рисунок 8 – Перехват логина и пароля


Теперь найдем в перехваченных пакетах содержание нашего документа. Несколько слов о процессе передачи файлов по протоколу FTP: в самом начале сервер посылает клиенту баннер приветствия (в данном случае это 220-Welcome to Cerberus FTP Server), пользователь проходит аутентификацию на сервере с помощью команд USER и PASS, получает список директорий с помощью команды LIST и запрашивает нужный файл с помощью команды RETR. Команду RETR мы и будем искать в списке пакетов. Для этого нужно нажать Ctrl+F, выбрать в опциях поиска Find by String и Search in Packet Bytes, в строке поиска ввести RETR и нажать Enter. Будет найден пакет, в котором клиент посылает эту команду серверу, если файл существует, то сервер пришлет ответ 150 Opening data connection, а в следующем пакете и будет содержимое документа (рисунок 9).

Рисунок 9 – Содержимое переданного документа


Теперь включим на сервере безопасную передачу данных на основе протокола TLS и повторим процедуру. Для установки безопасного соединения клиент использует команду AUTH TLS. При просмотре списка перехваченных пакетов (рисунок 10) становится ясно, что ничего полезного из них получить не получится.

Рисунок 10 – Список перехваченных зашифрованных пакетов


3.3 Перехват документа, переданного по протоколу SMB

SMB (Server Message Block) – формат сообщений на основе протокола совместного использования файлов Microsoft/3Com, используемый для передачи файловых запросов (open – открыть, close – закрыть, read – прочитать, write – записать и т. п.) между клиентами и серверами. Откроем Wireshark, запустим перехват пакетов и фильтр по протоколу SMB. Затем зайдем на удаленный расшаренный ресурс и скачаем файл test.txt. Остановим перехват пакетов, нажав на кнопочку «Stop the running live capture». Теперь посмотрим на то, что мы получили. В списке пакетов найдем запрос на передачу файла test.txt:

Единственным решением, препятствующим снифингу, является шифрование. Нельзя допускать использования фирменных небезопасных прикладных протоколов или унаследованных протоколов, передающих данные явным образом. Замена небезопасных протоколов (таких как telnet) на их надежные шифрованные аналоги (такие как SSH) представляется серьезным барьером от перехвата. Замена всех небезопасных протоколов в большинстве случаев маловероятна.

Вместо прекращения использования протоколов, передающих данные явным образом, остается только одна возможность - шифрование всего сетевого трафика на 3 уровне, используя IPSec. Осуществляя шифрование на 3 уровне, возможно продолжать использовать небезопасные протоколы, поскольку все данные будут инкапсулированы IPSec и зашифрованы при передаче по сети. Таким образом, унаследованные приложения, которые используют старые протоколы, не пострадают. IPSec полностью прозрачен для приложений и пользователей. Это открытый стандарт, поддерживаемый многими вендорами, включая Microsoft и Cisco. Кроме того, многие реализации Unix поддерживают IPSec. Легкая настройка IPSec в Win2k/XP дополнительно увеличивает его доступность.

Осуществление технологии шифрования на 3 уровне, таких как IPSec решает проблему снифинга полностью. Масштабируемость, распространенность, доступность IPSec выделяет его как прагматическое решение проблемы перехвата сетевого трафика.

Wireshark - это достаточно известный инструмент для захвата и , фактически стандарт как для образования, так и для траблшутинга.Wireshark работает с подавляющим большинством известных протоколов, имеет понятный и логичный графический интерфейс на основе GTK+ и мощнейшую систему фильтров. Кроссплатформенный, работает в таких ОС как Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Mac OS X, и, естественно, Windows. Распространяется под лицензией GNU GPL v2. Доступен бесплатно на сайтеwireshark.org .

Установка в системе Windows тривиальна - next, next, next. Самая свежая на момент написания статьи версия – 1.10.3, она и будет участвовать в обзоре.

Зачем вообще нужны анализаторы пакетов?

Для того чтобы проводить исследования сетевых приложений и протоколов, а также, чтобы находить проблемы в работе сети, и, что важно, выяснять причины этих проблем.

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

Начинаем плаванье

Для начала захвата достаточно выбрать свой сетевой интерфейс и нажать Start.

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

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

В случае если колонки перекрываются и наползают друг на друга, можно кликнуть по такой колонке правой кнопкой мыши и выбрать“Resize Column” . Произойдет автоматическая подгонка размеров под текущую ситуацию. И кроме того, есть кнопка“Resize all Columns” , которая приведет в порядок все колонки.

Используя менюView – Time Display Format , можно, например, настроить, чтобы отсчет времени шел не с начала захвата, а с момента получения предыдущего пакета (Since Previous Captured Packet ). Самое важное в каждой программе (Help – About Wireshark ) покажет не только версию и список авторов, но и содержит закладкуFolders , которая покажет пути размещения каталогов с конфигурациями.

Изучая интерфейс, можно выбрать, например, пакет http , и увидеть, что HTTP инкапсулируется в TCP (транспортный уровень) , TCP инкапсулируется в IP (сетевой уровень) , а IP в свою очередь инкапсулируется в Ethernet (перед этим даже мелькает 802.1Q).

И на самом верху идет нечто вроде небольшого обзора собранной информации о кадре.

Про фильтры мы поговорим дальше, а на данном этапе, если нужно быстро отфильтровать лишние пакеты, достаточно сделать правый клик на пакете, выбрать менюApply as Filter – Not selected и изменения сразу же вступят в силу. Если нужно еще что-то убрать, то в следующий раз выбирать“and not Selected” , и новое правило просто добавится к фильтру.

Убираем заусенцы

Довольно часто при работе с Wireshark возникает ошибкаIP checksum offload – ошибка контрольной суммы заголовка IP пакета.

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

Хардваные функции зачастую лучше софтварных, в основном из-за скорости обработки (в железе обычно выше) поэтому лучше изменить настройки самого сниффера. Для этого нужно зайти в настройки (Edit - Preferences ), затем Protocols – IPv4 – и снять флаг с“Validate IPv4 checksum if possible” .

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

  • Локально на своем хосте;
  • Организовать зеркалирование трафика на коммутаторе;
  • Подключаться непосредственно в интересующие места;
  • или же отравление протокола ARP (еще более незаконно, чем пассивное прослушивание трафика)

Фильтруем поток

Wireshark содержит два вида фильтров – захвата (Capture Filters ) и отображения (Display Filters ).
Вначале рассмотримCapture Filters .
Как можно догадаться по названию, они служат для фильтрации еще на этапе захвата трафика. Но в таком случае, безусловно, можно безвозвратно потерять часть нужного трафика.

Фильтр представляет собой выражение, состоящее из встроенных значений, которые при необходимости могут объединяться логическими функциями (and, or, not). Для того, чтобы его задействовать, нужно зайти в менюСapture , затемOptions , и в полеCapture Filter набрать, например,host 8.8.8.8 (или, например,net 192.168.0.0./24 )

Так же, конечно, можно выбрать и заранее созданный фильтр (за это отвечает кнопка Capture Filter ). В любом из вариантов фильтр появится возле интерфейса, можно жать Start. Теперь перейдем кDisplay Filters . Они фильтруют исключительно уже захваченный трафик.

Что можно фильтровать?

Практически все - протоколы, адреса, специфические поля в протоколах.
Операции, которые можно использовать при построении фильтров:

Как вы, наверное, заметили, в таблице в качестве примеров были разнообразные выражения, достаточно понятные и зачастую говорящие сами за себя. Например, ip.dst – это поле протокола IP.

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

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

Чтобы применить фильтр, достаточно нажать enter или кнопку Apply. Само поле для ввода фильтра может менять цвет в зависимости от того, что было набрано.

Зеленый цвет означает, что все в порядке. Красный - допущена ошибка, желтый - получен неожиданный результат, потому что существуют другие варианты написания фильтра (например можно написатьip.dst != 8.8.8.8 или же!ip.dst == 8.8.8.8 , именно второй вариант более предпочтительный). Фильтры можно сохранять для дальнейшего использования, нажав кнопку Save, затем ввести произвольное название

и после нажатия на кнопку ОК фильтр появится как кнопка на панели.

А если кликнуть на расположенную неподалеку кнопку «Expression…», то откроется достаточно мощный конструктор выражений, по которому можно чуть ли не изучать сетевые протоколы. Количество поддерживаемых протоколов постоянно увеличивается.

Как уже упоминалось ранее, можно выделить любой пакет и в контекстном меню выбратьApply as Filter и в подменю выбрать режим -selected илиnot selected и соответственно сразу же появится фильтр, который будет показывать только выбранное или наоборот уберет выбранное с экрана. Таким образом можно гибко выбирать, что видеть на экране, а что - нет. Это может быть определенный ip-адрес, ttl, порт, dns ответ и многое другое. Кроме того, есть два варианта для таких быстрых фильтров - Prepare as Filter и Apply as Filter.

Как можно догадаться по названию - разница заключается в том, что в первом случае только появится в поле для ввода Display Filter, но не применится (удобно, если например, добавлять таким способом несколько фильтров, а затем сразу применить готовый результат), а во втором - сразу же и применится.

Фильтры можно объединять, используя знакомые по булевой алгебре логические операции: (dns) && (http) логическое и (dns) || (http) это логическое или.

Таким образом можно строить большие и сложные фильтры вроде: (tcp.flags.syn==1) && (ip.src == 172.16.10.2) && (ip.dst == 172.16.10.1) Здесь видим, что выбираются только TCP SYN сегменты, только с определенным адресом отправителя и получателя. При составлении больших фильтров нужно помнить, что фильтр по сути - логическое выражение, и если оно истинно, то пакет отобразится на экране, если ложно - нет.

Ныряем глубже

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

Открываем пакет, находим полеTime since previous frame in this TCP frame , правый клик и выбираемApply as Column . Появится новая колонка. На ней можно кликнуть правой кнопкой мыши и выбрать режим сортировки, например,Sort Descending .

И сразу же рассмотрим второй способ.

Относительно недавно (в версии 1.10.0) появился фильтр tcp.time_delta, который, собственно, учитывает время с момента последнего запроса.

Если клиент делает запрос и получает ответ через 10 миллисекунд, и клиент говорит, что у него все медленно работает, то, возможно, проблема у самого клиента.
Если же клиент делает запрос и получает ответ через 2-3 секунды, тут уже, возможно, проблема кроется в сети.

Еще глубже

Если посмотреть в TCP пакет (или сегмент если быть точным), то можно увидеть тамStream index , который начинается обычно с нуля. Само поле будет называться tcp.stream.

По нему можно сделать правый клик и создать фильтр.

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

Еще один способ – сделать правый клик на самом пакете, выбратьConversation Filter и создать фильтр для l2 l3 l4 уровня соответственно.

В итоге мы опять увидим взаимодействие двух хостов.

И третий вариант - это одна из самых интересных фич -Follow TCP Stream . Для того чтобы его задействовать, нужно опять таки кликнуть правой кнопкой мыши на пакете и выбрать“Follow TCP Stream” . Появится окно, где будет наглядно продемонстрирован весь обмен между двумя узлами.

Если же зайти в менюStatistics – Conversations , то, выбирая закладки, можно увидеть статистику по таким “разговорам” и различные сессии, при этом можно отсортировать их по различным колонкам, например, по количеству переданных данных.

И прямо в этом окне можно правой кнопкой взывать контекстное меню и опять же применить как фильтр.

Со временем приходит опыт

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

Нажатие на эту кнопку приведет к открытию окнаExpert Infos . Того же результата можно добиться, пройдя в менюAnalyze – Expert Info .

В этом окне будет содержаться информация по найденным пакетам, разбитая на группы Errors, Warnings, Notes и Chats. Цветовая раскраска для этих групп выглядит следующим образом:
Ошибки - красный цвет
Предупреждения - желтый
Примечания - сине-зелёный (cyan)
Чат - серый

Wireshark содержит в себе мощный анализатор и умеет автоматически обнаруживать большое количество проблем, возникающих в сети. Как вы уже могли заметить, буквально везде можно использовать фильтры и Expert Info не является исключением. Для того чтобы создать такой фильтр, нужно использовать конструкциюexpert.severity . Например,expert.severity==error .

Грабим трафик!

Можно ли с помощью Wireshark узнать, что было скачано?

Да, можно. И сейчас это увидим. Вначале возьмем HTTP трафик. Сделаем правый клик по HTTP пакету -Protocol Preferences – и видим тут массу опций, которые непосредственно влияют на извлечение файлов из веб трафика. Для того чтобы увидеть, что можно извлечь из текущего дампа нужно перейти в менюFile – Export Objects – HTTP .

Появится окно, которое покажет все захваченные http объекты - текстовые файлы, картинки и т.д. Для того чтобы вытащить любой файл из этого списка, достаточно просто выделить его и нажать Save As.

Как можно заметить, рисунок был извлечен без каких-либо проблем.

Таким же способом, можно извлекать и потоковое видео/аудио.

Но на этом возможности Wireshark не заканчиваются!

Он умеет вытаскивать файлы и с протокола FTP. Для этого можно использовать знакомый уже Follow TCP Stream. В итоге отобразится только обмен по протоколу FTP, в котором нужно будет найти строку RETR, что собственно и будет означать передачу файла.

VoIP

Wireshark имеет несколько встроенных функций для работы с этой технологией. Он поддерживает массу голосовых протоколов - SIP, SDP, RTSP, H.323, RTCP, SRTP и другие. И, конечно же, умеет перехватывать и сохранять голосовой трафик для дальнейшего прослушивания.

Этот функционал как нельзя лучше подойдет для траблшутинга в сетях Voice over IP. МенюStatistics - Flow Graph покажет наглядную картину, как происходил весь обмен пакетами.

А вообще целое менюTelephony отведено для работы с голосовым трафиком. Например,Telephony – RTP – Show All Streams покажет подробно, что происходило с RTP, в частности jitter (параметр, который, вероятно, самый важный в голосе), что иногда сразу скажет о наличии проблем.

Нажав на кнопку “Analyze” , можно открыть окноRTP stream Analysis – и, выбрав там поток, можно его даже проиграть, используя кнопку player. Сначала отроется окно проигрывателя, в котором вначале нужно установить подходящее значение jitter и использовать кнопку decode.

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

Так же существует еще один способ прослушивания голосовых звонков - можно зайти в менюTelephony – VoIP Calls .

Откроется окно со списком совершенных звонков, где опять же можно нажать кнопку player, отменить нужные разговоры флажками и нажать play. Для того чтобы добиться приемлемого качества звучания, потребуется проиграться со значением поля jitter buffer, меняя его значение.

Небольшое отступление

Некоторое время назад появился сайтCloudShark.org .

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

Финальная битва

Напоследок рассмотрим как выглядит сканирование портов. Смотрим на дамп и видим, что вначале происходит ARP запрос и затем непосредственно начинается сканирование. Адрес нашего маршрутизатора 192.168.10.11, сканирование идет с адреса 192.168.10.101

Это, так называемое, SYN сканирование, когда идут SYN-пакеты на указанный диапазон портов. Так как большинство портов закрыто, маршрутизатор отвечает пакетами RST, ACK. Пролистав чуть ниже видим, что открыт telnet (tcp 23).

На это указывает то, что маршрутизатор ответил пакетом SYN, ACK. К слову, для фильтрации портов в сниффере можно использовать конструкции вида: tcp.srcport, tcp.dstport и tcp.port. Для протокола UDP всё аналогично - udp.srcport, udp.dstport, udp.port.

Итоги

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

В процессе написания использовались материалы сайтаwiki.wireshark.org/ Дампы с трафиком брались из разных источников, больше всего с сайта

© 2024 splav38.ru -- Новости. Советы. Обзоры. Программы. Безопасность