Главная / Блог / Wireshark для начинающих: фильтры и анализ трафика CTF

12 мин.00

Wireshark для начинающих: фильтры и анализ трафика CTF

Wireshark для начинающих: фильтры и анализ трафика CTF

На своём первом CTF я открыл pcap-файл с 14 000 пакетов и два часа листал их вручную — по одному, сверху вниз. Флаг лежал в единственном HTTP POST-запросе. Один display-фильтр http.request.method == "POST" нашёл бы его за десять секунд. С тех пор любой pcap начинается не со скроллинга, а с правильного фильтра.

Этот материал — тот самый разбор интерфейса, фильтров и типичных CTF-сценариев, который я хотел бы прочитать перед тем соревнованием. Wireshark для начинающих — не про заучивание меню, а про умение задать правильный вопрос трафику и получить ответ за секунды.

Интерфейс Wireshark: три панели для анализа pcap-файлов

Установку сознательно пропускаю — на Windows стандартный установщик с Npcap, на Linux sudo apt install wireshark, на macOS — brew install wireshark. На wireshark.org всё расписано по шагам. Перейдём к тому, что вы увидите, открыв первый файл. Подробнее — в нашем материале про создание ctf заданий.

В CTF вы почти никогда не захватываете трафик вживую. Организаторы дают готовый файл .pcap или .pcapng — дамп сетевого трафика. Открываем через File → Open. Wireshark покажет три панели, и работают они в связке.

Packet List (верхняя панель) — таблица со всеми сетевыми пакетами. Каждая строка — один пакет: номер, временная метка, IP-адрес источника и назначения, протокол, длина, краткое описание. Отправная точка — здесь вы выбираете пакет для детального изучения.

Packet Details (средняя панель) — послойная структура выбранного пакета. Wireshark раскладывает фрейм по уровням: канальный (Ethernet), сетевой (IP), транспортный (TCP/UDP), прикладной (HTTP, DNS, FTP). Раскрываете уровень — видите конкретные поля: флаги TCP, TTL, User-Agent. В CTF полезная информация чаще всего прячется именно тут.

Packet Bytes (нижняя панель) — содержимое пакета в hex и ASCII. Если в пакете передавался текст, он виден в правой колонке. Иногда флаг читается прямо отсюда — строкой flag{...} или CTF{...} в потоке байтов.

Типичная ошибка: новички игнорируют среднюю панель и пытаются разбирать hex внизу. Средняя панель уже всё разобрала за вас — вместо подсчёта байтов TCP-заголовка вы видите готовое поле Destination Port: 80 или Content-Type: text/html. Привыкайте работать с ней в первую очередь.

Обратите внимание на цветовую маркировку строк. По умолчанию Wireshark подсвечивает протоколы разными цветами: зелёный — HTTP, голубой — DNS, чёрный с красным текстом — ошибки TCP. Это не декорация — цвета позволяют визуально отделить типы tcp/ip трафика ещё до применения фильтров. Посмотреть и поменять правила можно через View → Coloring Rules.

Ещё момент: столбцы в Packet List настраиваются. Правый клик по заголовку столбца → Column Preferences. Для CTF полезно добавить столбец с протоколом прикладного уровня — быстрее отличите HTTP от DNS в общем потоке.

Фильтры Wireshark: как не утонуть в тысячах пакетов

Pcap из CTF может содержать десятки тысяч записей. Листать их руками — пустая трата времени. Фильтры Wireshark — главный инструмент, отделяющий нужные сетевые пакеты от шума. Как пользоваться Wireshark эффективно — значит уметь быстро собрать правильный фильтр.

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

Capture filters (фильтры захвата) работают ДО начала записи трафика. Синтаксис BPF (Berkeley Packet Filter): port 80, host 10.0.0.1, tcp. Они определяют, какие пакеты Wireshark вообще сохранит. В CTF они почти не нужны — вы работаете с готовым pcap-файлом, трафик уже записан.

Display filters (фильтры отображения) применяются к уже загруженным данным. Они скрывают пакеты, не соответствующие условию, но не удаляют их из файла. У display-фильтров собственный синтаксис, отличный от BPF. Именно wireshark display filters — ваш основной рабочий инструмент при анализе pcap файлов.

Строка фильтра — вверху окна, поле «Apply a display filter». Вводите выражение, жмёте Enter. Зелёный цвет строки — фильтр валидный. Красный — синтаксическая ошибка. Тут Wireshark не обманывает.

Три ошибки, на которые наступают все:

  1. Один знак = вместо двойного ==. Фильтр ip.addr = 10.0.0.1 подсветится красным. Правильно: ip.addr == 10.0.0.1.
  2. BPF-синтаксис в строке отображения. Пишут port 80 вместо tcp.port == 80. Разные языки — разные поля.
  3. Регистр. Фильтр HTTP не сработает — пишите http строчными.

Фильтры комбинируются логическими операторами: && (И), || (ИЛИ), ! (НЕ). Например, http && ip.src == 10.0.0.5 покажет только HTTP-трафик от конкретного хоста. А dns && !ip.addr == 8.8.8.8 отфильтрует все DNS-запросы, кроме идущих к Google DNS.

Шпаргалка по display-фильтрам для CTF

Эту таблицу стоит сохранить — она покрывает подавляющее большинство ситуаций в сетевых тасках CTF:

Задача Фильтр Что покажет
Только HTTP-трафик http Все HTTP-запросы и ответы
HTTP POST-запросы http.request.method == "POST" Отправка форм, загрузка файлов
Только DNS-запросы dns Все DNS-пакеты
DNS по домену dns.qry.name contains "example" Запросы с указанной подстрокой
Трафик по IP ip.addr == 10.0.0.1 Пакеты от и к указанному IP
Только от источника ip.src == 10.0.0.1 Исходящий трафик от этого IP
FTP-команды ftp Все FTP-команды и ответы
FTP-пароли ftp.request.command == "PASS" Только строки с паролем
ARP-пакеты arp Весь ARP-трафик
SYN-сканирование tcp.flags.syn == 1 && tcp.flags.ack == 0 SYN без ACK (признак сканирования)
TCP по порту tcp.port == 443 Весь трафик на порту 443
Поиск текста frame contains "flag" Пакеты, содержащие строку "flag"

Последний фильтр — frame contains "flag" — стоит пробовать первым на любом CTF. Иногда флаг валяется в открытом виде, и этот простой приём экономит минуты. Не сработало — переходим к прицельному разбору конкретных протоколов.

Разбор HTTP-трафика: Follow TCP Stream и экспорт

HTTP — самый частый протокол в начальных CTF-тасках по анализу сетевого трафика. Данные летят в открытом виде — любой текст, отправленный через HTTP, виден без дешифровки.

Алгоритм, который работает на каждом CTF с HTTP-трафиком:

Шаг 1. Открываем pcap, ставим фильтр http. Wireshark отобразит только HTTP-пакеты: GET-запросы, POST-запросы, ответы сервера.

Шаг 2. Смотрим столбец Info в верхней панели. Ищем подозрительные URL-пути: /secret, /admin, /flag, /upload. GET-запросы к странным эндпоинтам — первые кандидаты.

Шаг 3. Правый клик по подозрительному пакету → Follow → TCP Stream (в новых версиях — Follow → HTTP Stream). Wireshark восстановит весь диалог: запрос клиента (красным) и ответ сервера (синим) в одном текстовом окне. Флаг часто сидит в теле ответа или в данных POST-запроса.

Шаг 4. Если флаг не виден в теле — проверяем заголовки. Авторы тасков любят прятать его в нестандартных HTTP-заголовках: X-Flag, X-Secret или даже Set-Cookie.

Шаг 5. Для файлов, переданных через HTTP: File → Export Objects → HTTP. Wireshark покажет список всех переданных файлов — картинки, PDF, архивы. Скачиваем подозрительные и проверяем содержимое. В CTF флаг нередко спрятан внутри PNG-изображения или ZIP-архива.

Follow TCP Stream — одна из самых полезных функций для разбора трафика CTF. Она собирает все сетевые пакеты одного TCP-соединения в единый текстовый поток. Вместо прыжков между разрозненными фреймами вы читаете HTTP-диалог как обычный текст. В окне Follow TCP Stream можно переключать кодировку (ASCII, hex, UTF-8) — попробуйте разные варианты, если данные выглядят нечитаемыми.

По классификации MITRE ATT&CK HTTP-трафик в открытом виде — техника Web Protocols (T1071.001, тактика Command and Control). Атакующие используют HTTP для связи с C2-серверами, потому что такой трафик сливается с легитимным. На CTF вы учитесь распознавать эти паттерны: необычные User-Agent, подозрительные параметры в URL, нестандартные заголовки. В реальном SOC этот навык пригождается ежедневно.

Нюанс: если весь HTTP-трафик в pcap — это HTTPS (порт 443), содержимое зашифровано. Без ключа дешифровки прочитать его невозможно. В таких случаях ищите другие протоколы: DNS, FTP, ICMP. Организаторы CTF всегда оставляют решаемый путь — тупиков не бывает.

Анализ DNS и FTP: эксфильтрация и учётные данные

DNS-таски — вторые по популярности после HTTP. Протокол DNS передаёт данные в открытом виде, и авторы заданий активно используют его для сокрытия информации.

Классический CTF-сценарий с DNS: флаг закодирован в поддоменах. Хост шлёт серию запросов к доменам вроде ZmxhZ3.evil.com, t0aGVs.evil.com, bG8gd2.evil.com. Каждый поддомен — фрагмент строки в base64. Собираем все фрагменты, декодируем — получаем флаг.

Это не выдумка авторов CTF. В реальных атаках — техника DNS (T1071.004, тактика Command and Control) по MITRE ATT&CK. DNS-трафик редко блокируют на периметре, что делает его удобным каналом для эксфильтрации. Красивый фантик легитимного протокола — а внутри утекают данные.

Пошаговый разбор DNS-таска:

Шаг 1. Фильтр dns — видим все DNS-запросы и ответы.

Шаг 2. Изучаем столбец Info. Обычные запросы выглядят как Standard query A google.com. Подозрительные — содержат длинные бессмысленные поддомены или нетипичные типы записей (TXT, NULL, CNAME с аномальными значениями).

Шаг 3. Фильтруем по конкретному домену: dns.qry.name contains "evil.com".

Шаг 4. Из средней панели извлекаем поддомены: раскрываем DNS → Queries → Name.

Шаг 5. Собираем поддомены и отправляем в CyberChef для декодирования.

Ещё вариант: флаг в TXT-записи DNS-ответа. Фильтр dns.txt покажет ответы с TXT-данными — текст записи виден в средней панели при раскрытии поля Answers.

FTP-анализ строится проще. Протокол передаёт логины и пароли в чём мать родила — без шифрования. По MITRE ATT&CK — Exfiltration Over Unencrypted Non-C2 Protocol (T1048.003, тактика Exfiltration).

Фильтр ftp — видим текстовые FTP-команды: USER admin, PASS secret123, RETR flag.txt. Для быстрого поиска пароля: ftp.request.command == "PASS". Wireshark покажет только строки с паролями — не надо рыться в потоке команд руками.

Содержимое переданных файлов идёт по отдельному каналу (data connection) на случайном порту. Фильтр ftp-data покажет сетевые пакеты с данными файлов. Выбираем пакет → Follow → TCP Stream — видим содержимое файла.

Обнаружение ARP-спуфинга в pcap-файле

ARP-таски проверяют умение обнаружить атаку Adversary-in-the-Middle. По MITRE ATT&CK — ARP Cache Poisoning (T1557.002, тактики Credential Access и Collection). Суть: злоумышленник рассылает поддельные ARP-ответы, подменяя MAC-адрес шлюза своим. Трафик жертвы начинает проходить через машину атакующего — сниффер трафика в действии.

Как обнаружить ARP-спуфинг при анализе pcap:

Шаг 1. Фильтр arp — видим все ARP-запросы и ответы.

Шаг 2. Ищем дублирование IP-адресов. Если один IP (например, шлюз 192.168.1.1) ассоциируется с двумя разными MAC-адресами в разных ARP-ответах — это спуфинг. Wireshark при включённой опции (Edit → Preferences → Protocols → ARP/RARP → Detect duplicate IP address configuration) сам пометит такие пакеты предупреждением.

Шаг 3. Обращаем внимание на Gratuitous ARP — незапрошенные ответы. Фильтр arp.opcode == 2 покажет все ARP-ответы. Ответы без предшествующего запроса — классический индикатор атаки.

Шаг 4. Определяем атакующего. Логика: находим IP с двумя MAC-адресами, смотрим какой появился позже — он принадлежит атакующему. В CTF обычно просят указать MAC атакующего или IP жертвы.

Типичная ошибка новичков в ARP-тасках — игнорировать Wireshark warnings. Если в столбце Info появляется «Duplicate IP address detected» или «IP address conflict detected» — это не мусор, а готовый ответ. Wireshark буквально кричит вам: «Вот оно!» — а вы скроллите мимо.

Основы сетевого анализа: Statistics и CyberChef

Когда pcap содержит десятки тысяч пакетов и непонятно с чего начинать — открывайте Statistics. Три инструмента оттуда экономят время на каждом CTF.

Protocol Hierarchy (Statistics → Protocol Hierarchy) показывает процентное распределение протоколов. Если 80% трафика — DNS, а HTTP занимает 0.3%, очевидно: копать надо в DNS. Этот инструмент помогает выбрать направление до применения фильтров. По рекомендациям NIST CSF 2.0 (DE.AE-01) установление базовой линии сетевых операций — основа для обнаружения аномалий. Protocol Hierarchy — именно такой baseline.

Conversations (Statistics → Conversations) — список всех пар хостов. Отсортируйте по Bytes — самый «болтливый» диалог часто содержит переданные файлы. Если между двумя хостами прошло 500 пакетов, а между остальными — по 5-10, это аномалия, и стоит залезть внутрь.

IO Graphs (Statistics → IO Graphs) — визуализация интенсивности трафика во времени. Всплеск на графике указывает на момент передачи файла или начало атаки. Добавьте отдельные линии для разных протоколов — увидите корреляцию между событиями.

Для декодирования данных после извлечения из Wireshark берём CyberChef (gchq.github.io/CyberChef/). Рабочий процесс: находим подозрительную строку в пакете (например, ZmxhZ3t3aXJlc2hhcmtfbWFzdGVyfQ== в HTTP-ответе или DNS-поддомене), копируем правым кликом → Copy → Value, открываем CyberChef, вставляем в Input, добавляем операцию «From Base64». В Output — декодированный текст.

CyberChef поддерживает цепочки операций. Сначала hex, потом base64, потом XOR — всё в одном «рецепте». Для CTF это незаменимый инструмент в связке с Wireshark. Если данные закодированы через XOR с известным ключом (подсказка обычно есть в описании таска или в заголовках HTTP), операция «XOR» с ключом в CyberChef решает задачу за секунды.

Ещё приём: если в pcap есть файлы, переданные через HTTP, экспортируйте их через File → Export Objects → HTTP, а потом проверяйте в CyberChef или hex-редакторе. В CTF флаг нередко спрятан в метаданных изображения или в нескольких байтах, дописанных к концу легитимного файла. Этот приём работает и при захвате сетевых пакетов в реальном инциденте — экспорт объектов помогает восстановить файлы, которые передавались по сети.

Весь процесс — от открытия pcap до декодирования флага — укладывается в 5-10 минут, если знаешь последовательность шагов. На бумаге звучит просто, но по-настоящему анализ pcap файлов щёлкает только когда сам прогоняешь разбор на реальных дампах. Если хочется сразу перейти от чтения к практике — на HackerLab.pro есть готовые сетевые таски в категориях forensics и network, где можно отработать всё описанное на живых pcap без настройки собственного стенда.

За последний год я разобрал больше сотни сетевых тасков на разных CTF-площадках и заметил устойчивую закономерность: навык работы в Wireshark не появляется от чтения руководств. Он формируется только через решение реальных задач. Можно выучить все фильтры из шпаргалки выше и всё равно зависнуть на первом нестандартном pcap.

Проблема большинства учебных материалов по анализу сетевого трафика — они учат интерфейсу, а не мышлению. Знать, что http.request.method == "POST" показывает POST-запросы — полдела. Нужно понимать, зачем вы ищете именно POST, что в них может быть интересного и как это связано с остальным трафиком. Переход от «знаю синтаксис» к «понимаю что ищу» — самый сложный этап и для wireshark для пентестера, и для CTF-игрока.

Мой совет: берите любой CTF-pcap и разбирайте его полностью. Не до нахождения флага — а до полного понимания, что происходило в трафике. Кто с кем общался, на каких портах, какие протоколы использовались. Protocol Hierarchy + Conversations + ваши фильтры. Пять таких разборов дадут больше, чем пятьдесят прочитанных статей. Если хочется идти по структурированной базе, а не ковыряться вслепую — на курсе IB Basics эту цепочку проходят с объяснениями «почему», а не только «как».

🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «forensics».

Поделиться

0 комментариев

Пожалуйста, войдите, чтобы оставить комментарий.

Загрузка комментариев...

Читайте также

SQL-инъекции в CTF: от обнаружения до blind SQLi

12 мин.

2

SQL-инъекции в CTF: от обнаружения до blind SQLi

Пошаговый разбор SQL-инъекций в CTF: UNION, error-based, boolean и time-based blind техники, автоматизация на Python, обход WAF и sqlmap. Реальные payload'ы.

10 ОКТЯБРЬ, 2026

XXE уязвимость: как эксплуатировать в CTF

13 мин.

10

XXE уязвимость: как эксплуатировать в CTF

7 техник эксплуатации XXE: classic, blind OOB, error-based, SVG upload, XInclude, Content-Type switch. Пошаговые пейлоады с Burp Suite и таблица выбора.

9 ОКТЯБРЬ, 2026

Race condition эксплуатация: гайд для CTF

12 мин.

6

Race condition эксплуатация: гайд для CTF

Три типа race condition в CTF, ready-to-use скрипт Turbo Intruder для single-packet attack и разбор CVE-2022-4037 в GitLab. Пошаговый workflow эксплуатации.

9 ОКТЯБРЬ, 2026