Wireshark в Linux. Консольный анализатор сетевого трафика Tshark

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

Tshark может использоваться для анализа трафика в реальном времени или из файлов pcap/pcapng и позволяет своевременно устранять и предупреждать возможные проблемы и угрозы безопасности.

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

Установка Tshark

Как уже отмечалось, утилита входит в пакет Wireshark. Установить его можно с помощью менеджера пакетов apt-get или yum.

В Centos/RedHat

yum install wireshark

Ubuntu/Debian

apt-get install wireshark

Перехват, чтение и сохранение пакетов

При запуске без параметров 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

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

tshark -i 2 -f "host 192.168.1.100 and (dst port 53 or 80)"

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

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

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

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

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

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

Отображение 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 eth2 -O icmp

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

tshark -i wlan0 -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 ens1 -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 обладает очень широкими возможностями, но мы рассмотрели наиболее важные и характерные примеры. Для дальнейшего изучения и получения максимально подробной информации об этой утилите можно обратиться к официальной документации.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

ИТ Проффи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: