
Три часа ночи, последний час CTF-марафона. Задача из категории Forensics — файл traffic.pcap на 12 тысяч пакетов. Половина команды листает пакеты вручную, вторая вбивает в поисковик «wireshark how to find flag». А флаг лежал в одном-единственном HTTP POST-запросе. Два display-фильтра, Follow TCP Stream — полторы минуты работы. Я видел это раз десять на разных соревнованиях: разница между «застрял на три часа» и «решил за 90 секунд» — десяток приёмов Wireshark, заточенных под CTF. Здесь — именно они: от первых секунд с pcap-файлом до извлечения скрытых данных из DNS-туннелей и ICMP-стеганографии.
Открыть pcap и начать листать пакеты сверху вниз — это как читать словарь от корки до корки, чтобы найти одно слово. В CTF-задачах на network forensics файл может содержать тысячи пакетов, и в Wireshark для начинающих первый навык — не фильтрация, а разведка. Прежде чем копаться в потоках, нужно за минуту понять, что вообще лежит в дампе. Подробнее — в нашем руководстве по создание ctf заданий.
Открываем Statistics > Protocol Hierarchy. Wireshark покажет дерево всех протоколов в захвате с процентным распределением трафика. За пять секунд видно: есть ли HTTP (возможна передача файлов или credentials), много ли DNS (намёк на DNS-туннелирование), встречаются ли FTP, Telnet, SMTP — протоколы, которые гоняют данные открытым текстом.
Wireshark работает с файлами формата .pcap (packet capture) — основным форматом записи сетевого трафика в CTF. Как указывает ctf101.org, Protocol Hierarchy помогает быстро обнаружить нетипичные протоколы, содержащие подсказки или флаг. Протокол с минимальным количеством пакетов, нестандартный для контекста задачи, — первый кандидат на изучение.
Второй шаг — Statistics > Conversations. Вкладка показывает все пары IP-адресов, обменивавшихся данными. Сортируйте по объёму переданных байт: самые «тяжёлые» разговоры часто содержат переданные файлы. Сортировка по количеству пакетов выявит сканирование портов или brute-force.
На вкладках TCP и UDP видны конкретные порты — это сужает поиск. Два хоста, обменивающиеся данными на нестандартном порту вроде 4444 или 8888, — почти наверняка то, что вы ищете.
Statistics > Endpoints покажет все уникальные адреса в pcap. В CTF forensics задачах обычно фигурируют 2-5 хостов. Если адресов сотни — вы, скорее всего, смотрите на задачу с сетевым сканированием, и подход будет другим.
Три инструмента вместе дают полную картину за 30-60 секунд. Только после этого переходите к фильтрам.
Фильтры 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) |
Именно эти 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 — функция, которую новички почему-то игнорируют, а зря. Она собирает все пакеты одной TCP/UDP-сессии и показывает диалог целиком: запросы клиента выделены красным, ответы сервера — синим. Без неё вы видите отдельные фрагменты по ~1400 байт, из которых собрать осмысленную картину вручную — занятие для мазохистов.
Как использовать: выбираете интересующий пакет, правый клик → Follow → TCP Stream (или UDP Stream, HTTP Stream). Wireshark откроет полное содержимое сессии в отдельном окне.
Что искать в TCP Stream:
ftp + Follow TCP Stream покажет команды USER и PASS — классика CTF-задач на анализ сетевого трафика.ZmxhZ3t... — это Base64, декодируйте через CyberChef или echo "ZmxhZ3t..." | base64 -d в терминале.X-Flag, X-Secret, X-Hidden) — ещё одно популярное место для прятания данных. Авторы задач рассчитывают, что участники смотрят только на тело ответа и пропускают заголовки. Не попадайтесь.В нижней части окна Follow Stream есть выпадающий список «Show data as» — переключайте между ASCII, Hex Dump, Raw для разных типов данных. Кнопки навигации по потокам (стрелки вправо/влево) позволяют перебирать все сессии в pcap одну за другой — удобно, когда потоков немного и хочется просмотреть каждый.
По моему опыту — семь из десяти CTF forensics задач с сетевым трафиком решаются через Follow Stream в комбинации с правильным фильтром.
В CTF часто требуется вытащить из дампа трафика переданный файл — картинку, архив, PDF, исполняемый файл. Wireshark умеет это из коробки, но не всегда автоматически.
Переходим в 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, через кастомный протокол или фрагментами. Тогда:
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-соревнованиях. Каждый маппится на реальную технику из MITRE ATT&CK — это не учебные абстракции, а модели реальных атак.
Сценарий. Pcap содержит смешанный трафик — DNS, HTTP, немного ICMP. Флаг спрятан в данных, отправленных на сервер атакующего.
Решение:
Statistics > Protocol Hierarchy — оцениваем долю HTTP.http.request.method == "POST" — сужаем до исходящих данных. GET-запросы обычно получают контент, POST — отправляют. Если кто-то сливал данные — это POST.application/x-www-form-urlencoded — читаем параметры.Content-Type, User-Agent (нетипичный UA может быть подсказкой), кастомные заголовки.В реальных атаках картина та же: вредонос отправляет украденные данные через HTTP POST на C2-сервер. В MITRE ATT&CK это Web Protocols (T1071.001, Command and Control). Фильтр http.request.method == "POST" — один из первых рефлексов аналитика при разборе сетевых инцидентов.
Сценарий. Pcap выглядит скучно — почти весь трафик DNS. Но объём подозрительно большой для обычных резолвов.
Решение:
dns — смотрим запросы.mail.google.com видите длинные строки: dGhpcyBpcyBhIGZsYWc=.evil.com — это данные, закодированные в Base64 и переданные через DNS-запросы.dns.qry.name contains ".evil.com" (подставьте домен из pcap).Для автоматизации удобнее 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.
Сценарий. В pcap видна FTP-сессия. Нужно восстановить переданный файл и/или извлечь credentials.
Решение:
ftp — смотрим команды. USER и PASS покажут логин и пароль открытым текстом (да, в 2025 году FTP всё ещё используют — и да, пароли всё ещё летят в чистом виде). RETR — скачивание файла с сервера, STOR — загрузка на сервер.ftp-data — содержимое файлов (отдельный поток от команд).File > Export Objects > FTP-DATA — если Wireshark распознал передачу.ftp-data, сохраняем как Raw и проверяем тип файла по magic bytes.Перехват таких данных в реальном мире — это Network Sniffing (T1040, Credential Access / Discovery). OWASP относит передачу credentials без шифрования к категории A02:2021 — Cryptographic Failures.
Сценарий. Pcap наполнен ICMP Echo Request/Reply. На первый взгляд — обычный ping, ничего интересного. Но не торопитесь с выводами.
Решение:
icmp — изолируем ICMP-пакеты.abcdefghij... или нули. ASCII-текст, hex-строки или бинарные данные нестандартной структуры — стеганография.Автоматизация через 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 — консольная версия 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 — инструмент сетевой форензики, который подходит к задаче с другой стороны. Вместо пакетов он показывает артефакты: извлечённые файлы, изображения, 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.
Алгоритм, который работает для большинства CTF forensics задач с pcap-файлами:
Statistics > Protocol Hierarchy — какие протоколы, что доминирует, что нетипично.Statistics > Conversations — кто с кем, кто передал больше всего данных.frame contains "flag" или frame contains "CTF" — иногда задача закрывается за 10 секунд.File > Export Objects > HTTP/FTP-DATA — сохраните все файлы, проверьте каждый.Чек-лист — не догма, а отправная точка. Каждая задача уникальна, но девять из десяти решаются комбинацией шагов из этого списка.
Большинство русскоязычных материалов по 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 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...