Анализ сетевого трафика для сайта  https://example.com/ через wireshark

от автора

Анализ сетевого трафика для сайта  https://example.com/

Введение

Привет, друзья! Мы с вами отправляемся в интересное путешествие по миру сетевого анализа. К слову, я вообще моряк, но решил сменить курс и попробовать себя в IT. Прочитав пару книг о тестировании и освоив несколько видеокурсов, я понял, что пора закрепить свои навыки на практике. В этом материале мы вместе разберёмся, как использовать снифферы для анализа сетевого трафика. Это поможет начинающим специалистам, желающим освоить эту важную область.

В качестве нашего проводника я обратился к чату GPT, который предоставил следующее тестовое задание:

ЧАТ GPT:

Для проверки базовых знаний работы с снифферами у junior QA специалиста можно предложить следующее тестовое задание: Тестовое задание: Анализ HTTP-запросов

Цель: Проверить умение использовать снифферы для анализа сетевого трафика и понимание структуры HTTP-запросов и ответов.

Само Задание:

  1. Установить и настроить сниффер (Wireshark, Fiddler или Charles Proxy).

  2. Перехватить HTTP/HTTPS‑трафик сайта (например, https://example.com).

  3. Задокументировать результаты с примерами запросов и ответов.

Итак, погнали!

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

Установка программы Wireshark

Для анализа сетевого трафика мы будем использовать программу Wireshark. Вот шаги по её установке:

  1. Переходим на официальный сайт Wireshark.

  2. Выбираем версию программы, соответствующую вашей операционной системе (Windows, macOS, Linux). (В моём примере это Windows.)

  3. Загружаем установочный файл и выполняем установку, следуя инструкциям мастера установки.

  4. После завершения установки запускаем Wireshark с правами администратора (это необходимо для работы с сетевыми интерфейсами).

Захват трафика

Теперь переходим к основному процессу — перехвату трафика.

1.     Открываем Wireshark.

2.     Выбираем сетевой интерфейс, используемый для подключения (в моём случае это беспроводная сеть Wi-Fi).  

2.     Кликаем на выбранный сетевой интерфейс дважды, чтобы начался захват трафика.

3.     Открываем браузер и переходим на сайт example.com (или другой на ваш выбор). Выполняем несколько действий, например, загружаем главную страницу.

4.     После загрузки страницы возвращаемся в Wireshark и нажимаем «Stop Capture» (красный квадрат), чтобы завершить захват.

5.     Для удобства анализа сохраняем захваченные данные в файл формата .pcap (Файл → Сохранить).

Поиск пакетов с использованием доменного имени

Чтобы найти пакеты, связанные с доменом example.com, выполняем следующие шаги:

  1. В поле фильтра Wireshark вводим: dns.qry.name contains «example.com».

  2. Применяем фильтр, чтобы увидеть DNS-запросы и ответы, связанные с этим доменом.

Анализ DNS-запросов и ответов

Запрос на example.com

На первом скриншоте представлена таблица с двумя DNS‑запросами. Ключевые детали: ( свои айпи я конечно же замажу 😊 )

  1. Запрос (Frame 8518):

Пакет № 8518 (Запрос DNS)

Ключевая информация:

  • Источник: XXX.XXX.X.XXX

  • Назначение: YYY.YYY.Y.Y

  • Протокол: DNS

  • Тип запроса: Standard query

  • Имя запрашиваемого домена: example.com

На данном этапе клиент (устройство с IP‑адресом XXX.XXX.X.XXX) отправляет запрос на DNS‑сервер (YYY.YYY.Y.Y) с целью разрешить доменное имя example.com в IP‑адрес.

Ответ DNS

На втором скриншоте представлен ответ на предыдущий запрос. Основная информация:

  • Источник: Локальный DNS‑сервер (YYY.YYY.Y.Y).

  • Получатель: IP‑адрес устройства пользователя (XXX.XXX.X.XXX).

  • Протокол: UDP, порт 53.

  • Данные ответа:

    • Адрес IPv4: 93.184.216.34 — это IP‑адрес, соответствующий доменному имени example.com.

    • Также указаны серверы NS (name servers), такие как a.iana‑servers.net и b.iana‑servers.net, используемые для разрешения доменных имён.

А это что за покемон?


Если бы мы знали что это такое, но мы не знаем что это такое. На самом деле знаем

1. Что такое HEX‑данные?

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


2. Структура Ethernet‑фрейма

Сетевые пакеты в Wireshark обычно отображаются в виде HEX‑дампов, которые представляют:

  • Заголовки протоколов (Ethernet, IP, UDP/TCP, DNS и т. д.).

  • Полезную нагрузку (данные).

На скриншотах показан сетевой пакет, который содержит данные протокола DNS. В заголовках пакета указаны IP‑адреса источника и назначения.

2. Преобразование HEX в текст

Для преобразования HEX в текст используются стандартные таблицы символов, такие как ASCII или UTF-8. В контексте сетевых протоколов чаще всего применяется ASCII.

Таблица ASCII

Каждому числовому значению (0–255) соответствует символ. Например:

  • 68 (HEX) = 104 (DEC) = h (в ASCII).

  • 74 (HEX) = 116 (DEC) = t (в ASCII).


Способы фильтрации траффика

В этой статье мы рассмотрели только способ фильтрации траффика по доменному имени. Но фильтровать можно и другими способами. Например:

1. Фильтрация по протоколу

Вы можете отфильтровать пакеты на основе протоколов:

  • DNS — dns (все DNS‑пакеты).

  • HTTP — http (пакеты HTTP).

  • TCP — tcp (все TCP‑пакеты).

  • UDP — udp (все UDP‑пакеты).

  • ICMP — icmp (например, пинг‑запросы).

Пример:

plaintext

Копировать код

http or tcp


2. Фильтрация по IP‑адресу

Для фильтрации пакетов по определённому источнику или получателю:

  • Источник (Source): ip.src == ваш ip

  • Получатель (Destination): ip.dst == ip получателя

  • Любой адрес: ip.addr == xxx.xxx.x.x

Пример:

plaintext

Копировать код

ip.src == ваш ip and tcp


3. Фильтрация по диапазону IP‑адресов

Используйте маску подсети:

  • ip.src == ХХХ.ХХХ.Х.Х/ХХ ( пример )

  • ip.dst == 10.0.0.0/8

Пример:

plaintext

Копировать код

ip.addr == ХХХ.ХХХ.Х.Х/ХХ


4. Фильтрация по порту

Для анализа данных, относящихся к определённому порту:

  • TCP порт: tcp.port == 92

  • UDP порт: udp.port == 47

Пример:

plaintext

Копировать код

tcp.port == 654


5. Фильтрация по содержимому (Payload)

Если вы ищете определённое содержимое в пакетах:

  • Используйте содержимое протоколов: например, HTTP‑запросы с определённым текстом.

  • Пример для HTTP:

plaintext

Копировать код

http contains “example”


6. Фильтрация по MAC‑адресу

Для поиска пакетов, относящихся к определённым устройствам:

  • Источник: eth.src == 00:11:22:33:44:55

  • Получатель: eth.dst == aa:bb:cc:dd:ee:ff

Пример:

plaintext

Копировать код

eth.addr == 00:11:22:33:44:55


7. Фильтрация по длине пакета

  • Пакеты меньше определённого размера: frame.len < 100

  • Пакеты больше определённого размера: frame.len > 1500

Пример:

plaintext

Копировать код

frame.len >= 100 and frame.len <= 500


8. Фильтрация по времени

Вы можете использовать временные метки для фильтрации:

  • Временной диапазон: frame.time >= «2024–12–09 22:00:00» and frame.time <= «2024–12–09 23:00:00»


9. Фильтрация по флагам TCP

Фильтрация пакетов с определёнными флагами в TCP‑заголовке:

  • SYN‑пакеты: tcp.flags.syn == 1

  • ACK‑пакеты: tcp.flags.ack == 1

  • RESET‑пакеты: tcp.flags.reset == 1

Пример:

plaintext

Копировать код

tcp.flags.syn == 1 and tcp.flags.ack == 0


10. Фильтрация по ошибкам

Для поиска проблемных пакетов:

  • Ошибки в TCP: tcp.analysis.flags

  • Повторная передача (retransmission): tcp.analysis.retransmission

  • Дубликаты ACK: tcp.analysis.duplicate_ack


11. Фильтрация по имени устройства

Если устройство имеет зарегистрированное имя:

  • wlan.sa == “my_device”


12. Фильтрация по комбинации условий

Вы можете комбинировать фильтры с помощью логических операторов:

  • AND: and

  • OR: or

  • NOT: not

Пример:

plaintext

Копировать код

ip.src == ваш ip ( XXX.XXX.X.X.) and not dns


Полезные советы

  1. Используйте автодополнение в строке фильтров, чтобы быстро найти нужный протокол или поле.

  2. Часто используемые фильтры можно сохранить в Wireshark для последующего использования.

  3. Для сложного анализа можно использовать отдельные выражения с использованием регулярных выражений в панели «Display Filters».

Проверка использованных технологий

IP‑адрес 93.184.216.34 был проверен с помощью дополнительных инструментов и баз данных. Результаты анализа:

  • Этот адрес принадлежит компании «Internet Assigned Numbers Authority (IANA)» и используется для демонстрационных целей. Это подтверждает, что example.com — тестовый сайт, предназначенный для образовательных и тестовых целей.

  • Сайт не использует CDN‑сервисов, таких как Cloudflare. Все запросы обрабатываются напрямую.

Итог

Я проанализировал и понял, что сайт example.com предназначен исключительно для тестирования и демонстрации работы DNS. Все запросы и ответы корректно обработаны. Работа с Wireshark позволила мне изучить основы захвата и анализа сетевого трафика, разобраться что такое hex и какие есть методы фильтрации, включая запросы и ответы DNS.

Этот опыт оказался мне полезен и может быть полезен вам и для начинающих специалистов по тестированию ПО, сетевых администраторов и т. д.


ссылка на оригинал статьи https://habr.com/ru/articles/865920/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *