Категория > Новости > Make the Flag! Как сделать свои соревнования для хакеров - «Новости»

Make the Flag! Как сделать свои соревнования для хакеров - «Новости»


16-01-2021, 00:00. Автор: Филип
Capture the Flag. Как взлом стал спор­тивным сос­тязани­ем

Для тре­ниро­вок внут­ри нашей коман­ды мне пот­ребова­лось раз­вернуть свой домаш­ний Attack/Defense (уже на готовых чужих сер­висах).



www


Для Task-based-сорев­нований уже сущес­тву­ет плат­форма CTFd.


Создание сети


Обыч­но все сорев­нования Attack/Defense про­ходят внут­ри спе­циаль­но выделен­ной сети. Бла­года­ря это­му обес­печить работу всей инфраструк­туры ста­новит­ся лег­че в нес­коль­ко раз. В соз­дании сетевой инфраструк­туры нам помогут вир­туаль­ные час­тные сети (VPN). Лидера­ми готовых решений, которые поз­воля­ют сде­лать собс­твен­ную при­ват­ную сеть, явля­ются OpenVPN и Wireguard.


Основные элементы сети


Сна­чала нам нуж­но опре­делить­ся с эле­мен­тами, которые будут находить­ся в нашей сети.



  • Глав­ный узел — сер­вер, к которо­му будут под­клю­чать­ся все устрой­ства для обра­зова­ния нашей сети. Важ­ным пун­ктом будет то, что у это­го сер­вера дол­жен быть «белый» IP-адрес.


  • Узел для под­клю­чения игро­ков — к нему будут под­клю­чать­ся игро­ки для даль­нейшей игры. Для каж­дой коман­ды будет свой кон­фиг, с помощью которо­го игро­ки смо­гут вой­ти в свою сеть.


  • Узел для сер­вера с сер­висами (вул­нбокс). К это­му узлу будет под­клю­чать­ся вул­нбокс с сер­висами. Из при­меча­тель­ного то, что такое пос­тро­ение сети поз­волит под­клю­чить вул­нбокс со сво­его сер­вера, а не сер­вера орга­низа­торов — при усло­вии, что есть нуж­ный кон­фиг.

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



info


Вул­нбокс (vulnbox) — машина с некото­рым набором заведо­мо уяз­вимых сер­висов. В CTF каж­дая коман­да получа­ет иден­тичную копию такой машины.


OpenVPN


Нач­нем наше пос­тро­ение сети с OpenVPN.



info


На мой взгляд, эта статья на Хаб­ре очень хороша для понима­ния, что и как нуж­но сде­лать для соз­дания собс­твен­ных сетей. Но ниже мы раз­берем, какие кон­фигура­цион­ные фай­лы мы дол­жны соз­дать.



Мы уже решили, какие узлы у нас будут. Тог­да можем перей­ти к соз­данию кон­фигов для нашей сети. Что­бы избе­жать рутин­ной работы, вос­поль­зуем­ся уже сущес­тву­ющим ре­пози­тори­ем 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



Раз­берем по полоч­кам, что у нас есть.



Перейти обратно к новости