Декодирование пользовательских протоколов в Tshark

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

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

Введение

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

В рамках упражнений вы научитесь использовать ключевые флаги, такие как -r, -V и -d, для манипулирования данными пакетов, проверки деталей портов и сохранения декодированных результатов. Эти навыки помогут вам справляться с задачами анализа пользовательских протоколов в реальных сетевых сценариях.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/protocol_dissection("Protocol Dissection") wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/protocol_dissection -.-> lab-548921{{"Декодирование пользовательских протоколов в Tshark"}} wireshark/export_packets -.-> lab-548921{{"Декодирование пользовательских протоколов в Tshark"}} wireshark/packet_analysis -.-> lab-548921{{"Декодирование пользовательских протоколов в Tshark"}} wireshark/commandline_usage -.-> lab-548921{{"Декодирование пользовательских протоколов в Tshark"}} end

Проверка портов с использованием -r capture.pcap -V

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

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

cd ~/project

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

tshark -r capture.pcap -V | less

Разберем эту команду по частям:

  • -r capture.pcap указывает tshark прочитать файл с захваченными пакетами.
  • -V включает подробный вывод, показывающий все доступные детали пакета.
  • | less перенаправляет вывод в программу less для удобства прокрутки.

Подробный вывод покажет вам важную сетевую информацию, включая:

  • Исходный и назначительный порты каждого пакета (они идентифицируют, какие приложения обмениваются данными).
  • Информацию о протоколе (какой тип коммуникации происходит).
  • Метки времени пакетов (когда произошла коммуникация).
  • Другие детали, специфичные для протокола (дополнительная техническая информация).

Для удобства чтения мы используем less для просмотра вывода. Вот как можно перемещаться по выводу:

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

Пример вывода, который вы можете увидеть:

Frame 1: 74 bytes on wire (592 bits), 74 bytes captured (592 bits)
Ethernet II, Src: 00:1a:2b:3c:4d:5e, Dst: 00:5e:4d:3c:2b:1a
Internet Protocol Version 4, Src: 192.168.1.100, Dst: 192.168.1.1
Transmission Control Protocol, Src Port: 54321, Dst Port: 80, Seq: 1, Ack: 1, Len: 0

В этом примере обратите особое внимание на:

  • Src Port: 54321 - номер порта на отправляющем компьютере.
  • Dst Port: 80 - номер порта на принимающем компьютере (порт 80 обычно используется для HTTP-трафика).

Понимание этих номеров портов помогает определить, какие приложения или сервисы обмениваются данными в рамках сети.

Декодирование трафика на порту 8080 как HTTP с использованием -d tcp.port==8080,http

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

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

cd ~/project

Теперь воспользуемся мощной функцией Tshark для декодирования трафика. Следующая команда читает файл с захваченными пакетами и применяет специальные правила декодирования:

tshark -r capture.pcap -d tcp.port==8080,http | less

Разберем параметр -d, который здесь выполняет основную работу:

  • tcp.port==8080 сообщает Tshark, что мы рассматриваем TCP-трафик через порт 8080.
  • http указывает, что мы хотим интерпретировать этот трафик как трафик по протоколу HTTP.

При успешной декодировке вы увидите правильно отформатированное содержимое HTTP, как в примере ниже:

Hypertext Transfer Protocol
    GET /index.html HTTP/1.1\r\n
    Host: example.com\r\n
    User-Agent: curl/7.68.0\r\n
    Accept: */*\r\n
    \r\n

Этот вывод четко показывает заголовки HTTP-запроса, подтверждая, что декодирование прошло успешно. Без опции -d тот же трафик отобразится как необработанные TCP-сегменты, что значительно усложнит анализ веб-коммуникаций. Перенаправление вывода в less просто делает его более удобным для прокрутки и анализа.

Проверка декодирования с использованием -V

На этом этапе мы проверим, работает ли правильно конфигурация декодирования HTTP-трафика на порту 8080. Это важно, так как иногда пакеты могут не декодироваться как ожидалось, и нам нужно убедиться в правильности нашей настройки. Мы будем использовать подробный режим Wireshark (флаг -V), чтобы увидеть подробную информацию о протоколе для каждого пакета.

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

cd ~/project

Теперь запустим tshark с нашим правилом декодирования и подробным выводом. Команда объединяет то, что мы узнали на предыдущих этапах:

tshark -r capture.pcap -d tcp.port==8080,http -V | less

Вот что делает каждая часть команды:

  • -r capture.pcap читает файл с захваченными пакетами.
  • -d tcp.port==8080,http применяет наше правило декодирования HTTP-трафика на порту 8080.
  • -V включает подробный вывод, показывающий все детали протокола.
  • | less делает проскролливание длинного вывода более удобным.

При изучении вывода обратите внимание на следующие ключевые элементы, которые подтверждают успешное декодирование HTTP:

  1. Иерархия протоколов, показывающая HTTP как протокол приложений (это означает, что tshark распознает его как HTTP-трафик).
  2. Заголовки HTTP-запросов/ответов (они должны быть четко видны и правильно отформатированы).
  3. Содержимое полезной нагрузки HTTP (фактические данные, которые передаются).

Вот пример того, как выглядит правильно декодированный HTTP-трафик:

Hypertext Transfer Protocol
    GET /test.html HTTP/1.1\r\n
    Host: example.com:8080\r\n
    Connection: keep-alive\r\n
    User-Agent: Mozilla/5.0\r\n
    \r\n
    [Full request URI: http://example.com:8080/test.html]

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

Сохранение декодированного файла с использованием -w decoded.pcap

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

Сначала убедимся, что мы находимся в правильной рабочей директории. Команда cd позволяет изменить директорию, и мы переходим в нашу проектную папку:

cd ~/project

Теперь мы используем Tshark для создания нового файла с захваченными пакетами, в котором будет сохранен декодированный HTTP-трафик. Команда может показаться сложной, но мы разберем ее по частям:

tshark -r capture.pcap -d tcp.port==8080,http -w decoded.pcap

Понять каждую часть этой команды:

  • -r capture.pcap сообщает Tshark прочитать исходный файл с захваченными пакетами.
  • -d tcp.port==8080,http применяет наше специальное правило декодирования, которое обрабатывает трафик на порту 8080 как HTTP-трафик.
  • -w decoded.pcap указывает, куда сохранить новую, декодированную версию.

После выполнения этой команды мы должны проверить, был ли успешно создан новый файл. Команда ls выводит список файлов, а -lh показывает детали в удобочитаемом формате:

ls -lh decoded.pcap

Вы увидите такой вывод, показывающий ваш новый файл:

-rw-r--r-- 1 labex labex 1.2M Sep 15 10:30 decoded.pcap

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

Резюме

В этом практическом занятии вы научились анализировать и декодировать пользовательские сетевые протоколы с использованием tshark. Вы практиковались в чтении файлов с захваченными пакетами с помощью флага -r и изучении подробной информации о пакетах с использованием флага -V для идентификации нестандартного HTTP-трафика.

Кроме того, вы исследовали декодирование протоколов, применив флаг -d для интерпретации трафика на порту 8080 как HTTP-трафика. В рамках практического занятия также рассматривалось сохранение декодированного вывода в новый файл с помощью флага -w для дальнейшего использования и анализа.