Применение фильтров захвата в Tshark

WiresharkBeginner
Практиковаться сейчас

Введение

В этом практическом занятии (лабораторной работе) вы научитесь использовать фильтры захвата Tshark для выборочного захвата сетевых пакетов. Вы изучите синтаксис фильтров Wireshark и потренируетесь захватывать TCP-трафик на определенных интерфейсах с помощью команд, таких как tshark -f "tcp".

В ходе практических упражнений вы будете фильтровать TCP-пакеты на интерфейсе eth1, анализировать детали пакетов и сохранять результаты в файл tcp.pcap. В рамках данной лабораторной работы вы получите практический опыт применения фильтров захвата для эффективного выделения и изучения целевого сетевого трафика.

Изучение синтаксиса с помощью справочной документации

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

  1. Сначала откройте терминал в виртуальной машине LabEx, если он еще не открыт. Рабочая директория по умолчанию - ~/project. Именно здесь мы будем выполнять все наши команды.

  2. Чтобы получить доступ к полной документации по фильтрам Wireshark, выполните следующую команду в терминале:

man wireshark-filter

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

  1. Во время просмотра справочной страницы (используйте клавишу Enter для навигации), обратите внимание на следующие ключевые разделы, которые являются основой для фильтров захвата:

    • Базовая структура синтаксиса фильтра: Как правильно форматировать выражения фильтра
    • Общие протокольные фильтры: Предопределенные фильтры для протоколов, таких как TCP, UDP, HTTP
    • Операторы сравнения: Как сравнивать значения в фильтрах
    • Логические операторы: Как комбинировать условия с использованием "и", "или", "не"
  2. Теперь давайте применим то, что вы узнали, на практическом примере. Выполните эту команду, чтобы протестировать простой фильтр TCP:

tshark -f "tcp" -c 5

Эта команда выполняет три действия:

  • -f "tcp" применяет фильтр для захвата только TCP-пакетов
  • -c 5 ограничивает захват 5 пакетами
  • Результаты отображаются непосредственно в терминале
  1. Если есть сетевой трафик, вы увидите вывод, похожий на этот, показывающий детали каждого захваченного TCP-пакета:
1 0.000000 192.168.1.1 → 192.168.1.2 TCP 74 443 → 49234 [SYN] Seq=0 Win=64240 Len=0

Каждая строка представляет один пакет, показывая его номер, временную метку, IP-адреса источника и назначения, порты и флаги TCP.

  1. Когда вы закончите изучать вывод, нажмите q, чтобы выйти из справочной страницы (если она еще открыта) и остановить любой запущенный захват tshark. Таким образом, вы вернетесь в командную строку, готовую к следующему шагу.

Фильтрация TCP-трафика с помощью -f "tcp"

На этом шаге вы попрактикуетесь в захвате сетевого трафика TCP (Transmission Control Protocol) с использованием синтаксиса фильтров Wireshark. TCP является одним из основных протоколов стека протоколов Интернета, обеспечивающим надежную, упорядоченную доставку данных между приложениями с проверкой ошибок. Это упражнение основано на базовых навыках захвата пакетов, которые вы изучили ранее.

  1. Сначала убедитесь, что вы находитесь в каталоге по умолчанию, где мы будем хранить наши файлы захвата:
cd ~/project
  1. Для захвата активного TCP-трафика с вашего сетевого интерфейса выполните следующую команду:
sudo tshark -i eth1 -f "tcp" -c 10

Примечание: В бесплатных виртуальных машинах (Free VM) может отсутствовать интерфейс eth1. Вы можете использовать другие интерфейсы, такие как eth0, eth2 и т. д.

Давайте разберем, что делает каждая часть этой команды:

  • sudo предоставляет вам административные привилегии, необходимые для захвата пакетов
  • -i eth1 указывает, что мы захватываем данные с Ethernet-интерфейса (eth1)
  • -f "tcp" применяет фильтр захвата для сбора только TCP-пакетов
  • -c 10 ограничивает захват 10 пакетами для данной демонстрации
  1. Вывод отобразит TCP-пакеты с основной информацией в следующем формате:
1 0.000000 192.168.1.1 → 192.168.1.2 TCP 74 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
2 0.000123 192.168.1.2 → 192.168.1.1 TCP 74 49234 → 443 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0

Каждая строка представляет TCP-пакет и показывает:

  • Номер пакета и временную метку
  • IP-адреса источника и назначения
  • Порты источника и назначения
  • Флаги TCP (например, SYN, ACK)
  • Порядковые номера и размеры окна
  1. Чтобы изучить полную структуру TCP-пакета, включая все поля заголовка, используйте подробный режим (verbose mode):
sudo tshark -i eth1 -f "tcp" -c 5 -V

Флаг -V предоставляет подробный вывод, показывающий полный заголовок TCP со всеми его полями, такими как порядковые номера, номера подтверждения (acknowledgment numbers), флаги, размер окна, контрольная сумма и опции.

  1. Если вам нужно прервать выполняемый захват в любой момент, просто нажмите Ctrl+C, чтобы остановить процесс. Это полезно, когда вы хотите завершить длительный захват или когда вы увидели достаточно пакетов для вашего анализа.

Запись отфильтрованного трафика на интерфейсе eth1

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

  1. Сначала проверьте свои сетевые интерфейсы, выполнив команду:
ip addr show eth1

Эта команда отображает подробную информацию о вашем интерфейсе eth1. Вы должны увидеть вывод, показывающий, что интерфейс eth1 активен (состояние UP) и имеет назначенный IP-адрес. Эта проверка важна, так как вы не можете захватывать трафик на несуществующем или неактивном интерфейсе.

  1. Чтобы захватить именно HTTP-трафик на интерфейсе eth1, используйте следующую команду:
sudo tshark -i eth1 -f "tcp port 80" -c 15

Разберем, что делает эта команда:

  • -i eth1 указывает, на каком сетевом интерфейсе нужно слушать трафик
  • -f "tcp port 80" создает фильтр захвата для HTTP-трафика (порт 80 - стандартный порт для HTTP)
  • -c 15 ограничивает захват 15 пакетами, что достаточно для демонстрации без перегрузки вас большим объемом данных
  1. Чтобы захватить трафик между определенными IP-адресами, попробуйте следующую команду:
sudo tshark -i eth1 -f "host 8.8.8.8" -c 10

Здесь мы фильтруем трафик, направленный к/от DNS-сервера Google (8.8.8.8). Фильтр "host" соответствует как входящему, так и исходящему трафику для этого конкретного IP-адреса. Это полезно, когда вы хотите отслеживать взаимодействие с определенным сервером.

  1. Для более сложной фильтрации можно комбинировать условия:
sudo tshark -i eth1 -f "tcp port 443 and host 8.8.8.8" -c 5

Эта команда демонстрирует, как комбинировать фильтры. Она захватывает HTTPS-трафик (порт 443), направленный к/от IP-адреса 8.8.8.8. Оператор "and" позволяет создавать точные фильтры, которые соответствуют нескольким условиям одновременно.

  1. Обратите внимание на вывод, показывающий отфильтрованные пакеты с такими деталями, как:
1 0.000000 192.168.1.100 → 8.8.8.8 TCP 74 49234 → 443 [SYN] Seq=0 Win=64240 Len=0

Этот пример вывода показывает TCP SYN-пакет (первый пакет в TCP-соединении) с вашего локального компьютера (192.168.1.100) на сервер Google. Числа представляют временные метки, порты и информацию о TCP-последовательности, которая помогает анализировать поведение сети.

Сохранение результатов с помощью -w tcp.pcap

На этом этапе вы научитесь сохранять захваченный сетевой трафик в файл для последующего анализа. Это особенно полезно, когда вам нужно изучить сетевые пакеты в другое время или поделиться ими с коллегами. Мы будем использовать командную строку Wireshark - Tshark с опцией -w для сохранения захваченных данных.

  1. Сначала убедимся, что мы находимся в правильной рабочей директории. Директория ~/project - это место, где мы будем хранить файлы с захваченными пакетами, чтобы все было организовано:
cd ~/project
  1. Теперь мы захватим настоящий TCP-трафик. Следующая команда выполняет сразу несколько важных действий. Это похоже на установку сетевой камеры, которая записывает только TCP-пакеты и сохраняет их в файл:
sudo tshark -i eth1 -f "tcp" -w tcp.pcap -c 20

Разберем, что означает каждая часть этой команды:

  • -i eth1 сообщает Tshark слушать трафик на сетевом интерфейсе eth1
  • -f "tcp" применяет фильтр захвата, чтобы записывать только TCP-пакеты
  • -w tcp.pcap сохраняет захваченные пакеты в файл с именем tcp.pcap
  • -c 20 ограничивает захват 20 пакетами, чтобы мы не собирали слишком много данных
  1. После выполнения захвата мы должны убедиться, что наш файл был создан правильно. Команда ls с опциями -lh показывает размер файла в человекочитаемом формате:
ls -lh tcp.pcap

Вы должны увидеть вывод, показывающий, что файл существует и его размер (обычно несколько килобайт для 20 пакетов).

  1. Теперь давайте рассмотрим наши захваченные пакеты. Эта команда считывает первые 5 пакетов из нашего сохраненного файла:
tshark -r tcp.pcap -c 5

Опция -r сообщает Tshark читать из файла вместо захвата текущего трафика, а -c 5 ограничивает вывод 5 пакетами.

  1. Для более технического представления того, что мы захватили, мы можем использовать режим подробного вывода. Это показывает все детали протокола и содержимое пакетов, но мы ограничимся первыми 20 строками, чтобы вывод был управляемым:
tshark -r tcp.pcap -V | head -20

Опция -V включает подробный вывод, а head -20 показывает только начало этого вывода, чтобы мы не были перегружены информацией.

Резюме

В этом практическом занятии вы научились применять фильтры захвата в Tshark с помощью практических упражнений. Вы изучили основы синтаксиса фильтров, включая фильтры протоколов и логические выражения, а затем отработали навыки захвата TCP-трафика с использованием базовых команд.

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