Установка и использование Wireshark в Linux

  • Михаил
  • 12 мин. на прочтение
  • 682
  • 02 Feb 2023
  • 02 Feb 2023

Wireshark — это бесплатный анализатор сетевых протоколов с открытым исходным кодом, широко используемый во всем мире. С помощью Wireshark вы можете захватывать входящие и исходящие пакеты сети в режиме реального времени и использовать его для устранения неполадок в сети, анализа пакетов, разработки программного обеспечения и протоколов связи и многого другого. Он доступен во всех основных настольных операционных системах, таких как Windows, Linux, macOS, BSD и других.

Во-первых, убедитесь, что необходимые пакеты установлены:

Если установлен пакет Wireshark, проверьте, установлена ​​ли утилита TShark и если да, то какой версии:

Если вы вошли в систему как обычный пользователь без полномочий root, вам потребуются права sudo для использования утилиты TShark. Пользователи root могут пропустить sudo и напрямую запустить команду tshark .

TЕсли нет, то самый простой способ установить Wireshark - использовать официальные репозитории. Для этого выполните такую команду:

apt install wireshark -y
или
yum install wireshark -y

 

Перехват, чтение и сохранение пакетов
При запуске без параметров Tshark, как и tcpdump начнёт перехватывать весь сетевой трафик на всех интерфейсах.

tshark

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

tshark -D

Выбрав нужный интерфейс, укажите его имя или номер при помощи опции -i, например:

tshark -i eth0
tshark -i 1

Теперь, когда мы научились перехватывать пакеты, нам может потребоваться сохранить их для дальнейшего изучения. Для этого используется опция -w. Следующая команда будет перехватывать пакеты с интерфейса eth0 и сохранять их в файл /tmp/traffic.pcap:

tshark -i eth0 -w /tmp/traffic.pcap

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

tshark -r /tmp/traffic.pcap

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

По умолчанию Tshark выполняет разрешение имён. Для лучшего понимания откуда пакет пришел и куда отправлен можно отключить его при помощи опции -n. Тогда вместо доменных имен, в дампе трафика будут ip адреса.

tshark -n

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

Фильтры перехвата
Это традиционные pcap/bpf фильтры, определяющие, какие пакеты будут перехватываться на интерфейсе. Фильтры аналогичны фильтрам tcpdump, поэтому подробно мы их в этой статье рассматривать не будем. Желающие могут прочитать о них в статье про tcpdump

Перехват пакетов, связанных с узлом 10.10.1.144, на портах 80 или 22.

tshark -i eth0 -f "host 10.10.1.144 and (dst port 22 or 80)"

Игнорировать групповые и широковещательные пакеты:

tshark -i eth0 -f "not broadcast and not multicast"

Фильтры отображения

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

Просмотр всех соединений с адреса 10.10.1.144

tshark -i eth0 -Y "ip.addr==10.10.1.144"

Отображение HTTP-запросов на TCP-порт 8800

tshark -i eth0 -Y "tcp.port== 8800 and http.request"

Исключить отображение пакетов ICMP и ARP:

tshark -i eth0 -Y "not arp or icmp"

Повторная передача пакетов(retransmision)

tshark -i eth0 -Y "tcp.analysis.retransmission"

Более подробно о фильтрах можно прочитать на официальном сайте https://www.wireshark.org/

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

Опция -V используется для подробного режима Tshark и отображения такой информации, как номер кадра, поле протокола, данные или флаги пакета.

Опция -O аналогична -V, но выводит информацию о конкретном протоколе.

tshark -i eth0 -O icmp

Для вывода данных в различном формате применяется опция -T, это может быть полезно, если вам требуется строго определенная информация, например, при выводе данных Tshark в базу данных.

tshark -i eth0 -O icmp -T fields -e frame.number -e data

При выборе полей для опции -T нужно как минимум один раз указать опцию -e, которая задаёт поля для вывода. Для отображения нескольких полей ее можно использовать несколько раз.

tshark -r nmap_OS_scan_succesful -Y "tcp.ack" -T fields -e frame.number -e ip.src -e tcp.seq -e tcp.ack -e tcp.flags.str -e tcp.flags -e tcp.analysis.acks_frame

Полный список возможных полей для отображения с флагом -e можно получить при помощи опции -G:

tshark -G fields | less

 

При помощи флага -E осуществляется дополнительное форматирование. Можно отображать/скрывать заголовки, устанавливать символ кавычек и т.д. Например, следующая команда устанавливает эти опции и помещает результат в файл формата CSV:

tshark -r captured.cap -T fields -e frame.number -e frame.encap_type -e frame.protocols -e frame.len -e ip.addr -E separator=, -E quote=d > outfile.csv

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

Отчёт по протоколам SMB, DNS и IP:

tshark -i eth0 -z smb,srt -z dns,tree -z http,tree -z hosts

Список IP-соединений

tshark -r cap.pcap -z conv,ip

Полный список доступных отчетов можно получить, указав опцию -z help:

tshark -z help

Защищённые соединения
Tshark позволяет анализировать и зашифрованные соединения, например, SSL. В следующем примере показано HTTP-соединение через SSL.

Мы отображаем пакеты с TCP-порта 443, указывая Tshark выводить подробную информацию о протоколе HTTP, выполнять сегментацию для SSL, осуществлять поиск приватного ключа в файле server-x.key формата PEM и сохранять информацию для отладки в файле debug-ssl.log.

tshark -r encrypted-packets.pcap -Y "tcp.port == 443" -O http \
-o "ssl.desegment_ssl_records: TRUE" \
-o "ssl.desegment_ssl_application_data: TRUE" \
-o "ssl.keys_list: 127.0.0.1,443,http,server-x.key" \
-o "ssl.debug_file: debug-ssl.log"

Заключение

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