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

Как использовать Wireshark для захвата и анализа пакетов

7 min read Сетевые инструменты Обновлено 23 Nov 2025
Wireshark — захват и анализ сетевых пакетов
Wireshark — захват и анализ сетевых пакетов

Введение

Wireshark (ранее Ethereal) — свободное открытое ПО для анализа сетевых протоколов. Его используют для поиска и устранения сетевых проблем, изучения взаимодействия протоколов (TCP, DNS, HTTP, TLS и др.), обучения и аудита безопасности. Wireshark выделяется такими возможностями:

  • Захват пакетов в реальном времени и последующий оффлайн-анализ.
  • Представление уровня протоколов в человекочитаемом виде.
  • Цветовые правила для быстрого визуального различения типов трафика.

Определение в одну строку

  • Захват пакетов: процесс перехвата сетевых пакетов, проходящих через интерфейс, для анализа.

В этом руководстве используется Kali Linux как пример платформы, но инструкции действительны для большинства дистрибутивов Linux, Windows и macOS с учётом прав доступа.

Important: для захвата пакетов часто требуются права root или соответствующие привилегии. На Kali Wireshark обычно запускают с правами пользователя, которому разрешён доступ к захвату (capabilities) или от root.

Быстрый обзор интерфейса и запуск захвата

После запуска Wireshark вы увидите список доступных сетевых интерфейсов для захвата.

Список доступных интерфейсов для захвата трафика

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

Первичные пакеты, поступившие с интерфейса eth0

Promiscuous mode показывает все пакеты, проходящие через интерфейс, а не только адресованные вашему хосту. По умолчанию режим включён. Для настройки: меню Capture > Options и отметьте Enable promiscuous mode on all interfaces.

Включение режима прослушки (promiscuous mode)

Чтобы остановить захват, нажмите красный квадрат в левом верхнем углу. Для сохранения файла выберите File > Save, для открытия ранее сохранённого — File > Open.

Цветовая кодировка Wireshark

Wireshark использует цвета для визуальной группировки пакетов: например, светло-голубой для UDP, фиолетовый для TCP, чёрный для ошибок. Настроить или посмотреть правила можно через View > Coloring Rules.

Notes: цветовая схема — вспомогательный инструмент, не заменяющий фильтры.

Фильтрация пакетов: захватные и дисплейные фильтры

Важно различать два типа фильтров:

  • Захватные фильтры (capture filters) применяются до записи пакетов на диск. Они используют синтаксис BPF (Berkeley Packet Filter) и ограничивают объём данных. Пример: capture filter для порта 80:
port 80
  • Дисплейные фильтры (display filters) применяются уже к загруженному захвату и имеют более богатый синтаксис, специфичный для Wireshark. Пример дисплейного фильтра для TCP к конкретному IP:
ip.dst == 192.168.18.161 && tcp

Практические примеры дисплейных фильтров:

  • Все TCP-пакеты:
tcp
  • Все UDP-пакеты, направленные на порт 53 (DNS):
udp.port == 53
  • Пакеты с IP-источником 10.0.0.5:
ip.src == 10.0.0.5
  • HTTP-запросы (отрисовка на основе http.request):
http.request
  • TLS-соединения (адаптируйте для старых версий):
tls || ssl

Tip: захватные фильтры следует применять, когда требуется уменьшить объём записываемых данных или соблюдать правила конфиденциальности.

Пример: тест-драйв захвата и анализа

Следуйте этим шагам для практики.

  1. Запустите Wireshark и выберите интерфейс в списке. Нажмите на иконку захвата или дважды щёлкните по интерфейсу.
  2. Откройте браузер и загрузите страницу, например www.howtoforge.com.
  3. Остановите захват, нажав красную кнопку.
  4. В таблице вы увидите набор пакетов, переданных вашему хосту и отправленных им. Разные протоколы будут подсвечены разными цветами.

Окно захвата после загрузки веб-страницы

  1. Для поиска TCP-пакетов используйте строку фильтра: введите tcp и нажмите Enter.

  2. Чтобы отфильтровать пакеты, направленные на ваш хост, используйте:

ip.dst == 'your_system_ip' && tcp

Замените ‘your_system_ip’ на реальный IP, например 192.168.18.161.

Фильтрация пакетов на основе IP назначения и TCP

  1. Для просмотра полного потока TCP: правый клик на пакете -> Follow -> TCP Stream. Откроется окно с текстовой реконструкцией трафика.

Просмотр содержимого TCP-потока через Follow TCP Stream

Важно: если трафик зашифрован (TLS), содержание будет недоступно без соответствующих ключей.

Исследование пакетов: уровни и поля

Когда вы кликаете по пакету, окно ниже показывает расшифровку по уровням (Frame, Ethernet, IP, TCP, приложение). Правая часть окна часто содержит байтовую панель, где видно сырые данные.

Практическая альтернатива: правый клик по полю -> Apply as Filter -> выберите направление (selected, not selected, etc.) для быстрого создания фильтра.

Создание пользовательского фильтра из поля пакета

Полезные возможности Wireshark для глубокого анализа

  • Statistics > Conversations — диаграмма соединений между парами адресов.
  • Statistics > Protocol Hierarchy — доли протоколов в захвате.
  • Statistics > Endpoints — список конечных узлов и объёмы переданных данных.
  • Statistics > IO Graphs — визуализация трафика во времени.
  • Analyze > Expert Information — подсказки о проблемах (повторные передачи, ошибки).
  • File > Export Objects > HTTP — извлечение файлов из HTTP-потока.

Эти инструменты ускоряют задачу: где искать «шум», какие IP — ключевые, есть ли потеря пакетов или повторные передачи.

Когда Wireshark бесполезен или ограничен

  • Шифрованные протоколы без ключей (HTTPS/TLS) не раскроют полезного содержимого. Для расшифровки нужно иметь приватные ключи сервера или использовать механизм TLS key logging в клиенте.
  • Высокоскоростные сети и объёмные захваты могут привести к потерям пакетов при захвате: используйте capture filters, выделенный хост для захвата или аппаратные средства зеркалирования порта (SPAN).
  • Если у вас нет прав на захват — инструмент не поможет.

Альтернативные инструменты и комбинации

  • tcpdump — лёгкий консольный захват на основе BPF. Удобен для быстрой записи.
  • tshark — консольная версия Wireshark для автоматизации и скриптов.
  • ngrep — текстово-ориентированный поиск по пакетам.
  • Specialized appliances и потоковый анализ (NetFlow/IPFIX) для долгосрочного мониторинга.

Комбинируйте: используйте tcpdump для длительного захвата с фильтром, затем анализируйте файл в Wireshark.

Практический план расследования инцидента — Playbook

  1. Подготовка
    • Уточнить цель: какие протоколы, периметр, подозрительные IP.
    • Определить интерфейс для захвата и права доступа.
  2. Захват
    • Установить capture filter для уменьшения объёма (например, host 10.0.0.5 and tcp).
    • Запустить запись в файл с ротацией по размеру.
  3. Первичный анализ
    • Посмотреть Protocol Hierarchy, Conversations, Endpoints.
    • Использовать Display Filters для сужения области поиска.
  4. Глубокий анализ
    • Follow TCP Stream, Export Objects для извлечения содержимого.
    • Проверить повторы, задержки, RST и FIN.
  5. Отчёт и действия
    • Экспорт сохранить в pcap, создать снимки экранов и краткое резюме найденного.

Критерии приёмки

  • Захват содержит интересующий временной интервал и совпадающие IP/порты.
  • Ошибки (RST, duplicate ACK) задокументированы.
  • Извлечённые объекты сопоставлены с подозрительной активностью.

Роль-based чеклисты

  • Сетевой администратор:

    • Убедиться в корректности capture filter и отсутствии потерь во время захвата.
    • Проверить конфигурацию зеркалирования порта если нужно.
  • Инцидент-аналитик:

    • Фокус на необычных соединениях, объёмах данных и нестандартных портах.
    • Экспортировать предметы доказательств: pcap, извлечённые файлы.
  • Разработчик:

    • Отслеживать специфические протоколы приложения, воспроизводить запросы через cURL/HTTPie.

Snippets и быстрые фильтры — шпаргалка

  • Все пакеты между двумя хостами:
(ip.src == 10.0.0.5 && ip.dst == 10.0.0.8) || (ip.src == 10.0.0.8 && ip.dst == 10.0.0.5)
  • Все пакеты к/от порта 22 (SSH):
ssh || tcp.port == 22
  • TCP-поток с определённым идентификатором:
tcp.stream == 5
  • DNS-запросы или ответы:
dns
  • HTTP-ответы с кодом 500:
http.response.code == 500

Критические советы по производительности

  • Используйте ring buffer и ограничение размера файла при длительном захвате (File > Capture Options).
  • Для минимизации потерь применяйте фильтр capture вместо дисплейного.
  • Рассмотрите аппаратное зеркалирование портов на коммутаторе для пассивного захвата.

Безопасность и соответствие требованиям конфиденциальности

  • При захвате трафика могут записываться персональные данные. Убедитесь, что вы соблюдаете внутренние политики и законы о защите данных (например, GDPR для ЕС).
  • Ограничьте доступ к pcap-файлам и храните их в зашифрованном хранилище, если в них есть чувствительные данные.

Тест-кейсы и приёмка

  • Тест 1: Захватить HTTP-запрос к тестовому сайту, подтвердить, что Follow TCP Stream восстанавливает тело запроса и ответа.
  • Тест 2: Запустить захват с capture filter host X и убедиться, что файл не содержит пакетов с другими адресами.
  • Тест 3: Сымитировать сбой соединения (RST) и убедиться, что Statistics > Expert Information помечает проблему.

Глоссарий одной строкой

  • pcap: формат файла с захваченными пакетами.
  • BPF: синтаксис для захватных фильтров (Berkeley Packet Filter).
  • Display filter: фильтр, применяемый в Wireshark к отображаемому набору пакетов.

Заключение

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

Summary: практикуйтесь на тестовых pcap, комбинируйте tcpdump для длительного сбора и Wireshark для детального анализа, соблюдайте правила безопасности при работе с захватами.

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

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

Переменные окружения в Docker — как передать
DevOps

Переменные окружения в Docker — как передать

Throwaway‑аккаунт на Reddit: как создать и обезопасить
Безопасность

Throwaway‑аккаунт на Reddit: как создать и обезопасить

Сделать Excel по умолчанию на Mac
macOS

Сделать Excel по умолчанию на Mac

Как менять стандартные приложения в iOS 14
iOS

Как менять стандартные приложения в iOS 14

Как написать и опубликовать мемуары
Издательство

Как написать и опубликовать мемуары

Как создать продуктивную ежедневную рутину
Продуктивность

Как создать продуктивную ежедневную рутину