Установите и используйте Wireshark в Ubuntu Linux

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

Wireshark доступен во всех основных дистрибутивах Linux. В этом руководстве я сосредоточусь на установке последней версии Wireshark только в дистрибутивах на основе Ubuntu, поэтому если вы пользуетесь другими операционными системами на основе Linux, вам стоит почитать официальную документацию и советы по установке.
Wireshark доступен в репозитории «Universe» Ubuntu. Вы можете подключить этот репозиторий и затем установить его с помощью этих команд:
sudo add-apt-repository universe && sudo apt install wireshark
Одна небольшая проблема этого подхода заключается в том, что вы не всегда можете получить последнюю версию Wireshark.
Например, в Ubuntu 18.04, если вы используете команду apt для проверки доступной версии Wireshark, это будет версия 2.6.
apt show wireshark Package: wireshark Version: 2.6.10-1~ubuntu18.04.0 Priority: optional Section: universe/net Origin: Ubuntu Maintainer: Balint Reczey
Тогда как стабильная версия Wireshark 3.2 была выпущена несколько месяцев назад. А новый релиз, конечно, приносит новые возможности.
Итак, что вы делаете в таком случае? К счастью, разработчики Wiresshark предоставляют официальный PPA, который вы можете использовать для установки последней стабильной версии Wireshark в Ubuntu и других дистрибутивах на основе Ubuntu.
Я надеюсь, что вы знакомы с PPA. Если нет, пожалуйста, прочитайте наше превосходное руководство по PPA, чтобы разобраться в этом вопросе до конца.
Откройте терминал и используйте следующие команды одну за другой:
sudo add-apt-repository ppa:wireshark-dev/stable sudo apt update sudo apt install wireshark
Даже если у вас установлена достаточно старая версия Wireshark, она будет обновлена до более новой версии.
Во время установки вам будет предложено разрешить не-суперпользователям перехватывать пакеты. Выберите «Да», чтобы разрешить, или «Нет», чтобы запретить не-суперпользователям захватывать пакеты, после этого завершите установку.
Запуск Wireshark без sudo
Если вы выбрали «Нет» в предыдущей установке, выполните следующую команду от имени пользователя root:
sudo dpkg-reconfigure wireshark-common
И выберите «Да», используя клавишу табуляции и затем клавишу ввода:

Поскольку вы разрешили не-суперпользователю перехватывать пакеты, вы должны добавить пользователя в группу wireshark. Используйте команду usermod, чтобы добавить себя в группу wireshark.
sudo usermod -aG wireshark $(whoami)
Наконец, перезапустите систему Ubuntu, чтобы внесенные изменения вступили в силу.
Забавный факт:
Впервые выпущенный в 1998 году, Wireshark изначально был известен как Ethereal. Разработчикам пришлось изменить его название на Wireshark в 2006 году из-за проблем с товарными знаками.
Запуск Wireshark
Запуск приложения Wireshark можно выполнить из панели запуска приложений или интерфейса командной строки.
Чтобы начать с CLI, просто введите wireshark в вашей консоли:
wiresshark
В графическом интерфейсе, напишите Wireshark в строке поиска и нажмите Enter.

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

Например, я перечислил только проводные сетевые интерфейсы.

Затем, чтобы начать захват пакетов, вы должны выбрать интерфейс (в моем случае это ens33) и щелкнуть значок «Начать захват пакетов», как показано на рисунке ниже.

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

Затем я попытался использовать команду ping google.com в терминале, и, как вы можете видеть, захватил много пакетов.

Теперь вы можете выбрать любой пакет для проверки. После нажатия на конкретный пакет вы можете увидеть информацию о различных уровнях протокола TCP / IP, связанных с ним.

Вы также можете увидеть RAW-данные этого конкретного пакета внизу, как показано на рисунке ниже.

Вот почему так важно сквозное шифрование
Представьте, что вы заходите на сайт, который не использует HTTPS. Любой в той же сети, что и вы, может перехватывать ваши пакеты, видеть имя пользователя и пароль в данных RAW.
Вот почему большинство приложений для чатов используют сквозное шифрование, и большинство веб-сайтов в наши дни используют https (вместо http).
Остановка захвата пакета в Wireshark
Вы можете нажать на красный значок, как отмечено на данном изображении, чтобы прекратить захват пакетов Wireshark.

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

Примечание: вывод можно экспортировать в XML, PostScript®, CSV или обычный текст.
Затем выберите папку назначения, введите имя файла и нажмите «Сохранить».
Потом выберите файл и нажмите «Открыть».

Теперь вы можете открывать и анализировать сохраненные пакеты в любое время. Чтобы открыть файл, нажмите \ + o или перейдите в File > Open из интерфейса Wireshark.
Захваченные пакеты будут загружены из файла.
Заключение.
Wireshark поддерживает множество различных протоколов связи. Существует множество опций и функций, которые дают вам возможность захватывать и анализировать сетевые пакеты уникальным способом. Вы можете узнать больше о Wireshark из их официальной документации.
Я надеюсь, что это руководство помогло вам установить Wireshark в Ubuntu. Пожалуйста, дайте мне знать, если у вас остались вопросы или появились предложения.
Wireshark — подробное руководство по началу использования

Wireshark – это широко распространённый инструмент для захвата и анализа сетевого трафика, который активно используется как для образовательных целей, так и для устранения неполадок на компьютере или в сети. Wireshark работает практически со всеми протоколами модели OSI, обладает понятным для обычного пользователя интерфейсом и удобной системой фильтрации данных. Помимо всего этого, программа является кроссплатформенной и поддерживает следующие операционные системы: Windows, Linux, Mac OS X, Solaris, FreeBSD, NetBSD, OpenBSD.
В этом руководстве мы рассмотрим основной функционал программы Wireshark, соотнесём её с моделью OSI, научимся анализировать сетевой трафик и обезопасим своё нахождение в глобальной сети Интернет.
2. Как установить Wireshark?
Для начала нам необходимо скачать и установить программу Wireshark. Так как программа распространяется под лицензией GNU GPL v2 (т.е. может свободно распространяться), то несложно найти любую версию программы в свободном доступе. В руководстве мы будем использовать функционал более ранней версии программы (1.12.3). Это вызвано тем, что в этой версии сразу встроен протокол SSL, который используется в главе 6. Установка более ранней версии облегчает подготовку к работе с программой, поэтому мы выбрали её. Найти установщик можно на официальном сайте.
Дальнейшая установка программы проста – нажимаем «Next» — «Next» — «Next».

После успешной установки на Вашем рабочем столе появится ярлык Wireshark. Мы можем приступать к рассмотрению функционала!

3. Как пользоваться программой Wireshark?
Одна из главных возможностей программы – это захват трафика сети. Поэтому для начала необходимо научиться захватывать трафик Вашей сети.
Запустим программу! Нас сразу встречает стартовое меню, на котором можно увидеть доступные для захвата интерфейсы компьютера, руководства от разработчиков программы и множество других интересных вещей.

Из всего этого нам необходимо обратить внимание на эту область программы.

Здесь нужно выбрать тот сетевой интерфейс, через который Вы подключены к Интернету.
Сетевой интерфейс – это программное обеспечение, которое взаимодействует с сетевым драйвером и с уровнем IP. Он обеспечивает уровню IP доступ ко всем имеющимся сетевым адаптерам, трафик которых мы будет перехватывать. Чаще всего в программе Wireshark можно встретить сетевой интерфейс беспроводной (Wi-Fi) и кабельный (Ethernet).
В руководстве используется Wi-Fi, поэтому мы выполняем захват «Беспроводной сети», после чего нажимаем «Start».
Если Вы выбрали правильный интерфейс, то сможете увидеть следующее.

Рассмотрим подробнее это окно по пунктам, указанным на нём:
- Панель фильтров, позволяющая найти необходимую информацию. Подробнее о неё рассказано в пятой главе руководства.
- Панель наименований, разделяющая информацию из пункта 3 на номер, временя с начала захвата трафика, источник и адресат, а также используемый протокол, размер пакета и небольшую информацию о сетевом пакете.
- Панель пакетов, обновляющаяся в реальном времени. Здесь информация о пакетах разделена по столбцам, определённым на панели наименований.
- Панель уровней, описывающая уровни модели OSI выбранного сетевого пакета.
- Панель метаданных, представляющая данные в шестнадцатеричном коде и символах.
Поздравляем! Вы успешно захватили трафик Вашей сети. Теперь можно увидеть пакеты данных, проходящих по сети, а также некоторую информацию о них: адреса отправителя и получателя, использующиеся протоколы и содержание пакета.
Теперь можно приступить к анализу сетевого трафика.
4. Как найти скрытую информацию?
Перед началом анализа трафика необходимо иметь базовые знания о протоколах сетевой модели OSI. Достаточно прочитать статью в Википедии.
Во многих программах для передачи информации используется протокол HTTP, который позволяет получать различные ресурсы из Интернета и обратно. Рассмотрим один из пакетов, переданных по протоколу HTTP.

В протоколе HTTP для передачи данных используются запросы GET (предназначен для получения данных) и POST (предназначен для отправки данных).
На рисунке в поле 1 мы видим IP-адрес адресата (в данном случае, это адрес моего компьютера). В поле 2 мы узнаём, что сервер антивируса послал запрос GET для того, чтобы запросить некоторые данные о моём компьютере. Это необходимо для корректного обновления программы. И в поле 3 мы видим то, как выглядит этот запрос в виде URL (Интернет-ссылки).
Небольшое домашнее задание!
Для закрепления материала попробуйте проанализировать любой пакет протокола HTTP на Вашем компьютере и попытайтесь объяснить, для чего он был отправлен.
5. Как среди всех пакетов найти необходимые?
При выполнении домашнего задания у Вас могла возникнуть проблема нахождения необходимого пакета. Для её решения в программе Wireshark есть решение – фильтрация! В специальном поле «Filter» можно ввести необходимые команды или воспользоваться подсказками.

Чаще всего используется фильтрация по IP-адресам, по номерам порта и по протоколам. Давайте посмотрим, как это происходит.
Фильтрация по IP-адресу позволяет нам просматривать все пакеты, приходящие от кого-либо или уходящие кому-либо. Например, отберём все пакеты, приходящие от IP-адреса 10.1.30.46 с помощью ввода в фильтре «ip.src == x.x.x.x».

Также можно отфильтровать трафик сети по IP-адресу получателя пакетов с помощью команды «ip.dst == x.x.x.x».

Кроме того, можно увидеть пакеты вне зависимости от направления трафика с помощью «ip.addr == x.x.x.x».

Для фильтрации по номеру порта используется «.port = x» после названия протокола. Например, для просмотра TCP-порта 80, используемого для незашифрованного трафика HTTP, используем команду «tpc.port == 80».

И, наконец, для фильтрации трафика по используемым пакетами протоколам необходимо просто ввести название протокола.
Обратите внимание, что фильтры можно комбинировать при помощи логических операторов И «and/&&», ИЛИ «or/||» и НЕ «not/!»

Снова домашнее задание!
Чтобы попрактиковаться в поиске необходимой информации, попробуйте посмотреть количество пакетов того или иного протокола и подумайте, почему их так много.
6. Как перехватить данные, передающиеся по защищённым каналам связи?
Разобравшись с основным функционалом Wireshark, мы можем приступить к более сложному и полезному.
Передача данных в глобальной сети Интернет является небезопасной, особенно если никак не защищать их. В современных браузерах используется протокол SSL/TLS, который шифрует информацию и позволяет безопасно передать её.
Иногда пользователю или системного администратору необходимо проверить трафик на наличие подозрительной активности или на корректную работу программы. Из-за этого возникает необходимость расшифровывать перехваченный защищённый трафик.
Для начала разберёмся в том, как работает протокол SSL/TLS. Перед обменом шифрованными данными используется процесс установки соединения, также называемый рукопожатием.
На этапе рукопожатия клиент и сервер проходят аутентификацию (проверку подлинности), обмениваются информацией о своих возможностях и лишь после этого начинают согласование общего сеансового ключа.
Для согласования по незащищённому каналу связи существует множество алгоритмов. Выбор происходит из списка алгоритмов, которые поддерживаются клиентом, на начальной стадии рукопожатия.
Наиболее распространённым алгоритмом обмена сеансовым ключом является RSA. Рассмотрим инфографику, описывающую механизм работы алгоритма.

В момент рукопожатия клиент создаёт случайное число, называемое предварительным секретом, и отправляет его, зашифровав открытым ключом сервера. Далее обе стороны конвертируют предварительный секрет в главный и создают сеансовый ключ, который и используется для дальнейшего обмена информацией.
Теперь попробуем перехватить защищённую информацию в программе Wireshark. Выполним подготовительные действия, а именно проверим используемый для согласования сеансовых ключей алгоритм и настроим браузер. Для начала находим рукопожатие с помощью фильтра, введя «ssl.handshake», и проверяем сообщение сервера.

В поле «Cipher Suite» мы можем увитель «TLS_RSA». Это значит, что мы можем приступать к дальнейшим действиям.
Настройка браузера в операционной система Windows довольно проста. Открываем свойства компьютера, затем «Дополнительные параметры системы» и выбираем «Переменные среды…».

Добавляем новую пользовательскую переменную «SSKEYLOGFILE» и указываем путь до файла, куда мы ходим его сохранять.
Рассмотрим ответное сообщение клиента: оно содержит зашифрованное значение предварительного секрета текущей сессии.

Далее переходим к настройке программы Wireshark. Комбинацией клавиш «Ctrl+Shift+P» открываем меню «Preferences», затем раскрываем ветку «Protocols» и выбираем «SSL».

Проверяем установку необходимых полей, показанных на картинке, и жмём кнопку «Edit». В появившемся окне нажимаем на кнопку «New» и заполняем следующие поля: IP Address (IP-адрес SSL-сервера), Port (порт SSL-сервера), Protocol (протокол, использующий шифрацию SSL. При неизвестном указывать data), Key File (путь к файлу с секретным ключом сервера, который мы указывали в Переменных средах) и Password (если секретный ключ защищён паролем).

Теперь можно подтвердить настройки и приступить к просмотру расшифрованного трафика. Не забывайте использовать фильтр!
Закрепление пройденного материала!
Попробуйте самостоятельно подключиться к серверу какого-либо сайта и посмотреть, какими пакетами обменивается Вам компьютер с ним.
7. Какие возможности даёт захват защищённого трафика?
Захват защищённого трафика даёт множество возможностей. Одной из них является перехват HTTPS-запросов пользователей, подключённых к сети. Давайте рассмотрим, как это сделать и какой результат мы получим.
Для начала повторяем действия из предыдущего пункта, но в качестве IP-адреса SSL-сервера указываем адрес необходимого сайта. Для передачи паролей зачастую используется протокол передачи данных HTTP. О используемых в нём методах мы уже говорили в главе 4. Чтобы использовать фильтрацию HTTP-трафика по методам, можно использовать команду «http.request.method == “название метода”». Так как мы хотим перехватить данные, отправленные клиентом на сервер, то будем рассматривать POST-запросы. Для этого применим фильтр «http.request.method == “POST”».

Проделав эти несложные действия, мы получили важные данные другого пользователя. Поэтому следует помнить, что общедоступные сети являются небезопасными и представляют угрозу даже для защищённого трафика.
Небольшая практика!
Попробуйте захватить защищённый трафик сервера электронной почты и авторизуйтесь, используя логин и пароль. Найдите POST-запрос и посмотрите, что там находится.
Скорее всего, важные данные будут зашифрованы. Таким способом почтовый сервис защищает Ваши данные, но риск взлома всё равно остаётся.
8. Как можно соотнести модель OSI и программу Wireshark?
Рассмотрев весь функционал программы Wireshark, мы можем соотнести её с сетевой моделью OSI. Но для начала следует вспомнить, что из себя представляет эта модель.
OSI – это набор сетевых протоколов, посредством которого различные сетевые устройства взаимодействуют друг с другом. Модель определяет семь уровней взаимодействия систем. Рассмотрим таблицу уровней модели OSI.
Используем Wireshark в Linux

Wireshark — инструмент для анализа входящего и исходящего трафика. В частности, это анализатор трафика в сетях Ethernet (ранее он назывался Ethereal). Программа умеет просматривать проходящий через определенное устройство трафик в текстовом виде или в графической среде (на выбор пользователя). При этом в нем есть целый набор механизмов по фильтрации и поиску конкретных пакетов, переданных по сети.
За всем трафиком можно наблюдать в реальном времени. Wireshark хорошо «ознакомлен» с тем, как работают сети. Из-за этого для него не составляет труда перехватывать информацию любого уровня.
На этом его возможности не заканчиваются. Их можно расширить, используя скрипты на базе языка Lua. Существует большое количество дополнений, значительно повышающих эффективность программы.
Из ограничений Wireshark можно отметить только то, что захват пакетов реализован через программную библиотеку pcap, что немного ограничивает его в возможностях отображения некоторых данных.
Как установить Wireshark?

Для начала загрузим Wireshark на компьютер. Не будем лезть на официальный сайт и скачивать установочные файлы оттуда. Wireshark входит в состав репозиториев популярных дистрибутивов Linux, и обычно для его установки достаточно одной команды.
- Открываем терминал.

Обычно терминал закреплен на панели с избранными программами, но его также можно включить, одновременно нажав клавиши Ctrl + Alt + T
Для Debian и ей подобных (Ubuntu, Mint) — sudo apt-get install wireshark
В Red Hat Enterprise Linux и CentOS — sudo yum install wireshark
Для openSUSE — sudo zypper install wireshark
Для новых редакций Fedora — sudo dnf install wireshark

В моем примере будет Debian-подобная система с менеджером пакетов apt-get.
- Затем вводим пароль администратора.

При вводе пароля набираемые символы не отображаются. Придется вводить вслепую.
- После этого подтверждаем установку, прописав заглавную букву «Д» (или «Y» в английской версии операционной системы).

Если ввести строчную букву, то система может воспринять это как отказ.
- В ходе настройки пакета wireshark-common выбираем пункт Yes и нажимаем на клавишу «Ввод» (Enter).
Заключительный этап установки.
Особенности приложения
- Wireshark захватывает сетевые пакеты на ходу, собирая информацию с беспроводных и проводных интерфейсов или из файла с соответствующими данными. Поддерживаются интерфейсы: Ethernet, IEEE 802.11, PPP и даже виртуальные интерфейсы, существующие только в локальной сети.
- Полученные сетевые пакеты можно сортировать, используя заданные правила, коих в утилите великое множество.
- В интерфейсе программы есть четкое разграничение данных по протоколам. Например, FTP, HTTP или DNS. Все протоколы визуально подчеркиваются, чтобы было легче ориентироваться при поиске.
- Wireshark умеет собирать сетевые пакеты, передаваемые в ходе VoIP-звонков.
- Также эта программа умеет расшифровывать трафик HTTPS, WEP, WPA, если имеются ключи.
- Wireshark собирает статистику оказываемой нагрузки на сетевое подключение.
- А еще можно получить дополнительную информацию о трафике. Это касается содержимого пакетов разных уровней и времени, которое уходит на отправку и получение данных.
Как анализировать трафик?

Приступим непосредственно к анализу трафика и к изучению функций программы Wireshark.
- Для начала включим только что установленное приложение с помощью команды sudo wireshark.

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

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

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

Тут все довольно просто. Главное запомнить, за что отвечают все три категории.
Все довольно наглядно и просто. Обычно пользователям даже этого хватает, чтобы получить нужную информацию, но так использовать Wireshark сложно. Зачастую требуется более расширенный анализ данных либо возможность сохранить все данные в отдельный файл, чтобы подробнее изучить откуда и куда идет трафик. Для этого можно проделать следующее:
- Кликаем на «Файл» в верхнем левом углу окна Wireshark.

У меня тут скриншот из macOS, но в Linux есть такое же меню, просто оно обычно закреплено на самом окне.
- Выбираем пункт Export Objects.

Нам нужен выделенный пункт.
- В открывшемся списке находим кнопку Export HTTP и кликаем по ней.
- Затем нажимаем на кнопку Save All.
У меня тут пустовато, а у вас данных наверняка будет побольше.
Теперь у вас есть файл с полной информацией о том, какой трафик, откуда и как попал на ваш компьютер. Причем он будет отображаться в виде реальных понятных ссылок, глядя на которые можно без проблем сделать вывод, что из себя представляет тот или иной пакет данных, попавший в систему.
Как использовать диагностику?
Также Wireshark часто используют, чтобы обнаружить проблемы, связанные с подключением. Речь идет об ошибках соединения и передачи сетевых пакетов. Wireshark способен их обнаружить и собирает в отдельное меню.
Чтобы посмотреть ошибки, кликнем по иконке в виде кружка, которая находится в левом нижнем углу окна Wireshark.

Как только появятся какие-то ошибки, связанные с сетевыми пакетами, эта иконка поменяет цвет на желтый.

У меня все в порядке и нет никаких проблем. Опять же, у вас в этом списке может быть куча ошибок.
Как использовать фильтры?

Очень важная функция Wireshark — использование фильтров. С помощью них можно легко сортировать данные и получать необходимые результаты без муторного листания гигантских списков с сетевыми пакетами.
Существует бесчисленное множество фильтров, но некоторые используются чаще других. Например, вот эти:
- ip.dst — фильтр по целевому IP-адресу.
- ip.src — фильтр по IP-адресу того, кто отправил сетевой пакет.
- ip.addr — IP-адрес того, кто отправил пакет или принял его.
- ip.proto — протокол, использовавшийся при передаче сетевого пакета.
Более того, при фильтрации данных можно использовать операторы. Например:
ip.dst == IP-адрес — оператор == в этом случае обозначает, что целевой IP-адрес должен равняться указанному. Вместо равенства используются и другие операторы.
ip.src != *IP-адрес — это значит, что IP-адрес отправителя не должен соответствовать указанному.
Также есть:
< — меньше указанного значения. >— больше указанного значения. contains — содержит в себе указанное значение.
Чтобы работать с фильтрами нужно:
- Открыть меню Expressions в правой части интерфейса Wireshark.

Фильтры хранятся и вводятся здесь, но если вы знаете, как их правильно прописывать, то можно воспользоваться текстовой строкой левее.
- Выбрать тип фильтра в левой панели.
- Указать оператор в правой панели.
- Указать значения для сопоставления с фильтром в поле value.
- Затем нажать на кнопку ОК.

Опять же можно все прописать вручную в строке под поиском.
- После этого нужно нажать на белую стрелку в квадрате, которая появится слева от кнопки Expressions.
Пропускаем все сетевые пакеты через наш новый фильтр.
Теперь в списке пакетов будут отображаться только те, что соответствуют критериям фильтрации.
Wireshark в Linux. Консольный анализатор сетевого трафика Tshark
Tshark — мощный анализатор трафика для интерфейса командной строки, который входит в состав известной утилиты Wireshark. Он работает аналогично Tcpdump, но благодаря большому количеству декодеров и фильтров позволяет анализировать информацию протоколов различного уровня и отображать ее в разнообразных видах и форматах.
Tshark может использоваться для анализа трафика в реальном времени или из файлов pcap/pcapng и позволяет своевременно устранять и предупреждать возможные проблемы и угрозы безопасности.
Tshark — приложение командной строки, обладающее всеми возможностями Wireshark, но без графического интерфейса. Это очень удобно, когда требуется автоматизированное выполнение задач, например, запланированный в cron перехват пакетов, отправка данных в sed, awk, perl, базу данных или по электронной почте.
Установка Tshark
Как уже отмечалось, утилита входит в пакет Wireshark. Установить его можно с помощью менеджера пакетов apt-get или yum.
yum install wireshark
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.
Похожие записи:
- настройка сервера для учёта интернет-трафика по netflow
- Как запустить программу в фоне, без привязки к терминалу
- Установка SSL сертификата на nginx
- Переменные окружения в Linux