Как захватить пакеты в wireshark
Руководство и шпаргалка по Wireshark
Даже поверхностное знание программы Wireshark и её фильтров на порядок сэкономит время при устранении проблем сетевого или прикладного уровня. Wireshark полезен для многих задач в работе сетевого инженера, специалиста по безопасности или системного администратора. Вот несколько примеров использования:
Устранение неполадок сетевого подключения
Исследование сессий прикладного уровня (даже при шифровании с помощью SSL/TLS, см. ниже)
Устранение неполадок DHCP с данными на уровне пакетов
Извлечение файлов из сессий HTTP
Извлечение файлов из сессий SMB
Обнаружение и проверка вредоносных программ
Проверка сканирования портов и других типов сканирования на уязвимости
Установка Wireshark
Wireshark работает на различных операционных системах и его несложно установить. Упомянем только Ubuntu Linux, Centos и Windows.
Установка на Ubuntu или Debian
Установка на Fedora или CentOS
Установка на Windows
На странице загрузки лежит исполняемый файл для установки. Довольно просто ставится и драйвер захвата пакетов, с помощью которого сетевая карта переходит в «неразборчивый» режим (promiscuous mode позволяет принимать все пакеты независимо от того, кому они адресованы).
Начало работы с фильтрами
С первым перехватом вы увидите в интерфейсе Wireshark стандартный шаблон и подробности о пакете.
Как только захватили сессию HTTP, остановите запись и поиграйте с основными фильтрами и настройками Analyze | Follow | HTTP Stream.
Примеры фильтров по IP-адресам
Примеры фильтров по протоколу
Попробуйте сделать комбинацию фильтров, которая показывает весь исходящий трафик, кроме HTTP и HTTPS, который направляется за пределы локальной сети. Это хороший способ обнаружить программное обеспечение (даже вредоносное), которое взаимодействует с интернетом по необычным протоколам.
Следуйте за потоком
Как только вы захватили несколько HTTP-пакетов, можно применить на одном из них пункт меню Analyze | Follow | HTTP Stream. Он покажет целиком сессию HTTP. В этом новом окне вы увидите HTTP-запрос от браузера и HTTP-ответ от сервера.
Резолвинг DNS в Wireshark
По умолчанию Wireshark не резолвит сетевые адреса в консоли. Это можно изменить в настройках.
Edit | Preferences | Name Resolution | Enable Network Name Resolution
Tshark для командной строки
Составление правил для файрвола
Работа с географической базой GeoIP
Если Wireshark скомпилирован с поддержкой GeoIP и у вас есть бесплатные базы Maxmind, то программа может определять местоположение компьютеров по их IP-адресам. Проверьте в About | Wireshark, что программа скомпилирована с той версией, какая у вас в наличии. Если GeoIP присутствует в списке, то проверьте наличие на диске баз GeoLite City, Country и ASNum. Укажите расположение баз в меню Edit | Preferences | Name Resolution.
Проверьте систему на дампе трафика, выбрав опцию Statistics | Endpoints | IPv4. В колонках справа должна появиться информация о местоположении и ASN для IP-адреса.
Конечно, тот же фильтр можно применить к отдельным городам и странам. Удалите шум и оставьте только действительно интересный трафик.
Расшифровка сессий SSL/TLS
Один из способов расшифровки сессий SSL/TLS — использовать закрытый ключ с сервера, к которому подключен клиент.
Конечно, у вас не всегда есть доступ к приватному ключу. Но есть другой вариант простого просмотра трафика SSL/TLS на локальной системе. Если Firefox или Chrome загружаются с помощью специальной переменной среды, то симметричные ключи отдельных сеансов SSL/TLS записаны в файл, который Wireshark может прочитать. С помощью этих ключей Wireshark покажет полностью расшифрованную сессию!
1. Настройка переменной среды
На вкладке System Properties | Advanced нажмите кнопку Environment Variables и добавьте имя переменной (SSLKEYLOGFILE), а в качестве значения — путь к файлу.
2. Настройка Wireshark
Из выпадающего меню выберите Edit | Preferences | Protocols | SSL | (Pre)-Master-Secret Log Filename — Browse, указав файл, который вы указали в переменную среды.
Начинайте захват трафика в локальной системе.
3. Перезапуск Firefox или Chrome
После перехода на сайт HTTPS лог-файл начнёт увеличиваться в размере, поскольку записывает симметричные ключи сессии.
Взгляните на ранее запущенную сессию Wireshark. Вы должны увидеть что-то похожее на скриншот внизу с расшифрованными сессиями. Расшифрованные пакеты — на вкладке в нижней панели.
Другой способ просмотра сеанса — через выпадающее меню Analysis | Follow | Stream | SSL. Если сеанс успешно расшифрован, вы увидите опцию для SSL.
Разумеется, будьте осторожны при записи этих ключей и пакетов. Если посторонний получит доступ к лог-файлу, то легко найдёт там ваши пароли и куки аутентификации.
Ещё один вариант выхода на базовый HTTP-трафика — использовать инструмент Burp Suite с загруженным сертификатом CA в браузере. В этом случае прокси расшифровывает соединение на стороне клиента, а затем устанавливает новый сеанс SSL/TLS на сервере. Есть много способов проведения такой MiTM-атаки на себя, это два самых простых.
Извлечение файлов из пакетов с помощью функции экспорта (HTTP или SMB)
Файлы легко извлекаются через меню экспорта.
File | Export Objects | HTTP
Все найденные файлы отобразятся в новом окне. Отсюда же можно сохранить отдельные файлы или сразу все. Аналогичный метод применяется для извлечения файлов из сессий SMB. Как мы уже упоминали, это протокол Microsoft Server Message Block, который используется для общего доступа к файлам под Windows.
Строка состояния
Строка состояния в правой части окна позволяет быстро перейти в нужное место сетевого дампа, щёлкнув по цветовому индикатору. Например, красным цветом в строке состояния помечены пакеты с ошибками.
Образец PCAP
Когда только начинаете работу с Wireshark, хочется посмотреть на какие-нибудь интересные дампы с пакетами. Их можно найти на странице Wireshark Samples. Примеров с разными протоколами там хватит вам на несколько месяцев анализа, есть даже образцы трафика червей и эксплоитов.
Настройка окружения
Внешний вид консоли по умолчанию всячески настраивается. Можно добавлять или удалять столбцы, добавляя даже такие простые вещи как столбец времени UTC, что сразу повышает информативность логов, если анализировать историю пакетов.
Столбцы настраиваются в меню Edit | Preferences | Appearance | Columns. Там же изменяется общий шаблон, шрифт и цвета.
На видео — полезные советы по настройке окружения, в том числе выявление неполадок по порядковым номерам последовательности TCP.
capinfos
Практические приёмы работы в Wireshark
Джулия Эванс, автор материала, перевод которого мы сегодня публикуем, решила рассказать об одном из своих любимых сетевых инструментов, который называется Wireshark. Это — мощная и сложная программа, оснащённая графическим интерфейсом, предназначенная для анализа трафика в компьютерных сетях. Джулия говорит, что на практике пользуется лишь немногими возможностями Wireshark, но они обычно оказываются очень кстати. Здесь она хочет поделиться со всеми желающими рассказом о самых полезных приёмах работы с программой и надеется, что они пригодятся не только ей, но и всем, кому приходится решать сетевые проблемы.
Установка Wireshark
Вот как выглядит интерфейс программы.
На первый взгляд всё это может показаться слишком сложным: длинный список пакетов, таинственное поле для ввода каких-то запросов… Как же работать с Wireshark?
Анализ pcap-файлов
Обычно я использую Wireshark для выяснения причин сетевых неполадок. Последовательность действий, выполняемая в ходе решения подобных задач, выглядит так:
Анализ TCP-соединений
Часто, когда я анализирую в Wireshark некую ситуацию, мне нужно проверить какое-то конкретное TCP-соединение, с которым, по какой-то причине, что-то не так. Благодаря Wireshark можно проанализировать весь жизненный цикл отдельного TCP-соединения и выяснить причины неправильного поведения системы.
Начало анализа TCP-соединения
Выше описана весьма типичная для меня схема работы с Wireshark. Обычно в соединении участвуют клиент и сервер, и что-то идёт не так либо на клиенте, либо на сервере. Это может быть, например, какой-нибудь сбой или ошибка в настройках системы. В результате Wireshark оказывает мне просто бесценную помощь в деле определения виновника проблем, помогая выяснить — клиент это или сервер.
Команда Decode as
Для того чтобы понять, чем именно является конкретный пакет, Wireshark использует номера портов, и обычно этот подход срабатывает. Например, если программа видит некий трафик на порте 80, она решает, что это HTTP-трафик и обычно так оно и есть.
Просмотр содержимого пакетов
В Wireshark имеется просто восхитительный режим просмотра подробных сведений о пакете, с помощью которого можно разобраться в содержимом любого пакета. Возьмём, например, пакет с сообщением client hello из предыдущего примера. Это — первый пакет SSL-соединения, клиент с его помощью как бы говорит: «Привет! Вот он я!».
Wireshark даёт сетевому администратору два невероятно полезных инструмента для исследования содержимого пакетов. Первый — это режим просмотра, в котором можно раскрывать заголовки, имеющиеся у пакета (например — Ethernet-заголовок, IP-заголовок, TCP-заголовок) и просматривать их содержимое.
Анализ заголовков пакета
Второй режим просмотра пакетов — это настоящее чудо. Здесь можно видеть необработанные данные пакета в виде последовательности байтов. И, что особенно приятно, если навести мышь на какой-нибудь байт (например, на рисунке ниже указатель наведён на байт, входящий в tiles.services.mozilla.com ), программа, в строке состояния, сообщит о том, к какому полю относится этот байт (в данном случае это — поле Server Name ), и о кодовом имени, используемом Wireshark для этого поля (в данном случае — ssl.handshake.extensions_server_name )
Анализ необработанных данных пакета
Поиск пакетов
Wireshark поддерживает мощный язык запросов. Это значительно упрощает поиск конкретных пакетов в списках. Обычно я, при работе с программой, использую очень простые запросы. Вот несколько примеров:
Просмотр сведений о продолжительности TCP-соединений
Иногда мне нужно обратить особое внимание на исследование медленных TCP-соединений. Как это сделать, при условии, что в имеющемся у меня файле есть записи о тысячах пакетов? Как найти медленные TCP-соединения?
Обновление Wireshark
Если вы давно не обновляли Wireshark — это стоит сделать. Например, недавно я, на рабочем ноутбуке, занималась исследованием HTTP/2-пакетов. Мне тогда пришлось нелегко, и я решила посмотреть документацию. Как оказалось, у меня была старая версия программы. В установленном мной обновлении была серьёзно улучшена поддержка HTTP/2, то есть, там было как раз то, что мне было тогда нужно.
Использование Wireshark для изучения сетевых протоколов
В этом материале встречаются некоторые термины, которые можно отнести к чему-то вроде жаргона сетевых специалистов. Например — кадр (frame), TCP-порт (TCP port), DNS-ответ (DNS response), IP-адрес источника (source IP address), пакет client hello SSL-соединения (SSL client hello). Одной из причин их использования является тот факт, что Wireshark, определённо, не пытается оградить пользователя от тонкостей внутреннего устройства сетевых технологий. Новичка такое положение дел может, поначалу, заставить задуматься о том, что Wireshark — это программа не для него, а лишь для опытных сетевых специалистов.
Итоги
Wireshark имеет огромнейшие возможности. Здесь мы рассказали лишь о некоторых из них. Однако, те приёмы работы, которые здесь рассмотрены, по словам автора материала, используются примерно в 95% ситуаций, когда возникает необходимость в Wireshark. Поэтому мы надеемся, что даже то немногое, о чём вы сегодня узнали, вам пригодится.
Уважаемые читатели! Пользуетесь ли вы Wireshark?
Русские Блоги
Руководство для начинающих по захвату пакетов Wirehark
1. Загрузка и установка программного обеспечения Wireshark, а также знакомство с основным интерфейсом Wireshark.
2. Пример простого захвата пакетов WireShark. Узнайте, как захватывать пакеты и как просто просматривать и анализировать содержимое пакетов данных с помощью этого примера.
3. Использование фильтра Wireshark. С помощью фильтра вы можете отфильтровать контент, который хотите проанализировать. Включая фильтрацию по протоколу, фильтрацию по портам и именам хостов, а также фильтрацию содержимого пакетов.
Установка программного обеспечения Wireshark
Путь загрузки программного обеспечения:официальный сайт wirehark. Выберите загрузку в соответствии с версией системы.После завершения загрузки следуйте инструкциям программного обеспечения для установки Далее.
Если вы используете систему Win10, после завершения установки выберите захват пакета, но не отображать сетевую карту, и загрузите установочный пакет совместимости с win10pcap. Путь загрузки:установочный пакет совместимости с win10pcap
Wireshark начинает захватывать пример пакета
Сначала представьте пример использования инструмента wirehark для захвата операции команды ping, чтобы читатели могли сначала начать работу и испытать конкретный процесс захвата пакетов.
1. Откройте wirehark 2.6.5, основной интерфейс выглядит следующим образом:
3. После запуска WireShark находится в состоянии захвата пакетов.
4. Выполните операции, требующие перехвата пакетов, например ping www.baidu.com.
5. После завершения операции будут захвачены соответствующие пакеты данных. Чтобы другие бесполезные пакеты данных не влияли на анализ, вы можете отфильтровать список пакетов данных, задав условия фильтрации на панели фильтров.Результаты будут следующими. Примечание. Ip.addr == 119.75.217.26 и icmp означают отображение только пакетов данных с протоколом ICPM и IP-адресом исходного или целевого хоста 119.75.217.26.
5. Wireshark завершил захват пакетов, все очень просто. Подробные сведения об условиях фильтрации wirehark и о том, как просматривать пакеты данных, будут представлены позже.
Интерфейс захвата пакетов Wireshakr
WireShark в основном разделен на эти интерфейсы
2. Панель списка пакетов (список пакетов данных), отображает захваченные пакеты данных, каждый пакет данных содержит номер, метку времени, адрес источника, адрес назначения, протокол, длину и информацию о пакете. Пакеты данных разных протоколов отображаются разным цветом.
(1) Кадр: Обзор кадра данных физического уровня.
(2) Ethernet II: информация заголовка кадра Ethernet на канальном уровне.
(3) Интернет-протокол версии 4: информация заголовка IP-пакета Интернет-уровня.
(4) Протокол управления передачей: информация заголовка сегмента данных уровня передачи T, здесь TCP.
(5) Протокол передачи гипертекста: информация прикладного уровня, вот протокол HTTP.
Конкретное содержимое TCP-пакета
На рисунке ниже вы можете увидеть каждое поле TCP-пакета, захваченного Wireshark.
4. Панель Dissector (область байтов пакета данных).
Настройки фильтра Wireshark
Когда новички используют WireShark, они получают большой список избыточных пакетов данных, поэтому трудно найти часть захваченных пакетов данных. Инструмент wirehar поставляется с двумя типами фильтров.Обучение использованию этих двух фильтров поможет нам быстро найти нужную информацию в большом количестве данных.
(1) Фильтр захвата пакетов
как пользоваться? Перед захватом пакета данных его можно настроить следующим образом.
ip host 60.207.246.216 и icmp означают, что будут захвачены только ICMP-пакеты с IP-адресом хоста 60.207.246.216. Результаты приведены ниже:
(2) Фильтр отображения
Фильтр отображения используется для фильтрации пакетов данных путем установки условий фильтрации после захвата пакетов данных. Обычно условия относительно широкие при захвате пакетов данных.Когда содержимое захваченных пакетов данных велико, фильтр отображения используется для установки проблем условий для облегчения анализа. В том же сценарии, описанном выше, все пакеты данных захватываются непосредственно через сетевую карту без установки правил захвата во время захвата, как показано ниже.
Список пакетов, полученных выполнением Ping www.huawei.com, заключается в следующем
Соблюдайте список пакетов данных, описанных выше, содержат большое количество недопустимых данных. На данный момент вы можете извлечь информацию анализа, установив состояние фильтра отображения. Ip.addr == 211.162.2.183 и ICMP. И отфильтрованы.
Вышеуказанное введение основного использования фильтра захвата и фильтра дисплея.Когда сеть не сложна или в случае трафика, использование фильтра отображения может использоваться для выполнения нашего использования.Грамматика между ними и их различиями описана ниже.
Правила экспрессии фильтра Wireshark
1, синтаксис фильтра захвата и экземпляр
(1) фильтр протокола
Сравните Simple, напрямую введите имя протокола непосредственно в поле фильтра захвата.
TCP, только список протоколов TCP
Http, только список пакетов протокола HTTP
ICMP, только список пакетов протокола ICMP
src host 192.168.1.104
dst host 192.168.1.104
(3) фильтрация порта
(4) логический оператор && с, || или! не
SRC Host 192.168.1.104 && DST Port 80 захватывает адрес хоста 192.168.1.80, пакет порта назначения 80
Host 192.168.1.104 || Host 192.168.1.102 Разрежьте хост 192.168.1.104 или 192.168.1.102 Пакет
! Трансляция не захватывает пакет данных вещания
2, синтаксис фильтра отображения и экземпляр
(1) Сравнить оператор
Оператор сравнения == равный! = Не равна,> больше, чем = больше или равно,
(2) фильтр протокола
Сравните Simple, напрямую введите имя протокола непосредственно в поле «Фильтр». Примечание. Название протокола требует прописных букв.
TCP, только список протоколов TCP
Http, только список пакетов протокола HTTP
ICMP, только список пакетов протокола ICMP
IP.SRC == 192.168.1.104 Адрес дисплея источника 192.168.1.104 Список пакетов
IP.DST == 192.168.1.104, отображается список пакетов данных с 192.168.1.104
IP.Addr == 192.168.1.104 IP-адрес источника дисплея или целевой IP-адрес представляет собой список 192.168.1.104
(4) фильтрация порта
Tcp.port == 80, список пакетов данных, которые отображают исходный хост или порт назначения, составляет 80.
TCP.SRCPORT == 80, только порт хоста источника протокола TCP составляет 80 пакетов.
TCP.DSTPort == 80, только список пакетов данных протокола TCP отображается 80.
(5) Фильтрация режима HTTP
Http.request.method == «Get», отображается только метод Get HTTP.
(6) Логический оператор и / или / не
Используйте и / или при фильтрации нескольких условий. Такие как Получает экспрессию пакета ICMP 192.168.1.104 ip.addr == 192.168.1.104 and icmp
(7) Фильтр в соответствии с содержимым пакета. Предположим, я хочу отфильтровать содержимое в слое IMCP, вы можете щелкнуть поток кода в интерфейсе выбора, чтобы выбрать данные ниже. следующее
Щелкните правой кнопкой мыши в следующий раз, когда появится следующий интерфейс
После выбора выберите, отобразите его в фильтре следующим образом
Задняя условное выражение должно быть заполнено. Я хочу отфильтровать поток данных, содержащий «ABCD» в пакете данных.Ключевые слова, содержащие содержащиеся, продолжаются от контента.
Видя это, в основном понимают первоначальное понимание проездка.
Vireshark Captain Analysis TCP три рукопожатия
(1) TCP трехкратный процесс установления рукопожатия TCP
Шаг1: Клиент отправляет SYN = 1, пакет данных логотипа ACK = 0 дает сервер, запрос подключен, который является впервые;
Step2: Сервер принимает запрос и позволяет подключить, он отправит SYN = 1, пакет данных FLAG ACK = 1 отправляется отправителю, сообщает, что может сообщить об этом, и позволить клиенту отправить пакет подтверждения, Это второе рукопожатие;
STEP3: Сервер отправляет SYN = 0, а пакет данных ACK = 1 дает клиенту, сообщив ему, что соединение было подтверждено, это третье рукопожатие. Соединение TCP установлено, исходящая связь.
(2) Захват Wireshark Получите доступ к указанному пакету данных сервера
Шаг 1: Запустите захват Wireshark, откройте браузер для ввода www.huawei.com.
Шаг2: Получите IP, используя Ping www.huawei.com.
Шаг3: Введите условия фильтра Получите список пакета данных для анализа IP.Addr == 211.162.2.183
Вы можете увидеть три пакета из трех рукопожатий на рисунке. Четвертый пакет является http, что означает, что HTTP действительно подключен к TCP.
Первый пакет данных рукопожатия
Клиент отправляет TCP, бит флаги SYN, серийный номер 0, и соединение устанавливается от имени клиента. Как показано ниже.
Ключевыми свойствами пакета следующие:
SYN: знак, указывающий, что запрос установлен
SEQ = 0: исходное значение соединения установления равно 0, а относительное серийный номер пакета начинается от 0, что указывает на то, что данные в настоящее время не передаются.
ACK = 0: Исходное создание значения соединения равно 0, получило количество пакетов, указывающих на то, что данные в настоящее время не получаются.
Вторичный пакет данных рукопожатия
Сервер отправляет обратно пакет подтверждения, флаг син, ACK. Установите номер подтверждения (номер подтверждения) к I S N PLUS 1. То есть 0 + 1 = 1, как показано ниже
Ключевыми свойствами пакета следующие:
[SYN + ACK]: подписать бит, согласитесь установить соединение и отправить SYN + ACK
SEQ = 0: начальное значение установления равно 0, что указывает на то, что данные в настоящее время не передаются.
ACK = 1: Указывает, что текущий конец успешно получен биты данных, хотя клиент не отправляет какие-либо допустимые данные, номер подтверждения добавляется 1, потому что флаг SYN или FIN включен. (Не влияйте на количество действительных данных, потому что пакет, содержащий флаг SYN или FIN, не несет действительные данные)
Третий раз пожимающий руки
Клиент повторной отправки пакета подтверждения (ACK) BIN-флагов есть 0, флаг ACK 1. и отправить сервер на поле серийного номера +1, поместите его в поле определения на другой стороне. И напишите ISN в Сегмент данных +1, как показано ниже:
Ключевыми свойствами пакета следующие:
ACK: Знак, указывающий, что запись была получена
SEQ = 1: указывает, что 1 данные были отправлены
ACK = 1: указывает на то, что текущий конец успешно получен биты данных, хотя сервер не отправляет какие-либо действительные данные, добавляется номер подтверждения 1, поскольку флаг SYN или FIN (и не влияет на количество действительных данных, Поскольку пакет, содержащий флаг SYN или FIN, не несет действительные данные).
Таким образом, TCP прошла три рукопожатия и установила соединение. Начать взаимодействие данных
Некоторые из пакетов данных для процесса взаимодействия данных описаны:
Ключевой атрибут Описание пакетов
ACK: 1: Описание Теперь получил 1 байтовые данные
Seq: 1
ACK: 951: Описание Теперь сервер получает 951 байтов данных
В слое TCP есть поле флагов, это поле имеет следующую идентичность: SYN, FIN, ACK, PSH, RST, URG. следующее