Wireshark — это мощный сетевой анализатор, который может использоваться для анализа трафика, проходящего через сетевой интерфейс вашего компьютера. Он может понадобиться для обнаружения и решения проблем с сетью, отладки ваших веб-приложений, сетевых программ или сайтов. Wireshark позволяет полностью просматривать содержимое пакета на всех уровнях: так вы сможете лучше понять как работает сеть на низком уровне.
Все пакеты перехватываются в реальном времени и предоставляются в удобном для чтения формате. Программа поддерживает очень мощную систему фильтрации, подсветку цветом, и другие особенности, которые помогут найти нужные пакеты. В этой инструкции мы рассмотрим, как пользоваться Wireshark для анализа трафика. Недавно разработчики перешли к работе над второй веткой программы Wireshark 2.0, в неё было внесено множество изменений и улучшений, особенно для интерфейса. Именно её мы будем использовать в этой статье.
Основные возможности Wireshark
Перед тем, как переходить к рассмотрению способов анализа трафика, нужно рассмотреть, какие возможности поддерживает программа более подробно, с какими протоколами она может работать и что делать. Вот основные возможности программы:
Основы Wireshark. Настройка, захват и расшифровка трафика
- Захват пакетов в реальном времени из проводного или любого другого типа сетевых интерфейсов, а также чтение из файла;
- Поддерживаются такие интерфейсы захвата: 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.
ЧТО Я МОГУ СДЕЛАТЬ ЗНАЯ ТВОЙ IP АДРЕС

После этого откроется следующее окно, уже с потоком пакетов, которые проходят через интерфейс. Это окно тоже разделено на несколько частей:
- Верхняя часть — это меню и панели с различными кнопками;
- Список пакетов — дальше отображается поток сетевых пакетов, которые вы будете анализировать;
- Содержимое пакета — чуть ниже расположено содержимое выбранного пакета, оно разбито по категориям в зависимости от транспортного уровня;
- Реальное представление — в самом низу отображается содержимое пакета в реальном виде, а также в виде 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 — запрашиваемый адрес сайта.
Для указания отношения между полем и значением в фильтре можно использовать такие операторы:
Для объединения нескольких выражений можно применять:
- — оба выражения должны быть верными для пакета;
- || — может быть верным одно из выражений.
Теперь рассмотрим подробнее на примерах несколько фильтров и попытаемся понять все знаки отношений.
Сначала отфильтруем все пакеты, отправленные на 194.67.215.125 (losst.pro). Наберите строку в поле фильтра и нажмите Apply. Для удобства фильтры Wireshark можно сохранять с помощью кнопки Save:

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

Дальше отберём пакеты с ttl меньше 10:

Также мы можем отобрать переданные большие файлы:
Отфильтровав 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 или сразу открыть полученный файл другой программой, например плеером.
Выводы
В этой статье мы рассмотрели, как пользоваться Wireshark 2 для анализа сетевого трафика, а также примеры решения проблем с сетью. Это очень мощная утилита, которая имеет очень много функций. Всю её функциональность невозможно охватить в одной статье, но приведенной здесь базовой информации будет вполне достаточно, чтобы вы могли сами освоить всё необходимое.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Источник: losst.pro
Как использовать GeoIP в wireshark
В некоторых версиях программы wireshark есть возможность использовать GeoIP и определять геолокацию ip. Wireshark , начиная от версии 2.6 и выше могут использовать базы данных MaxMind для поиска по стране, городу, номеру автономной системы, координатам и другой информации для IP-адреса. Платные базы более точны. Нам для тестов подойдет и бесплатный вариант, страна и город будут доступны для определения.
Итак как же использовать GeoIP в wireshark? Начать следует с определения того, поддерживает ли ваша версия wireshark использование GeoIP. Для этого, запустите программу и пройдите по меню в:
Help —> About Wireshark
Откроется окно изображенное на Рис 1
Рис 1. Окно About Wireshark
Если вы нашли такую информацию как: with MaxMind DB resolver, значит ваша версия поддерживает GeoIP и вы можете продолжать эксперимент с геолокацией.
В старых версиях программы будет написано with GeoIP, это тоже подтверждает поддержку геолокации.
Дистрибутив программыWireshark не содержит в себе базы MaxMind по умолчанию, их нужно скачивать отдельно. Это следующий шаг.
Скачивание и установка баз
Чтобы скачать базы МаксМайнд переходим на сайт https: //dev.maxmind.com/geoip/legacy/geolite/ пролистываем до раздела Downloads и скачиваем 3 базы (Важно загружать именно формат binary) как указано на Рис. 2
Не всегда срабатывает с базами с сайта. Если не получилось, можете скачать по прямой ссылке с яндекс диска. Я пробовал с этими базами, вся настройка ниже и результат на основе этих баз СКАЧАТЬ

Рис. 2 Загрузка бесплатных баз
Для удобства, можно отложить эти архивы в сторонку, они пригодятся нам немного позже.
Для начала нам необходимо подготовить папку для размещения этих баз и указать его в настройках wireshark. Я предлагаю вам два варианта размещения, в C:ProgramDataGeoIP или же C:Program FilesWireshark создать папку GeoIP. Это лишь рекомендация, для удобства поиска баз, ну в конце концов чтобы файлы программы были при ней.
Распаковываем наши готовые 3 архива в подготовленную папку получится что-то похожее на это:

После всех действий с базами, необходимо указать в настройках программы, путь к базам. Для этого идем в меню Edit -> Preferences -> Name Resolution откроется окно как на Рис. 3

Рис. 3 Окно настроек
Жмем кнопку Edit и указываем путь к каталогу в котором лежат базы. Для этого Нажимаем на + и выбираем папку. Путь указали, теперь необходимо настроить протокол.
Переходим в этом же окне, которое изображено на Рис. 3, в пункт Protocols, а точнее раскрываем его. в списке ищем либо IP (в старых версях), либо IPv4 (в новых версиях), нашли, нажимаем. Справа появились настройки, нам необходимо активировать Enable IPv4 geolocation (Включить геолокацию IPv4) либо Enable GeoIP lookups, отметили галочкой пункт, нажимаем ОК в окне настроек. Перезапускаем wireshark.
Пробуем захватить трафик и если вы все верно настроили будет примерно такой результат.

Все что в квадратных скобках — это дополнительная информация создаваемая самой программой wireshark. В нашем случае, создаются дополнительные поля с геолокацией на основе добавленных баз.
Источник: nordd.ru
Анализатор сетевого трафика Wireshark
Программа Wireshark относится к классу программ анализаторов сетевого трафика или сниферам.
Принцип работы анализатора трафика (снифера)
Название Сниффер происходит от английского слова sniff (нюхать). Принцип действия снифера прост — он перехватывает пакеты с сетевого интерфейса Вашего компьютера их в удобочитаемой для человека форме. Используя Wireshark Вы можете полностью в реальном времени контролировать ВСЮ! сетевую активность на любом сетевом интерфейсе Вашего компьютера. Вы можете посмотреть MAC-адреса сетевых карт в пакетах, порты источника и назначения транспортных протоколов TCP и UDP, IP-адреса источника и назначения, пакеты служебных протоколов ICMP, а также детально, буквально побайтно увидеть содержимое любых служебных полей и полей данных.
Установка Wireshark
Wireshark распространяется бесплатно по лицензии GNU (General Public License). Скачайте с официального сайта инсталлятор Wireshark. Запустите инсталлятор и кликните кнопку «Next» (сноска 1)

Прочитайте лицензию и кликните кнопку «I Agree» (сноска 2)

Кликните галочку «Wireshark» (сноска 3), выключите все остальные галочки и кликните кнопку «Next»

Кликните на свое усмотрение галочки (сноска 5) Wireshark Start Menu Item (добавит пункт в главное меню Windows), Wireshark Desktop Icon (добавит иконку на рабочий стол), Wireshark Quick Launch Icon (добавит иконку в панель быстрого запуска). Включите точку «Associate trace file extensions to Wireshark» (сноска 6) и Windows ассоциирует перечисленые расширения файлов с Wireshark. Иными словами, при двойном клике на файлы с перечисленными расширениями их автоматически будет открывать Wireshark. Кликните кнопку «Next» (сноска 7).

Задайте папку, в которую будет установлен Wireshark (сноска 8) и кликните кнопку «Next» (сноска 9)

Включите галочку «Install WinPcap 4.1.3» (сноска 10) и кликните кнопку «Next» (сноска 11). WinPcap — это специальный драйвер, который позволяет перехватывать пакеты с сетевого интерфеса и передавать их Wireshark для визуализации пользователю

Отключите галочку USPPcap (сноска 12). Это драйвер для перехвата данных USB-устройств. Кликните кнопку «Install» (сноска 13)

Далее начнется установка Wireshark (сноска 14)

Посреди установки Wireshark будет запущена установка драйвера WinPCap. Кликните кнопку «Next» (сноска 15)

Прочитайте лицензию и кликните кнопку «I Agree» (сноска 16)

Включите галочку «Automatically start the WinPcap driver at boot time» (сноска 17), чтобы драйвер WinPcap автоматически загружался при старте Windows. Кликните кнопку «Install» (сноска 18)

Кликните кнопку «Finish» (сноска 19) и установка WinPcap будет завершена

Дождитесь завершения установки Wireshark (сноска 20) и кликните кнопку «Next» (сноска 21)

Кликните кнопку «Finish» (сноска 22) и запустите Wireshark двойным кликом по иконке на рабочем столе (сноска 23)

Основы работы с анализатором тафика Wireshark

Для начала нужно выбрать сетефой интерфейс, который будет «прослушивать» Wireshark. Для этого кликните кнопку настроек Wireshark (сноска 24).
Выберите «Беспроводное сетевое подключение», если работаете с ноутбука через WiFi или «Подключение по локальной сети», если ваш компьютер подключен к Интернету через кабель (сноска 25). Для наглядности Wireshark в поле «Traffic» для каждого сетевого подключения показывает график активности. Кликните кнопку «Start», чтобы запустить «прослушивание» сетевого интерфейса (сноска 26)

Интерфейс Wireshark достаточно прост и состоит из 3х основных окон. В окне под сноской 27 будут в реальном времени отображаться все пакеты, проходящие через сетевой интерфейс. Вы можете кликнуть на любой пакет в окне 27 и в окне под сноской 28 получить детальную информацию о пакете (MAC-адреса сетевых карт, IP-адреса отправителя и получателя, TCP или UDP порты отправителя и получателя и т.д). В окне под сноской 29 выводится побайтово сам пакет, в том виде как он перехвачен из сетевой карты.
Как только Wireshark начнет «слушать» трафик, в окне под сноской 27 повалят все пакеты с сетевого интерфейса и разобраться в этой «куче» будет невозможно. Для удобства задействуйте фильтр пакетов Wireshark. Условие для фильтра вводится в текстовое поле под сноской 30 и применяется кликом по кнопке сноска 31. Можно задавать одиночные или групповые условия:
Одиночные условия выглядят так:
tcp.port == 25 — отображать только TCP-пакеты почтового протокола SMTP
tcp.dstport == 25 — отображать только TCP-пакеты протокола SMTP с портом назначения 25 (SMTP пакеты, идущие от Вашего компьютера на почтовые сервера)
tcp.srcport == 80 — отображать только TCP-пакеты протокола HTTP с портом источника 80 (HTTP пакеты, идущие от сайтов из Интернета на Ваш компьютер)
udp.port == 53 — отображать только UDP-пакеты протокола DNS
udp.dstport == 53 — отображать только UDP-пакеты протокола DNS с портом назначения 53 (пакеты идущие с Вашего компьютера на DNS сервера)
ip.addr == 8.8.8.8 — отображать пакеты, в которых присутствует IP-адрес DNS-серверов google
ip.dst == 8.8.8.8 — отображать пакеты, идущие с Вашего компьютера на IP-адрес DNS-серверов google
ip.src == 8.8.8.8 — отображать пакеты, идущие DNS-серверов google на Ваш компьютер
Групповые условия выглядят так:
udp.port == 53 ip.dst == 8.8.8.8 — отображать только DNS запросы И предназначающиеся только серверам google
— операция «И» требует одновременного исполнения обоих условий
tcp.dstport == 80 || udp.dstport == 53 — отображать HTTP-пакеты на WEB-сервера ИЛИ запросы DNS
|| — операция «ИЛИ» требует исполнения одного из условий или сразу обоих.
Комбинируйте условия как угодно, для того, чтобы из «кучи» выделить только нужные Вам пакеты

Контроль трафика по IP-адресам

Теперь задаем условие для фильтра Wireshark выводить только пакеты, в которых присутствует IP-адрес рамблера (сноска 35) и применяем фильтр (сноска 36). Теперь убедитесь что в браузере отключена работа через прокси, проксификаторы не запущены и заходите на сайт рамблера. В окне ниже должны появится пакеты, кликнув на которые Вы убедитесь, что в них присутствует только Ваш IP-адрес (сноска 37) и IP-адрес сервера рамблера (сноска 38). Далее настройте ваш браузер на работу через прокси-сервер, зайдите на сайт рамблера и вы увидите, что новых пакетов Wireshark не выводит, а сайт работает. Это свидетельствует о том что трафик пошел через прокси-сервер, а не напрямую на рамблер.


Вводим в условие фильтра IP-адрес прокси-сервера (сноска 35), применяем фильтр (сноска 36) и убеждаемся, что IP-источника, по-прежнему Ваш (сноска 41), а вот IP-назначения уже прокси-сервера (сноска 42). Если Вы кликните на любой HTTP-накет, то увидите в его поле данных, запросы на рамблер (сноска 43)
Контроль трафика по портам TCP-портам
Проверка по TCP-портам может пригодиться при контроле трафика на ресурсы, которые имеют несколько серверов в разными IP. Например почтовый сервис mail.ru расмолагаеся на многоих серверах и при каждом обращении Вас будут отправлять на разные сервера с разными IP. Однако передача почты через любой IP сервиса mail.ru всегда ведется по одному и тому же 25-му порту. Или 465-му порту, если почта передается по шифрованному протоколу TLS.
В статье о принципах работы проксификаторов мы рассказывали об инкапсуляции пакетов одного прикладного уровня (например SMTP) в пакеты другого протокола прикладного уровня HTTP. Проверим это теперь при помощи снифера.
1. Выставите условия фильтра как показано под сноской 44. И включите фильтр кликом на кнопку под сноской 45
2. Отключите проксификатор, если он у Вас включен, настройте Ваш почтовый клиент на прямое взаимодействие с почтовым сервером и отправьте письмо. Снифер должен отобразить пакеты, у которых TCP-порт источника будет произвольный (сноска 47), а TCP-порт назначения должен быть 25, если Ваш клиент работает по протоколу SMTP без шифрования или 465, если Ваш почтовый клиент использует шифрование TLS (сноска 48).

3. Теперь включите проксификатор (сноска 49) и отправьте почтовое сообщение еще раз. TCP-порт источника во всех пакетах опять будет произвольный (сноска 51), а вот пакеты с TCP-портами назначения 25 и 465 должны пропасть и вместо них должны быть пакеты исключительно с TCP-портом назначения прокси сервера 7951 (сноска 52). Это и будет свидетельствовать о том, что при включенном проксификаторе Proxyfier весь трафик направляется на прокси-сервер. IP-адрес прокси-сервера будет отображен под сноской 50. Для корректной работы Проксифера мы рекомендуем использовать платные прокси


На рисунке ниже подробно рассмотен HTTP-пакет (сноска 53), с помещенным в него методом CONNECT, который указывает прокси-серверу подключиться к северу аутентификации mail.ru 217.69.139.160 на порт 465 для шифрованой педачи почты по протоколу TLS . Кликните на этот пакет и ниже Вы увидите, что пакет направляется через прокси-сервер IP (сноска 54) и порт TCP (сноска 55). Раскройте плюсиком содержимое пакета HTTP (Hypertext Transfer Protocol) и Вы увидите метод CONNECT, помещенный в него (сноска 56)
Источник: super-proxy.net