Содержание статьи
Краткая справка
CTF (Capture The Flag — захват флага) бывает разный. Есть два жанра: Task-based и Attack/Defense. В первом случае можно играть чуть ли не «на бумажке» — это обыкновенные задачи, которые можно решить или не решить, при этом твой прогресс никак не зависит от действий других участников. Во втором же жанре имеется игровая сеть, где разные команды атакуют и отражают атаки друг друга. Само собой, Attack/Defense куда динамичнее и интереснее, но и организация таких соревнований куда сложнее.
Читай также: Capture the Flag. Как взлом стал спортивным состязанием
Для тренировок внутри нашей команды мне потребовалось развернуть свой домашний Attack/Defense (уже на готовых чужих сервисах).
www
Для Task-based-соревнований уже существует платформа CTFd.
Создание сети
Обычно все соревнования Attack/Defense проходят внутри специально выделенной сети. Благодаря этому обеспечить работу всей инфраструктуры становится легче в несколько раз. В создании сетевой инфраструктуры нам помогут виртуальные частные сети (VPN). Лидерами готовых решений, которые позволяют сделать собственную приватную сеть, являются OpenVPN и Wireguard.
Основные элементы сети
Сначала нам нужно определиться с элементами, которые будут находиться в нашей сети.
- Главный узел — сервер, к которому будут подключаться все устройства для образования нашей сети. Важным пунктом будет то, что у этого сервера должен быть «белый» IP-адрес.
- Узел для подключения игроков — к нему будут подключаться игроки для дальнейшей игры. Для каждой команды будет свой конфиг, с помощью которого игроки смогут войти в свою сеть.
- Узел для сервера с сервисами (вулнбокс). К этому узлу будет подключаться вулнбокс с сервисами. Из примечательного то, что такое построение сети позволит подключить вулнбокс со своего сервера, а не сервера организаторов — при условии, что есть нужный конфиг.
По итогу мы получим отдельные узлы для каждой из команд, отдельные узлы для вулнбоксов команд (при таком раскладе мы позволим подключать в нашу сеть сторонние сервера для самостоятельного хостинга) и узел для жюри.
info
Вулнбокс (vulnbox) — машина с некоторым набором заведомо уязвимых сервисов. В CTF каждая команда получает идентичную копию такой машины.
OpenVPN
Начнем наше построение сети с OpenVPN.
info
На мой взгляд, эта статья на Хабре очень хороша для понимания, что и как нужно сделать для создания собственных сетей. Но ниже мы разберем, какие конфигурационные файлы мы должны создать.
Мы уже решили, какие узлы у нас будут. Тогда можем перейти к созданию конфигов для нашей сети. Чтобы избежать рутинной работы, воспользуемся уже существующим репозиторием OVPNGen с открытым исходным кодом. Нам также потребуется установить необходимые зависимости для корректной работы.
$
$
Посмотрим на доступные функции этого генератора.
$ ./
usage:
Generate openvpn configuration for AD CTFs
optional arguments:
-h, --help show this help message and exit
--server SERVER, -s SERVER
Openvpn server host
--per-team N Number of configs per team
--team Generate config for teams
--jury Generate config for jury
--vuln Generate config for vulnboxes
--teams N, -t N Team count
--range N-N Range of teams (inclusive)
--list N,N,... List of teams
Разберем по полочкам, что у нас есть.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»