Захват пакетов в Tshark

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

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

Введение

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

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


Skills Graph

Установка Tshark

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

  1. Сначала обновите список пакетов, чтобы убедиться, что вы получите последнюю версию Tshark. Это хорошая практика перед установкой любого нового программного обеспечения на системах Linux:

    sudo apt update
  2. Установите Tshark с помощью следующей команды. Флаг -y автоматически подтверждает все запросы во время установки:

    sudo apt install -y tshark

    Во время установки вы можете увидеть запрос о разрешении обычным пользователям захватывать пакеты. Это важный аспект безопасности - выбор "Да" позволит обычным пользователям запускать захват пакетов, что нам нужно для этого практического занятия (лабораторной работы).

  3. После завершения установки проверьте, правильно ли установлен Tshark, проверив его версию. Эта команда также подтверждает, что путь к установке корректно настроен в вашей системе:

    tshark --version

    Вы должны увидеть вывод, похожий на следующий:

    TShark (Wireshark) 3.6.12 (Git v3.6.12 packaged as 3.6.12-1~ubuntu20.04.0)
  4. Чтобы обеспечить возможность Tshark захватывать пакеты без необходимости использовать привилегии суперпользователя (что было бы неудобно и менее безопасно), нам нужно добавить вашего пользователя в группу wireshark. Эта группа имеет необходимые разрешения для захвата пакетов:

    sudo usermod -aG wireshark $USER

    Примечание: Обычно вам нужно выйти из системы и войти снова, чтобы изменения в группе вступили в силу, но в среде этого практического занятия (лабораторной работы) изменения должны вступить в силу сразу. В реальной системе вам нужно будет перезапустить сеанс.

Выбор сетевого интерфейса

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

  1. Сначала выведите список всех доступных сетевых интерфейсов на вашей системе:

    tshark -D

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

    1. eth0
    2. any (Псевдо-устройство, которое захватывает трафик на всех интерфейсах)
    3. lo (Цифровой петлевой канал)

    Каждый интерфейс имеет свою функцию. eth0 обычно представляет собой проводное Ethernet-соединение, а wlan0 - беспроводное соединение, если оно доступно.

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

    • eth0 для Ethernet-соединения (часто используется в лабораторных условиях и виртуальных машинах)
    • wlan0 для беспроводного соединения (если ваш компьютер поддерживает Wi-Fi)
    • any для одновременного захвата трафика на всех интерфейсах (полезно, но может быть шумным)
  3. В рамках этого практического занятия (лабораторной работы) мы будем использовать интерфейс eth0, так как он обычно доступен в виртуальных средах. Прежде чем продолжить, убедимся, что этот интерфейс существует и активен, выполнив следующую команду:

    ip link show eth0

    Эта команда показывает подробную информацию о интерфейсе eth0. Вы должны увидеть вывод, указывающий на существование интерфейса и его текущее состояние (UP/DOWN). Если команда возвращает ошибку, возможно, этот интерфейс недоступен на вашей системе.

  4. Теперь давайте проверим наш выбор интерфейса с помощью быстрого захвата пакетов. Выполните следующую команду, чтобы захватить ровно 5 пакетов с интерфейса eth0:

    tshark -i eth0 -c 5

    Флаг -i указывает, какой интерфейс использовать, а -c 5 сообщает Tshark остановиться после захвата 5 пакетов. Это хороший способ проверить, что ваш выбор интерфейса работает, прежде чем начинать более длительные захваты. Пакеты будут отображаться в вашем терминале по мере их захвата.

Запуск захвата пакетов

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

  1. Сначала убедитесь, что вы находитесь в правильной директории, где будете работать:

    cd ~/project

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

  2. Запустите базовый захват пакетов на выбранном вами интерфейсе (eth0) с помощью следующей команды:

    tshark -i eth0

    Флаг -i сообщает Tshark, на каком интерфейсе нужно слушать трафик (в данном случае - eth0). Эта команда начинает захватывать все пакеты на интерфейсе eth0 и отображает их в реальном времени в вашем терминале. Каждая строка представляет собой отдельный сетевой пакет с деталями о его источнике, назначении, протоколе и других характеристиках.

  3. Дайте процессу захвата работать около 30 секунд, чтобы собрать некоторый трафик. Вы увидите вывод, похожий на следующий:

    1 0.000000000 192.168.1.2 → 192.168.1.1 TCP 74 55922 → 80 [SYN] Seq=0 Win=64240 Len=0
    2 0.000123456 192.168.1.1 → 192.168.1.2 TCP 74 80 → 55922 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0

    Этот пример показывает TCP-рукопожатие между двумя устройствами. Первая строка показывает пакет SYN, инициирующий соединение, а вторая строка - ответ (SYN-ACK).

  4. Чтобы остановить захват, нажмите Ctrl+C в вашем терминале. Этот сочетание клавиш отправляет сигнал прерывания Tshark. Затем инструмент отобразит статистику захвата, например:

    ^C123 packets captured

    Этот сводка сообщает, сколько пакетов было захвачено в течение вашей сессии.

  5. Для более контролируемого захвата вы можете указать точное количество пакетов для захвата (например, 50 пакетов):

    tshark -i eth0 -c 50

    Флаг -c означает "количество" и заставляет Tshark автоматически остановиться после захвата указанного количества пакетов. Это полезно, когда вам нужен только образец сетевого трафика, а не непрерывный захват.

Фильтрация по протоколу

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

  1. Сначала убедитесь, что вы находитесь в правильной директории, где будете работать. Это поможет организовать файлы проекта:

    cd ~/project
  2. Начнем с TCP-трафика, который используется многими распространенными службами, такими как веб-браузинг (HTTP/HTTPS) и безопасный шелл (SSH). Следующая команда захватывает 20 TCP-пакетов:

    tshark -i eth0 -f "tcp" -c 20

    Флаг -f задает фильтр захвата, а -c ограничивает количество захваченных пакетов.

  3. Теперь попробуйте захватить UDP-трафик, который используется для легковесных коммуникаций, таких как DNS-запросы и VoIP-службы. Эта команда захватывает 10 UDP-пакетов:

    tshark -i eth0 -f "udp" -c 10
  4. Для ICMP-пакетов (используемых сетевыми диагностическими инструментами, такими как ping) используйте эту команду для захвата 5 пакетов:

    tshark -i eth0 -f "icmp" -c 5
  5. Вы можете комбинировать фильтры для одновременного захвата нескольких протоколов. В этом примере захватывается как DNS-трафик (UDP-порт 53), так и HTTP-трафик (TCP-порт 80), в сумме 15 пакетов:

    tshark -i eth0 -f "port 53 or port 80" -c 15
  6. Для более точной фильтрации после захвата используйте фильтры отображения с опцией -Y. Эта команда захватывает 30 пакетов, но в выводе показывает только HTTP- или DNS-трафик:

    tshark -i eth0 -c 30 -Y "http or dns"

    Фильтры отображения обрабатываются после захвата, что позволяет выполнять более сложную фильтрацию без влияния на то, что записывается.

Сохранение результатов захвата

На этом этапе вы научитесь сохранять захваченный сетевой трафик в файлы для последующего анализа. Сохранение захваченных пакетов является важным, так как оно позволяет вам просматривать сетевую активность позже, делиться результатами с членами команды или проводить детальный анализ без необходимости повторного захвата текущего трафика. Формат PCAP (Packet CAPture) является стандартным форматом файлов, используемым большинством сетевых анализаторов.

  1. Сначала убедитесь, что вы находитесь в правильной директории, где хотите сохранить файлы с захваченными пакетами. Директория проекта - хорошее место для организации вашей работы:

    cd ~/project
  2. Базовая команда для сохранения захваченных пакетов использует флаг -w для указания выходного файла. В этом примере захватывается 50 пакетов с интерфейса eth0 и сохраняется в формате PCAP:

    tshark -i eth0 -c 50 -w capture.pcap

    Расширение .pcap имеет важное значение, так как оно указывает, что это стандартный файл с захваченными пакетами, который можно открыть большинством сетевых анализаторов.

  3. Для лучшей организации вы можете создать отдельную директорию для своих захватов. Эта команда сначала создает директорию 'captures', если она не существует, затем захватывает только HTTP-трафик (порт 80) и сохраняет его с описательным именем файла:

    mkdir -p captures && tshark -i eth0 -c 30 -w captures/http_traffic.pcap -f "port 80"
  4. Чтобы просмотреть сохраненный файл с захваченными пакетами, используйте опцию -r (read). Это отображает пакеты в терминале так же, как при текущем захвате:

    tshark -r capture.pcap
  5. Для более сложных рабочих процессов вы можете сначала захватить весь трафик, а затем извлечь определенные протоколы. В этом примере захватывается 100 пакетов, а затем из них фильтруется только DNS-трафик и сохраняется в новый файл:

    tshark -i eth0 -c 100 -w full_capture.pcap \
      && tshark -r full_capture.pcap -Y "dns" -w dns_only.pcap
  6. Наконец, проверьте сохраненные захваты, перечислив их с указанием размеров. Это поможет вам убедиться, что файлы были созданы и дать представление о том, сколько данных было захвачено:

    ls -lh *.pcap

    Опции -lh делают вывод более читаемым, показывая размеры файлов в человекочитаемом формате (КБ, МБ) вместо байтов.

Резюме

В этом практическом занятии вы научились устанавливать и настраивать Tshark для анализа сетевых пакетов. Процесс включал установку Tshark с помощью apt, обновление списка пакетов и проверку установки с помощью команды tshark --version.

Вы также практиковались в определении сетевых интерфейсов с использованием команды tshark -D и выбор подходящего интерфейса для захвата трафика. Эти базовые навыки подготовят вас к более сложному анализу сетевых протоколов в будущих упражнениях.