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

13 мин.00

Wireshark для начинающих: разбор трафика в CTF

Wireshark для начинающих: разбор трафика в CTF

Три часа ночи, последний час CTF-марафона. Задача из категории Forensics — файл traffic.pcap на 12 тысяч пакетов. Половина команды листает пакеты вручную, вторая вбивает в поисковик «wireshark how to find flag». А флаг лежал в одном-единственном HTTP POST-запросе. Два display-фильтра, Follow TCP Stream — полторы минуты работы. Я видел это раз десять на разных соревнованиях: разница между «застрял на три часа» и «решил за 90 секунд» — десяток приёмов Wireshark, заточенных под CTF. Здесь — именно они: от первых секунд с pcap-файлом до извлечения скрытых данных из DNS-туннелей и ICMP-стеганографии.

Первые 60 секунд с pcap: с чего начать анализ сетевого трафика

Открыть pcap и начать листать пакеты сверху вниз — это как читать словарь от корки до корки, чтобы найти одно слово. В CTF-задачах на network forensics файл может содержать тысячи пакетов, и в Wireshark для начинающих первый навык — не фильтрация, а разведка. Прежде чем копаться в потоках, нужно за минуту понять, что вообще лежит в дампе. Подробнее — в нашем руководстве по создание ctf заданий.

Statistics > Protocol Hierarchy — карта содержимого

Открываем Statistics > Protocol Hierarchy. Wireshark покажет дерево всех протоколов в захвате с процентным распределением трафика. За пять секунд видно: есть ли HTTP (возможна передача файлов или credentials), много ли DNS (намёк на DNS-туннелирование), встречаются ли FTP, Telnet, SMTP — протоколы, которые гоняют данные открытым текстом.

Wireshark работает с файлами формата .pcap (packet capture) — основным форматом записи сетевого трафика в CTF. Как указывает ctf101.org, Protocol Hierarchy помогает быстро обнаружить нетипичные протоколы, содержащие подсказки или флаг. Протокол с минимальным количеством пакетов, нестандартный для контекста задачи, — первый кандидат на изучение.

Statistics > Conversations — кто с кем общается

Второй шаг — Statistics > Conversations. Вкладка показывает все пары IP-адресов, обменивавшихся данными. Сортируйте по объёму переданных байт: самые «тяжёлые» разговоры часто содержат переданные файлы. Сортировка по количеству пакетов выявит сканирование портов или brute-force.

На вкладках TCP и UDP видны конкретные порты — это сужает поиск. Два хоста, обменивающиеся данными на нестандартном порту вроде 4444 или 8888, — почти наверняка то, что вы ищете.

Statistics > Endpoints — инвентаризация за 10 секунд

Statistics > Endpoints покажет все уникальные адреса в pcap. В CTF forensics задачах обычно фигурируют 2-5 хостов. Если адресов сотни — вы, скорее всего, смотрите на задачу с сетевым сканированием, и подход будет другим.

Три инструмента вместе дают полную картину за 30-60 секунд. Только после этого переходите к фильтрам.

Фильтры Wireshark для CTF: от базовых до убийственных

Фильтры Wireshark — основной инструмент анализа трафика при работе с готовыми pcap-файлами. Для CTF используются display filters (фильтры отображения) — они применяются к уже записанному дампу.

Фильтры по протоколу

Простейший способ — вбить название протокола в строку фильтра:

Фильтр Что показывает
http Весь HTTP-трафик
dns DNS-запросы и ответы
ftp FTP-команды (USER, PASS, RETR)
ftp-data Содержимое переданных через FTP файлов
icmp ICMP — ping, traceroute
telnet Telnet-сессии (credentials открытым текстом)
smtp Почтовый трафик
tcp Весь TCP
udp Весь UDP

Фильтры по адресам и портам

Фильтр Что делает
ip.addr == 192.168.1.10 Пакеты от/к конкретному IP
ip.src == 10.0.0.1 Только исходящие от указанного IP
ip.dst == 10.0.0.2 Только входящие к указанному IP
tcp.port == 80 TCP-порт 80 (HTTP)
tcp.port == 443 TCP-порт 443 (HTTPS)
udp.port == 53 UDP-порт 53 (DNS)

Фильтры поиска по содержимому — решают 80% CTF-задач

Именно эти display filters отделяют того, кто закрывает таск за минуты, от того, кто листает пакеты часами:

Фильтр Назначение
tcp contains "flag" Поиск строки «flag» в TCP payload
frame contains "CTF" Поиск «CTF» в любом месте любого пакета
http contains "password" Поиск «password» в HTTP-трафике
dns.qry.name contains "secret" DNS-запросы со словом «secret» в имени
http.request.method == "POST" Только POST-запросы (формы, загрузки файлов)
http.request.uri contains "upload" Запросы с «upload» в URI
data.data contains "50:4b:03:04" Поиск сигнатуры ZIP-файла в payload

Фильтры комбинируются через логические операторы: && (И), || (ИЛИ), ! (НЕ). Пример: http.request.method == "POST" && frame contains "flag" — покажет POST-запросы, содержащие строку «flag».

Если формат флага известен (например, flag{...} или picoCTF{...}), начните с frame contains "flag{". Иногда этого хватает за глаза — 10 секунд, и следующий таск.

Follow Stream — главный приём разбора pcap файлов

Follow Stream — функция, которую новички почему-то игнорируют, а зря. Она собирает все пакеты одной TCP/UDP-сессии и показывает диалог целиком: запросы клиента выделены красным, ответы сервера — синим. Без неё вы видите отдельные фрагменты по ~1400 байт, из которых собрать осмысленную картину вручную — занятие для мазохистов.

Как использовать: выбираете интересующий пакет, правый клик → FollowTCP Stream (или UDP Stream, HTTP Stream). Wireshark откроет полное содержимое сессии в отдельном окне.

Что искать в TCP Stream:

  • Credentials. В незашифрованных протоколах (HTTP, FTP, Telnet, SMTP) логины и пароли идут открытым текстом. Фильтр ftp + Follow TCP Stream покажет команды USER и PASS — классика CTF-задач на анализ сетевого трафика.
  • Флаги в открытом виде. Иногда задача тривиальна — флаг прямо в HTTP-ответе или в теле текстового сообщения. Не усложняйте.
  • Закодированные данные. Строки в Base64, hex, URL-encoding — частый приём. Видите что-то вроде ZmxhZ3t... — это Base64, декодируйте через CyberChef или echo "ZmxhZ3t..." | base64 -d в терминале.
  • HTTP-заголовки. Кастомные заголовки (X-Flag, X-Secret, X-Hidden) — ещё одно популярное место для прятания данных. Авторы задач рассчитывают, что участники смотрят только на тело ответа и пропускают заголовки. Не попадайтесь.

В нижней части окна Follow Stream есть выпадающий список «Show data as» — переключайте между ASCII, Hex Dump, Raw для разных типов данных. Кнопки навигации по потокам (стрелки вправо/влево) позволяют перебирать все сессии в pcap одну за другой — удобно, когда потоков немного и хочется просмотреть каждый.

По моему опыту — семь из десяти CTF forensics задач с сетевым трафиком решаются через Follow Stream в комбинации с правильным фильтром.

Извлечение файлов из pcap: Export Objects и ручной метод

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

Export Objects — автоматическое извлечение файлов из pcap

Переходим в File > Export Objects и выбираем протокол:

Протокол Что извлекает
HTTP Файлы через HTTP: изображения, HTML, JS, архивы
SMB Файлы по SMB/CIFS (сетевые шары Windows)
TFTP Файлы по TFTP
FTP-DATA Файлы по FTP (данные, не команды)
IMF Почтовые вложения (Internet Message Format)

В окне появится список всех файлов с именами, MIME-типами и размерами. Выбираете нужный — «Save», или «Save All» для массового экспорта. Работает для незашифрованного трафика. Если в pcap HTTPS — без ключа дешифрования файлы не извлечь (иногда ключ дают в условии задачи — не пропустите).

Ручное восстановление файлов из трафика

Бывает, файл передаётся нестандартно — через raw TCP, через кастомный протокол или фрагментами. Тогда:

  1. Находим поток с файлом через Follow TCP Stream.
  2. Переключаем «Show data as» на «Raw».
  3. Жмём «Save as...» и сохраняем сырые байты.
  4. Определяем тип файла командой file exported_data или по сигнатуре (magic bytes): 89 50 4E 47 — PNG, 50 4B 03 04 — ZIP, FF D8 FF — JPEG, 25 50 44 46 — PDF.

Если в потоке есть лишние данные (HTTP-заголовки перед телом файла), открываем сохранённый файл в hex-редакторе и обрезаем всё до начала сигнатуры.

Эта техника напрямую связана с реальной практикой DFIR. В MITRE ATT&CK передача инструментов через сеть описана техникой Ingress Tool Transfer (T1105, Command and Control) — атакующие загружают утилиты на скомпрометированный хост именно так. Эксфильтрация данных через незашифрованные протоколы — Exfiltration Over Unencrypted Non-C2 Protocol (T1048.003). Навык, отточенный на CTF, напрямую пригодится в SOC.

Типичные CTF forensics задачи: пошаговые разборы

Четыре сценария, которые чаще всего встречаются на CTF-соревнованиях. Каждый маппится на реальную технику из MITRE ATT&CK — это не учебные абстракции, а модели реальных атак.

HTTP-эксфильтрация: флаг в POST-запросе

Сценарий. Pcap содержит смешанный трафик — DNS, HTTP, немного ICMP. Флаг спрятан в данных, отправленных на сервер атакующего.

Решение:

  1. Statistics > Protocol Hierarchy — оцениваем долю HTTP.
  2. Фильтр http.request.method == "POST" — сужаем до исходящих данных. GET-запросы обычно получают контент, POST — отправляют. Если кто-то сливал данные — это POST.
  3. Выбираем POST-запрос → Follow TCP Stream — видим тело запроса. Данные в Base64 — декодируем. Формат application/x-www-form-urlencoded — читаем параметры.
  4. Проверяем заголовки: Content-Type, User-Agent (нетипичный UA может быть подсказкой), кастомные заголовки.

В реальных атаках картина та же: вредонос отправляет украденные данные через HTTP POST на C2-сервер. В MITRE ATT&CK это Web Protocols (T1071.001, Command and Control). Фильтр http.request.method == "POST" — один из первых рефлексов аналитика при разборе сетевых инцидентов.

DNS-туннелирование: данные в поддоменах

Сценарий. Pcap выглядит скучно — почти весь трафик DNS. Но объём подозрительно большой для обычных резолвов.

Решение:

  1. Фильтр dns — смотрим запросы.
  2. Обращаем внимание на поддомены. Вместо нормальных имён вроде mail.google.com видите длинные строки: dGhpcyBpcyBhIGZsYWc=.evil.com — это данные, закодированные в Base64 и переданные через DNS-запросы.
  3. Фильтр dns.qry.name contains ".evil.com" (подставьте домен из pcap).
  4. Извлекаем поддомены, склеиваем, декодируем.

Для автоматизации удобнее tshark:

tshark -r capture.pcap -Y "dns.qry.name contains \".evil.com\"" \
  -T fields -e dns.qry.name | \
  sed 's/\.evil\.com//' | tr -d '\n' | base64 -d

DNS-туннелирование — реальная техника эксфильтрации: DNS (T1071.004, Command and Control). Атакующие используют её для обхода межсетевых экранов — DNS-трафик редко блокируют полностью. Кодирование данных в поддоменах соответствует технике Standard Encoding (T1132.001). OWASP относит неспособность детектировать подобную активность к категории A09:2021 — Security Logging and Monitoring Failures.

FTP: восстановление файла из дампа трафика

Сценарий. В pcap видна FTP-сессия. Нужно восстановить переданный файл и/или извлечь credentials.

Решение:

  1. Фильтр ftp — смотрим команды. USER и PASS покажут логин и пароль открытым текстом (да, в 2025 году FTP всё ещё используют — и да, пароли всё ещё летят в чистом виде). RETR — скачивание файла с сервера, STOR — загрузка на сервер.
  2. Фильтр ftp-data — содержимое файлов (отдельный поток от команд).
  3. File > Export Objects > FTP-DATA — если Wireshark распознал передачу.
  4. Если автоматический экспорт не сработал — Follow TCP Stream на потоке ftp-data, сохраняем как Raw и проверяем тип файла по magic bytes.

Перехват таких данных в реальном мире — это Network Sniffing (T1040, Credential Access / Discovery). OWASP относит передачу credentials без шифрования к категории A02:2021 — Cryptographic Failures.

ICMP-стеганография: данные в ping-пакетах

Сценарий. Pcap наполнен ICMP Echo Request/Reply. На первый взгляд — обычный ping, ничего интересного. Но не торопитесь с выводами.

Решение:

  1. Фильтр icmp — изолируем ICMP-пакеты.
  2. Смотрим payload в панели Packet Bytes. Стандартный ping содержит паттерн abcdefghij... или нули. ASCII-текст, hex-строки или бинарные данные нестандартной структуры — стеганография.
  3. Раскрываем уровень «Internet Control Message Protocol» в Packet Details, смотрим поле «Data».
  4. Склеиваем data из всех ICMP-пакетов последовательно.

Автоматизация через tshark:

tshark -r capture.pcap -Y "icmp.type == 8" \
  -T fields -e data.data | tr -d ':' | xxd -r -p

Команда вытянет payload из всех ICMP Echo Request (type 8) и сконвертирует hex в бинарные данные. Иногда данные прячут только в Request, иногда — только в Reply (type 0), иногда чередуют. Проверяйте оба варианта.

Скрытие данных в легитимных протоколах — техника Obfuscated Files or Information (T1027, Defense Evasion) по MITRE ATT&CK. ICMP-туннели используются APT-группировками для обхода DLP-систем, которые обычно не инспектируют содержимое ping-пакетов. Кто будет копаться в пингах, правда?

tshark и NetworkMiner: автоматизация анализа трафика

tshark — Wireshark без GUI

tshark — консольная версия Wireshark с тем же движком разбора протоколов. Незаменим, когда нужно обработать pcap по SSH без графики, автоматизировать извлечение данных скриптом или быстро выгрузить конкретные поля из тысяч пакетов.

Ключевые флаги: -r файл.pcap (чтение файла), -Y "фильтр" (display filter — тот же синтаксис, что в GUI), -T fields -e имя.поля (вывод конкретного поля в текстовом виде).

Пример — извлечь все уникальные HTTP-хосты из pcap:

tshark -r capture.pcap -Y "http.request" \
  -T fields -e http.host | sort -u

Все wireshark display filters работают в tshark один к одному. Освоили фильтры в графическом интерфейсе — tshark даёт скорость и скриптуемость.

NetworkMiner — альтернативный взгляд на pcap

NetworkMiner — инструмент сетевой форензики, который подходит к задаче с другой стороны. Вместо пакетов он показывает артефакты: извлечённые файлы, изображения, credentials, DNS-запросы — всё разложено по вкладкам. По данным hacklido.com, NetworkMiner автоматически вытаскивает файлы, изображения, credentials и метаданные из pcap, что делает его хорошим дополнением к Wireshark в CTF.

Когда полезен: вы получили pcap и хотите мгновенно увидеть все переданные файлы и credentials без ручного разбора потоков. NetworkMiner откроет pcap и разложит артефакты за секунды. Это не замена Wireshark — скорее инструмент для быстрого первичного прохода.

NetworkMiner доступен для Windows (портативная версия, без установки) и для Linux через Mono: sudo apt install mono-complete, скачать с netresec.com и запустить mono NetworkMiner.exe. Интерфейс интуитивный: открываете файл, переходите по вкладкам Files, Credentials, Images.

Чек-лист: разбор дампа трафика в Wireshark за 10 минут

Алгоритм, который работает для большинства CTF forensics задач с pcap-файлами:

  1. Разведка. Statistics > Protocol Hierarchy — какие протоколы, что доминирует, что нетипично.
  2. Участники. Statistics > Conversations — кто с кем, кто передал больше всего данных.
  3. Быстрый поиск. frame contains "flag" или frame contains "CTF" — иногда задача закрывается за 10 секунд.
  4. Фильтрация по протоколу. Начните с HTTP, затем DNS, затем FTP/Telnet/SMTP.
  5. Follow Stream. Для каждого подозрительного соединения — ищите credentials, текст, закодированные строки.
  6. Export Objects. File > Export Objects > HTTP/FTP-DATA — сохраните все файлы, проверьте каждый.
  7. Нетипичное. Большой ICMP-трафик? Длинные DNS-запросы? Нестандартные порты? Сигнал к детальному разбору.
  8. Декодирование. Base64, hex, URL-encoding — CyberChef в помощь.
  9. NetworkMiner. Если ничего не нашли — откройте pcap в NetworkMiner для альтернативного представления артефактов.
  10. tshark + grep. Если пакетов слишком много для ручного анализа — автоматизируйте.

Чек-лист — не догма, а отправная точка. Каждая задача уникальна, но девять из десяти решаются комбинацией шагов из этого списка.

Большинство русскоязычных материалов по Wireshark заканчиваются на установке и базовых фильтрах — ни одного разобранного сценария из CTF. Англоязычные writeup'ы покрывают отдельные задачи, но не дают системного подхода. Проблема, которую я вижу на каждом соревновании: люди знают, что Wireshark существует, умеют его запускать, но теряются при виде реального pcap. Нет мышечной памяти — Statistics > Protocol Hierarchy → фильтр → Follow Stream → Export Objects. Эту последовательность нужно прогнать десять раз на разных дампах, чтобы она стала рефлексом.

Форензика в CTF — не про заучивание фильтров. Это про понимание, как данные движутся по сети и где атакующий оставляет следы. DNS-туннелирование, ICMP-стеганография, HTTP-эксфильтрация — все эти сценарии взяты из реальных инцидентов и описаны в MITRE ATT&CK как техники APT-группировок. Когда вы решаете задачу на CTF, вы делаете то же самое, что аналитик SOC при разборе инцидента, — только в безопасной среде и с известным ответом. Мой совет: скачайте публичный pcap (на malware-traffic-analysis.net их сотни), откройте Wireshark и прогоните чек-лист от начала до конца. Через десять таких разборов Follow Stream станет рефлексом, а фильтры — мышечной памятью. Если хочется не только разбирать чужие дампы, а решать задачи с нарастающей сложностью и разбором от ментора — на WAPT сетевая форензика покрывается в нескольких модулях с лабой на каждый вектор.

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

Поделиться

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

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

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

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

SQL-инъекции в CTF: от ручного поиска до sqlmap

14 мин.

5

SQL-инъекции в CTF: от ручного поиска до sqlmap

Пошаговый разбор SQL-инъекций в CTF: от первой кавычки в Burp до дампа базы через sqlmap. UNION, blind, error-based — с реальными payload'ами и tamper-скриптами.

19 СЕНТЯБРЬ, 2026

Ghidra для начинающих: первый бинарник на CTF

15 мин.

13

Ghidra для начинающих: первый бинарник на CTF

Полный Ghidra туториал: установка, интерфейс, декомпиляция, разбор password checker и XOR-задач. Решаем CTF reverse от команды file до флага за 15 минут.

18 СЕНТЯБРЬ, 2026

XXE-инъекции в CTF: пошаговая эксплуатация

14 мин.

7

XXE-инъекции в CTF: пошаговая эксплуатация

Разбор всех типов XXE-инъекций для CTF: чтение файлов, SSRF, blind OOB, error-based через локальные DTD. Пейлоады, обход WAF, чек-лист и инструменты.

18 СЕНТЯБРЬ, 2026