Глава 1. Введение

Материал из wireshark.wiki

1.1. Что такое Wireshark?

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

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

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

Онлайн-курс по Wireshark

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

1.1.1. Основное назначение утилиты

Утилита Wireshark используется для решения разных задач:

  • Сетевые администраторы применяют ее для диагностики сетевых проблем.
  • Инженеры в области сетевой безопасности – для анализа проблем в своей сфере.
  • Тестировщики проверяют с ее помощью сетевые приложения.
  • Разработчики используют эту утилиту для отладки реализаций сетевых протоколов и приложений.
  • Начинающие сетевые и системные администраторы с помощью нее изучают принципы работы сетевых протоколов.

Wireshark также может быть полезна и во многих других ситуациях.

1.1.2. Функционал

Вот некоторые из множества функций утилиты Wireshark:

  • Запуск в Linux и в Windows.
  • Захват сетевых пакетов в реальном времени.
  • Сохранение захваченных пакетов.
  • Открытие файлов, содержащих данные пакетов, захваченных с помощью tcpdump/WinDump, Wireshark и многих других аналогичных программ.
  • Импорт пакетов из текстовых файлов, содержащих шестнадцатеричные дампы сетевых пакетов.
  • Отображение содержимого пакетов с подробной информацией об их структуре.
  • Экспорт некоторых или всех пакетов в различные форматы файлов для захвата.
  • Фильтрация пакетов на основе заданных условий.
  • Поиск пакетов на основе заданных условий.
  • Выделение цветом на основе заданных условий.
  • Создание различных статистик.
  • И многое другое.

Однако, чтобы по-настоящему оценить возможности утилиты Wireshark, надо начать использовать ее.


Различия внешнего вида

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


Пример пакетов, захваченных с помощью Wireshark

Пример пакетов, захваченных с помощью Wireshark

1.1.3. Захват данных в реальном времени из различных сетевых сред

Wireshark может захватывать трафик из различных источников, включая Ethernet, беспроводные локальные сети (Wireless LAN), Bluetooth, USB и др. Однако не все типы сетевых сред могут быть вам доступны, это зависит от вашего оборудования и операционной системы. Обзор поддерживаемых типов сетевых сред можно найти по адресу https://gitlab.com/wireshark/wireshark/-/wikis/CaptureSetup/NetworkMedia.

1.1.4. Импорт файлов из других программ для захвата данных

Wireshark может открывать файлы с пакетами, захваченными другими программами. Список таких программ обширен. Полный список поддерживаемых форматов входных файлов можно найти в разделе 5.2.2, под названием "Форматы входных файлов".

1.1.5. Экспорт файлов для других программ для захвата данных

Wireshark может сохранять захваченные пакеты во множестве различных форматов, включая форматы, используемые другими программами для захвата данных. Полный список поддерживаемых форматов выходных файлов можно найти в разделе 5.3.2, озаглавленном "Форматы выходных файлов".

1.1.6. Диссекторы протоколов

В Wireshark имеются диссекторы протоколов (или декодеры, как их называют в других продуктах) для большого числа протоколов. С полным списком диссекторов можно ознакомиться в Приложении C под названием "Протоколы и поля протоколов".

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

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

1.1.7. Программное обеспечение с открытым исходным кодом

Wireshark – это программа с открытым исходным кодом, которая распространяется под лицензией GNU General Public License (GPL). Именно поэтому ее можно не только свободно использовать на любом количестве компьютеров, не заботясь о лицензионных ключах, платежах или чем-либо подобном, но и легко добавлять в Wireshark новые протоколы. Это можно сделать либо через плагины, либо интегрировав их прямо в исходный код.

1.1.8. Что не умеет Wireshark

Wireshark не является системой обнаружения вторжений (IDS, Intrusion Detection System). Утилита не предупредит вас, если кто-то будет делать в вашей сети что-то необычное или несанкционированное. Однако, если происходит что-то странное, Wireshark может помочь вам разобраться, в чем дело.

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

Онлайн-курс по Wireshark

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.


1.2. Системные требования

Объем ресурсов, необходимых для работы Wireshark, зависит от используемой среды и размера анализируемого файла захвата. Указанные далее системные требования подойдут для файлов захвата, размер которых не превышает нескольких сотен мегабайт. Для захвата и анализа более объемных файлов потребуется больше оперативной памяти и дискового пространства.

Активная сеть = большие объемы захваченных данных

Файлы захвата могут быть огромными. Если захватывать все подряд, то в сети с пропускной способностью 100 Мбит/с за короткий промежуток времени может быть сгенерирован файл объемом в несколько десятков гигабайт. Поэтому всегда предпочтителен компьютер с быстрым процессором, большим объемом памяти и дискового пространства.

Если на компьютере, на котором запущена Wireshark, закончится оперативная память, программа завершит работу аварийно. Более подробные сведения об этом, а также возможные решения данной проблемы можно найти на странице https://gitlab.com/wireshark/wireshark/-/wikis/KnownBugs/OutOfMemory.

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

1.2.1. Microsoft Windows

Wireshark поддерживает все версии Windows, которые находятся в рамках расширенного периода поддержки. На момент написания этой статьи список версий включал в себя клиентские ОС Windows 8.1, 10 и 11, а также серверные ОС Windows Server 2012, 2012 R2, 2016, 2019 и 2022. Для корректной работы утилиты также требуется следующее:

  • Универсальная C Runtime. Она включена в состав Windows 11 и 10 и Windows Server 2022 и 2019. ПО устанавливается автоматически на более ранних версиях ОС, если включена возможность обновления Microsoft Windows. В противном случае необходимо установить обновления KB2999226 или KB3118401.
  • Любой современный 64-битный процессор с архитектурой x86 или ARM.
  • 500 мегабайт доступной оперативной памяти. Для больших файлов захвата потребуется больший объем.
  • 500 мегабайт доступного дискового пространства. Для больших файлов захвата потребуется больший объем.
  • Дисплей с разрешением 1280 × 1024 или выше. Wireshark будет использовать HiDPI- или Retina-разрешения, если они доступны. Профессионалам будут полезны несколько мониторов.
  • Поддерживаемая сетевая карта для захвата.
    • Для протокола Ethernet подойдет любая карта, поддерживаемая Windows. См. gitlab-страницы по захвату Ethernet и аппаратной разгрузке для изучения нюансов, которые могут оказаться актуальными для вас.
    • Для протокола 802.11. См. соответствующую gitlab-страницу Wireshark. Захват оригинальных данных 802.11 может быть сложным без специального оборудования.
    • Информацию по другим типам сред можно найти здесь.

Более старые версии Windows, для которых период расширенной поддержки Microsoft закончился, Wireshark больше не поддерживаются. Поддерживать эти системы сложно или даже невозможно из-за обстоятельств, на которые разработчики не могут повлиять. К таким обстоятельствам относится, например, наличие сторонних библиотек, от которых зависят разработчики Wireshark, или функции, которые присутствуют только в более новых версиях Windows, таких как улучшенная безопасность или управление памятью.

  • Wireshark 3.6 был последней версией, официально поддерживающей 32-битные Windows.
  • Wireshark 3.2 был последней версией, официально поддерживающей Windows 7 и Windows Server 2008 R2.
  • Wireshark 2.2 был последней версией, поддерживающей Windows Vista и Windows Server 2008 без R2.
  • Wireshark 1.12 был последней версией, поддерживающей Windows Server 2003.
  • Wireshark 1.10 был последней версией, официально поддерживающей Windows XP.

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

1.2.2. macOS

Wireshark поддерживает macOS начиная с версии 10.14 и выше. Как и в случае с Windows, поддерживаемые версии macOS зависят от сторонних библиотек и требований Apple. Начиная с версии 4.0 железо Apple Silicon поддерживается на встроенном уровне.

  • Wireshark 3.6 была последней версией, поддерживающей macOS 10.13.
  • Wireshark 3.4 была последней версией, поддерживающей macOS 10.12.
  • Wireshark 2.6 была последней вересией, поддерживающей Mac OS X 10.6 и 10.7, а также OS X с 10.8 по 10.11.
  • Wireshark 2.0 была последней версией, поддерживающей OS X на 32-битных процессорах Intel.
  • Wireshark 1.8 была последней версией, поддерживающей Mac OS X на архитектуре PowerPC.

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

1.2.3. UNIX, Linux и BSD

Wireshark работает на большинстве UNIX и UNIX-подобных платформах, включая Linux и большинство вариантов BSD. Требования к системе должны быть сопоставимы с характеристиками, перечисленными выше для Windows.

Бинарные пакеты доступны для большинства UNIX-систем и дистрибутивов Linux, включая следующие платформы:

  • Alpine Linux,
  • Arch Linux,
  • Canonical Ubuntu,
  • Debian GNU/Linux,
  • FreeBSD,
  • Gentoo Linux,
  • HP-UX,
  • NetBSD,
  • OpenPKG,
  • Oracle Solaris,
  • Red Hat Enterprise Linux / CentOS / Fedora.

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


1.3. Где скачать Wireshark

Последнюю версию программы можно скачать со страницы "Загрузки" официального сайта Wireshark. Официальные установщики для Windows и macOS подписаны доверенными сертификатами на соответствующих платформах. Кроме того, установщики для macOS проходят дополнительную верификацию со стороны Apple.

Новая версия Wireshark обычно появляется каждые шесть недель.

Можно получать уведомления о новых выпусках Wireshark. Для этого надо подписаться на рассылку wireshark-announce. Подробнее об этом можно узнать в разделе 1.6.5, озаглавленном "Mailing Lists" (Списки рассылки).

Каждый выпуск включает в себя список хешей файлов, которые отправляются на рассылку wireshark-announce и размещаются в файле с названием SIGNATURES-x.y.z.txt. Сообщения с анонсами архивируются на https://www.wireshark.org/lists/wireshark-announce/, а файлы SIGNATURES можно найти на https://www.wireshark.org/download/src/all-versions/. Оба источника защищены GPG-подписью и включают в себя инструкции по верификации для Windows, Linux и macOS. Как уже отмечалось, для систем Windows и macOS возможна дополнительная проверка скачанных файлов с использованием функций проверки кодовых подписей.


1.4. Краткая история Wireshark

В конце 1997 года Джеральд Комбс столкнулся с необходимостью диагностики сетевых проблем и захотел глубже понять принципы работы компьютерных сетей. Эти две потребности привели его к началу работы над утилитой Ethereal (исходное название проекта Wireshark).

После нескольких перерывов в разработке Ethereal была впервые выпущена в июле 1998 года в версии 0.2.0. Буквально через несколько дней Джеральду Комбсу начали приходить патчи, отчеты об ошибках и слова поддержки. После этого стало понятно, что Ethereal будет успешным проектом.

Не прошло и недели, как Гильберт Рамирез увидел потенциал программы и добавил в нее диссектор низкого уровня.

В октябре 1998 года Гай Харрис, который в этот момент искал альтернативу TCPView, начал применять патчи и добавлять свои диссекторы к Ethereal.

В конце 1998 года Ричард Шарп, который проводил курсы по TCP/IP, предположил, что программа может быть полезной в образовательных целях и начал изучать ее, чтобы узнать, поддерживает ли она необходимые протоколы. Так как на тот момент нужных протоколов не было, он начал добавлять свои диссекторы и патчи.

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

В 2006 году проект прошел реорганизацию и был перезапущен под новым названием – Wireshark.

Через 10 лет после начала разработки, в 2008 году, Wireshark наконец достигла версии 1.0. Она стала первым полноценным релизом с минимальным набором реализованных функций. Ее выход совпал с первой конференцией для разработчиков и пользователей Wireshark, названной SharkFest.

В 2015 году был выпущен Wireshark 2.0 с новым пользовательским интерфейсом.

В 2023 году Wireshark перешёл под крыло некоммерческой организации Wireshark Foundation. Фонд обеспечивает проект необходимой инфраструктурой, организует SharkFest — конференцию для разработчиков и пользователей, а также способствует обучению фундаментальным принципам работы сетевых протоколов.


1.5. Разработка и поддержка Wireshark

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

Кроме того, свой вклад в Wireshark внесло множество людей, разработавших диссекторы протоколов, и ожидается, что этот процесс продолжится. Список лиц, которые внесли код в Wireshark, можно найти во вкладке «О программе» в самой утилите или на странице авторов на сайте Wireshark.

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

Исходный код Wireshark и бинарные пакеты для некоторых платформ доступны на странице "Загрузка" веб-сайта Wireshark.

Онлайн-курс по Wireshark

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.


1.6. Сообщение о проблемах и получение помощи

Если у вас возникли проблемы или вам нужна помощь по работе с Wireshark, то можно обратиться к нескольким источникам информации, которые могут быть вам полезны (помимо этого руководства, разумеется).

1.6.1. Официальный веб-сайт

Много полезной информации на английском языке находится на официальном сайте Wireshark по адресу https://www.wireshark.org/.

1.6.2. GitLab

Gitlab-страница Wireshark на https://gitlab.com/wireshark/wireshark/-/wikis/ содержит много информации, касающейся как самой утилиты Wireshark, так и общих вопросов захвата пакетов. На ней можно найти сведения, которых нет в этом руководстве. Например, там есть объяснение, как осуществлять захват в коммутированной сети, имеется справочник протоколов с информацией о них, а также многое другое.

Специалисты, которые хотят поделиться своими знаниями по какой-то теме, с которой они хорошо знакомы, могут редактировать страницы на сайте прямо из своего веб-браузера.

1.6.3. Сайт вопросов и ответов

Англоязычный сайт вопросов и ответов Wireshark расположен по адресу https://ask.wireshark.org/. На нем можно попытаться найти ранее заданные вопросы и ознакомиться с ответами на них тех людей, которые разбираются в данной теме. Ответы ранжированы, поэтому среди них легко можно выбрать наиболее подходящие. Если вопрос ранее не обсуждался, то можно задать его самостоятельно.

1.6.4. ЧАВО

ЧАВО (часто задаваемые вопросы и ответы на них) – это русскоязычный аналог англоязычной аббревиатуры FAQ (Frequently Asked Questions). ЧАВО предназначено для того, чтобы упростить процесс поиска информации и уменьшить количество повторяющихся вопросов.

Ознакомьтесь с ЧАВО (FAQ)

Перед тем как отправить письмо по адресам рассылки, указанным ниже, обязательно изучите раздел FAQ (на английском языке). Существует большая вероятность того, что там уже есть ответы на ваши вопросы. Изучение FAQ позволит сэкономить ваше и чужое время. Учтите, что на рассылки подписано множество людей.

Раздел FAQ на официальном веб-сайте Wireshark доступен через главное меню сайта. В разделе "Get Help" надо выбрать раздел FAQs. Это приведет на страницу https://www.wireshark.org/faq.html.

1.6.5. Почтовые рассылки

На официальном сайте Wireshark можно найти ряд рассылок на различные темы:

Wireshark-announce – рассылка о новых выпусках программы, которые обычно появляются примерно каждые шесть недель.

Wireshark-users – рассылка в которой пользователи Wireshark задают вопросы о работе с утилитой, а другие стараются давать ответы.

Wireshark-dev – рассылка, которая будет интересна разработчикам Wireshark.

Подписаться на каждую из этих рассылок можно здесь. На указанной странице можно выбрать, на какую рассылку хотите подписаться, нажав кнопку "Подписаться/Отписаться/Настройки" под заголовком соответствующей рассылки. Ссылки на архивы рассылок также представлены на этой странице.

Рассылки архивируются

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

1.6.6. Сообщение о проблемах

При сообщении о проблемах с Wireshark необходимо предоставить следующую информацию:

  1. Номер версий Wireshark и связанных с ней библиотек, таких как Qt или GLib. Эту информацию можно получить из окна "О программе" в Wireshark или с помощью команды wireshark -v.
  2. Информацию о платформе, на которой запускается Wireshark (операционная система, разрядность процессора и т.д.).
  3. Подробное описание вашей проблемы.
  4. Если выходит сообщение об ошибке или предупреждение, то необходимо скопировать его текст (а также несколько строк до и после него, если они есть) чтобы другие могли легче найти место, где происходит сбой. Не надо ограничиваться фразами вроде: "Получаю предупреждение при выполнении x", так как это не даст полного представления о том, где искать проблему.


Не отправляйте конфиденциальные данные!

Если вы отправляете файлы захвата на адрес почтовой рассылки, убедитесь, что они не содержат конфиденциальную информацию. Вы можете использовать инструменты вроде TraceWrangler для "очистки" файла захвата перед его отправкой.


Не отправляйте большие файлы

Не отправляйте по адресам рассылок файлы размером более одного мегабайта. Вместо этого предоставьте ссылку для скачивания. Для сообщения об ошибках и предложений по улучшению вы можете создать задачу на GitLab Issues и загрузить файл туда.


Примечание

Перед тем как сообщать о каких-либо проблемах, убедитесь, что у вас установлена последняя версия Wireshark.

1.6.7. Сообщение о сбоях на платформах UNIX/Linux

К сообщениям о сбоях в работе Wireshark наряду со сведениями, упомянутыми в разделе «Сообщение о проблемах», очень полезно прикладывать информацию о трассировке.

Информацию о трассировке можно получить с помощью следующих команд в UNIX или Linux (обратите внимание на обратные кавычки):

$ gdb `whereis wireshark | cut -f2 -d: | cut -d' ' -f2` core >& backtrace.txt

backtrace

^D

Если у вас нет доступа к gdb, вам придется использовать отладчик вашей операционной системы.

Отправьте backtrace.txt на электронный адрес wireshark-dev@wireshark.org.

1.6.8. Сообщение о сбоях на платформах Windows

Дистрибутивы для Windows не содержат файлы символов (.pdb), так как они очень большие. Их можно скачать отдельно по адресу https://www.wireshark.org/download/win64/all-versions/.

Файлы символов (.pdb) – это файлы, которые содержат данные, необходимые для более детальной отладки программного обеспечения. Эти файлы обычно используются разработчиками и специалистами по тестированию для выявления и исправления ошибок в коде.

Онлайн-курс по Wireshark

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.