Открыть сервисСервис

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

Wireshark — это свободный кроссплатформенный анализатор сетевых протоколов с открытым исходным кодом, предназначенный для перехвата, декодирования и интерактивного анализа сетевого трафика в реальном времени. Программа работает под управлением Windows, macOS, Linux и других UNIX-подобных систем, поддерживает более тысячи сетевых протоколов и является одним из наиболее распространённых инструментов сетевого анализа в мире. Wireshark распространяется по лицензии GNU GPL и разрабатывается сообществом при участии компании Riverbed (ранее — CACE Technologies).

Возникновение и развитие

Wireshark возник в 1998 году как проект Ethereal, созданный студентом Джеральдом Комбсом. В 2006 году из-за конфликта с правообладателем названия Ethereal проект был переименован в Wireshark; исходный код и вся история разработки были сохранены. Программа развивается открытым сообществом: на неё работают десятки постоянных разработчиков, а поддержка новых протоколов добавляется регулярно. Среди поддерживаемых протоколов — TCP/IP, HTTP/HTTPS (при наличии ключей шифрования), DNS, DHCP, ARP, ICMP, SMB, SSH, TLS, BGP, OSPF и сотни других.

Установка и запуск

Для установки на Windows используется MSI-пакет с официального сайта wireshark.org. В дистрибутивах Linux программа доступна в стандартных репозиториях (в Debian и Ubuntu — пакет wireshark, в Fedora и RHEL — wireshark-cli и wireshark). В macOS поддерживается установка через Homebrew (brew install wireshark).

При первом запуске на Windows программа предлагает установить драйвер Npcap (или устаревший WinPcap) — компонент, обеспечивающий доступ к сетевому интерфейсу на уровне захвата пакетов. На Linux для работы с графическим интерфейсом пользователь должен входить в группу wireshark или запускать программу с правами root, иначе доступ к интерфейсам будет запрещён.

Захват трафика

После запуска Wireshark отображает список доступных сетевых интерфейсов с индикатором активности. Для начала захвата необходимо выбрать нужный интерфейс (например, Ethernet или Wi-Fi) и нажать кнопку «Start capturing packets» (иконка акулы). Программа немедленно начинает записывать все пакеты, проходящие через интерфейс.

Для ограничения объёма захвата используются фильтры захвата (capture filters), задаваемые до начала записи в синтаксисе BPF (Berkeley Packet Filter). Примеры:

  • host 192.168.1.1 — только пакеты, связанные с указанным хостом;
  • tcp port 80 — только TCP-трафик на порту 80;
  • not arp — исключить ARP-пакеты.

Записанные сессии сохраняются в формате .pcap или .pcapng и могут быть открыты позже для анализа.

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

Основной рабочий инструмент при анализе — фильтры отображения (display filters), которые не ограничивают захват, а отфильтровывают уже записанные пакеты в окне списка. Синтаксис фильтров отображения богаче BPF. Наиболее употребимые выражения:

ФильтрНазначение
ip.addr == 10.0.0.1пакеты с указанным IP-адресом в любом поле
tcp.port == 443TCP-трафик на порту 443
http.request.method == "GET"HTTP-запросы методом GET
dnsвсе DNS-запросы и ответы
tcp.flags.syn == 1 && tcp.flags.ack == 0только SYN-пакеты (начало соединения)
frame.len > 1000пакеты длиннее 1000 байт

Некорректный фильтр подсвечивается красным, корректный — зелёным. Wireshark предлагает автодополнение и справку по полям протоколов.

Анализ пакетов

Окно анализа состоит из трёх панелей. Верхняя — список перехваченных пакетов с колонками: номер, время, источник, назначение, протокол, длина и краткое описание. Средняя панель — дерево декодированных заголовков выбранного пакета по уровням модели OSI. Нижняя — содержимое пакета в шестнадцатеричном и ASCII-представлении; выделение строки в дереве подсвечивает соответствующие байты.

Для выделения логической группы пакетов используется функция Follow TCP Stream (правый клик по пакету → Follow → TCP Stream): она собирает все сегменты соединения в единый поток, что удобно для анализа HTTP-сессий, диалогов по SMTP и других текстовых протоколов.

Статистика

Wireshark предоставляет встроенные инструменты статистики в меню Statistics:

  • Capture File Properties — общая информация о файле захвата;
  • Conversations — таблица сетевых диалогов по IP, TCP, UDP;
  • Protocol Hierarchy — распределение трафика по протоколам;
  • Endpoints — список участвующих хостов и объёмы трафика;
  • IO Graphs — график интенсивности трафика во времени;
  • DNS и HTTP — сводные отчёты по соответствующим протоколам.

Типовые задачи

Wireshark применяется для диагностики сетевых проблем: обнаружения повторных передач TCP, анализа времени отклика, выявления неработающих DNS-запросов, проверки корректности DHCP-взаимодействия. Программа используется при расследовании инцидентов информационной безопасности, при разработке и отладке сетевых приложений, а также в учебных целях — для наглядного изучения работы протоколов.

Особенности работы с шифрованием

Содержимое соединений, защищённых TLS/SSL, по умолчанию недоступно для просмотра. Для расшифровки HTTPS-трафика необходимо экспортировать секреты мастер-ключа из браузера или сервера через механизм SSLKEYLOGFILE и указать файл с ключами в настройках Wireshark (Edit → Preferences → Protocols → TLS → (Pre)-Master-Secret log filename). Без ключей доступны только метаданные соединения: адреса, порты, SNI и сертификаты.

Ограничения

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

Источники:

  • Официальная документация Wireshark (wiki.wireshark.org)
  • К. Снурников, «Wireshark 101: The Practical Guide to Packet Analysis»
  • Р. Бейкер, «Wireshark Network Analysis»
  • RFC 1180 — «A TCP/IP Tutorial»
  • Справка по BPF-фильтрам (tcpdump.org)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru