Cегодня мы продолжаем разбираться как правильно и эффективно работать с анализатором трафика Tshark.Мы продолжим анализировать функции данного анализатора и рассмотрим перечень команд употребляемых в нем.
Распределение пакетов
Эта опция предполагает, что человек берет трафик из уже полученного пакета и выполняет его с помощью опции «ttp, tree» с параметром «-z» для подсчета количества HTTP-запросов, их модов и состояния кода. Его легко понять, а затем проанализировать, проанализировав свои действия на основе модульного подхода. Здесь пользователь получил пакет, который он захватил ранее, и запустил его через опцию, которая сообщила ему, что всего было сгенерировано 126 запросов, из которых 14 вернули 200 OK.А это означает, что другие из них либо ошиблись в ответе или были перенаправлены на другой сервер для ответа серии 3XX.
tshark -r wlan.pcap -z http,tree -q
Длина пакетов
Если мы говорим о древовидной структуре, следует ее немного изучить. Есть много способов использовать опцию «tree» в сочетании с другими функциями. Чтобы показать это, человек решил использовать параметр длины пакета с заданным параметром «tree». Эта функция поможет вам отсортировать данные по размеру пакетов, а затем сгенерировать с ними таблицу. Теперь эта таблица будет содержать не только длину пакетов, но и их количество. Минимальная длина соответствует размеров пакетов. Кроме того, инструмент рассчитает размер и процент пакетов в указанном диапазоне длины.
tshark -r wlan.pcap -z plen,tree -q
Анализ выходных данных на основе цвета
Обратите внимание, что для правильной работы этой опции терминал должен поддерживать вывод цветов. Человек может включить цвета для пакетов в соответствии со стандартными фильтрами Wireshark. В Windows цвета ограничены предустановленными параметрами. В этом случае пользователь может настроить цвета в соответствии с фильтром отображения. Это поможет вам быстро найти конкретный пакет в группе похожих пакетов. Это также полезно для обнаружения рукопожатий в коммуникационном трафике. Его можно включить с помощью следующей команды:
tshark -r color.pcap --color
Анализ циклического буфера
По умолчанию TShark работает в «многофайловом» режиме. Поэтому TShark записывает данные в несколько файлов захвата. Когда первый файл захвата несколько заполнен, инструмент переключается на следующий файл и так далее. Вы можете указать имена файлов, которые хотите создать, с помощью опции «-w». Количество файлов и время их появления будут объединены с именем, указанным с параметром «-w», чтобы сформировать полное имя файла.
Опция «файл» будет заполнять новые файлы до тех пор, пока не будет указан номер. На этом этапе TShark удалит данные в первом файле и начнет запись в следующий файл. Если параметр «файл» не включен, новые файлы заполняются до тех пор, пока не будет выполнено одно из условий остановки захвата или пока диск не будет полностью заполнен.
Есть много критериев, по которым работает кольцевой буфер, но в этом случае человек использовал только 2. Файлы и размер файла. Файлы: значение начинается с первого файла после записи значения количества файлов (образуется кольцевой буфер). Это значение должно быть меньше 100 000. Размер файла: значение перемещается к следующему файлу после того, как первый достигает указанного размера (КБ). Обратите внимание, что максимальный размер файла ограничен 2 гигабайтами.
tshark -I eth0 -w packetsbuffer.pcap -b filesize:1 -b file:3
Автоматическая остановка работы
Под огромным набором опций есть одна, называемая auto-stop. Как следует из названия, она может автоматически прекратить захват трафика после выполнения указанных условий.
Длина
Есть несколько возможностей, и в этом случае человек использовал критерий продолжительности. Он указал продолжительность и ограничил ее до 10. Это значение выражается в секундах. После захвата пользователь видит, что он захватил 9 пакетов за 10 секунд.
tshark -i eth0 -a duration:10
Размер файла
Еще один критерий автоматического выключения — размер файла. TShark прекратит запись в указанный файл захвата после того, как он достигнет размера, установленного пользователем. В этом случае пользователь установил размер файла равным 1. Это значение рассчитывается в КБ. Он использовал команду для вывода списка каталогов, чтобы показать, что захват был остановлен, как только файл достиг 1 КБ.
tshark -i eth0 -w 1.pcap -a filesize:1
Каналы для передачи данных
Пользователь также может изменять статистику данных трафика, полученных в соответствии с типами носителей данных. Для этого придется использовать независимый параметр «-l». В этом случае человек использовал его, чтобы указать, что у него есть каналы передачи данных, такие как EN10MB, указанные для трафика Ethernet.
tshark -L
Сведения о версии
Нужно ввести простую команду, чтобы читатели могли понять и соотнести все практические шаги, выполняемые в этой статье, с версией программы. Эта информация отображена на рисунке ниже. Этот параметр отображает информацию о версии установленного TShark.
tshark -v
Функции отчетности
Во время любого подключения к сети возникает острая необходимость в подотчетности, чтобы человек мог делиться результатами с командой, а также с начальством и иметь подтвержденные свидетельства любой активности внутри нее. По тем же причинам TShark предоставил людям отличный вариант (-G). С помощью этой опции TShark может распечатать список различных типов отчетов, которые будут созданы. В официальном руководстве TShark для описания этих типов отчетов используется слово «Глоссарии».
tshark -G help
Форматы столбцов
Конечно, в разделе отчетов TShark есть опция форматирования столбцов. Чтобы проверить его содержимое, человек выполнил команду, как показано на следующем рисунке. Читатели могут видеть, что он печатает список с определенными символами, которые можно использовать для создания отчета. Также присутствуют идентификатор VLAN, дата, время, адрес назначения, порт назначения, длина пакета, протокол и другие данные.
tshark -G column-formats
Декодирование
Эта опция способна генерировать 3 поля, связанных с уровнями, а также декодированный протокол. При использовании этой опции существует ограничение на одну запись в строке. Первое поле со значением «s1ap.process.sout» сообщает пользователю тип уровня сетевых пакетов. Затем он получает значение селектора в десятичном формате. Наконец, у человека есть стенограмма того, что было получено во время захвата. Он использовал команду head, потому что вывод был достаточно большим, чтобы поместиться на одном снимке экрана.
tshark -G decodes | head
Диссектор таблиц
Большинство людей, читающих эту статью, уже знакомы с концепцией диссектора. Иначе говоря, Dissector — это анализатор протокола. Вывод, генерируемый этой опцией, состоит из 6 полей. Начиная с имени таблицы диссектора, он используется для таблицы диссектора графического интерфейса пользователя. Кроме того, у человека уже есть тип и база для просмотра имени протокола. Наконец, он также имеет возможность декодировать полученную информацию.
Elastic mapping
Mapping— это схема документов, хранящихся в указателе. Elasticsearch поддерживает широкий спектр типов данных для полей в документе. Параметр elastic-mapping в TShark выводит данные, хранящиеся в файле сопоставления ElasticSearch. Из-за большого объема данных для печати пользователь решил также использовать команду head.
tshark -G elastic-mapping | head
Количество полей
При построении сетевого графика бывают моменты, когда вам нужно получить количество перемещаемых полей заголовка в любой момент времени. В таких случаях может помочь TShark. С помощью опции fieldcount пользователь может легко распечатать количество полей заголовка. Как вы можете видеть на изображении ниже, у пользователя есть 2522 протокола и 215 000 предварительно сопоставленных полей.
tshark -G fieldcount
Поля
TShark также может получить содержимое регистрационной базы данных. Вывод, генерируемый этой опцией, не так легко интерпретировать, как другие. Некоторые пользователи могут использовать любой другой инструмент синтаксического анализа, чтобы получить более точный результат. Каждая запись в выходных данных представляет собой файл протокола или заголовка. Это можно отличить по первому полю записи. Если это поле P, то это протокол, а если F, то это поле заголовка. В случае протоколов есть еще 2 поля. Одно из них говорит о протоколе, а другие поля показывают аббревиатуру, используемую для указанного протокола. В случае с заголовком ситуация немного иная. Кроме того, есть еще 7 полей. Пользователь получает название, аббревиатуру, тип, аббревиатуру родительского протокола, базу для отображения файлов, поле для описания рекламы и битовую маску.
tshark -G fields | head
Основные виды
TShark также помогает человеку создавать отчеты, посвященные основным типам сетевых протоколов. Это для краткости называется ftype. Этот тип отчета состоит всего из 2 полей. Один для FTYPE и один для его описания.
tshark -G ftypes
Эвристическое декодирование
Сортировка диссекторов на основе эвристического декодирования — одна из вещей, которые должны быть легко доступны. По той же причине человек в TShark может декодировать эвристически. С помощью этой опции можно распечатать все установленные эвристические расшифровки. Состоит из 3-х полей.
tshark -G heuristic-decodes
Плагины
Плагины — очень важный тип опций, которые были интегрированы в опции отчетов Tshark. Как следует из названия, он отображает названия всех установленных плагинов. Поле, на основе которого создается этот отчет, состоит из библиотеки, версии, типа плагина и пути, по которому они расположены.
tshark –G plugins
Протоколы
Если читатели хотят знать подробности протоколов, которые записываются в базу данных, они могут использовать параметр protocols. Этот вывод также немного нечитаем, поэтому пользователь может использовать любой сторонний инструмент для составления отчета. Этот параметр отображает данные в 3-х полях. У человека есть имя протокола, короткое имя и имя фильтра.
tshark –G protocols | head
Значения
Значения Отчет состоит из строк значений, строк диапазона, строк true/false. Здесь доступны три типа записей. Первое поле может состоять из одного из этих трех символов: V: строки значений; R: строки диапазона; T: true/false строки. Кроме того, в строках значений есть аббревиатура поля, значение и сама строка. В строках диапазона есть те же значения, за исключением того, что они содержат информацию, связанную с нижней и верхней границей строки.
tshark –G values | head
Предпочтения
В случае, если пользователю требуется пересмотреть текущие настройки, установленные в системе, он может использовать параметры currentprefs для выбора предпочтений, сохраненных в файле.
tshark –G currentprefs | head
Папки
Предполагается, что пользователь хочет вручную изменить конфигурацию или получить информацию о программе. Ему нужен путь к этим файлам, чтобы взглянуть на них. Здесь пригодится опция folders.
tshark –G folders
Поскольку читатели так много знают о TShark, будет несправедливо, если пользователь не расскажет об инструменте, который сильно зависит от данных TShark. Пора поговорить о PyShark.
PyShark
По сути, это Shell, основанный на Python. Его функциональность заключается в том, что он позволяет анализировать пакеты Python с помощью диссекторов TShark. Многие инструменты выполняют одну и ту же работу более или менее хорошо, но разница заключается в том, что этот инструмент может экспортировать XML для использования его синтаксического анализа.
Установка
Поскольку PyShark был разработан с использованием Python 3, нужно установить его, как показано на рисунке ниже.
apt install python3
PyShark доступен через pip. Но у пользователя нет pip для Рython 3, поэтому также нужно установить и его.
apt install python3-pip
Поскольку у человека уже есть Рython3 с pip, он установит Рyshark с помощью команды. Он также может установить PyShark, клонировав git и запустив программу установки.
pip3 install pyshark
Захват
Теперь, чтобы начать, нужен интерпретатор Рython. Чтобы получить его, пользователь пишет python3 и нажимает Еnter. Теперь, когда у него есть интерпретатор, самое первое, что нужно сделать, — это импортировать PyShark. Затем он определяет сетевой интерфейс для захвата. Также человек определит значение параметра timeout. Наконец, пользователь начинает захват. Здесь он видит, что были захвачены 9 пакетов.
python3
import pyshark
capture = pyshark.LiveCapture(interface=’eth0’)
capture.sniff(timeout=5)
capture
Красивая презентация
Существует несколько способов, которыми PyShark может представлять данные внутри захваченного пакета. В предыдущей практике были захвачены 9 пакетов. Стоит взглянуть на первый пакет, который был захвачен с помощью PyShark. Здесь пользователь может увидеть, что у него есть послойный анализ с уровнем ETH, уровнем IP и уровнем TCP.
capture[1].pretty_print()
Захваченное поле длины
При захвате пользователь увидел некоторые данные, которые состоят из нескольких атрибутов. Эти атрибуты нуждаются в полях для хранения. Чтобы исследовать данную область, человек будет использовать функцию dir в Python. Человек взял пакет, а затем определил переменную с именем pkt со значением этого пакета и сохранил все данные. Затем, используя функцию dir, он увидел, что исследовал поля внутри этого конкретного случая. Он понимает, что есть функция pretty_print. Также есть одно поле с именем captured_length для чтения, в которое он запишет имя переменной, за которым следует имя поля с точкой (.) между ними, как показано на рисунке ниже.
capture[2]
pkt = capture[2]
pkt
dir(pkt)
pkt.captured_length
Слои, поля Src и Dst
Когда пользователь перечислил поля, он увидел, что у него есть еще одно поле с именем layers. Человек прочитает его содержимое, чтобы узнать, что у него есть 3 слоя в этом захвате. Теперь, чтобы заглянуть в определенный слой, нужно получить его поля. Для этого пользователь снова будет использовать функцию dir. Человек уже использовал функцию dir на слое ETH, как показано на рисунке ниже. У него есть поле с именем src, что означает источник, и dst, что означает пункт назначения. Он проверил значение в этих полях, чтобы найти физический адрес источника и пункт назначения.
pkt.layers
pkt.eth.src
pkt.eth.dst
pkt.eth.type
Для следующего шага нужны поля IP-пакета. Человек использовал функцию dir на IP-слое, а затем применил поля src и dst. Он видит, что есть IP-адрес, так как это IP-уровень. Поскольку уровень Ethernet работает на MAC-адресах, он хранит MAC-адреса источника и назначения, которые изменяются, когда человек переходит к IP-уровню.
dir(pkt.ip)
pkt.ip.src
pkt.ip.dst
pkt.ip.pretty_print()
Аналогично, человек может использовать функцию dir и значение поля на любом слое захвата. Это значительно облегчает проведение захвата.
Захват Promisc
В предыдущих разделах читатели узнали о режиме promisc, который означает, что сетевая карта будет передавать все полученные фреймы в операционную систему для обработки, в отличие от традиционного режима работы, при котором только фреймы, предназначенные для MAC-адреса сетевой карты или широковещательного адреса, будут передаваться на компьютер. Как правило, этот режим используется для снифинга всего трафика. Но появилась загвоздка, когда пользователь настроил сетевую интерфейсную карту для работы в режиме promisc. Таким образом, при захвате трафика на TShark пользователь может переключаться между обычным захватом и захватом promisc с помощью параметра «-p», как показано на рисунке ниже.
ifconfig eth0 promisc
ifconfig eth0
tshark -i eth0 -c 10
tshark -i eth0 -c 10 -p
Заключение
Tshark находится где-то между tcpdump и Wireshark. Tcpdump отличается сбором данных и может очень быстро извлекать только те данные, которые ему нужны. Однако его полезность для анализа ограничена. Wireshark отлично справляется со сбором и анализом. Однако, поскольку он имеет богатый пользовательский интерфейс, его нельзя использовать на серверах, которые работают только в терминальном режиме. Введите tshark; Он захватывает и анализирует, но последний в командной строке. Tshark использует те же настройки фильтра, что и Wireshark, что не должно вызывать удивления, поскольку по сути это один и тот же продукт. С помощью этой команды tshark будет отслеживать IP-адреса назначения, а также некоторые другие интересные поля из HTTP-части пакета.