Источник: https://github.com/AnaktaCTF/CTF/blob/main — Misc/young_fighter_course.md

Оглавление

  1. Введение
  2. Типы CTF
  3. О соревнованиях
  4. Важные замечания
  5. Терминология и сленг

Введение

Capture the Flag (CTF) — это игра, в которой участники пытаются захватить флаг противников и защитить свой. Популярной ее сделали командные шутеры вроде Quake и Team Fortress, но в какой-то момент хакерам пришла идея спроецировать CTF на информационную безопасность.

Хакерский CTF, хоть и построен на правилах классического Capture the Flag, однако с годами очень сильно видоизменился. Сейчас CTF в контексте информационной безопасности может означать даже соревнования, которые далеки от обычного захвата флага. Множественные эксперименты с правилами и механикой проведения привели к появлению массы типов и разновидностей CTF.

Типы CTF

Attack-Defence

В классической схеме каждая команда получает выделенный сервер или небольшую сеть для поддержания её функционирования и защиты. Во время игры команды получают очки за:

  • Корректную работу сервисов своего сервера
  • Украденную информацию (флаги) с серверов противников

Обычно после окончания соревнований команды-участники публикуют свои решения у себя на сайтах, так что всегда можно ознакомиться с решением интересующей задачи.

Task-Based (или Jeopardy)

Это наиболее популярный вид CTF, поскольку он проще других в реализации. Вместо того чтобы ломать друг друга, команды делают определенные задания. За решение заданий дают флаг — сдав его, команда получает очки.

Обычно в таком CTF есть несколько веток заданий — каждая по своей дисциплине:

  1. Admin: задачи на администрирование (чаще всего для Linux).
  2. Reverse: исследование программ без исходного кода (реверс-инжиниринг).
  3. PPC: задачи на программирование (professional programming and coding). Нужно обследовать код, найти или написать (нечто вроде спортивного программирования на минималках, сейчас редко встречается).
  4. Crypto: классическая криптография. Задачи на расшифровку некого сообщения, в котором сидит флаг.
  5. Web: задачи на веб-уязвимости (SQL injection, XSS и другие)
  6. Osint: разведка по различным источникам. Чаще всего найти информацию о человеке, месте, времени и т.д.
  7. Stegano: извлечение скрытой информации из мультимедийных файлов, документов, текста или образа чего-либо.
  8. Forensic: имитирует различные задания на расследование инцидентов и анализ образов и файлов. Вполне могут попасться задания, связанные с восстановлением удаленных файлов и скрытых разделов.
  9. Misc: любые задания, не относящиеся к другим группам. Это может быть и конкурентная разведка, и какие-нибудь развлекательные задания.

Механика проведения task-based CTF бывает разная. Например:

  • Более сложные задания могут открываться по мере решения более простых
  • Команда, решившая задание первой, может получать дополнительные баллы
    Однако в целом идея остается прежней — кто решил больше заданий, тот набрал больше баллов и тот в итоге побеждает.

Mixed

Существуют CTF, которые объединяют черты attack-defence и task-based: командам требуется не только защищать свои сервисы и атаковать чужие, но и решать задания. В этом случае правила проведения могут быть любыми и ограничиваются лишь воображением организаторов.

О соревнованиях

  • В мире каждую неделю проводится как минимум один CTF, а то и несколько
  • Организаторами обычно выступают команды, которые сами постоянно участвуют в подобных соревнованиях
  • Полный список всех CTF с датами проведения можно найти на сайте CTFtime
  • В России проводится немало CTF, большинство из которых студенческие
  • Известные на международном уровне российские CTF: RuCTFE и PHDays
  • RuCTFE — это attack-defence CTF, проводимый командой HackerDom
  • Победа на RuCTFE — пропуск на DEF CON CTF

Важные замечания

  1. После соревнований команды публикуют write-up (подробные описания процесса решения и получения флага)
  2. При решении задания рекомендуется писать для себя райтап или делать заметки
  3. Многие задания в CTF похожи, и можно найти решение, просто прогуглив его
  4. Разрешено пользоваться Интернетом как угодно
  5. Запрещено выпрашивать или воровать флаги у других команд

Терминология и сленг

Термин Описание
A&D (АД, дефенс) Attack-Defense CTF. Отличительная особенность — наличие у каждой команды сервера с уязвимыми приложениями (сервисами).
АСМ Ассемблер, язык программирования низкого уровня.
БД База данных, место хранения данных. Часто используется для хранения логинов и паролей.
Бейс Base кодирование (например, base64 или base32), стандарт кодирования данных.
Бекдор Сознательно оставленная лазейка, предоставляющая доступ к данным или контроль над сервисом. Может быть как программным, так и аппаратным.
Бинарник Файл с бинарным (исполняемым) кодом, он же exe-файл.
Брут (брутфорс) Brute force, метод полного перебора всех возможных вариантов ответа. Используется для взлома паролей или поиска флагов.
В хексах Представление данных в шестнадцатеричном (hexadecimal) виде. Обычно используется для чисел, символов и байтов.
Дамп Файл с информацией об объекте или процессе. Часто говорят о дампе сетевого трафика, прошивки устройства или базы данных.
Деструктивная атака Атака, направленная на разрушение общей инфраструктуры сети. Запрещена правилами A&D CTF.
Зип-бомба Так же известна как «архив смерти» или decompression bomb. Файл, который при распаковке начинает распаковку себя же самого. Закидывание таких бомб на сервер является деструктивной атакой. Примером является 42.zip.
Ключ Число или строка, необходимая для расшифровки или шифровки данных.
Куки Cookie, данные, идентифицирующие текущего пользователя и/или текущую сессию.
Курить, раскурить Анализировать исходный код или данные.
Курл cURL, программа для отправки HTTP-запросов.
Лог Log, запись событий. Логи сервера.
Локпикинг Lock picking, взлом замков. Используется на некоторых оффлайн-соревнованиях и для обхода физической защиты.
Метаданные Любые данные, которые хранят в себе файлы. Например, геолокация в фотографиях или исполнитель аудиозаписи.
Неткат netcat (nc), программа для соединения с удалённым хостом.
Парсить Parse, обрабатывать / разбирать / анализировать данные (например, извлекать числа из строки).
Пейлоад Payload, полезная нагрузка. Строка, эксплуатирующая некоторую уязвимость.
Пинговать Ping. Используется для проверки доступности сайта или наличия интернета. Также используется в смысле "донести информацию до кого-то" или "достучаться до кого-то".
Пывнить PWN, овладевать. Используется при эксплуатации бинарных уязвимостей.
Райтап Writeup, описание процесса решения задания.
Реквест Request, запрос. Обычно к сервису.
Сервис В контексте A&D — (уязвимое) приложение, развернутое на сервере. Например, веб-страница.
Сниффить Sniff, "разнюхивать". Перехват и анализ сетевого трафика.
Сорцы Source (исходный). Исходный код приложения или чего-то еще.
Соль Случайная строка, добавляемая к хешируемым данным.
Сплойт Программа, эксплуатирующая уязвимость.
Ссш (эс-эс-аш) SSH, secure shell, программа для защищённого удалённого доступа.
Суп Beautiful Soup, парсер веб-страниц (модуль Python).
Таски Задания. В контексте task-based CTF, а сам task-based CTF также может называться "таски" или "тасковый CTF".
Трафик В контексте A&D — данные, передаваемые внутри сети. Обычно в значении "данные, которые поступают к нам от других пользователей сети".
Уцуцуга В простонародье "угадайка". Нестандартная, нетривиальная задача с таким же нетривиальным решением.
Ферма В контексте A&D — программа, которая обрабатывает переданные ей флаги, автоматически их сдает и визуализирует полученные очки. Например, DestructiveFarm.
Форк-бомба Fork bomb (вилковая бомба). Скрипт, который бесконечно генерирует свои же копии. Используется как деструктивная атака.
Хардкод Hardcode, жёсткий код. Практика в разработке ПО, при которой переменные задаются напрямую и заранее, в противовес получению их значений в процессе выполнения. Например, захардкоженные пароли в старых прошивках роутеров.
Хедер Header, заголовок. Чаще всего имеются ввиду HTTP-заголовки.
Хеш Число или строка, результат хеш-функции.
Хост В контексте виртуальных машин: основная система. В остальных случаях: компьютер, рабочая станция.
Шелл-код Shellcode, набор инструкций, который обеспечивает доступ к командной оболочке системы, т.е. с его помощью можно выполнить любую команду. Библиотеку шелл-кодов можно найти на сайте shell-storm.