CTF-соревнования прочно закрепились в околоайтишных кругах. Найти человека, который не слышал о соревнованиях для хакеров, сложно, и всё чаще появляются мысли о своем собственном соревновании. И если для соревнований в жанре Task-based уже существуют хорошие платформы, то для Attack/Defense придется придумывать что‑то более сложное. Усаживайся поудобнее — сейчас я расскажу про опыт организации таких мероприятий.
CTF (Capture The Flag — захват флага) бывает разный. Есть два жанра: Task-based и Attack/Defense. В первом случае можно играть чуть ли не «на бумажке» — это обыкновенные задачи, которые можно решить или не решить, при этом твой прогресс никак не зависит от действий других участников. Во втором же жанре имеется игровая сеть, где разные команды атакуют и отражают атаки друг друга. Само собой, Attack/Defense куда динамичнее и интереснее, но и организация таких соревнований куда сложнее.
Читай также: Capture the Flag. Как взлом стал спортивным состязанием
Для тренировок внутри нашей команды мне потребовалось развернуть свой домашний Attack/Defense (уже на готовых чужих сервисах).
Для Task-based-соревнований уже существует платформа CTFd.
Обычно все соревнования Attack/Defense проходят внутри специально выделенной сети. Благодаря этому обеспечить работу всей инфраструктуры становится легче в несколько раз. В создании сетевой инфраструктуры нам помогут виртуальные частные сети (VPN). Лидерами готовых решений, которые позволяют сделать собственную приватную сеть, являются OpenVPN и Wireguard.
Сначала нам нужно определиться с элементами, которые будут находиться в нашей сети.
По итогу мы получим отдельные узлы для каждой из команд, отдельные узлы для вулнбоксов команд (при таком раскладе мы позволим подключать в нашу сеть сторонние сервера для самостоятельного хостинга) и узел для жюри.
Вулнбокс (vulnbox) — машина с некоторым набором заведомо уязвимых сервисов. В CTF каждая команда получает идентичную копию такой машины.
Начнем наше построение сети с OpenVPN.
На мой взгляд, эта статья на Хабре очень хороша для понимания, что и как нужно сделать для создания собственных сетей. Но ниже мы разберем, какие конфигурационные файлы мы должны создать.
Мы уже решили, какие узлы у нас будут. Тогда можем перейти к созданию конфигов для нашей сети. Чтобы избежать рутинной работы, воспользуемся уже существующим репозиторием OVPNGen с открытым исходным кодом. Нам также потребуется установить необходимые зависимости для корректной работы.
$ git clone https://github.com/pomo-mondreganto/OVPNGen
$ pip3 install -r requirements.txt
Посмотрим на доступные функции этого генератора.
$ ./gen.py --help
usage: gen.py [-h] --server SERVER [--per-team N] [--team] [--jury] [--vuln] [--teams N | --range N-N | --list N,N,...]
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
Разберем по полочкам, что у нас есть.
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
1 год7690 р. |
1 месяц720 р. |
Я уже участник «Xakep.ru»
Читайте также
Последние новости