Skip to content

SgffCTF/ADSetup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

Локальное разворачивание attack-defense

Оглавление

  1. Описание
  2. Топология сети
  3. Структура репозитория
  4. Запуск

Описание

Данный репозиторий содержит автоматизацию для разворачивания серверов для self-hosted attack-defense CTF

Топология сети

Структура репозитория

  • /setup/ - автоматизация для разворачивания сети, ВМ, сервисов и жюрейной системы
    • proxmox/ - скрипты для автоматизации proxmox
      • interfaces.sh - создание интерфейсов для всех ВМ
    • ansible/ - конфигурации ansible, которые позволяют установить на ВМ всё необходимое для игры
      • inventory/ - содержит инфраструктурные конфигурации для подключения ко всем игровым ВМ
      • group_vars/ - содержит прикладные конфигурации для сервисов, их развёртывания и т.п.
      • playbooks/ - плейбуки для всех ВМ
  • /services/<название_сервиса>/service - сервисы для игры
  • /checkers/<название_сервиса>/ - чекеры для игры. Должны быть формата, который соответствует ForcAD
  • /sploits/<название_сервиса>/sploitN.py - сплойты. Могут быть запущены для тестов через DestructiveFarm. N - номер сплойта (В РАЗРАБОТКЕ)

Запуск

  1. Помещаем сервисы в директорию services, чекеры - в checkers согласно структуре репозитория выше

  2. Запускаем скрипт для создания интерфейсов на proxmox intefaces.sh. Созданные интерфейсы должны выглядеть следующим образом: Также в нашем случае есть интерфейс vmbr0, который является локальной сетью организации, где хостим CTF

  3. Устанавливаем OpenWRT, коннектим к ней все интерфейсы. Настраиваем OpenWRT согласно гайду

  4. Задаём статические IP адреса через привязку их к MAC адресу в файле macs.conf. MAC адреса задаём формата BC:24:11:XX:XX:XX, где XX - случайное шестнадцатеричное число.

  5. Подготавливаем шаблоны виртуальных машин для жюрейки и вулнбоксов.

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

cd setup
chmod +x ./cli.sh
./cli.sh teams services
  1. Запускаем скрипт vm.sh в proxmox:
chmod +x ./vm.sh
./vm.sh clone <template_id> <jury_template_id>

где:

  • template_id - идентификатор шаблона вулнбокса
  • jury_template_id - идентификатор шаблона жюри *При необходимости поменять переменную MAC_CONFIG в скрипте
  1. Изменяем в inventory.yml
  • Имя пользователя и пароль от хостов. При необходимости можно проставить у каждого хоста свои данные. При запуске ansible все пароли от хостов teams, jury будут изменены и вновь записаны в inventory.
  • Адреса организаторов. Они будут иметь доступ к ssh жюрейки, остальные адреса будут отклоняться.
  1. В конфиге форкада меняем все пароли на рандомные, изменяем start_time. Добавляем все команды и сервисы.

  2. Выполняем:

cd setup
chmod +x ./cli.sh
./cli.sh ping # Проверяем доступность хостов
./cli.sh

Деплой был протестирован на Ubuntu 24.04

Мониторинг

Во время соревнования объём трафика можно мониторить через:

bmon -p br-*

Складывать трафик в файлы по 500 мегабайт:

tcpdump -i any -s 0 -w ./dump.pcap -C 500 -W 10

About

Setup network, vulnboxes and ForcAD for attack-defense competition

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published