Гид по технологиям

Wireshark: руководство по захвату и фильтрации пакетов

11 min read Сеть Обновлено 03 Dec 2025
Wireshark: захват и фильтрация пакетов
Wireshark: захват и фильтрация пакетов

TL;DR

Wireshark — мощный анализатор сетевых пакетов для Linux, Windows и macOS. Научитесь правильно настраивать права, отличать фильтры захвата от фильтров отображения и писать корректные выражения фильтрации. Эта статья объясняет основные приёмы, ошибки новичков, полезные шаблоны фильтров и готовые чек-листы для администраторов, разработчиков и исследователей безопасности.

Быстрая навигация

  • Packet Analysis with Real Bite
  • Installing Wireshark
  • Starting Wireshark
  • Analyzing the Trace
  • Creating Your Own Filters
  • Birth, Life, Death, and Encryption
  • Other Useful Filter Templates

Сетевой коммутатор

Packet Analysis with Real Bite

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

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

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

Important: Если фильтры непонятны, вы будете тратить много времени на неверные результаты. Учитесь писать простые, однозначные выражения.

Installing Wireshark

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

Wireshark содержит большой объём кода и взаимодействует с операционной системой на низком уровне. Практика безопасности советует минимизировать код, запускаемый с повышенными правами. Лучший компромисс — разрешить захват без постоянного запуска всего приложения от root. Для этого создаётся группа “wireshark”, и права на захват даются через неё. Компоненты захвата будут кратковременно работать с привилегиями, а основной процесс — под обычным пользователем.

Установка на популярных дистрибутивах Linux:

sudo apt-get install wireshark
sudo dnf install wireshark
sudo pacman -Syu wireshark-qt

Во время установки появятся экраны с предложением не запускать Wireshark от root. На экране с подсказкой переместите красную подсветку на “” (нажмите Tab) и подтвердите пробелом.

Экран установки с рекомендацией не запускать Wireshark от root

На следующем экране переместите подсветку на “” и подтвердите пробелом, чтобы разрешить запуск захвата без root.

Экран выбора опции для запуска Wireshark без root с подсвеченным Yes

После установки добавьте себя в группу “wireshark”:

sudo usermod -a -G wireshark $USER

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

newgrp wireshark

Проверьте списки групп командой:

groups

Вы должны увидеть “wireshark” в списке.

Note: Разрешать захват только ограниченному набору пользователей безопаснее, чем запускать весь GUI от root.

Starting Wireshark

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

Wireshark &

Связанный материал: как запускать и контролировать фоновые процессы в Linux.

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

Главный интерфейс Wireshark с перечнем сетевых интерфейсов

Волнистая линия рядом с интерфейсом означает, что через него идёт трафик. Плоская линия — активности нет. Чтобы начать захват, щёлкните правой кнопкой по нужному интерфейсу (например, enp0s3) и выберите “Start Capture”.

Совет по захвату: по возможности записывайте “всё”, а затем используйте фильтры отображения при анализе. Так вы гарантируете, что не пропустите важное событие из-за слишком строгого фильтра захвата. На высоконагруженных сетях фильтры захвата оправданы для экономии места.

Обратите внимание: синтаксис фильтров захвата (BPF — Berkeley Packet Filter) отличается от синтаксиса фильтров отображения Wireshark.

Интерфейс Wireshark с активным захватом пакетов

Подсвеченные значки (слева направо):

  • Shark fin: синий — начать захват; серый — захват идёт.
  • Square: красный — остановить захват; серый — захват не идёт.
  • Shark fin с круговой стрелкой: зелёный — остановить текущий захват и предложить сохранить или сбросить данные.

Analyzing the Trace

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

Трасса, отображаемая в Wireshark в хронологическом порядке

Чтобы упростить чтение, включите разрешение имён устройств. Выберите View > Name Resolution и отметьте “Resolve Network Addresses”. Wireshark попытается сопоставить IP-адреса с именами устройств, что делает трассу более читабельной.

Трасса Wireshark с разрешёнными именами устройств

Столбец Info показывает краткую информацию, распознанную Wireshark. Часто там видны запросы ping, ответы и параметры сессий.

Столбец Info показывает запросы и ответы ping

По умолчанию Wireshark показывает все пакеты в порядке захвата. Между пакетами одного разговора часто окажутся пакеты других устройств. Чтобы изолировать диалог между двумя узлами, можно использовать автогенерируемые “Conversation Filter”. Правый клик по пакету -> Conversation Filter -> Ethernet создаст фильтр, показывающий последовательность пакетов именно для этой беседы.

Изолированный диалог ping в интерфейсе Wireshark

Wireshark автоматически сгенерирует фильтр и подсветит его зелёным, если синтаксис корректен. Для очистки нажмите “X” в строке фильтра.

Creating Your Own Filters

Фильтры отображения в Wireshark используют собственный язык выражений. Вот несколько базовых приёмов и пояснений.

Простой фильтр по адресу IPv4:

ip.addr == 192.168.4.20

Он выберет все пакеты, в которых IP==192.168.4.20 как отправитель или получатель. Обратите внимание на двойной знак равенства ==.

Чтобы фильтровать только по отправителю или только по получателю используйте ip.src и ip.dst:

ip.dst == 192.168.4.20 && ip.src == 192.168.4.28

Здесь && означает логическое И. Новички часто думают, что выражение покажет все пакеты между двумя адресами, но на самом деле оно выбирает пакеты, у которых ip.dst==192.168.4.20 и ip.src==192.168.4.28 одновременнo — то есть трафик именно в одном направлении.

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

(ip.src == 192.168.4.20 && ip.dst == 192.168.4.28) || (ip.src == 192.168.4.28 && ip.dst == 192.168.4.20)

Или, короче:

ip.addr == 192.168.4.20 && ip.addr == 192.168.4.28

Это второе выражение выберет пакеты, где один из адресов — 192.168.4.20 и другой — 192.168.4.28.

Фильтр по протоколу HTTP (запросы):

http.request

Чтобы исключить все пакеты от или к узлу, используйте отрицание ! и скобки:

!(ip.addr == 192.168.4.14)

Важно: ip.addr != 192.168.4.14 не эквивалентно в Wireshark — выражения с отрицанием нужно группировать правильно.

Поиск строк в полезной нагрузке TCP:

tcp contains youtube

Поиск ретрансмиссий:

tcp.analysis.retransmission

Это удобно для диагностики потери пакетов или проблем с производительностью.

Фильтрация флагов TCP (SYN/FIN): в Wireshark биты флагов сравниваются с 0 или 1. Пример для SYN:

tcp.flags.syn == 1

Примеры шаблонов фильтров и подсказки по автозаполнению

Если в строке фильтра ввести имя протокола и точку, Wireshark предложит поля, доступные для фильтрации: ip.addr, ip.src, ip.dst, ip.checksum и т.д. Полезные шаблоны:

  • Показать только HTTP-пакеты: http
  • Показать только DNS-пакеты: dns
  • Показать TCP с портом 4000 на стороне отправителя или получателя: tcp.port == 4000
  • Показать все TCP reset-пакеты: tcp.flags.reset == 1
  • Исключить ARP, ICMP и DNS: !(arp or icmp or dns)
  • Показать все ретрансмиссии: tcp.analysis.retransmission
  • Фильтровать флаг SYN: tcp.flags.syn == 1

Birth, Life, Death, and Encryption

Рассмотрим установку и разрыв TCP-сессий, а также влияние шифрования на анализ трафика.

Подключение по TCP инициируется трёхсторонним рукопожатием (three-way handshake):

A -> SYN -> B

A <- SYN, ACK <- B

A -> ACK -> B

Первые два пакета (SYN и SYN/ACK) часто выделены в интерфейсе, и по ним видно начало сессии.

Wireshark показывает SSH-соединение между двумя компьютерами

Если вы пролистаете таблицу колонок вправо, увидите последовательность SYN, SYN/ACK и ACK.

Wireshark показывает пакеты трёхстороннего рукопожатия

SSH использует шифрование. После установления соединения полезная нагрузка пакетов будет зашифрована и не доступна для простого поиска по строкам. Тем не менее, управляющие пакеты TCP (например, ACK) видимы и помогают понять состояние канала.

Завершение соединения — четырёхсторонний обмен: один конец посылает FIN, другой подтверждает ACK и отсылает FIN в ответ, затем первый ACK подтверждает закрытие.

A -> FIN -> B

A <- FIN, ACK <- B

A -> ACK -> B

Иногда FIN прилетает вместе с ACK:

A -> FIN, ACK -> B

A <- FIN, ACK <- B

A -> ACK -> B

Если нужно отфильтровать трафик конкретного протокола (например, SSH) и узла, используйте составной фильтр:

ip.addr == 192.168.4.25 && ssh

Это оставит только SSH-трафик к/от 192.168.4.25.

Частые ошибки и как их избегать

  • Путаница между фильтром захвата и фильтром отображения. Захват ограничит то, что попадёт в файл; отображение просто скрывает пакеты. Всегда думайте, что вы хотите записать — если есть сомнения, записывайте всё.
  • Использование ip.addr != X вместо !(ip.addr == X) при сложных выражениях ведёт к неправильным результатам.
  • Ожидание, что ip.addr == A && ip.addr == B вернёт пакеты в обоих направлениях между A и B (на самом деле это корректный приём, но многие новички путаются с && и ||).
  • Поиск строки в зашифрованном трафике — бесполезно. Для анализа SSH/HTTPS ориентируйтесь на метаданные и поведение пакетных счетчиков.

Important: Проверяйте синтаксис фильтра — строка подсветится зелёным, когда выражение корректно.

Практическое руководство: шаг за шагом (SOP)

  1. Планируйте цель захвата: какие хосты/порты/протоколы — важно ли сохранять все пакеты?
  2. Настройте права: добавьте себя в группу wireshark.
  3. Запустите Wireshark и выберите интерфейс.
  4. При необходимости установите фильтр захвата BPF (если сеть очень нагружена).
  5. Запустите захват и воспроизведите проблему.
  6. Остановите захват и сохраните файл .pcap
  7. Включите разрешение имён и используйте автогенерируемые Conversation/Follow Stream, чтобы изолировать разговоры.
  8. Применяйте фильтры отображения, анализируйте RTT, ретрансмиссии и флаги TCP.
  9. Сохраните экспортированные пакеты и вывод анализа как доказательство или артефакт расследования.

Критерии приёмки: В файле захвата есть все пакеты, относящиеся к инциденту, имена узлов разрешены, и сохранена копия *.pcap для дальнейшего анализа.

Чек-листы по ролям

Администратор сети:

  • Проверить права на захват (wireshark group).
  • Записать полную трассу при воспроизведении события.
  • Зафиксировать время начала/окончания захвата в локальном часовом поясе.
  • Проводить фильтрацию после захвата.

Разработчик приложений:

  • Записать трафик между клиентом и сервером при воспроизведении бага.
  • Отследить последовательность запрос/ответ и коды протоколов.
  • Использовать Follow TCP Stream для восстановления сессий.

Аналитик безопасности:

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

Шаблоны фильтров — шпаргалка

Общие примеры:

  • Все HTTP: http
  • Все DNS: dns
  • TCP порт 22 (SSH): tcp.port == 22
  • Только входящие к 10.0.0.5: ip.dst == 10.0.0.5
  • Пакеты между хостами A и B (в обоих направлениях): ip.addr == 10.0.0.5 && ip.addr == 10.0.0.6
  • Исключить ARP/ICMP/DNS: !(arp or icmp or dns)
  • Ретрансмиссии: tcp.analysis.retransmission
  • SYN пакеты: tcp.flags.syn == 1
  • RST пакеты (сброс): tcp.flags.reset == 1

Пример фильтра для сбора только HTTP-запросов от конкретного клиента:

ip.src == 192.168.1.50 && http.request

Когда фильтры подводят (контрпримеры)

  • Фильтр захвата слишком строг: вы не записали нужные пакеты. Например, указали только port 80, а трафик был на 8080.
  • Фильтр отображения ошибочно сформирован: ip.addr != X при вложенных выражениях может дать неожиданные результаты.
  • Поиск строк в TCP полезной нагрузке не находит данные в зашифрованном соединении (SSH/HTTPS).

Альтернативы: если вам нужен глубокий анализ TLS, используйте перехват на точке, где трафик ещё не зашифрован (reverse proxy) или собирайте логи приложений.

Модель мышления и эвристики

  • Capture-first, filter-later: записывайте больше, чем меньше.
  • Метаданные важнее содержимого в зашифрованном трафике: частота пакетов, размеры и задержки говорят о проблеме.
  • Разделяй и властвуй: изолируйте разговоры по направлению и протоколам.

Факт-бокс (ключевые моменты):

  • Захват — запись пакетов (файл .pcap).
  • Отображение — фильтр, который скрывает/показывает пакеты в UI.
  • BPF — язык фильтров захвата (отличается от фильтров отображения Wireshark).

Мини-методология для расследования сетевой проблемы

  1. Определите время и признаки инцидента.
  2. Запишите полную трассу на промежутке времени, включающем инцидент.
  3. Разрешите имена и выделите интересующие диалоги.
  4. Проанализируйте трёхсторонние рукопожатия и завершения сессий.
  5. Проверьте наличие ретрансмиссий и RST.
  6. Экспортируйте подозрительные потоки для дальнейшего изучения.

Decision tree для первичной диагностики (Mermaid)

flowchart TD
  A[Начало: есть жалоба на сеть?] --> B{Признак: потеря пакетов?}
  B -- Да --> C[Собрать трассу полного интерфейса]
  B -- Нет --> D{Задержки или ошибки приложений?}
  D -- Задержки --> C
  D -- Ошибки приложений --> E[Записать трафик приложения]
  C --> F{Ретрансмиссии > норм?}
  F -- Да --> G[Проверить MTU, помехи, дропы маршрутизатора]
  F -- Нет --> H{Много SYN без продолжения?}
  H -- Да --> I[Возможная атака или недоступный сервис]
  H -- Нет --> J[Анализировать метрики приложения]
  I --> K[Закрепить трассу, экспортировать потоки]
  G --> K
  E --> K

Тесты и критерии приёмки

  • Захват должен содержать пакеты в интересующем временном окне.
  • Разрешённые имена устройств облегчают анализ.
  • Фильтры отображения валидны (подсветка зелёным).
  • Критические потоки экспортированы в отдельные файлы .pcap.

Советы по безопасности и приватности

  • Храните файлы захвата в защищённом хранилище: они могут содержать пароли и личные данные.
  • Ограничьте доступ к файлам .pcap и журналам.
  • При работе с личными данными учитывайте правила локальной регуляции (GDPR/LPD и т.д.): минимизируйте круг лиц, имеющих доступ к данным, и удаляйте ненужные захваты.

Совместимость и советы миграции

  • Файлы .pcap совместимы между версиями Wireshark, но новые функции декодирования могут отсутствовать в старых версиях.
  • Для воспроизведения расшифрованного TLS-трафика требуется доступ к приватным ключам или использование точки дешифрования, где трафик ещё не зашифрован.

Полезные приёмы ускоренного анализа

  • Follow TCP Stream — для воссоздания сессии в читаемом виде.
  • Statistics > Conversations и Statistics > Endpoints — для быстрого выявления топовых пар и узлов.
  • IO Graphs — для визуализации трафика по времени.

Краткая галерея особенностей (edge cases)

  • VLAN-теги: пакеты могут быть помечены 802.1Q и не видны, если декодирование VLAN отключено.
  • IPv6 соседство: адреса link-local видны только на соответствующем интерфейсе.
  • Подтасовка MAC: устройства с поддельными MAC могут мешать анализу по аппаратным адресам.

Однострочный глоссарий

  • Захват: запись сетевых пакетов в файл.
  • Трасса: сохранённый набор пакетов (trace/.pcap).
  • Фильтр захвата: BPF-выражение, ограничивающее записи.
  • Фильтр отображения: выражение Wireshark, скрывающее/показывающее пакеты.

Резюме

  • Настройте права и группу wireshark; не запускайте GUI от root.
  • Предпочитайте записывать полный трафик и фильтровать позже, если это возможно.
  • Чётко различайте фильтры захвата и фильтры отображения.
  • Используйте готовые шаблоны фильтров и автозаполнение полей.
  • Для зашифрованного трафика анализируйте метаданные и поведение, а не содержимое.

Important: Wireshark — сложный инструмент. Начинайте с простых фильтров, постепенно расширяя набор приёмов и шаблонов. Практика и повторный разбор реальных трасс — лучший способ освоения.

Интерфейс Wireshark с выделенным фильтром ip.addr == 192.168.4.20

Wireshark с фильтром http.request

Wireshark с фильтром исключающим адрес 192.168.4.14

Wireshark с фильтром tcp contains youtube

Wireshark с показом ретрансмиссий tcp.analysis.retransmission

Короткое объявление для команды (100–200 слов)

Wireshark — это основной инструмент для анализа сетевых проблем и расследования инцидентов. В этом материале описаны безопасные практики установки, как правильно настроить права через группу wireshark, отличия фильтров захвата и отображения, а также набор полезных шаблонов фильтров. Включены чек-листы для администраторов, разработчиков и аналитиков безопасности, мини‑план действий (SOP), шаблоны фильтров и decision‑tree для быстрой диагностики. Если вы работаете с зашифрованным трафиком — ориентируйтесь на метаданные и поведение потоков; для глубокого анализа TLS используйте точки дешифрования или логи приложений. Сохраните это руководство для быстрого доступа при расследовании инцидентов.

Social preview

OG Title: Wireshark: захват и фильтрация пакетов OG Description: Быстрое руководство по установке, фильтрам и безопасности при работе с Wireshark. Шаблоны фильтров и чек-листы для профессионалов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Удаление занятых шрифтов в Windows через реестр
Windows

Удаление занятых шрифтов в Windows через реестр

Закладки в Safari на iPhone — быстрое руководство
iPhone

Закладки в Safari на iPhone — быстрое руководство

Закрепить ссылки и фото в Сообщениях iPhone
Мобильные устройства

Закрепить ссылки и фото в Сообщениях iPhone

Запуск HBO Now на Ubuntu через Pipelight
Linux

Запуск HBO Now на Ubuntu через Pipelight

Установить Photoshop без Creative Cloud
Программное обеспечение

Установить Photoshop без Creative Cloud

Быстрая разблокировка Samsung по отпечатку
Мобильные советы

Быстрая разблокировка Samsung по отпечатку