Wireshark в Linux. Консольный анализатор сетевого трафика Tshark
Tshark — мощный анализатор трафика для интерфейса командной строки, который входит в состав известной утилиты Wireshark. Он работает аналогично Tcpdump, но благодаря большому количеству декодеров и фильтров позволяет анализировать информацию протоколов различного уровня и отображать ее в разнообразных видах и форматах.
Tshark может использоваться для анализа трафика в реальном времени или из файлов pcap/pcapng и позволяет своевременно устранять и предупреждать возможные проблемы и угрозы безопасности.
Tshark — приложение командной строки, обладающее всеми возможностями Wireshark, но без графического интерфейса. Это очень удобно, когда требуется автоматизированное выполнение задач, например, запланированный в cron перехват пакетов, отправка данных в sed, awk, perl, базу данных или по электронной почте.
Установка Tshark
Как уже отмечалось, утилита входит в пакет Wireshark. Установить его можно с помощью менеджера пакетов apt-get или yum.
Перехват, чтение и сохранение пакетов
При запуске без параметров Tshark, как и tcpdump начнёт перехватывать весь сетевой трафик на всех интерфейсах.
Если на вашей машине несколько интерфейсов, вам может потребоваться указать, какой именно должен использоваться. Для получения списка доступных интерфейсов укажите опцию -D:
Выбрав нужный интерфейс, укажите его имя или номер при помощи опции -i, например:
Теперь, когда мы научились перехватывать пакеты, нам может потребоваться сохранить их для дальнейшего изучения. Для этого используется опция -w. Следующая команда будет перехватывать пакеты с интерфейса eth0 и сохранять их в файл /tmp/traffic.pcap:
tshark -i eth0 -w /tmp/traffic.pcap
Для анализа пакетов из ранее сохранённого файла вместо их перехвата с интерфейса укажите имя файла с опцией -r. Для чтения из файлов не требуется привилегий суперпользователя.
Надо отметить, что утилита также читает и анализирует файлы снятые tcpdump.
По умолчанию Tshark выполняет разрешение имён. Для лучшего понимания откуда пакет пришел и куда отправлен можно отключить его при помощи опции -n. Тогда вместо доменных имен, в дампе трафика будут ip адреса.
Фильтры
При работе 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, но выводит информацию о конкретном протоколе.
Для вывода данных в различном формате применяется опция -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:
При помощи флага -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 позволяет анализировать и зашифрованные соединения, например, 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.