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 == 443 | TCP-трафик на порту 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)
