
На CTF-квалификации прошлого сезона одной команде попался PCAP-файл на 50 МБ — тысячи пакетов, а флаг закодирован в значениях TTL внутри ICMP-запросов. Каждое значение TTL — ASCII-код символа. Без понимания того, что TTL живёт на третьем уровне модели OSI, а ICMP-пакеты отфильтровываются одной строкой в Wireshark, решение заняло бы часы. С пониманием структуры пакета — 15 минут. Разница между «не знаю, где искать» и «знаю точно, в каком заголовке лежит ответ» — это и есть основы сетей для CTF, и осваивать их стоит до первого серьёзного соревнования.
Модель OSI — не абстрактная схема из учебника по сетевому администрированию. Для CTF-игрока это навигационная карта по сетевому трафику. Открываешь PCAP в Wireshark — каждый пакет состоит из вложенных заголовков. Модель OSI объясняет, какой заголовок за что отвечает и — главное — где авторы заданий могут спрятать флаг.
Согласно ISO/IEC 7498-1, модель делит сетевое взаимодействие на семь иерархических уровней. На практике в CTF не все из них одинаково полезны, но понимание каждого помогает быстро определить, куда смотреть в дампе трафика. Разберём уровни модели OSI на практике, привязывая каждый к конкретным CTF-ситуациям.
Уровень 1 — Physical (Физический). Провода, радиоволны Wi-Fi, оптоволокно, электрические сигналы. В CTF напрямую почти не встречается, но стоит держать в голове: если атакующий подключился к сегменту сети физически — он видит всё. Точка.
Уровень 2 — Data Link (Канальный). MAC-адреса, Ethernet-фреймы, протокол ARP. На этом уровне живёт ARP Cache Poisoning (T1557.002, тактики credential-access и collection по MITRE ATT&CK). В CTF-заданиях на канальном уровне нужно найти аномальные MAC-адреса или обнаружить признаки ARP-спуфинга в дампе. Wireshark показывает этот уровень в разделе «Ethernet II» каждого пакета — там видны source MAC и destination MAC.
Уровень 3 — Network (Сетевой). IP-адреса, маршрутизация, ICMP. Тот самый уровень, где находится поле TTL — одно из любимых мест авторов CTF-заданий для сокрытия данных. Техники MITRE ATT&CK здесь: System Network Configuration Discovery (T1016, тактика discovery) и Remote System Discovery (T1018, тактика discovery). Для CTF это значит: фильтруй по IP-адресам, смотри на ICMP-пакеты (ping, traceroute), проверяй нестандартные значения полей заголовка IP. Именно тут чаще всего прячут флаги — и именно тут новички теряются.
Уровень 4 — Transport (Транспортный). TCP и UDP, номера портов, управление соединениями. TCP-хендшейк (SYN → SYN-ACK → ACK) — фундамент, без которого не разобраться в половине дампов. Network Service Discovery (T1046, тактика discovery) — это сканирование портов, которое в дампе выглядит как массовые SYN-запросы. Для CTF на этом уровне нужно уметь отфильтровать трафик по конкретному порту — фильтр tcp.port == 4444 в Wireshark покажет соединения на типичном порту reverse shell.
Уровень 5 — Session (Сеансовый). Управление сессиями между приложениями. В чистом виде в CTF встречается редко, но перехват токенов сессий и session hijacking — классика веб-заданий. Протоколы: NetBIOS, RPC, управление сессиями в SMB.
Уровень 6 — Presentation (Представления). Шифрование (TLS/SSL), кодирование данных, сжатие. Если в дампе видишь TLS-трафик — данные зашифрованы, без ключа содержимое не прочитать. В некоторых CTF-заданиях дают и ключ, и дамп — тогда Wireshark расшифрует TLS-сессию через Edit → Preferences → Protocols → TLS.
Уровень 7 — Application (Прикладной). HTTP, DNS, FTP, SMTP, SSH. Большинство CTF-заданий категории Network работают именно здесь. DNS-туннелирование (T1071.004, тактика command-and-control по MITRE ATT&CK) — один из популярнейших типов задач: флаг закодирован в DNS-запросах. HTTP-трафик содержит заголовки, cookies, POST-данные — всё это потенциальные места для сетевых ключей в CTF.
Мнемоника для запоминания уровней снизу вверх: Please Do Not Throw Sausage Pizza Away — Physical, Data Link, Network, Transport, Session, Presentation, Application. Выглядит нелепо, но после пары дампов эти семь слов намертво врезаются в память.
Модель OSI — теоретическая рамка. Реальный интернет работает по стеку протоколов TCP/IP (RFC 1122), который использует четыре уровня вместо семи. Wireshark, tcpdump, Nmap — все они оперируют именно TCP/IP. Понимание обеих моделей критично: OSI даёт словарь, TCP/IP — практическую карту.
Когда запускаешь ping, traceroute или tcpdump, наблюдаемое поведение совпадает с концепциями TCP/IP. Это не абстракция — это описание того, что реально происходит с пакетом на пути от браузера до сервера.
Link (Канальный) объединяет Physical и Data Link из OSI. Ethernet, Wi-Fi, ARP — всё здесь. Запускаешь tcpdump -e — видишь MAC-адреса источника и назначения. Это уровень Link.
Internet соответствует Network в OSI. IP-адресация, маршрутизация, ICMP. Команды ping и traceroute работают именно тут. IP определяет, куда должен попасть пакет, а ICMP сообщает об ошибках на маршруте.
Transport — прямое соответствие четвёртому уровню OSI. TCP обеспечивает надёжную доставку с подтверждениями (ACK), UDP — быструю передачу без гарантий. DNS по умолчанию использует UDP на порту 53, HTTP — TCP на порту 80 (или 443 для HTTPS).
Application объединяет Session, Presentation и Application из OSI. HTTP, DNS, SMTP, FTP, SSH — всё в одном уровне. Упрощение? Да. Но для работы с трафиком оно удобнее семиуровневой модели.
| TCP/IP | OSI (уровни) | Что искать в CTF | Ключевые протоколы |
|---|---|---|---|
| Application | 5, 6, 7 | HTTP-заголовки, DNS-запросы, FTP-логины | HTTP, DNS, FTP, SMTP, SSH |
| Transport | 4 | Нестандартные порты, флаги TCP | TCP, UDP |
| Internet | 3 | Аномальные IP, данные в ICMP, значения TTL | IP, ICMP |
| Link | 1, 2 | MAC-адреса, ARP-таблицы, Ethernet-фреймы | Ethernet, ARP, Wi-Fi |
TCP-соединение начинается с тройного рукопожатия. Без понимания этого механизма анализ сетевых протоколов превращается в гадание на кофейной гуще:
После этого начинается передача данных. В Wireshark тройное рукопожатие видно буквально: три первых пакета любого TCP-соединения. Фильтр tcp.flags.syn == 1 покажет все SYN-пакеты в дампе — по ним определяешь, кто к кому подключался и когда.
Атака SYN flood эксплуатирует именно этот механизм: атакующий шлёт тысячи SYN-пакетов, но никогда не завершает рукопожатие третьим ACK. Сервер тратит ресурсы на ожидание подтверждения, которое не придёт. В CTF-дампах это выглядит как массовые SYN-пакеты без ответных ACK от одного IP-адреса — паттерн, который ловится фильтром tcp.flags.syn == 1 && tcp.flags.ack == 0.
Каждый уровень добавляет к данным свой заголовок — это инкапсуляция. Принцип матрёшки: HTTP-запрос (Application) вкладывается в TCP-сегмент (Transport), тот — в IP-пакет (Internet), а IP-пакет — в Ethernet-фрейм (Link). На каждом уровне к данным добавляется обёртка с управляющей информацией.
На каждом уровне данные получают своё название: - Application → данные (data) - Transport → сегмент (TCP) или дейтаграмма (UDP) - Internet → пакет (packet) - Link → фрейм (frame)
На приёмной стороне происходит деинкапсуляция — обратный процесс, снятие заголовков уровень за уровнем. В Wireshark это видно при развёртывании пакета: сначала Ethernet II (MAC-адреса), потом Internet Protocol (IP-адреса), потом Transmission Control Protocol (порты и флаги), потом содержимое прикладного протокола.
Для CTF это ключевое знание: авторы заданий прячут флаги на разных уровнях инкапсуляции. Флаг может быть в HTTP-теле (очевидно), в TCP-опциях (менее очевидно), в поле TTL IP-заголовка (неочевидно) или даже в padding Ethernet-фрейма (совсем неочевидно). Понимание инкапсуляции — это понимание всех возможных мест, где могут быть спрятаны данные в сетевом пакете. Авторы CTF-заданий думают уровнями — и ты должен думать так же.
Два основных инструмента для анализа сетевых протоколов — Wireshark (GUI) и tcpdump (CLI). Wireshark удобнее для ручного разбора: цветовая разметка по протоколам, гибкие фильтры отображения, возможность следить за TCP-потоком целиком. tcpdump — для быстрого просмотра в терминале и автоматизации через скрипты. Я обычно начинаю с tcpdump, чтобы понять масштаб, а потом переключаюсь на Wireshark для детального разбора.
Первое действие при открытии PCAP — не читать сетевые пакеты и заголовки по одному, а отфильтровать интересное. Вот набор фильтров, которые покрывают большинство CTF-сценариев:
http — только HTTP-трафик (часто содержит флаги в открытом виде, в заголовках или теле ответа)dns — DNS-запросы и ответы (DNS-туннелирование прячет данные в поддоменах)tcp.port == 4444 — классический порт reverse shell (если видишь трафик сюда — разбирай содержимое)icmp — ICMP-пакеты (проверяй поле data и значения TTL на скрытые данные)ftp — FTP-трафик, который передаёт логины и пароли открытым текстом (да, в 2025 году тоже)tcp.flags.syn == 1 && tcp.flags.ack == 0 — только инициирующие SYN-пакеты (показывает, кто к кому подключался)frame contains "flag" или frame contains "CTF" — грубый поиск строки по всему дампу (иногда самый быстрый путь к решению, и не стыдно этим пользоваться)Follow TCP Stream (правая кнопка по пакету → Follow → TCP Stream) — незаменимая штука для pcap анализа Wireshark. Она собирает все пакеты одного TCP-соединения в хронологическом порядке и показывает содержимое как текст. Для HTTP-трафика это позволяет увидеть полный запрос и ответ, включая тело страницы, заголовки и cookies. Данные клиента и сервера раскрашиваются в разные цвета — сразу видно, кто что отправил.
Ещё одна полезная функция — Statistics → Protocol Hierarchy. Она показывает процентное соотношение протоколов в дампе. Если 90% трафика — DNS, задание почти наверняка про DNS-туннелирование. Если доминирует HTTP — ищи данные в веб-запросах. Эта статистика экономит кучу времени: вместо ручного просмотра тысяч пакетов ты сразу понимаешь, куда копать.
Когда PCAP-файл большой или нужно быстро вытянуть конкретные данные из командной строки, tcpdump работает быстрее GUI. Несколько команд, которые решают 80% задач:
# Прочитать PCAP, показать только DNS-трафик (без DNS-resolve)
tcpdump -r capture.pcap -n port 53
# Показать содержимое HTTP-пакетов в ASCII
tcpdump -r capture.pcap -A -n 'tcp port 80'
# Вывести только IP-адреса источников (для быстрой разведки)
tcpdump -r capture.pcap -n -q | awk '{print $3}' | cut -d. -f1-4 | sort -u
Флаг -r читает файл вместо live-захвата, -n отключает резолв DNS (существенно ускоряет вывод), -A показывает содержимое пакетов в ASCII, -q сокращает вывод до минимума.
Системный подход к разбору дампа трафика CTF экономит десятки минут на соревновании. Вот workflow, отработанный на нескольких десятках заданий категории Network и Forensics.
Шаг 1: общая картина. Открой PCAP в Wireshark. Посмотри Statistics → Protocol Hierarchy — какие протоколы присутствуют. Statistics → Capture File Properties покажет длительность захвата и общее количество пакетов. Короткий дамп с одним протоколом — задание на анализ конкретного протокола. Длинный дамп с разнообразным трафиком — нужна фильтрация.
Шаг 2: Endpoints и Conversations. Statistics → Endpoints покажет все IP-адреса (и MAC-адреса) в дампе. Statistics → Conversations покажет, кто с кем общался и сколько данных передал. Аномально большой объём данных между двумя хостами — первый кандидат на детальное исследование.
Шаг 3: фильтрация по доминирующему протоколу. Примени фильтр для основного протокола. Для HTTP — используй Follow TCP Stream для каждого интересного соединения. Для DNS — экспортируй запросы и анализируй поддомены на предмет закодированных данных (base64, hex).
Шаг 4: поиск аномалий. Нестандартные порты (HTTP на порту 8080 или 1337), необычные размеры пакетов, нетипичные значения TTL, трафик на подозрительные IP-адреса — всё это может указывать на скрытые данные. Фильтр tcp.port > 1024 && tcp.port < 10000 помогает найти нестандартные сервисы.
Шаг 5: извлечение файлов. File → Export Objects → HTTP извлекает все файлы, переданные по HTTP. Иногда флаг спрятан в картинке (стеганография), PDF-документе или архиве, загруженном через веб.
Шаг 6: проверка нестандартных полей. Если предыдущие шаги не дали результата — пора смотреть на нетипичные места: TCP-опции, ICMP-payload, DNS TXT-записи, заголовки IP с нестандартными значениями. Это уровень задач средней и высокой сложности.
Этот workflow покрывает примерно 80% CTF-заданий на анализ трафика в network forensics CTF задачах. Оставшиеся 20% — кастомные протоколы, нестандартные инкапсуляции и стеганография на уровне отдельных битов пакета. Но для начала хватит за глаза.
Три протокола, которые решают большинство сетевых заданий на capture the flag networking соревнованиях:
DNS (порт 53). Система доменных имён — один из главных источников флагов. DNS-туннелирование (T1071.004) кодирует произвольные данные в поддоменах DNS-запросов. Пример: запрос к ZmxhZ3t0ZXN0fQ.evil.com содержит base64-строку flag{test}, замаскированную под обычный DNS-запрос. Признаки туннелирования в PCAP: необычно длинные доменные имена (больше 50 символов), массовые запросы к одному домену, нестандартные типы записей (TXT, NULL). Для извлечения доменов из дампа удобен tshark:
# Извлечь все уникальные DNS-запросы из дампа
tshark -r capture.pcap -Y "dns.qry.name" -T fields -e dns.qry.name | sort -u
ARP. Address Resolution Protocol связывает IP-адреса с MAC-адресами в локальной сети. У ARP нет встроенной аутентификации — любое устройство может заявить: «IP 192.168.1.1 соответствует моему MAC». Вот так просто. Это основа ARP Cache Poisoning (T1557.002). В CTF-дампах аномальный ARP выглядит как множественные gratuitous ARP-ответы от одного MAC-адреса на разные IP. Фильтр Wireshark arp.opcode == 2 покажет все ARP-ответы, а Analyze → Expert Information предупредит о дублирующихся маппингах IP→MAC.
ICMP. Internet Control Message Protocol — это ping и traceroute. В CTF поле data ICMP-пакета — популярное место для стеганографии. Протокол также используется для скрытых каналов передачи данных: Non-Application Layer Protocol (T1095, тактика command-and-control) описывает использование протоколов ниже прикладного уровня для управления вредоносным ПО. Фильтр icmp.type == 8 (echo request) покажет исходящие ping-запросы — проверяй поле data на нестандартное содержимое. Если там не стандартные «abcdefgh...» — копай глубже.
Каждая сетевая атака «живёт» на конкретном уровне модели. Понимание этой привязки помогает не только решать CTF, но и осознавать, зачем атакующему нужна конкретная техника. Бизнес-логика сетевых атак сводится к нескольким целям: перехватить учётные данные (credentials), провести разведку инфраструктуры (discovery) или установить скрытый канал управления (command-and-control).
ARP-спуфинг (уровень 2). Зачем атакующему: встать в позицию Man-in-the-Middle и перехватывать весь трафик жертвы, включая пароли, передаваемые открытым текстом. ARP Cache Poisoning (T1557.002) — атакующий рассылает ложные ARP-ответы, ассоциируя свой MAC-адрес с IP-адресом шлюза. Весь трафик жертвы начинает идти через машину атакующего. Обнаружение в PCAP: один MAC-адрес ассоциирован с несколькими IP, или наблюдается множество unsolicited ARP-reply.
Сканирование портов (уровень 4). Зачем атакующему: определить, какие сервисы запущены на целевой машине, чтобы найти точку входа. Network Service Discovery (T1046) в дампе трафика выглядит как серия SYN-пакетов от одного IP к разным портам одного хоста. Nmap при SYN-scan отправляет SYN, получает SYN-ACK (порт открыт) или RST (порт закрыт), но никогда не завершает тройное рукопожатие — в PCAP это видно как «полуоткрытые» соединения. Характерный почерк.
DNS-туннелирование (уровень 7). Зачем атакующему: вывести данные из скомпрометированной сети через DNS-трафик, который часто не блокируется файрволом. DNS (T1071.004) используется как скрытый канал — данные кодируются в DNS-запросах, DNS-сервер атакующего декодирует поддомены. В обратную сторону данные передаются через TXT-записи. Красивая техника, если вдуматься — DNS-трафик почти никто не фильтрует.
Перехват трафика (все уровни). Network Sniffing (T1040, тактики credential-access и discovery) — пассивный перехват сетевого трафика. В CTF обычно тебе уже дан результат перехвата — PCAP-файл. В реальных условиях перехват возможен в незашифрованных сетях или после успешного ARP-спуфинга. По данным Verizon DBIR 2025, 26% всех подтверждённых нарушений связаны с веб-атаками — понимание основ сетевой безопасности и анализа трафика остаётся критически важным навыком.
| Уровень OSI | Тип атаки | MITRE ATT&CK | Что искать в PCAP |
|---|---|---|---|
| 2 (Data Link) | ARP-спуфинг | T1557.002 | Дублирование IP→MAC маппингов |
| 3 (Network) | IP-спуфинг | — | Пакеты с поддельным source IP |
| 4 (Transport) | Сканирование портов | T1046 | Массовые SYN без ACK к разным портам |
| 4 (Transport) | SYN flood | — | Тысячи SYN от одного IP к одному порту |
| 7 (Application) | DNS-туннелирование | T1071.004 | Длинные поддомены, TXT-записи с данными |
| 7 (Application) | HTTP exfiltration | T1071.001 | Нестандартные заголовки, большие POST |
| Все уровни | Перехват трафика | T1040 | Сам PCAP — результат перехвата |
Эта таблица — шпаргалка, которую стоит держать открытой при разборе дампов на соревнованиях. Определил тип аномалии в трафике — сразу понимаешь, на каком уровне искать флаг и какой фильтр Wireshark применить.
За пару лет участия в CTF я заметил устойчивую закономерность: новички пропускают сетевые задания, считая их «скучной теорией про OSI». В результате именно Network-задачи на средних соревнованиях решает меньше всего команд — конкуренция ниже, очки доступнее. Парадокс: для решения большинства этих задач достаточно трёх навыков — открыть PCAP в Wireshark, применить правильный фильтр и понять, на каком уровне инкапсуляции спрятаны данные. Не нужно знать RFC наизусть и уметь конфигурировать OSPF на маршрутизаторе.
Проблема большинства руководств по сетям — они написаны для сисадминов. Там подробно разбираются VLAN, QoS, маршрутизация между автономными системами — вещи, которые в CTF не пригодятся ещё долго. А вот DNS-туннелирование, стеганографию в ICMP и распознавание сканирования портов в PCAP — то, что реально встречается в заданиях — почти никто не разбирает с привязкой к конкретным фильтрам и workflow.
Навык анализа сетевых протоколов масштабируется далеко за пределы соревнований. Те же Wireshark и tcpdump, те же фильтры, то же понимание инкапсуляции — всё это работает в incident response, threat hunting и network forensics. CTF-задача на DNS-туннелирование — упрощённая версия реального инцидента, где вредоносное ПО использует DNS как C2-канал (T1071.004). Решая такие задачи, ты нарабатываешь навыки, которые пригодятся на первом рабочем месте в ИБ. Если чувствуешь, что разрозненные статьи про сети не складываются в целостную картину — на codeby.school есть IB Basics, где базу дают структурированно и без требования «вы должны знать Linux на уровне X».
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «pentest-machines».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...