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

Wireshark is a network packet analyzer. It captures every packet getting in or out of a network interface and shows them in a nicely formatted text. It is used by Network Engineers all over the world.

Wireshark is cross platform and it is available for Linux, Windows and Mac OS. You get the same user experience in any operating system you use.

To learn more about Wireshark, visit the official website of Wireshark at https://www.wireshark.org

In this article, I will show you how to install Wireshark on Ubuntu and how to use it. I am using Ubuntu 18.04 LTS for the demonstration. But it should work on any LTS version of Ubuntu still supported at the time of this writing. Let’s get started.

Installing Wireshark:

Wireshark is available in the official package repository of Ubuntu 14.04 LTS and later. So it is really easy to install.

First update the APT package repository cache with the following command:

$ sudo apt update

The APT package repository cache should be updated.

Now, Run the following command to install Wireshark on your Ubuntu machine:

$ sudo apt install wireshark

Now press y and then press .

By default, Wireshark must be started as root (can also be done with sudo ) privileges in order to work. If you want to run Wireshark without root privileges or without sudo , then select and press .

Wireshark should be installed.

Now if you selected in the earlier section to run Wireshark without root access, then run the following command to add your user to the wireshark group:

$ sudo usermod -aG wireshark $(whoami )

Finally, reboot your computer with the following command:

$ sudo reboot

Starting Wireshark:

Now that Wireshark is installed, you can start Wireshark from the Application Menu of Ubuntu.

You can also run the following command to start Wireshark from the Terminal:

$ wireshark

If you did not enable Wireshark to run without root privileges or sudo , then the command should be:

$ sudo wireshark

Wireshark should start.

Capturing Packets Using Wireshark:

When you start Wireshark, you will see a list of interfaces that you can capture packets to and from.

There are many types of interfaces you can monitor using Wireshark, for example, Wired , Wireless , USB and many external devices. You can choose to show specific types of interfaces in the welcome screen from the marked section of the screenshot below.

Here, I listed only the Wired network interfaces.

Now to start capturing packets, just select the interface (in my case interface ens33 ) and click on the Start capturing packets icon as marked in the screenshot below. You can also double click on the interface that you want to capture packets to and from to start capturing packets on that particular interface.

You can also capture packets to and from multiple interfaces at the same time. Just press and hold and click on the interfaces that you want to capture packets to and from and then click on the Start capturing packets icon as marked in the screenshot below.

Using Wireshark on Ubuntu:

I am capturing packets on the ens33 wired network interface as you can see in the screenshot below. Right now, I have no captured packets.

I pinged google.com from the terminal and as you can see, many packets were captured.

Now you can click on a packet to select it. Selecting a packet would show many information about that packet. As you can see, information about different layers of TCP/IP Protocol is listed.

You can also see the RAW data of that particular packet.

You can also click on the arrows to expand packet data for a particular TCP/IP Protocol Layer.

Filtering Packets Using Wireshark:

On a busy network thousands or millions of packets will be captured each second. So the list will be so long that it will be nearly impossible to scroll through the list and search for certain type of packet.

The good thing is, in Wireshark, you can filter the packets and see only the packets that you need.

To filter packets, you can directly type in the filter expression in the textbox as marked in the screenshot below.

You can also filter packets captured by Wireshark graphically. To do that, click on the Expression… button as marked in the screenshot below.

A new window should open as shown in the screenshot below. From here you can create filter expression to search packets very specifically.

In the Field Name section almost all the networking protocols are listed. The list is huge. You can type in what protocol you’re looking for in the Search textbox and the Field Name section would show the ones that matched.

In this article, I am going to filter out all the DNS packets. So I selected DNS Domain Name System from the Field Name list. You can also click on the arrow on any protocol

And make your selection more specific.

You can also use relational operators to test whether some field is equal to, not equal to, great than or less than some value. I searched for all the DNS IPv4 address which is equal to 192.168.2.1 as you can see in the screenshot below.

The filter expression is also shown in the marked section of the screenshot below. This is a great way to learn how to write filter expression in Wireshark.

Once you’re done, just click on OK .

Now click on the marked icon to Apply the filter.

As you can see, only the DNS protocol packets are shown.

Stopping Packet Capture in Wireshark:

You can click on the red icon as marked in the screenshot below to stop capturing Wireshark packets.

Saving Captured Packets to a File:

You can click on the marked icon to save captured packets to a file for future use.

Now select a destination folder, type in the file name and click on Save .

The file should be saved.

Now you can open and analyze the saved packets anytime. To open the file, go to File > Open from Wireshark or press + o

Then select the file and click on Open .

The captured packets should be loaded from the file.

So that’s how you install and use Wireshark on Ubuntu. Thanks for reading this article.

Wireshark is one of the best open source network GUI packet analyzer available today. It is used to capture network packets and display the details of the packet data. Wireshark and tcpdump use libpcap to get live network data. It’s often more easy to capture packets using tcpdump command and view using Wireshark. This is useful for troubleshooting the network or network security issues and to debug protocol implementations. In this article, we will go through the installation of Wireshark on Ubuntu 16.04, CentOS 7 and Arch Linux.

Installing on Ubuntu 16.04

Before we begin installation, let"s meet the dependencies:

$ sudo apt-get install build-essential checkinstall libcurl4-openssl-dev bison flex qt5-default qttools5-dev libssl-dev libgtk-3-dev libpcap-d

Once all the dependencies have been installed, we run the following in the terminal.

$ sudo add-apt-repository ppa:wireshark-dev/stable $ sudo apt-get update $ sudo apt-get install wireshark

During the installation, if you"re asked if non-superusers be able to capture packets. Press the left arrow key on your keyboard to select and hit Enter.

You can launch it from dash or type the command:

$ wireshark

Installing on CentOS 7

We will install Wireshark on CentOS 7 using yum. In the terminal, type the following commands:

$ yum install gcc gcc-c++ bison flex libpcap-devel qt-devel gtk3-devel rpm-build libtool c-ares-devel qt5-qtbase-devel qt5-qtmultimedia-devel qt5-linguist desktop-file-utils $ sudo yum install wireshark wireshark-qt wireshark-gnome

Launch it from the launcher or type the following command in the command line:

$ wireshark

Installing on Arch Linux

In the terminal, type the following commands:

$ sudo pacman -S wireshark-qt

or if you prefer the GTK+ interface, use this command:

$ sudo pacman -S wireshark-gtk

Installing from Source

Installing from source will require you to compile the source code. Once the requirements are met, run the following commands in the terminal to install the source code.

$ wget https://1.as.dl.wireshark.org/src/wireshark-2.4.5.tar.xz $ tar xvf wireshark-2.4.5.tar.xz $ cd wireshark-2.4.5/ $ ./autogen.sh $ ./configure –enable-setcap-install $ sudo make $ sudo make install $ sudo ldconfig

Tshark

TShark is a command line tool that comes along with Wireshark to capture live traffic as well as read and parse capture files. Without any options set, TShark will work much like tcpdump. It will use the pcap library to capture traffic from the first available network interface and displays a summary line on stdout for each received packet.

Tshark is automatically on CentOS 7 when you install wireshark. On Ubuntu, you can install it with the command:

$ sudo apt install tshark

Using Tshark

If you want to capture the packets coming from/going to UDP port 1812 on eth0, you can use tshark command as follows:

$ tshark -f "tcp port 80" -i eth0 -w capture.cap Capturing on "eth0"

The -f flag is used to specify a network capture filter (more on filters later). Packets that do not verify the condition following the -f flag will not be captured. In this example, only IP packets that are coming from or going to UDP port 1812 are captured.

The -i flag is used to specify the interface from which we expect to see the RADIUS packets. Change "eth0" to whatever your interface name is.

The -w flag is used to specify a file where the captured traffic will be saved for later processing.

If you are getting a ‘Permission Denied’ error when running wireshark as local user, you can start the it with root privileges or add the user account to wireshark group using the following command:

$ sudo usermod -a -G wireshark username

In this article, we learned to install wireshark on Ubuntu, CentOS and Arch Linux. We also learned how to compile from source for any Linux distro. Let us know if you faced any challenges during installation and we"ll help you fix them.

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

Все пакеты перехватываются в реальном времени и предоставляются в удобном для чтения формате. Программа поддерживает очень мощную систему фильтрации, подсветку цветом, и другие особенности, которые помогут найти нужные пакеты. В этой инструкции мы рассмотрим, как пользоваться Wireshark для анализа трафика. Недавно разработчики перешли к работе над второй веткой программы Wireshark 2.0, в неё было внесено множество изменений и улучшений, особенно для интерфейса. Именно её мы будем использовать в этой статье.

Перед тем, как переходить к рассмотрению способов анализа трафика, нужно рассмотреть, какие возможности поддерживает программа более подробно, с какими протоколами она может работать и что делать. Вот основные возможности программы:

  • Захват пакетов в реальном времени из проводного или любого другого типа сетевых интерфейсов, а также чтение из файла;
  • Поддерживаются такие интерфейсы захвата: Ethernet, IEEE 802.11, PPP и локальные виртуальные интерфейсы;
  • Пакеты можно отсеивать по множеству параметров с помощью фильтров;
  • Все известные протоколы подсвечиваются в списке разными цветами, например TCP, HTTP, FTP, DNS, ICMP и так далее;
  • Поддержка захвата трафика VoIP-звонков;
  • Поддерживается расшифровка HTTPS-трафика при наличии сертификата;
  • Расшифровка WEP-, WPA-трафика беспроводных сетей при наличии ключа и handshake;
  • Отображение статистики нагрузки на сеть;
  • Просмотр содержимого пакетов для всех сетевых уровней;
  • Отображение времени отправки и получения пакетов.

Программа имеет множество других функций, но это были те основные, которые могут вас заинтересовать.

Как пользоваться Wireshark

Я предполагаю, что программа у вас уже установлена, но если нет, то вы можете ее установить из официальных репозиториев. Для этого наберите команду в Ubuntu:

sudo apt install wireshark

После установки вы сможете найти программу в главном меню дистрибутива. Запускать Wireshark нужно с правами суперпользователя, потому что иначе она не сможет анализировать сетевые пакеты. Это можно сделать из главного меню или через терминал с помощью команды для KDE:

А для Gnome / Unity:

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

Анализ сетевого трафика

Для начала анализа выберите сетевой интерфейс, например eth0, и нажмите кнопку Start.

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

  • Верхняя часть - это меню и панели с различными кнопками;
  • Список пакетов - дальше отображается поток сетевых пакетов, которые вы будете анализировать;
  • Содержимое пакета - чуть ниже расположено содержимое выбранного пакета, оно разбито по категориям в зависимости от транспортного уровня;
  • Реальное представление - в самом низу отображается содержимое пакета в реальном виде, а также в виде HEX.

Вы можете кликнуть по любому пакету, чтобы проанализировать его содержимое:

Здесь мы видим пакет запроса к DNS, чтобы получить IP-адрес сайта, в самом запросе отправляется домен, а в пакете ответа мы получаем наш вопрос, а также ответ.

Для более удобного просмотра можно открыть пакет в новом окне, выполнив двойной клик по записи:

Фильтры Wireshark

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

  • ip.dst - целевой IP-адрес;
  • ip.src - IP-адрес отправителя;
  • ip.addr - IP отправителя или получателя;
  • ip.proto - протокол;
  • tcp.dstport - порт назначения;
  • tcp.srcport - порт отправителя;
  • ip.ttl - фильтр по ttl, определяет сетевое расстояние;
  • http.request_uri - запрашиваемый адрес сайта.

Для указания отношения между полем и значением в фильтре можно использовать такие операторы:

  • == - равно;
  • != - не равно;
  • < - меньше;
  • > - больше;
  • <= - меньше или равно;
  • >= - больше или равно;
  • matches - регулярное выражение;
  • contains - содержит.

Для объединения нескольких выражений можно применять:

  • && - оба выражения должны быть верными для пакета;
  • || - может быть верным одно из выражений.

Теперь рассмотрим подробнее на примерах несколько фильтров и попытаемся понять все знаки отношений.

Сначала отфильтруем все пакеты, отправленные на 194.67.215.. Наберите строку в поле фильтра и нажмите Apply . Для удобства фильтры Wireshark можно сохранять с помощью кнопки Save :

ip.dst == 194.67.215.125

А чтобы получить не только отправленные пакеты, но и полученные в ответ от этого узла, можно объединить два условия:

ip.dst == 194.67.215.125 || ip.src == 194.67.215.125

Также мы можем отобрать переданные большие файлы:

http.content_length > 5000

Отфильтровав Content-Type, мы можем выбрать все картинки, которые были загружены; выполним анализ трафика Wireshark, пакеты, которого содержат слово image:

http.content_type contains image

Чтобы очистить фильтр, вы можете нажать кнопку Clear . Бывает, вы не всегда знаете всю необходимую для фильтрации информацию, а просто хотите изучить сеть. Вы можете добавить любое поле пакета в качестве колонки и посмотреть его содержимое в общем окне для каждого пакета.

Например, я хочу вывести в виде колонки ttl (время жизни) пакета. Для этого откройте информацию о пакете, найдите это поле в разделе IP. Затем вызовите контекстное меню и выберите опцию Apply As Column :

Таким же образом можно создать фильтр на основе любого нужного поля. Выберите его и вызовите контекстное меню, затем нажмите Apply as filter или Prepare as filter , затем выбираем Selected, чтобы вывести только выбранные значения, или Not selected , чтобы их убрать:

Указанное поле и его значение будет применено или во втором случае подставлено в поле фильтра:

Таким способом вы можете добавить в фильтр поле любого пакета или колонку. Там тоже есть эта опция в контекстном меню. Для фильтрации протоколов вы можете использовать и более простые условия. Например, выполним анализ трафика Wireshark для протоколов HTTP и DNS:

Еще одна интересная возможность программы - использование Wireshark для отслеживания определённого сеанса между компьютером пользователя и сервером. Для этого откройте контекстное меню для пакета и выберите Follow TCP stream .

Затем откроется окно, в котором вы найдете все данные, переданные между сервером и клиентом:

Диагностика проблем Wireshark

Возможно, вам интересно, как пользоваться Wireshark 2.0 для обнаружения проблем в сети. Для этого в левом нижнем углу окна есть круглая кнопка, при нажатии на неё открывается окно Expet Tools . В нём Wireshark собирает все сообщения об ошибках и неполадках в сети:

Окно разделено на такие вкладки, как Errors, Warnings, Notices, Chats. Программа умеет фильтровать и находить множество проблем с сетью, и тут вы можете их очень быстро увидеть. Здесь тоже поддерживаются фильтры Wireshark.

Анализ трафика Wireshark

Вы можете очень просто понять, что именно скачивали пользователи и какие файлы они смотрели, если соединение не было зашифровано. Программа очень хорошо справляется с извлечением контента.

Для этого сначала нужно остановить захват трафика с помощью красного квадрата на панели. Затем откройте меню File -> Export Objects -> HTTP :

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

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

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

Установка Tshark

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

В Centos/RedHat

Yum install wireshark

Aptt-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, поэтому подробно мы их в этой статье рассматривать не будем. Желающие могут прочитать о них в статье про

Перехват пакетов, связанных с узлом 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"

Форматирование

Иногда требуется отображение более или менее подробной информации о пакетах. 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

Защищённые соединения

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 .

Похожие публикации