Источник: https://github.com/AnaktaCTF/CTF/blob/main — Misc/young_fighter_course.md
Оглавление
Введение
Capture the Flag (CTF) — это игра, в которой участники пытаются захватить флаг противников и защитить свой. Популярной ее сделали командные шутеры вроде Quake и Team Fortress, но в какой-то момент хакерам пришла идея спроецировать CTF на информационную безопасность.
Хакерский CTF, хоть и построен на правилах классического Capture the Flag, однако с годами очень сильно видоизменился. Сейчас CTF в контексте информационной безопасности может означать даже соревнования, которые далеки от обычного захвата флага. Множественные эксперименты с правилами и механикой проведения привели к появлению массы типов и разновидностей CTF.
Типы CTF
Attack-Defence
В классической схеме каждая команда получает выделенный сервер или небольшую сеть для поддержания её функционирования и защиты. Во время игры команды получают очки за:
- Корректную работу сервисов своего сервера
- Украденную информацию (флаги) с серверов противников
Обычно после окончания соревнований команды-участники публикуют свои решения у себя на сайтах, так что всегда можно ознакомиться с решением интересующей задачи.
Task-Based (или Jeopardy)
Это наиболее популярный вид CTF, поскольку он проще других в реализации. Вместо того чтобы ломать друг друга, команды делают определенные задания. За решение заданий дают флаг — сдав его, команда получает очки.
Обычно в таком CTF есть несколько веток заданий — каждая по своей дисциплине:
- Admin: задачи на администрирование (чаще всего для Linux).
- Reverse: исследование программ без исходного кода (реверс-инжиниринг).
- PPC: задачи на программирование (professional programming and coding). Нужно обследовать код, найти или написать (нечто вроде спортивного программирования на минималках, сейчас редко встречается).
- Crypto: классическая криптография. Задачи на расшифровку некого сообщения, в котором сидит флаг.
- Web: задачи на веб-уязвимости (SQL injection, XSS и другие)
- Osint: разведка по различным источникам. Чаще всего найти информацию о человеке, месте, времени и т.д.
- Stegano: извлечение скрытой информации из мультимедийных файлов, документов, текста или образа чего-либо.
- Forensic: имитирует различные задания на расследование инцидентов и анализ образов и файлов. Вполне могут попасться задания, связанные с восстановлением удаленных файлов и скрытых разделов.
- 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
Важные замечания
- После соревнований команды публикуют write-up (подробные описания процесса решения и получения флага)
- При решении задания рекомендуется писать для себя райтап или делать заметки
- Многие задания в CTF похожи, и можно найти решение, просто прогуглив его
- Разрешено пользоваться Интернетом как угодно
- Запрещено выпрашивать или воровать флаги у других команд
Терминология и сленг
| Термин | Описание |
|---|---|
| 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. |