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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/capture_filters("Capture Filters") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/packet_capture -.-> lab-548914{{"Применение фильтров захвата в Tshark"}} wireshark/capture_filters -.-> lab-548914{{"Применение фильтров захвата в Tshark"}} wireshark/packet_analysis -.-> lab-548914{{"Применение фильтров захвата в Tshark"}} wireshark/commandline_usage -.-> lab-548914{{"Применение фильтров захвата в Tshark"}} end

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

На этом этапе вы научитесь базовому синтаксису фильтров захвата 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

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

  • 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-пакета, включая все поля заголовка, используйте режим подробного вывода:
sudo tshark -i eth1 -f "tcp" -c 5 -V

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

  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-трафика с использованием базовых команд.

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