A — Д

Атак-дефенс

впервые* в Югре

24 ноя · 12:00

начало по Югре (МСК+2)

Формат

Каждой команде мы выдадим доступ к серверу, на котором будет запущено несколько уязвимых сервисов. Набор сервисов у всех команд в начале игры идентичен — а, значит, идентичны и спрятанные нами внутрь этих сервисов уязвимости.

Ваша цель — обеспечивать работоспособность сервисов, исправлять уязвимости в них, а также эксплуатировать уязвимости на серверах ваших соперников и сдавать их приватные данные, получая за это баллы.

Приватными данными являются флаги — это строки, удовлетворяющие регулярному выражению [A-Z0-9]{31}=. Заметьте: никаких ugra_. Пример корректного флага: ABCDEFGHIJKLMNOPQRSTU0123456789=.

Следить за вашими успехами будет проверяющая система. Каждую минуту она будет проверять работоспособность сервисов у каждой команды, раскладывать новые флаги и следить за целостностью уже существующих.

Соревнования начнутся в 12:00 по югорскому времени (МСК+2). Первый час — подготовка: каждой команде доступен только свой сервер. Вы сможете осмотреться на вашем сервере, поизучать сервисы, понять, как они включаются и выключаются, и даже, возможно, успеть найти часть уязвимостей. В 13:00 появится сетевой доступ к другим командам, а проверяющая система начинает работу. Игра завершается через 8 часов, в 21:00.

Телеприсутствие

В этом году ехать никуда не надо — так решило правительство округа. Сидите дома и играйте удалённо. А атмосферу праздника мы вам попробуем передать через киберпространство.

Подтвердите участие в личном кабинете в течение недели с момента получения приглашения — или откажитесь от участия, если вы не сможете. Иначе возможность попасть в финал перейдёт к следующей по рейтингу команде. Ссылка — в почте у капитана.

Если вы потеряли ссылку, всегда можно получить новую.

Запреты

Во время соревнований мы вам запрещаем:

Атаковать инфраструктуру

Делиться патчами

Обмениваться флагами

Как устроен Attack-Defense

После открытия сетевого доступа начинается отсчёт раундов. Каждый раунд длится заранее определённое число минут. Во время раунда система пробует воспользоваться каждым сервисом каждой команды, положить туда новый флаг и достать один из свежих флагов. Результат проверки — один из вердиктов:

Причина неудавшихся проверок доступна в таблице результатов.

Чтобы набирать очки, надо сдавать флаги. Очки приносят только только свежие флаги — те, что созданы в течение нескольких последних раундов. Длительность раунда и срок свежести флага будут анонсированы перед началом игры.

Команды сортируются по убыванию набранных очков. Результатом команды является сумма очков, положенных команде за каждый сервис.

Очки за сервис — произведение показателей 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.

В сети команды вы найдёте два полезных приложения:

Эксплоиты можно запускать не только со своего компьютера, но и с выделенного сервера в инфраструктуре — он будет доступен позднее. Возможно, вам поможет 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]

Соревнования проводят команда [team Team], Депинформтехнологий Югры и ЮНИИИТ.