Оригинал: https://www.varonis.com/blog/how-to-use-wireshark
Использование Wireshark: доступное руководство и советы.
Если вы занимаетесь устранением неполадок в сети, и вам нужно анализировать отдельные пакеты, вам необходим Wireshark - приложение для захвата и анализа сетевого трафика, которым вы должны уметь пользоваться. Поскольку Wireshark - наиболее распространённый инструмент для этих целей, давайте рассмотрим основы его применения: где его взять, как захватывать пакеты, как пользоваться фильтрами и т.д.
▪ Что такое Wireshark?
Это программа для анализа сетевых протоколов с открытым исходным кодом, которую часто считают отраслевым стандартом. Wireshark поддерживается международной организацией специалистов по сетям и разработчиков ПО, поэтому к ней постоянно выпускаются обновления с учётом новых сетевых технологий и методов шифрования.
Правительственные учреждения, корпорации, некоммерческие организации и образовательные учреждения используют Wireshark для устранения неполадок и обучения - действительно, разглядывать трафик под микроскопом Wireshark - лучший способ изучить сети на низком уровне.
Использовать Wireshark можно, только если вам разрешили анализировать трафик: просмотр пакетов без разрешения незаконен.
▪ Как работает Wireshark?
Wireshark - это сниффер, т.е. инструмент отслеживания и анализа сетевого трафика. Он перехватывает трафик протоколов ethernet, bluetooth, 802.11, token ring, frame relay и других и сохраняет данные для последующего анализа.
Примечание редактора 1: под пакетом подразумевается единица передачи данных протоколов, начиная с сетевого уровня (TCP, DNS и т.д.)
Примечание редактора 2: В локальной сети трафик широковещательный, то есть компьютер с wireshark может видеть трафик между двумя другими компьютерами. Чтобы увидеть, какой трафик отправляется на внешний сайт, надо перехватить пакеты на локальном компьютере.
Wireshark позволяет устанавливать фильтры на логирование перед захватом трафика либо во время его анализа, чтобы можно было сосредоточиться на том, что вам нужно найти, при трассировке. Например, можно установить фильтр для просмотра трафика протокола TCP между двумя IP-адресами; либо можно настроить отображение только пакетов, отправляемых с какого-то одного компьютера. Наличие фильтров стало одной из основных причин того, что что он стал стандартным инструментом анализа пакетов.
▪ В каких случаях следует использовать Wireshark?
Wireshark можно использовать для понимания того, как происходит обмен трафиком в сети, и для анализа причин проблем со связью.
Утилита помогает:
▶ Сетевым администраторам решать возникающие в сети проблемы
▶ Инженерам сетевой безопасности изучать сеть на наличие дыр в безопасности
▶ Тестировать приложения
▶ Разработчикам в отладке реализаций протоколов
▶ Пользователям изучать специфику отдельных протоколов
▪ В каких случаях не следует использовать Wireshark?
Wireshark может быть полезен в решении множества проблем в сети, а также в качестве инструмента изучения протоколов, но он не может:
▶ Помочь пользователям, которые не разбираются в сетевых протоколах: чтобы пользоваться утилитой, нужно понимать, как работают сети
▶ Перехватывать трафик за пределами вашего широковещательного домена
▶ Присылать уведомления: он может только применить цветовое кодирование для индикации битых пакетов
▪ Как установить Wireshark
Это несложно: сначала нужно посетить официальный сайт Wireshark: https://www.wireshark.org/download.html и загрузить версию программы для вашей операционной системы. Базовая версия бесплатна, установка простая.
Wireshark на Windows
Для Windows есть два варианта приложения: 64-битное и 32-битное. Выберите тот, который совместим с вашей ОС.
Wireshark на Mac
https://www.wireshark.org/docs/wsug_html_chunked/ChBuildInstallOSXInstall.html : Wireshark можно установить с помощью менеджера пакетов Homebrew https://formulae.brew.sh/cask/wireshark#default . Чтобы установить Homebrew, наберите в терминале следующую строку:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
После установке Homebrew вы сможете устанавливать различные open-source программы на макбук. Для установки wireshark наберите в терминале:
brew install wireshark
Homebrew загрузит и установит пакет вместе с зависимостями.
Wireshark на Linux
Процесс установки может зависеть от дистрибутива.
Ubuntu: наберите в терминале следующие команды:
sudo apt-get install wireshark
sudo dpkg-reconfigure wireshark-common
sudo adduser $USER wireshark
Пакет будет загружен, обновлён, и ваш пользователь получит права на запуск Wireshark.
RHEL, Fedora:
sudo dnf install wireshark-qt
sudo usermod -a -G wireshark username
Первая команда устанавливает графический и командный интерфейсы программы, а вторая даёт пользователю права запускать Wireshark.
Kali Linux:
Скорее всего, пакет уже установлен, так как является частью основной системы. Попробуйте найти его в меню "Sniffing & Spoofing"
▪ Пакеты данных в Wireshark
Мы установили программу, а теперь узнаем, как включить сниффер и анализировать сетевой трафик. Wireshark расскажет, что происходит в сети, но не объяснит, почему.
▪ Перехват пакетов с помощью Wireshark
Открыв окно программы, вы увидите список всех сетевых соединений, доступных для мониторинга, а также строку фильтра, чтобы выделить трафик, который вам нужен: https://info.varonis.com/hubfs/using-wireshark-capture-filter-1@2x-png.png
Можно выбрать один или несколько сетевых интерфейсов с помощью shift+left-click. После этого можете начинать перехват трафика. Это можно сделать несколькими способами:
1. Нажать первую кнопку на панели, при наведении на которую всплывает её назначение: "start capturing packets".
https://info.varonis.com/hubfs/using-wireshark-start-capturing-2@2x-png.png
2. Через пункт меню Capture --> Start: https://info.varonis.com/hubfs/using-wireshark-capturing-packets-3@2x-png.png
3. Используя сочетание клавиш Control+e
Во время перехвата wireshark будет отображать перехваченные пакеты в реальном времени:
https://info.varonis.com/hubfs/using-wireshark-stop-capture-4@2x-png.png
Когда получите все нужные вам пакеты, закончите перехват, нажав кнопку "stop capturing packets" на панели, выбрав соответствующий пункт в меню или сочетаниями клавиш Control+e или Control+c. Перехват рекомендуется закончить, прежде чем начать анализ трафика.
▪ Анализ пакетов с помощью Wireshark
Инструмент предоставляет три панели для анализа пакетов. Верхняя - список пакетов (Packet List). В ней отображаются все перехваченные пакеты. Если кликнуть на пакет, в двух остальных панелях отображается подробная информация о нём, в том числе можно определить, является ли он частью сеанса. Значение столбцов верхней панели:
1. No.: Порядковый номер перехваченного пакета. Квадратные скобки означают, что пакет - часть сессии.
2. Time: Время в секундах, прошедшее с момента начала перехвата до момента, когда был перехвачен конкретный пакет. Значение этого поля можно редактировать в меню настроек.
3. Source: Адрес системы, отправившей пакет.
4. Destination: Адрес получателя пакета.
5. Protocol: Тип пакета - например, TCP, DNS, DHCP, ARP.
6. Lenght: Длина пакета в байтах.
7. Info: дополнительная информация о содержимом пакета. Значение поля зависит от типа протокола пакета.
Средняя панель - это Packet details (сведения о пакете), в ней отображается как можно более полная информация о пакете, в зависимости от типа его протокола. Выделив текст в этой панели, можно нажать правую кнопку мыши и настроить фильтры.
Нижняя панель - Packet Bytes - байты пакета, - отображает пакет в шестнадцатеричном формате, как он выглядел, когда был перехвачен.
При просмотре пакета, являющегося частью сеанса, можно вызвать контекстное меню щелчком правой кнопки мыши и выбрать пункт Follow, чтобы увидеть только пакеты, принадлежащие этому сеансу.
▪ Фильтры Wireshark
Одни из наиболее полезных возможностей программы - это фильтры захвата и отображения. Фильтры позволяют при просмотре захвата выделить то, что необходимо вам для устранения неполадок. Для начала приведём некоторые из них.
1. Фильтры захвата
Они ограничивают программу в момент захвата пакетов: если пакет не проходит фильтр, wireshark не будет его сохранять. Примеры фильтров захвата:
host IP-address: перехватывать только пакеты, отправителем или получателем которых является хост с указанным адресом.
net 192.168.0.0/24: перехватывать весь трафик подсети.
dst host IP-address: перехватывать пакеты, предназначенные для узла с указанным адресом.
port 53: перехватывать только трафик порта 53.
port not 53 and not arp: перехватывать весь трафик, кроме пакетов протоколов DNS и ARP.
2. Фильтры отображения
Страница руководства: https://wiki.wireshark.org/DisplayFilters
Эти фильтры изменяют вывод в процессе анализа. Они используются по окончании перехвата, чтобы уменьшить количество пунктов в списке пакетов и упростить решение конкретной задачи.
Вот один из наиболее полезных фильтров:
ip.src==IP-address and ip.dst==IP-address
Он показывает пакеты, отправленные с одного узла (ip.src) другому (ip.dst). Можно также отображать пакеты, которые отправляет и принимает хост с указанным IP.
Также имеются следующие фильтры:
tcp.port eq 25: Показывает весь трафик на 25 порту - обычно это SMTP.
icmp: Показывает только трафик протокола ICMP - скорее всего это пинги.
ip.addr!=IP_address: показывает весь трафик, кроме входящего и исходящего на указанном адресе.
Аналитики даже создают фильтры для обнаружения определённых атак - например, этот фильтр используется для обнаружения червя Sasser:
ls_ads.opnum==0x09
▪ Дополнительные функции Wireshark
Помимо перехвата и фильтрации, у программы есть функции, которые могут упростить вам работу.
1. Варианты выделения цветом
Wireshark можно настроить, чтобы пакеты в списке выделялись определённым цветом в зависимости от фильтра. Примеры применения функции можно найти по ссылке: https://wiki.wireshark.org/ColoringRules
2. Promicuous mode (неразборчивый режим)
По умолчанию wireshark перехватывает только исходящие и входящие пакеты хоста, на котором он запущен. Поставив флаг promicuous mode в пункте меню capture settings, можно перехватывать почти весь трафик подсети.
3. Командная строка wireshark
Страница руководства: https://www.wireshark.org/docs/wsug_html_chunked/ChCustCommandLine.html
Программа предоставляет интерфейс командной строки (CLI), если на вашей системе отсутствует графический интерфейс. Лучше всего использовать CLI для захвата и сохранения логов, а потом просмотреть их в графическом интерфейсе.
Команды wireshark:
wireshark : запустить Wireshark в графическом режиме
wireshark –h : показать доступные параметры команды wireshark
wireshark –a duration:300 –i eth1 –w wireshark. : перехватывать трафик на проводном интерфейсе eth1 в течение пяти минут. -a означает автоматическое прекращение перехвата; -i указывает, на каком интерфейсе перехватывать.
4. Метрики и статистика
В меню Statistics есть множество опций для просмотра подробностей перехвата.
Изображение: https://info.varonis.com/hubfs/using-wireshark-statistics-6@2x-png.png
свойства файла, куда сохранились перехваченные данные: https://info.varonis.com/hubfs/using-wireshark-capture-file-properties-7@2x-png.png
График ввода-вывода программы: https://info.varonis.com/hubfs/using-wireshark-io-graph-8@2x-png.png
▪ Дополнительные источники и руководства по Wireshark
Есть много руководств и видеороликов, показывающих, как использовать wireshark для определённых целей. Начать следует с сайта Wireshark, а потом продвигаться дальше. На сайте вы можете найти официальную документацию (https://www.wireshark.org/docs/wsug_html_chunked/index.html) и вики (https://wiki.wireshark.org/).
Wireshark - прекрасный сниффер и инструмент анализа пакетов, но лучше всего пользоваться им, когда вы понимаете, что ищете. Программа не подойдёт для обнаружения новой проблемы, так как в сети слишком много шума. Инструменты Varonis и Edge помогут разобраться в ситуации и указать, какую угрозу искать, после чего можно использовать wireshark, для более глубокого анализа и определения угрозы, которую представляет собой тот или иной пакет.
Хорошим примером может служить случай, когда исследователи безопасности Varonis обнаружили криптомайнер Norman. Они получили с нескольких машин уведомления, указывавшие на подозрительную сетевую и файловую активность. При анализе криптомайнера специалисты использовали Wireshark для проверки подозрительных машин, и программа показала, что криптомайнер, названный Норманом, активно взаимодействовал с командно-контрольными серверами (С&C) через DuckDNS. С помощью Wireshark команда Varonis увидела все адреса C&C-серверов, используемых злоумышленниками, поэтому они смогли отрезать связь с ними и остановить атаку.