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

14 мин.00

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

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

На первом CTF я получил PCAP-файл на 40 МБ и два часа листал пакеты вручную, пытаясь понять, где спрятан флаг. Решение оказалось обидным до зубовного скрежета: правый клик по FTP-пакету, Follow TCP Stream — пароль лежал в третьей строке открытым текстом. Задача решалась за 90 секунд. Wireshark для начинающих выглядит пугающе: тысячи строк с непонятными протоколами, hex-дампы, цветные полоски без очевидного смысла. Но анализ трафика на CTF-тасках сводится к пяти-шести приёмам, которые покрывают абсолютное большинство заданий категории Forensics и Network. Дальше — конкретные фильтры, конкретные действия, конкретные результаты.

Интерфейс Wireshark: что видит новичок при открытии PCAP

Прежде чем разбирать приёмы, нужно понять, на что смотреть. Открываете PCAP-файл (File → Open или просто перетаскиваете в окно программы) — перед вами три панели. Подробнее — в нашем материале про создание ctf заданий.

Packet List — верхняя часть окна. Каждая строка — отдельный сетевой пакет. Столбцы по умолчанию: номер пакета, временная метка, IP-адрес источника (Source), IP-адрес назначения (Destination), протокол, длина и краткое описание (Info). По этой панели вы ориентируетесь в первую очередь — ищете нужные протоколы, подозрительные адреса, необычные описания в столбце Info.

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

Packet Bytes — нижняя часть. Сырые данные пакета в hex и текстовом (ASCII) представлении. Иногда флаг спрятан в нестандартном месте пакета, где Wireshark не разбирает структуру автоматически — тогда заглядываете сюда напрямую и читаете ASCII-столбец справа.

Критически важна строка фильтра вверху окна — она позволяет отсечь шум среди тысяч пакетов. Зелёный цвет фона строки — корректный фильтр, красный — синтаксическая ошибка. Ещё одна деталь, которую новички упускают: цветовая маркировка строк в Packet List. Wireshark по умолчанию выделяет протоколы разными цветами — зелёные строки для HTTP, тёмно-синие для DNS, чёрные с красным текстом для пакетов с ошибками. Цвета помогают быстро сориентироваться в трафике ещё до применения фильтра.

Фильтры Wireshark для CTF: рабочий набор для начинающих

Без фильтров анализ pcap файлов превращается в бессмысленную прокрутку списка. На CTF-тасках хватит десятка фильтров, чтобы закрыть подавляющее большинство заданий:

Фильтр Что делает Когда нужен на CTF
http Весь HTTP-трафик Первый шаг на любом таске с веб-трафиком
http.request.method == "POST" Только POST-запросы Поиск отправленных форм с логинами
ftp Весь FTP-трафик Логины и пароли летят открытым текстом
ftp.request.command == "PASS" Только команды с паролем FTP Точечный поиск пароля
ftp.request.command == "USER" Только команды с логином FTP Имя пользователя
dns Весь DNS-трафик Подозрительные домены, эксфильтрация
tcp.port == 23 Трафик на порту Telnet Telnet передаёт данные без шифрования
ip.addr == 192.168.1.100 Пакеты от/к конкретному IP Изоляция трафика одного хоста
frame contains "flag" Пакеты со строкой "flag" Грубый, но работающий поиск флага
tcp.stream eq 3 Конкретный TCP-поток Изоляция одной сессии

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

Фильтры комбинируются через логические операторы: && (И), || (ИЛИ), ! (НЕ). Пример: http && ip.src == 10.0.0.5 покажет HTTP-трафик только от конкретного адреса. Комбинация dns && !dns.qry.type == 1 отфильтрует DNS-запросы всех типов, кроме стандартных A-записей — полезно для поиска DNS-туннелирования, где данные передаются через TXT или CNAME-запросы.

Поиск строк в пакетах: frame contains и альтернативы

Фильтр frame contains заслуживает отдельного разбора. Он ищет произвольную строку в сырых данных пакета — заголовках и полезной нагрузке одновременно. На CTF это часто самый быстрый способ найти ответ:

  • frame contains "flag{" — типичный формат CTF-флага
  • frame contains "password" — строка password в любом месте пакета
  • frame contains "secret" — аналогично для секретов
  • tcp contains "login" — поиск только в TCP-пейлоаде, без заголовков нижних уровней

Фильтр регистрозависимый. Если формат флага неизвестен, пробуйте варианты: frame contains "FLAG", frame contains "ctf", frame contains "key". Как отмечают авторы PacketSafari, фильтр frame contains "flag" — стартовая точка для задач на поиск скрытых данных в сетевом трафике.

Альтернативный путь — меню Edit → Find Packet (Ctrl+F). Здесь можно выбрать поиск по строке, hex-значению или регулярному выражению. Галочка "Case insensitive" решает проблему неизвестного регистра. Этот способ удобнее фильтра, когда вы не знаете точное написание искомого.

Как найти пароль в Wireshark: разбор дампа трафика по шагам

Поиск паролей — классическое задание CTF-форензики. В реальных условиях перехват учётных данных из сетевого трафика — техника Network Sniffing (T1040, Credential Access) по классификации MITRE ATT&CK. На CTF она воспроизводится в учебных условиях: организаторы создают PCAP-файл, в котором кто-то авторизовался по небезопасному протоколу, и задача — найти эти учётные данные.

Почему пароли вообще оказываются в трафике открытым текстом? Протоколы HTTP (без S), FTP, Telnet, POP3, IMAP без TLS гоняют данные в plain-text. Всё, что отправляет пользователь — логин, пароль, содержимое писем — летит по сети в чём мать родила. По классификации OWASP это A02:2021 — Cryptographic Failures: отсутствие шифрования при передаче чувствительных данных. Масштаб проблемы показывает утечка LinkedIn 2012 года: 164 миллиона учётных записей с паролями оказались скомпрометированы — по данным Have I Been Pwned. Значительная часть этих паролей на момент утечки передавалась через HTTP.

HTTP: логины и пароли в открытом виде

HTTP — самый частый протокол в CTF-тасках для начинающих. Алгоритм поиска пароля:

  1. Применяете фильтр http.request.method == "POST".
  2. В списке пакетов ищете запрос к URL, похожему на форму логина: /login, /auth, /signin, /wp-login.php.
  3. Кликаете на пакет. В панели Packet Details раскрываете уровень "HTML Form URL Encoded" — здесь лежат поля формы в формате username=admin&password=s3cret.
  4. Если этого уровня нет, раскройте "Line-based text data" или загляните в панель Packet Bytes — данные формы видны в ASCII-представлении справа.

Другой вариант — HTTP Basic Authentication. Ищите заголовок Authorization: Basic через фильтр http.authorization. Значение закодировано в Base64 — именно закодировано, не зашифровано (для тех кто в танке — это значит, что любой может декодировать обратно за секунду). Wireshark автоматически декодирует Base64 в панели Packet Details и показывает пару user:password в поле Credentials. Если декодирование не сработало, скопируйте строку Base64 и пропустите через echo "dXNlcjpwYXNz" | base64 -d в терминале.

На CTF бывает и менее очевидный случай: учётные данные передаются через cookie или кастомный HTTP-заголовок. Фильтр http.cookie contains "session" или http.request с последующим просмотром заголовков в Packet Details помогут обнаружить такие ситуации.

FTP и Telnet: классика сетевого форензика для начинающих

FTP — золотой стандарт CTF-заданий на перехват паролей. Протокол передаёт логин и пароль отдельными командами: USER admin, PASS secret123. Фильтр ftp.request.command == "USER" показывает логин, ftp.request.command == "PASS" — пароль. На практике проще ввести просто ftp и пролистать пять-десять пакетов — команды USER и PASS всегда идут друг за другом в начале сессии.

Помимо учётных данных, FTP-трафик содержит информацию о передаваемых файлах. Команда RETR filename.txt означает загрузку файла, STOR — отправку. Если в задании просят найти не пароль, а содержимое файла, переданного по FTP, — используйте Follow TCP Stream на пакете с командой RETR.

С Telnet хитрее: протокол передаёт данные посимвольно. Каждый введённый символ пароля — отдельный TCP-пакет. Фильтр tcp.port == 23 отберёт Telnet-трафик, но читать пароль по одному символу из разных пакетов — мучение. Решение: Follow TCP Stream. Он соберёт все символы в единый текст, где вы увидите и приглашение login:, и введённый логин, и password:, и пароль. В контексте MITRE ATT&CK сбор таких учётных данных из файлов и сессий описывается как Credentials In Files (T1552.001, Credential Access).

Wireshark Follow TCP Stream: ключ к анализу pcap файлов CTF

Follow TCP Stream — функция, которая собирает все фрагменты TCP-соединения и отображает их как единый читаемый диалог. По данным Cyber Forensic Academy, функция «reassembles the fragmented packets of a TCP conversation into a readable format», позволяя видеть переписку клиента и сервера как сценарий. Это главный инструмент для анализа pcap файлов на CTF.

Порядок работы:

  1. Находите интересующий пакет — FTP, HTTP, Telnet или любой другой.
  2. Правый клик на пакете → Follow → TCP Stream.
  3. Открывается окно с полным текстом соединения. Красный цвет — данные клиента (запросы, логины, пароли). Синий — ответы сервера (HTML-страницы, списки файлов, сообщения об ошибках).
  4. В нижней части окна есть поле "Stream" с числом. Переключая его стрелками, вы перемещаетесь между разными TCP-сессиями в дампе.

На CTF Follow TCP Stream решает несколько задач сразу: чтение FTP-сессии целиком (логин, пароль, список файлов, переданные данные), сборка посимвольного Telnet-ввода в цельный текст, просмотр HTTP-запросов с заголовками и тел ответов. Иногда флаг виден прямо в текстовом потоке — среди HTML-комментариев, cookie-заголовков или тела ответа.

Типичная ошибка новичка: открывает Follow TCP Stream на первом попавшемся пакете и видит мусор. Не все потоки интересны — DNS-запросы, TCP-хендшейки, SSL-рукопожатия выглядят как набор нечитаемых символов. Перебирайте потоки: переключайте номер в поле "Stream" и просматривайте каждый. На CTF-таске обычно 5-20 осмысленных потоков, среди которых один-два содержат ответ.

Обратный приём: после находки в Follow Stream используйте фильтр tcp.stream eq N (где N — номер потока), чтобы вернуться к исходным пакетам в основном окне. Это помогает, когда нужно вытащить конкретное поле из заголовка или проверить временные метки.

Ещё одна полезная штука из того же меню — Follow HTTP Stream. Работает аналогично, но автоматически разжимает gzip-контент и показывает тело HTTP-ответа в читаемом виде. Для веб-тасков это удобнее, чем обычный TCP Stream.

Извлечение файлов из pcap через Wireshark Export Objects

Иногда задача CTF — не найти пароль, а вытащить файл из трафика: картинку с флагом, PDF с подсказкой, архив с ключом. Организаторы помещают файл внутрь PCAP-дампа, и нужно его извлечь.

Wireshark умеет экспортировать файлы, переданные по нескольким протоколам:

  1. Откройте File → Export Objects → HTTP.
  2. Появится список всех файлов, переданных по HTTP: картинки, скрипты, HTML-страницы, загруженные документы.
  3. Каждая строка содержит имя файла, хост, content type и размер.
  4. Выберите нужный файл и нажмите Save. Или Save All — чтобы стянуть всё разом и разбираться потом.

Помимо HTTP, Export Objects поддерживает SMB (файловые шары Windows), TFTP, IMF (email-вложения). На CTF HTTP встречается чаще всего, но если задание связано с передачей файлов внутри локальной сети — проверяйте SMB.

Что делать, если файл передавался по протоколу, который Export Objects не поддерживает? Используйте Follow TCP Stream: откройте нужный поток, переключите формат отображения с "ASCII" на "Raw" (выпадающее меню внизу окна) и сохраните данные через "Save as". Вы получите сырой бинарный поток — в простых случаях файл будет рабочим сразу, в сложных придётся вручную убрать заголовки протокола.

Как вспомогательный инструмент для извлечения файлов из pcap стоит держать под рукой NetworkMiner — он автоматически разбирает PCAP и раскладывает найденные файлы, картинки и учётные данные по папкам. Удобно как дополнение к Wireshark, когда нужно быстро вытащить все файлы из дампа без ручного перебора потоков.

Поиск секретов в сетевом трафике: DNS и ICMP

Более продвинутые CTF-задания прячут данные не в HTTP или FTP, а в протоколах, которые новички обычно пропускают. DNS и ICMP — два самых популярных канала для стеганографии и эксфильтрации на соревнованиях. В реальных атаках злоумышленники используют эти протоколы для вывода данных из скомпрометированной сети, обходя межсетевые экраны: большинство фаерволов пропускают DNS и ICMP без глубокой инспекции. Логика простая — кто будет блокировать DNS? Без него сеть встанет.

DNS-запросы как канал эксфильтрации данных

DNS-туннелирование работает так: данные кодируются и помещаются в поддомен DNS-запроса. Вместо нормального mail.google.com в дампе появляются запросы вида aGVsbG8gd29ybGQ=.evil.com — закодированные данные вместо поддомена.

Алгоритм поиска на CTF:

  1. Применяете фильтр dns.
  2. Смотрите на столбец Info — обращайте внимание на необычно длинные DNS-запросы. В нормальном трафике запрос содержит 10-30 символов. Запросы длиннее 50 символов — повод остановиться.
  3. Если видите поддомены, похожие на Base64 или hex-строки, — собираете их по порядку и декодируете.
  4. Для быстрой оценки используйте Statistics → Protocol Hierarchy. Если DNS-трафик занимает непропорционально большую долю дампа — это индикатор туннелирования.

По описанию Cyber Forensic Academy, «malware frequently uses Domain Generation Algorithms (DGA) to find active C2 servers». На CTF это упрощается: обычно есть один "вредоносный" домен, куда данные отправляются через серию DNS-запросов.

ICMP: секреты внутри пингов

ICMP Echo Request (ping) содержит поле payload, куда можно поместить произвольные данные. В нормальном трафике там стандартная padding-строка или нули. На CTF организаторы помещают в payload флаг или его фрагменты.

Фильтр: icmp. В Packet Details раскройте Internet Control Message Protocol → Data. Если вместо стандартного паттерна (повторяющийся abcdefghijklmnop на Windows или нулевые байты) видите осмысленный текст или Base64 — это цель задания.

Часто флаг распределён по нескольким ICMP-пакетам — по одному-два символа в каждом. Собирать их вручную неудобно (я пробовал — на десятом пакете начинаешь путать порядок), и здесь на помощь приходит tshark: автоматическое извлечение данных из payload всех ICMP-пакетов за одну команду.

Автоматизация разбора дампа трафика Wireshark с tshark

tshark — консольная версия Wireshark с теми же возможностями анализа. Для CTF tshark незаменим, когда нужно обработать большой дамп или извлечь конкретное поле из сотен пакетов автоматически.

# Вытянуть URL всех HTTP POST-запросов
tshark -r dump.pcap -Y "http.request.method == POST" -T fields -e http.host -e http.request.uri

# Собрать все DNS-запросы в файл для анализа
tshark -r dump.pcap -Y "dns.qry.name" -T fields -e dns.qry.name > dns_queries.txt

# Достать данные из ICMP Echo Request payload
tshark -r dump.pcap -Y "icmp.type == 8" -T fields -e data.data

Ключевые параметры: -r задаёт входной PCAP-файл, -Y — фильтр отображения (тот же синтаксис, что в GUI), -T fields — табличный вывод, -e — конкретное поле для извлечения. Результат можно направить в grep, awk, sort -u или base64 -d для пост-обработки.

Практический приём для DNS-тасков: tshark -r dump.pcap -Y "dns.qry.name" -T fields -e dns.qry.name | sort -u выводит все уникальные DNS-запросы. Аномальные домены заметны сразу — длинные строки Base64 или hex среди нормальных google.com и cloudflare.com.

Для задач с ICMP-эксфильтрацией вывод data.data — hex-строки. Конвертация в текст: tshark -r dump.pcap -Y "icmp.type == 8" -T fields -e data.data | xxd -r -p. Если каждый пакет содержит по паре символов флага, вы получите их все в одну строку.

Типичные ошибки при анализе pcap файлов на CTF

За несколько десятков CTF-тасков по форензике я собрал список ошибок, на которые тратится больше всего времени.

Не применяют фильтры. Открывают PCAP и начинают листать пакеты один за другим. В дампе на 10 000 пакетов это бесполезно. Первое действие — всегда фильтр: http, ftp, dns. Потом сужайте.

Забывают Follow TCP Stream. Смотрят на отдельные пакеты, не собирая их в сессию. Один пакет HTTP-запроса редко содержит полную картину. Follow Stream показывает весь диалог — запрос и ответ вместе, со всеми заголовками.

Не проверяют Export Objects. Файл может лежать в дампе, готовый к извлечению одним кликом через File → Export Objects → HTTP, а новичок пытается декодировать hex вручную из Packet Bytes. Зачем, если можно нажать Save?

Игнорируют DNS и ICMP. HTTP и FTP проверяют, остальное пропускают. А DNS-запросы и ICMP-пейлоады — частый канал для флагов на CTF среднего уровня.

Путают типы фильтров. Вводят синтаксис capture filter (port 80) в строку display filter и получают красный фон. В display filter правильный синтаксис: tcp.port == 80.

Не используют Statistics. Wireshark имеет меню Statistics с инструментами, которые экономят время. Protocol Hierarchy показывает распределение трафика по протоколам — если 60% дампа составляет DNS при задании про HTTP, данные прячут именно в DNS. Conversations и Endpoints показывают, кто с кем общался и сколько данных передал. Аномально большой объём трафика от одного хоста — зацепка.

Останавливаются на первом найденном. Нашли admin:admin и считают задание решённым. Но флаг может лежать в другой сессии, в другом потоке, в извлечённом файле. Проверяйте несколько потоков и всегда делайте Export Objects.

Минимальный алгоритм для любого CTF-таска с PCAP: (1) Statistics → Protocol Hierarchy для общей картины, (2) фильтры по основным протоколам, (3) Follow TCP Stream для подозрительных сессий, (4) Export Objects для файлов, (5) frame contains для прямого поиска флага. Этого хватит за глаза на процентов восемьдесят заданий уровня easy-medium.

Анализ трафика в Wireshark — один из тех навыков, где десять прочитанных статей не заменят одного решённого таска. Пока не откроешь реальный PCAP и не застрянешь на задаче, где очевидного HTTP нет, а флаг закопан в ICMP-payload, — фильтры не запомнятся. Я видел десятки новичков, которые проходили видеокурсы по Wireshark и потом не могли решить задачу уровня easy на CTF. Проблема одна: знают кнопки, не знают протоколы. Wireshark покажет пакет, но интерпретировать его придётся вам. Не понимаете, как работает TCP-хендшейк — не поймёте, почему Follow Stream собирает пакеты именно так. Не знаете структуру HTTP-запроса — пропустите заголовок Authorization с учётными данными. Инструмент без понимания сетевого стека — окно с цветными строками. Мой совет: начинайте с CTF-заданий уровня easy на PicoCTF или CyberDefenders, решайте по одному в день. Через две недели фильтры станут рефлексом, через месяц задачи medium перестанут казаться невозможными. Но фундамент — понимание протоколов, модели взаимодействия, принципов шифрования — важнее любого инструмента. Если хочется не просто тыкать фильтры по чужим шпаргалкам, а разобраться в сетях и безопасности с нуля — на codeby.school есть IB Basics, где про «как разобраться», а не про «запомните терминологию».

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

Поделиться

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

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

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

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

SQL-инъекции в CTF: UNION, blind SQLi и sqlmap

12 мин.

5

SQL-инъекции в CTF: UNION, blind SQLi и sqlmap

Пошаговая методология SQL-инъекций для CTF: error-based, UNION, boolean и time-based blind — вручную и через sqlmap с tamper-скриптами для обхода WAF

21 ОКТЯБРЬ, 2026

pwndbg для начинающих: отладка и pwn в CTF

14 мин.

7

pwndbg для начинающих: отладка и pwn в CTF

Пошаговый гайд по pwndbg: установка, команды checksec/vmmap/cyclic, эксплуатация buffer overflow и связка с pwntools для решения pwn-тасков CTF.

20 ОКТЯБРЬ, 2026

Insecure Deserialization в CTF: эксплуатация

13 мин.

5

Insecure Deserialization в CTF: эксплуатация

Разбираем PHP unserialize и Python pickle по байтам — POP chain, PHAR, jsonpickle, CVE-2020-22083. Пошаговая методология эксплуатации десериализации для CTF.

20 ОКТЯБРЬ, 2026