Анализ сетевого трафика для сайта https://example.com/
Введение
Привет, друзья! Мы с вами отправляемся в интересное путешествие по миру сетевого анализа. К слову, я вообще моряк, но решил сменить курс и попробовать себя в IT. Прочитав пару книг о тестировании и освоив несколько видеокурсов, я понял, что пора закрепить свои навыки на практике. В этом материале мы вместе разберёмся, как использовать снифферы для анализа сетевого трафика. Это поможет начинающим специалистам, желающим освоить эту важную область.
В качестве нашего проводника я обратился к чату GPT, который предоставил следующее тестовое задание:
ЧАТ GPT:
Для проверки базовых знаний работы с снифферами у junior QA специалиста можно предложить следующее тестовое задание: Тестовое задание: Анализ HTTP-запросов
Цель: Проверить умение использовать снифферы для анализа сетевого трафика и понимание структуры HTTP-запросов и ответов.
Само Задание:
-
Установить и настроить сниффер (Wireshark, Fiddler или Charles Proxy).
-
Перехватить HTTP/HTTPS‑трафик сайта (например, https://example.com).
-
Задокументировать результаты с примерами запросов и ответов.
Итак, погнали!
В статье я представил пошаговый процесс захвата, фильтрации и анализа трафика, а также результаты, которые я получил в ходе работы
Установка программы Wireshark
Для анализа сетевого трафика мы будем использовать программу Wireshark. Вот шаги по её установке:
-
Переходим на официальный сайт Wireshark.
-
Выбираем версию программы, соответствующую вашей операционной системе (Windows, macOS, Linux). (В моём примере это Windows.)
-
Загружаем установочный файл и выполняем установку, следуя инструкциям мастера установки.
-
После завершения установки запускаем Wireshark с правами администратора (это необходимо для работы с сетевыми интерфейсами).
Захват трафика
Теперь переходим к основному процессу — перехвату трафика.
1. Открываем Wireshark.
2. Выбираем сетевой интерфейс, используемый для подключения (в моём случае это беспроводная сеть Wi-Fi).
2. Кликаем на выбранный сетевой интерфейс дважды, чтобы начался захват трафика.
3. Открываем браузер и переходим на сайт example.com (или другой на ваш выбор). Выполняем несколько действий, например, загружаем главную страницу.
4. После загрузки страницы возвращаемся в Wireshark и нажимаем "Stop Capture" (красный квадрат), чтобы завершить захват.
5. Для удобства анализа сохраняем захваченные данные в файл формата .pcap
(Файл → Сохранить).
Поиск пакетов с использованием доменного имени
Чтобы найти пакеты, связанные с доменом example.com, выполняем следующие шаги:
-
В поле фильтра Wireshark вводим: dns.qry.name contains "example.com".
-
Применяем фильтр, чтобы увидеть DNS-запросы и ответы, связанные с этим доменом.
Анализ DNS-запросов и ответов
Запрос на example.com
На первом скриншоте представлена таблица с двумя DNS‑запросами. Ключевые детали: ( свои айпи я конечно же замажу 😊 )
-
Запрос (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
Полезные советы
-
Используйте автодополнение в строке фильтров, чтобы быстро найти нужный протокол или поле.
-
Часто используемые фильтры можно сохранить в Wireshark для последующего использования.
-
Для сложного анализа можно использовать отдельные выражения с использованием регулярных выражений в панели «Display Filters».
Проверка использованных технологий
IP‑адрес 93.184.216.34 был проверен с помощью дополнительных инструментов и баз данных. Результаты анализа:
-
Этот адрес принадлежит компании «Internet Assigned Numbers Authority (IANA)» и используется для демонстрационных целей. Это подтверждает, что example.com — тестовый сайт, предназначенный для образовательных и тестовых целей.
-
Сайт не использует CDN‑сервисов, таких как Cloudflare. Все запросы обрабатываются напрямую.
Итог
Я проанализировал и понял, что сайт example.com предназначен исключительно для тестирования и демонстрации работы DNS. Все запросы и ответы корректно обработаны. Работа с Wireshark позволила мне изучить основы захвата и анализа сетевого трафика, разобраться что такое hex и какие есть методы фильтрации, включая запросы и ответы DNS.
Этот опыт оказался мне полезен и может быть полезен вам и для начинающих специалистов по тестированию ПО, сетевых администраторов и т. д.
Автор: KeksCap