Всё о CTF в России

Советы от bykva: как играть в классический CTF

2017-08-02 18:00:36

В обсуждениях группы CTF в Петербурге обнаружили интересный материал с рекомендациями, как играть в attack-defense. Публикуем полную версию от bykva с незначительными редакторскими правками.

Современные образы могут быть предоставлены игрокам следующим образом:

  • раздатка (usb-носитель)
  • скачивание по сети.

Образ может быть предоставлен заранее, а может быть выдан за N-ое время до начала игры в зашифрованном виде. Отсюда необходимо подготовить:

  • Ноутбук с Ethernet-портом. На мероприятиях медь — самый оптимальный предоставляемый канал до жюрейки. Очень много тех, кто бежит покупать адаптеры для своих маков / ультрабуков прямо на соревнованиях. (Так лучше не делать — прим. ред.).

  • Отдельный канал в интернет. Вы не должны зависеть от того, предоставляют вам сеть или нет. Поверьте, у жюри могут быть абсолютно разные проблемы, в том числе с помещением и локальным интернетом. Его могут и шейпить, и блочить. Так что свой канал нужен на случай того, если всё отвалится.

  • Естественно, виртуализация. Жюри обычно предоставляет образ, сделанный в VBOX, хотя для vmware тоже подойдет. Сделано это в силу бесплатности продукта, а не потому что нам нравится его использовать. Виртуализация должна быть у каждого члена команды. Кстати, еще немаловажный фактор — обязательно проверьте, что вы поддерживаете аппаратную виртуализацию x86_64. Образ может быть таким.

  • Архиватор и дешифровщик. Если образ заархивирован, вы должны суметь его извлечь. Это же равно для шифрования. Если образ дают скачать за час-два-три, то его обычно шифруют. Вы должны быть к этому готовы.

Итак, вы импортировали образ. Выдали ему необходимые характеристики.

Настраиваем сеть. Сеть должна быть обязательно в bridge, чтобы ваша виртуалка была полноправным членом инфраструктуры мероприятия. Бриджуем с тем адаптером, который подключен к сети мероприятия. Не забываем переинициализировать мак адреса и ставить галочку connected на кабеле в адаптере.

Введите описание изображения

Фото: СибГУТИ, соревнования NSK CTF

Сбрасываем пароль. Пароль сбрасывать желательно научиться не одним способом.

Хорошо, если это debian-подобные. А если это будет CentOS с включенным SELinux — вы поломаете свою виртуалку. Хотя CentOS вряд ли дадут, но это надо уметь.

Типичная ошибка новичка — назначить IP-адрес, но не прописать шлюз.

Когда вам выдают параметры сети: 172.16.x.3/24 — вы должны присвоить адрес интерфейсу согласно номеру вашей команды, а также прописать шлюз. Обычно это .1 в вашей сети. Если важно обращение к сервисам по DNS — укажите также DNS.

Научитесь прописывать сеть для debian, centos, arch. Лишним не будет. Сеть должна подниматься также и при ребуте системы.

Вы подняли ваш образ и настроили сеть. Товарищи по команде уже могут его «пинговать» — тем или иным способом.

Важно найти всех «левых» пользователей в системе и сменить у них пароли. Не един случай, когда при слабых пользовательских паролях закидывали форк-бомбы.

Сделайте снапшот! Когда вы подняли и настроили свежий игровой образ — не стоит тратить в будущем время на его перенастройку. Также рекомендую сделать повторный «чистовой» снапшот после начала игры, когда вы убедитесь, что все ваши сервисы в апе.

Ваш игровой образ — эталон. НИКАКИХ горячих правок.

Члены команды не вносят НИКАКИХ изменений на эталонном образе. НИКТО по нему не шарится в поиске сервисов. Патчить образ должны 1-2 человека в команде.

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

Best practice от ked: Распараллеливаем сервисы на N виртуалок — т.е. у вас есть ваш эталон и еще 5 виртуалок с сервисами. Заворачиваем трафик так, чтобы он миррорился и в эталон, и в стендовые сервисы. Снифаем отдельно траффик на каждом сервисе. При выполнении патча от члена команды сначала патчим стенд. На следующем раунде сравниваем ответы от эталона и от стенда. Если ответ на жюрейный запрос совпадает — патч успешен, его можно накатывать.

Снифайте траффик. В первые минуты игры траффик самый чистый.

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

Изучаем сервисы: он может лежать в самой системе.