Введение

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

Это важно, поскольку анализ пакетов обычно происходит на двух разных уровнях. Инструменты вроде tcpdump отлично подходят для отображения сводок «сырых» пакетов и применения низкоуровневых фильтров захвата до того, как пакеты будут сохранены. tshark идет дальше, выполняя декодирование структуры протоколов после захвата. Это означает, что он «понимает» такие поля, как методы HTTP, имена DNS-запросов и многие другие специфические детали протоколов. На практике аналитики часто используют оба подхода: низкоуровневый захват для эффективного сбора данных и глубокий анализ с учетом протоколов для получения более детальной информации.

Вы научитесь захватывать сетевой трафик в реальном времени, сохранять его в файл и применять фильтры отображения, которые понимают структуру протоколов (например, HTTP и DNS). Эти фильтры отображения гораздо функциональнее стандартных фильтров Berkeley Packet Filters (BPF), так как они способны анализировать содержимое пакетов. В завершение вы узнаете, как создавать статистику иерархии протоколов для получения общего представления о сетевом трафике.

Выполнение базового захвата

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

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

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

Теперь давайте захватим сетевой трафик. Мы будем использовать tshark для прослушивания всех доступных сетевых интерфейсов (any) и сохранения захваченных пакетов в файл с именем traffic.pcap. Мы также укажем tshark автоматически остановить захват через 5 секунд.

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

sudo tshark -i any -w /tmp/traffic.pcap -a duration:5
sudo mv /tmp/traffic.pcap ~/project/traffic.pcap
sudo chown labex:labex ~/project/traffic.pcap

Разберем параметры, использованные в команде tshark:

  • sudo: Запускает команду с правами администратора, что необходимо для захвата сетевого трафика.
  • -i any: Указывает tshark захватывать трафик на всех доступных сетевых интерфейсах.
  • -w /tmp/traffic.pcap: Указывает tshark временно записать захваченные «сырые» данные пакетов в файл в директории /tmp. Это лучшая практика, позволяющая избежать проблем с правами доступа при запуске tshark от имени root.
  • -a duration:5: Устанавливает условие автоостановки (-a) для завершения захвата через 5 секунд.

Вы увидите вывод, похожий на этот, который означает, что пакеты захватываются:

Capturing on 'eth0'
24

По истечении 5 секунд tshark автоматически завершит работу, и ваш файл traffic.pcap будет готов к анализу.

Применение фильтров отображения

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

Фильтры отображения в tshark (и Wireshark) невероятно мощны, так как они понимают структуру сетевых протоколов. Вместо того чтобы смотреть только на IP-адреса или номера портов, вы можете фильтровать трафик по именам протоколов, таким как http или dns.

Это важное различие. Классический фильтр захвата задает низкоуровневые вопросы, например: «использует ли этот пакет порт 53?». Фильтр отображения может задавать более высокоуровневые вопросы: «является ли этот пакет DNS-ответом?» или «содержит ли этот HTTP-запрос определенное поле?». Другими словами, фильтры отображения работают после разбора протокола, поэтому они более выразительны и легче читаются.

Для чтения файла захвата вместо захвата «живого» трафика используется опция -r. Для применения фильтра отображения используется опция -Y, за которой следует строка фильтра.

Сначала отфильтруем файл захвата, чтобы отобразить только HTTP-трафик. Выполните следующую команду:

tshark -r ~/project/traffic.pcap -Y "http"

Вы должны увидеть вывод, похожий на этот, отображающий только HTTP-запрос GET и соответствующий ответ HTTP OK:

    4 0.012345678 10.0.2.15 → 93.184.216.34 HTTP 143 GET / HTTP/1.1
    8 0.045678901 93.184.216.34 → 10.0.2.15 HTTP 403 HTTP/1.1 200 OK  (text/html)

Теперь отфильтруем файл захвата, чтобы отобразить только DNS-трафик. DNS (Domain Name System) — это протокол, используемый для преобразования доменных имен, таких как example.com, в IP-адреса.

Выполните следующую команду для применения фильтра отображения DNS:

tshark -r ~/project/traffic.pcap -Y "dns"

В выводе будут показаны DNS-запросы и ответы, произошедшие во время вашего сеанса захвата:

    1 0.000000000 10.0.2.15 → 10.0.2.3 DNS 73 Standard query 0x1a2b A example.com
    2 0.001234567 10.0.2.3 → 10.0.2.15 DNS 89 Standard query response 0x1a2b A example.com A 93.184.216.34

Используя опцию -Y, вы можете легко просеивать тысячи пакетов, чтобы найти именно то, что вам нужно.

Просмотр статистики иерархии протоколов

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

При анализе большого файла захвата часто бывает полезно получить высокоуровневую сводку того, какой трафик находится внутри, прежде чем переходить к изучению отдельных пакетов. tshark предоставляет функцию «Статистика иерархии протоколов» (Protocol Hierarchy Statistics), которая вычисляет процентное соотношение и количество пакетов для каждого протокола.

Этот взгляд «сверху вниз» — распространенная техника расследования. Прежде чем тратить время на отдельные пакеты, аналитики часто задают общие вопросы: какие протоколы преобладают в этом захвате? Является ли трафик преимущественно веб-трафиком, разрешением имен или чем-то необычным? Соответствуют ли пропорции ожидаемой роли системы? Этот высокоуровневый контекст помогает решить, где стоит приложить усилия для более глубокого анализа.

Для создания статистики используется опция -z, за которой следует конкретный тип статистики. Для статистики иерархии протоколов ключевым словом является io,phs.

Кроме того, поскольку мы хотим видеть только отчет со статистикой, а не детали отдельных пакетов, мы будем использовать опцию -q (quiet).

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

tshark -r ~/project/traffic.pcap -q -z io,phs

Вы увидите древовидный вывод, суммирующий трафик:

===================================================================
Protocol Hierarchy Statistics
Filter:

eth                                      frames:24 bytes:2340
  ipv4                                   frames:24 bytes:2340
    udp                                  frames:2 bytes:162
      dns                                frames:2 bytes:162
    tcp                                  frames:12 bytes:1338
      http                               frames:2 bytes:546
    icmp                                 frames:10 bytes:840
===================================================================

Этот вывод точно показывает, сколько кадров (пакетов) и байтов относится к каждому протоколу. Например, вы можете увидеть, что уровень Ethernet (eth) содержит трафик IPv4, который далее разделяется на UDP (содержащий DNS), TCP (содержащий HTTP) и ICMP (трафик ping, который мы сгенерировали).

Этот статистический обзор — отличная отправная точка для любой задачи по устранению неполадок в сети или анализу безопасности.

Резюме

Поздравляем! Вы успешно завершили лабораторную работу «Введение в Tshark».

В этой работе вы научились:

  • Захватывать сетевой трафик в реальном времени и сохранять его в файл .pcap с помощью tshark.
  • Читать файл захвата и применять фильтры отображения с учетом протоколов для выделения HTTP- и DNS-трафика.
  • Создавать и анализировать статистику иерархии протоколов для получения общего представления о сетевой активности.

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