Атак-дефенс
впервые* в Югре
24 ноя · 12:00
начало по Югре (МСК+2)
Формат
Каждой команде мы выдадим доступ к серверу, на котором будет запущено несколько уязвимых сервисов. Набор сервисов у всех команд в начале игры идентичен — а, значит, идентичны и спрятанные нами внутрь этих сервисов уязвимости.
Ваша цель — обеспечивать работоспособность сервисов, исправлять уязвимости в них, а также эксплуатировать уязвимости на серверах ваших соперников и сдавать их приватные данные, получая за это баллы.
Приватными данными являются флаги — это строки, удовлетворяющие регулярному выражению [A-Z0-9]{31}=
. Заметьте: никаких ugra_
. Пример корректного флага: ABCDEFGHIJKLMNOPQRSTU0123456789=
.
Следить за вашими успехами будет проверяющая система. Каждую минуту она будет проверять работоспособность сервисов у каждой команды, раскладывать новые флаги и следить за целостностью уже существующих.
Соревнования начнутся в 12:00 по югорскому времени (МСК+2). Первый час — подготовка: каждой команде доступен только свой сервер. Вы сможете осмотреться на вашем сервере, поизучать сервисы, понять, как они включаются и выключаются, и даже, возможно, успеть найти часть уязвимостей. В 13:00 появится сетевой доступ к другим командам, а проверяющая система начинает работу. Игра завершается через 8 часов, в 21:00.
Телеприсутствие
В этом году ехать никуда не надо — так решило правительство округа. Сидите дома и играйте удалённо. А атмосферу праздника мы вам попробуем передать через киберпространство.
Подтвердите участие в личном кабинете в течение недели с момента получения приглашения — или откажитесь от участия, если вы не сможете. Иначе возможность попасть в финал перейдёт к следующей по рейтингу команде. Ссылка — в почте у капитана.
Если вы потеряли ссылку, всегда можно получить новую.
Запреты
Во время соревнований мы вам запрещаем:
Атаковать инфраструктуру
Делиться патчами
Обмениваться флагами
Как устроен Attack-Defense
После открытия сетевого доступа начинается отсчёт раундов. Каждый раунд длится заранее определённое число минут. Во время раунда система пробует воспользоваться каждым сервисом каждой команды, положить туда новый флаг и достать один из свежих флагов. Результат проверки — один из вердиктов:
- UP — РАБОТАЕТ. Сервис работает и корректно возвращает запрошенные флаги.
- CORRUPT — ПОВРЕЖДЕНО. Сервис работает, но старый флаг достать не удалось.
- DOWN — НЕ РАБОТАЕТ. Сервис работает некорректно или не работает вовсе.
Причина неудавшихся проверок доступна в таблице результатов.
Чтобы набирать очки, надо сдавать флаги. Очки приносят только только свежие флаги — те, что созданы в течение нескольких последних раундов. Длительность раунда и срок свежести флага будут анонсированы перед началом игры.
Команды сортируются по убыванию набранных очков. Результатом команды является сумма очков, положенных команде за каждый сервис.
Очки за сервис — произведение показателей SLA и FP:
SLA — количество раундов, в которых проверка сервиса завершилась результатом UP.
Все FP до начала игры равны — числу играющих команд. За сдачу флага к FP соответствующего сервиса атаковавшей команды прибавляются, а от FP атакованного сервиса убавляются очки (при этом при достижении отрицательных значений FP показатель принимается равным нулю). Количество прибавляемых и отнимаемых очков определяется формулой:
Места — числа от до , порядковый номер команды в рейтинговой таблице на начало раунда. Согласно этой формуле, за успешную атаку опережающего её соперника команда получает очков, а если соперник отстаёт — какое-то число очков на отрезке от до .
Игровая сеть
Чтобы вы смогли подключиться к игре, мы выдадим вам один конфиг для OpenVPN — общий для всех. Конфиг и все авторизационные данные можно будет скачать из личного кабинета.
Зайти по SSH на ваш вулнбокс можно по IP-адресу 10.31.33.7
. Вулнбоксы соперников расположены по адресу 10.2.2.X
, где X
— номер команды. Его можно узнать в таблице результатов. Участникам команды будут выданы адреса из сети 10.13.37.0/24
.
В сети команды вы найдёте два полезных приложения:
- Эксплоит-ферма. Позволяет вам автоматизировать запуск эксплоитов и сдачу флагов. Мы используем Destructive Farm. Вы можете почитать документацию по написанию эксплоитов и скачать уже подготовленный
start_sploit.py
. Веб-интерфейс будет доступен по адресуhttp://10.13.37.1:31338
. - Анализатор трафика. Позволяет вам в удобном формате изучать входящий трафик на ваших сервисах. Вам будет доступен Packmate. Веб-интерфейс будет доступен по адресу
http://10.13.37.1:31337
.
Эксплоиты можно запускать не только со своего компьютера, но и с выделенного сервера в инфраструктуре — он будет доступен позднее. Возможно, вам поможет tmux
или screen
, чтобы не держать несколько открытых SSH-сессий.
Обратите внимание, что оба ваших приложения будут недоступны как другим командам, так и с вашего сервера, чтобы защитить ваши флаги и эксплоиты.
Помимо настоящих команд, в игре будет принимать участие команда номер 1 — NPC. За неё никто не играет, она не будет сдавать флаги и патчить сервисы, но зато на ней можно проверять работу своих эксплоитов.
Сдавать флаги самостоятельно, не через ферму, можно по HTTP по адресу http://10.2.0.20/flags
. Пример запроса:
$ curl -s -H 'X-Team-Token: your_secret_token' -X PUT -d '["PNFP4DKBOV6BTYL9YFGBQ9006582ADC=", "STH5LK9R9OMGXOV4E06YZD71F746F53=", "0I7DUCYPX8UB2HP6D6UGN86BA26F2FE=", "PTK3DAGZ6XU4LPETXJTN7CE30EC0B54="]' http://10.2.0.20/flags | json_pp [ { "msg" : "[PNFP4DKBOV6BTYL9YFGBQ9006582ADC=] Denied: no such flag", "status" : false, "flag" : "PNFP4DKBOV6BTYL9YFGBQ9006582ADC=" }, { "msg" : "[STH5LK9R9OMGXOV4E06YZD71F746F53=] Denied: flag is your own", "flag" : "STH5LK9R9OMGXOV4E06YZD71F746F53=", "status" : false }, { "status" : false, "flag" : "0I7DUCYPX8UB2HP6D6UGN86BA26F2FE=", "msg" : "[0I7DUCYPX8UB2HP6D6UGN86BA26F2FE=] Denied: you already submitted this flag" }, { "msg" : "[PTK3DAGZ6XU4LPETXJTN7CE30EC0B54=] Accepted. 1.73205080756888 flag points", "flag" : "PTK3DAGZ6XU4LPETXJTN7CE30EC0B54=", "status" : true } ]
Ваш токен будет доступен в личном кабинете вместе с остальной информацией об игре.
Подготовка к игре
18 ноября в 3:00 югорского времени мы открыли тестовый полигон — он будет очень похож на то, что вы увидите на игре, но вместо настоящих сервисов будет два тестовых. Вы сможете познакомиться с инфраструктурой и даже попробовать посдавать флаги. Отличий от игры будет два — периода «закрытой сети» на этом полигоне не будет, а система будет проверять состояние ваших сервисов и наполнять их флагами каждые 3 минуты.
Кого мы зовём
Своё участие в финале подтвердила 21 команда. Вот окончательный список участников:
Город | Команда | Место учёбы |
---|---|---|
Нефтеюганск | Gachi Team | Школа №10 |
Сургут | ИН0Ш4П07ЯН3 | Технополис |
418 I am a teapot | Школа №3 | |
Владимир | d01t | ВлГУ |
Казань | [KXTI] SsSsS | КНИТУ (КХТИ) |
Калининград | two lonely samurai | ШИЛИ |
Москва | WheatInfoSec | МТКП |
Unicorn CTF | МЭИ | |
CR/LF | НИТУ МИСиС | |
Pooksandkaks | НИУ ВШЭ | |
Blue Phoenix | Новая школа | |
kks | РТУ МИРЭА | |
') DROP TABLE flags | РТУ МИРЭА | |
MyVseUronili | Школа №179 | |
WATyag | Школа №2007 | |
Оренбург | WNG | ОГУ |
Санкт-Петербург | Red Cadets | ВКА им. А. Ф. Можайского |
Popugi | ИТМО | |
YummyTacos | ИТМО | |
Busi | СПбГУПТД | |
кусь_на_ctf_ворвусь | ČVUT |
После игры
После окончания мы проведём стрим с разбором заданий и ответами на вопросы, в конце которого объявим окончательные результаты. Все участники получат сертификаты об участии, а победители и призёры — дипломы и ценные призы.
Интересные факты
Организаторы публикуют официальную информацию о соревнованиях на сайте ugractf.ru и в Telegram-канале @teamteam.
Связаться с организаторами можно по почте ugra@teamteam.dev или в Telegram-чате @ugractf.
Эти правила могут быть изменены в любой момент до начала игры. Актуальная версия публикуется по ссылке https://2020.ugractf.ru/finals.
* по мнению команды [team Team]