
В разборе задания EscapeRoom на CyberDefenders — 54 SSH-сессии, тысячи пакетов, три HTTP-объекта. Всё интересное укладывается в 0.3% незашифрованного трафика, остальные 99.7% — TLS, который без ключей бесполезен. Можно час прокручивать пакеты колесом мыши. А можно за три минуты открыть Statistics → Protocol Hierarchy, увидеть эти 0.3% HTTP и вытащить флаг из User-Agent заголовка wget-запроса.
Разница между «читаю пакеты сверху вниз» и «решил за пять минут» — не талант, а методика. Wireshark CTF анализ трафика — навык, который отрабатывается за десяток решённых заданий, если есть алгоритм. Его и разберём: от первого открытия PCAP-файла до извлечения флага через HTTP, FTP и DNS.
Перед первым PCAP — убедитесь, что рабочее место не подведёт.
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| ОС | Windows 10, Linux (любой), macOS | Kali Linux / Parrot OS (предустановлен) |
| Wireshark | 3.6+ | 4.0+ (улучшена производительность на крупных дампах) |
| tshark | Входит в Wireshark | Проверить: tshark --version |
| RAM | 4 ГБ для дампов до 50 МБ | 8 ГБ для файлов >200 МБ |
| CyberChef | Веб-версия gchq.github.io/CyberChef | Локальная копия для работы offline |
| Утилиты | strings, file, grep |
На Windows — через WSL или Git Bash |
Wireshark скачивается с wireshark.org. На Linux в security-дистрибутивах он предустановлен. На Windows при установке выберите Npcap вместо устаревшего WinPcap — без этого современные сетевые адаптеры могут работать криво.
Задания категории network forensics CTF моделируют конкретные техники из реальных атак. Понимание этих техник в терминах MITRE ATT&CK сразу подсказывает, на какие протоколы смотреть при анализе pcap файлов.
| Техника MITRE ATT&CK | Что ищем в PCAP | Типичный CTF-сценарий |
|---|---|---|
| Network Sniffing (T1040, Credential Access) | Перехваченные credentials | Пароли в FTP/HTTP Basic/SMTP |
| Web Protocols (T1071.001, C2) | C2-коммуникации через HTTP | Скрытые команды в User-Agent или Cookie |
| File Transfer Protocols (T1071.002, C2) | Передача файлов по FTP/TFTP | Вредоносный бинарник в FTP-сессии |
| Credentials In Files (T1552.001, Credential Access) | Пароли в конфигурационных файлах | Файл с credentials, переданный по HTTP |
| Exfiltration Over Unencrypted Non-C2 Protocol (T1048.003) | DNS exfiltration, ICMP tunneling | Флаг закодирован в DNS-поддоменах |
| Standard Encoding (T1132.001, C2) | Base64/hex в payload | Закодированный флаг в HTTP-заголовке |
Задание упоминает «утечку данных» — начинайте с DNS exfiltration или незашифрованного HTTP. «Скомпрометированные учётные данные» — проверяйте FTP и SMTP. «Загрузка вредоносного ПО» — ищите HTTP Export Objects и нестандартные User-Agent.
Открыли файл — не начинайте читать пакеты сверху вниз. Это ловушка, в которую попадают все на первых соревнованиях. Первые пять минут — разведка: определить, куда потратить время, а что отсечь как фоновый шум.
Statistics → Protocol Hierarchy — первое, что открываете после загрузки PCAP. Окно показывает процентное распределение протоколов по количеству пакетов и объёму данных. Это карта сетевого дампа трафика — на ней сразу видно, где копать.
На что обращать внимание:
В разборе evidence.pcap из CTF-задания Protocol Hierarchy показал: 88.4% пакетов — TCP, внутри TLS (91.1% по объёму), DNS — 11.6% пакетов, HTTP — 0.3%. Именно эти незашифрованные 0.3% содержали всё нужное для извлечения данных из pcap. Без Protocol Hierarchy пришлось бы копаться в зашифрованном TLS часами.
Statistics → Conversations показывает все пары взаимодействующих хостов. Вкладка TCP, отсортированная по объёму переданных байтов, мгновенно выделяет «толстые» сессии.
Как использовать при анализе pcap файлов для CTF:
В EscapeRoom именно Conversations позволил отличить 52 неудачных SSH brute-force попытки (малый объём данных от сервера) от двух успешных сессий (большой объём), как описано в разборе на InfoSec Writeups. Без этого пришлось бы вручную просматривать каждую из 54 сессий. Представьте удовольствие.
Statistics → Endpoints дополняет картину: один внутренний IP, общающийся с десятком внешних — нормально. Один внешний IP, инициирующий сотни соединений — аномалия, стоит копнуть.
Decision tree после разведки:
| Что показала разведка | Следующий шаг |
|---|---|
| Присутствует HTTP-трафик | Фильтр http, затем Export Objects |
| Есть FTP-сессии | Фильтр ftp, искать USER/PASS |
| Аномально много DNS | Фильтр dns, проверить TXT-записи и длинные поддомены |
| Только TLS/SSL | Искать ключ дешифрации в условии задания |
| Нестандартные порты (4444, 1337) | Follow TCP Stream на эти порты |
| Большие ICMP-пакеты | Проверить payload на скрытые данные в hex-представлении |
Protocol Hierarchy и Conversations показывают статистику, не содержимое. Это инструмент для ответа «куда копать», а не для поиска флага напрямую.
Display-фильтры — основной инструмент навигации по дампу. Вводятся в строку в верхней части окна Wireshark и применяются по Enter. Без них packet capture анализ файла с тысячами пакетов превращается в лотерею.
Базовые wireshark фильтры для анализа, которые стоит знать наизусть:
http — весь HTTP-трафикdns — все DNS-запросы и ответыftp — FTP-команды (без содержимого файлов; для данных — ftp-data)smtp — электронная почтаtcp.port == 4444 — трафик на конкретном портуip.addr == 10.0.2.15 — все пакеты от/к конкретному IPhttp.request.method == "POST" — только POST-запросы (формы, загрузки, credentials)http.response.code == 200 — успешные HTTP-ответыКомбинирование: && — логическое И, || — ИЛИ, ! — отрицание. Фильтр http && ip.src == 10.0.2.15 покажет HTTP-трафик от конкретного хоста. А !dns && !arp уберёт фоновый шум DNS-резолвинга и ARP-запросов — сразу станет чище.
Когда формат флага известен (например, CTF{...} или flag{...}), поиск по содержимому — самый быстрый путь:
frame contains "flag" — ищет строку во всём фрейме, включая payload и заголовкиhttp contains "CTF{" — ищет только в HTTP-пакетахtcp contains "password" — пароли в TCP-потокеdns.qry.name contains "suspicious" — подстроки в DNS-запросахДля регулярных выражений — оператор matches: фильтр http.request.uri matches ".*\\.php" покажет все запросы к PHP-скриптам, а dns.qry.name matches "^[a-f0-9]{8,}\\." выявит DNS-запросы с hex-строками в поддоменах — типичный признак DNS exfiltration.
Если формат флага неизвестен — последовательная серия запросов: frame contains "flag", затем frame contains "key", frame contains "secret", frame contains "pass". На CTF начального уровня флаг в открытом виде встречается примерно в половине заданий. Да, вот настолько просто — не усложняйте.
Фильтры по содержимому работают только с незашифрованным трафиком. Если пакеты идут через TLS и у вас нет ключа дешифрации — contains и matches на зашифрованных сессиях бесполезны.
HTTP — самый частый источник pcap forensics флагов на CTF начального и среднего уровня. Две техники: Follow TCP Stream и Export Objects.
Правый клик на любом HTTP-пакете → Follow → TCP Stream. Wireshark собирает все пакеты одной TCP-сессии в единый читаемый поток. Красный текст — данные от клиента, синий — от сервера. Перехваченный диалог, склеенный из фрагментов.
В нижней части окна кнопки навигации между потоками — Stream 0, Stream 1, Stream 2 и далее. На CTF с небольшим количеством потоков стоит просмотреть каждый последовательно.
Типичные находки при Follow TCP Stream на CTF:
Authorization: Basic с Base64-строкойUSER/PASS, SMTP AUTH LOGINВ EscapeRoom через Follow HTTP Stream обнаружился User-Agent со значением wget — ответ на вопрос «какой инструмент использовал атакующий для загрузки малвари». Это моделирует технику Web Protocols (T1071.001, Command and Control). Без Follow Stream это обнаружилось бы только случайно.
File → Export Objects → HTTP открывает список всех файлов, переданных по HTTP за время захвата: изображения, скрипты, документы, бинарники. Аналогичные меню доступны для SMB, TFTP и email-вложений (IMF).
Алгоритм работы после экспорта:
file <имя_файла> — читает magic bytes, показывает реальный тип даже при неправильном расширенииstrings <имя_файла> | grep -i flagmd5sum <имя_файла> или sha256sum <имя_файла>В EscapeRoom через Export Objects вытащили три файла: два ELF-бинарника и Bash-скрипт, как описано в разборе на InfoSec Writeups. Тип каждого файла определился через file, а MD5-хеш основного вредоноса стал ответом на один из вопросов.
Export Objects работает только для полностью захваченных передач. Если PCAP содержит лишь часть сессии (обрезанный захват), файл будет повреждён. В этом случае попробуйте Follow TCP Stream → Save As с выбором формата Raw — ручная реконструкция иногда спасает.
FTP передаёт credentials и команды без шифрования — идеальная мишень для CTF-заданий. В терминах MITRE ATT&CK это техники Credentials In Files (T1552.001) и File Transfer Protocols (T1071.002). Задания по FTP-трафику встречаются регулярно, а флаги прячут либо в самих credentials, либо в переданных файлах.
Фильтр ftp показывает управляющий канал: команды USER, PASS, RETR (скачивание), STOR (загрузка), LIST (листинг каталога). Фильтр ftp-data — отдельный канал с содержимым передаваемых файлов.
Пошаговый алгоритм анализа FTP-сессии:
ftp — найти пары USER/PASS. Credentials могут быть флагом или частью флагаRETR и STOR — какие файлы скачивались или загружалисьftp-data — увидеть содержимое передаваемых файловftp-data пакете → Follow → TCP Stream — получить полное содержимое файлаSave As → Raw — обязательно для бинарных файлов (выбор ASCII повредит данные)FTP использует отдельные порты для данных (активный режим — порт 20, пассивный — случайный порт >1024). Wireshark обычно корректно связывает управляющий и data-канал, но при нестандартной конфигурации может не распознать ftp-data автоматически. Тогда используйте Decode As на соответствующем TCP-потоке — принудительно укажите протокол.
DNS exfiltration — один из самых изящных CTF-сценариев в категории сетевая криминалистика CTF задания. Данные кодируются в поддоменах DNS-запросов: каждый запрос несёт фрагмент информации, а полный флаг собирается из серии запросов. Техника Exfiltration Over Unencrypted Non-C2 Protocol (T1048.003) в чистом виде.
Признаки DNS exfiltration в PCAP:
6162636465.evil.com вместо www.example.comQ1RGe2V4ZmlsLi4ufQ.evil.comФильтр для обнаружения: dns.qry.name matches "^[a-f0-9]{8,}\\." покажет запросы с длинными hex-строками в поддоменах. Для TXT-записей: dns.txt. Если Protocol Hierarchy показал аномально высокую долю DNS — начните с этих фильтров.
Для массового извлечения поддоменов Wireshark GUI неудобен — сотни DNS-запросов проще обработать в tshark:
tshark -r dump.pcap -Y "dns.qry.name contains evil.com" \
-T fields -e dns.qry.name | \
awk -F'.' '{print $1}' | tr -d '\n' | xxd -r -p
Эта команда извлекает первый поддомен из каждого запроса к evil.com, склеивает их и декодирует из hex. Если данные закодированы в Base64, замените xxd -r -p на base64 -d.
На реальных CTF кодировка бывает многослойной — Base64 поверх hex поверх ROT13. Если первый вариант декодирования даёт мусор, пробуйте другие комбинации через CyberChef, перетаскивая рецепты в цепочку. Иногда приходится перебрать пять-шесть вариантов, прежде чем вылезет что-то читаемое.
Обнаружить закодированную строку — полдела. Частые кодировки на CTF и как их распознать:
A-Za-z0-9+/, часто заканчивается на = или ==. Пример: Q1RGe3cxcjNzaDRya30= декодируется в CTF{w1r3sh4rk}. Техника Standard Encoding (T1132.001)0-9a-f, пары через пробел или слитно. Пример: 43 54 46 7b = CTF{PGS{jverfunex} превращается в CTF{wireshark}%43%54%46%7B = CTF{CyberChef позволяет собрать цепочку рецептов: перетащите From Base64, затем ROT13, затем From Hex — результат обновится автоматически. Это на порядок быстрее, чем декодировать каждый слой руками в терминале.
Если Protocol Hierarchy показывает, что весь интересный трафик зашифрован (TLS >90%), ищите ключ дешифрации. На CTF его часто дают отдельным файлом в условии задания. Два варианта подключения:
CLIENT_RANDOM .... Подключается через Edit → Preferences → Protocols → TLS → (Pre)-Master-Secret log filenameEdit → Preferences → Protocols → TLS → RSA keys listПосле загрузки ключа Wireshark автоматически расшифрует сессии, и все фильтры по содержимому (contains, matches) начнут работать с расшифрованными данными.
Если cipher suite использует Perfect Forward Secrecy (DHE или ECDHE), серверный RSA-ключ не поможет — нужен именно pre-master secret log, который генерируется на стороне клиента. Согласно ctf101.org, при RSA без PFS возможен и третий путь — факторизация n в RSA-ключе, если он намеренно сделан слабым (на CTF иногда используют короткие ключи). Для этого нужны отдельные инструменты вроде RsaCtfTool — это уже за рамками Wireshark.
Wireshark GUI удобен для визуального анализа, но при работе с большими дампами или серией файлов tshark экономит часы. Команды, которые покрывают большинство CTF-сценариев по извлечению данных из pcap:
# Все HTTP-запросы с хостом и URI
tshark -r file.pcap -Y "http.request" -T fields -e http.host -e http.request.uri
# Все DNS-запросы (уникальные имена)
tshark -r file.pcap -Y "dns.qry.name" -T fields -e dns.qry.name | sort -u
# Поиск строки во всём дампе (hex-вывод для контекста)
tshark -r file.pcap -Y 'frame contains "flag"' -x
# FTP credentials
tshark -r file.pcap -Y "ftp.request.command == USER || ftp.request.command == PASS" \
-T fields -e ftp.request.command -e ftp.request.arg
# Статистика протоколов (аналог Protocol Hierarchy в CLI)
tshark -r file.pcap -q -z io,phs
Флаг -T fields с -e позволяет извлечь конкретные поля — результат легко передать в grep, sort, awk или Python-скрипт для дальнейшей обработки.
Когда tshark лучше GUI: дамп >100 МБ (GUI начинает тормозить), серия PCAP-файлов (скрипт for f in *.pcap; do tshark -r "$f" ...; done), удалённый сервер без графической оболочки, необходимость быстро проверить десяток гипотез подряд.
| Критерий | Wireshark | tshark | NetworkMiner |
|---|---|---|---|
| Преимущества | Визуальный анализ, Follow Stream, цветовая маркировка потоков | Скорость, скриптуемость, стабильная работа без GUI | Автоизвлечение файлов, credentials, изображений |
| Ограничения | Тормозит на файлах >200 МБ, ручная работа | Нет визуализации, крутая кривая обучения синтаксису фильтров | Не работает с loopback-трафиком, ограниченная фильтрация |
| Когда использовать | Первичная разведка, Follow Stream, визуальный анализ конкретных сессий | Большие дампы, автоматизация, серийная обработка, работа через SSH | Быстрое извлечение файлов и credentials из стандартных протоколов |
| Когда НЕ использовать | Дампы >500 МБ, серийная обработка | Когда нужно визуально проследить цепочку пакетов в сессии | Нестандартные протоколы, loopback-интерфейс, шифрованный трафик |
NetworkMiner заслуживает отдельного упоминания: в отличие от Wireshark, который фокусируется на пакетах, NetworkMiner фокусируется на хостах и контенте. Автоматически реконструирует файлы, изображения и учётные данные из PCAP. На Windows — портативный (не требует установки), на Linux — запускается через mono. Для быстрого первичного прохода по извлечению файлов он часто быстрее, чем ручной Export Objects в Wireshark. Но есть нюанс — он не работает с трафиком, захваченным на loopback-интерфейсе. Для части CTF-сценариев, где запись ведётся на localhost, он бесполезен.
Statistics → Protocol Hierarchy — определить распределение протоколов, отметить незашифрованныеStatistics → Conversations — найти «толстые» сессии и аномальные паттерныhttp, ftp, dns, smtpframe contains "flag" / frame contains "CTF{" — флаг в открытом видеFile → Export Objects → HTTP/SMB/TFTP — извлечь переданные файлыfile <имя> для определения типа, затем strings <имя> | grep -i flagdns.qry.name matches "^[a-f0-9]{8,}\\." и dns.txtАлгоритм закрывает порядка 90% заданий категории network forensics на CTF начального и среднего уровня. Для продвинутых заданий добавляются: стеганография в ICMP-пакетах, EAPOL-анализ WiFi-хендшейков через aircrack-ng, разбор кастомных бинарных протоколов через Decode As и Lua-диссекторы Wireshark.
Восемь из десяти заданий по сетевой криминалистике CTF решаются одним набором действий: Protocol Hierarchy → display filter → Follow TCP Stream → Export Objects. Остальные два — DNS exfiltration и TLS-дешифрация — требуют дополнительного шага, но тоже укладываются в алгоритм. Принцип один: от общего к частному. Сначала статистика, потом фильтрация, потом извлечение, потом декодирование. Не наоборот.
Network forensics — самая недооценённая категория на CTF. Команды вкладывают десятки часов в pwn и crypto, оставляя forensics «на потом». А по соотношению затраченного времени к заработанным очкам задания по анализу трафика почти всегда выгоднее. Проблема не в сложности Wireshark — он интуитивен. Проблема в том, что все описывают фильтры, но никто не описывает порядок действий и принятие решений. А именно порядок определяет, потратите вы пять минут или пятьдесят.
Второе наблюдение за несколько лет участия в CTF: навык чтения PCAP — один из немногих, который переносится из соревнований в production без модификаций. Тот же Wireshark, те же display filters, те же Export Objects — только последствия другие. CTF-игроки, которые начинают с network forensics, быстрее адаптируются к реальному DFIR. Если хочешь не просто решать таски, а понимать как выглядит веб-атака от первого запроса до компрометации — на WAPT эту цепочку проходят в течение двух модулей с лабами.
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «forensics».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...