Sign inSign up

cybericebox/test-exercises

By cybericebox

•Updated 8 days ago

Cyber ICE Box training: Go XOR recovery, web archive/Base64 packet, SSH via VPN.

Image
0

191

cybericebox/test-exercises repository overview

⁠Тестові завдання Cyber ICE Box

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

ПрикладЩо перевіряємоПрапори
static/ — «Загублений пакет»Відновлення повідомлення з Go-файлуОдин фіксований
dynamic/ — «Журнал зв’язку»Веб через проксі або VPN, SSH через VPN, вихід в інтернетДва шаблонні, незалежні

⁠Імпорт

Завантажте архіви з останнього релізу⁠:

  • static.zip та dynamic.zip — окремі завдання;
  • test-exercises.zip — обидва завдання одним імпортом;
  • SHA256SUMS — контрольні суми архівів.

Архіви відповідають формату cib-exercise/v1: exercise.json, вкладення в files/<id>/, manifest.json із SHA-256. У репозиторії зберігаються вихідні JSON та файли, архіви формуються автоматично.

Статичний приклад містить Go-файл welcome.go: масив байтів, маску XOR та функцію restore. Учасник має відновити початковий текст. Прапор фіксований, але відкритим рядком у вкладенні не зберігається. Звичайний запуск показує підказку; для розв’язання достатньо прочитати код і застосувати операцію XOR або викликати надану функцію.

Динамічний приклад містить одну спільну топологію та два завдання. Платформа генерує значення із шаблонів template:ICE{web_…} і template:ICE{ssh_…} та передає їх контейнеру через WEB_FLAG і SSH_FLAG. Кожен шаблон має 96 біт випадковості. Вебчастина складається з двох сторінок: журналу та картки передачі Р-17. У вкладенні packet.txt міститься прапор, закодований у Base64. Учасник завантажує файл і відновлює початковий текст; пряма кнопка видачі прапора відсутня. Другий прапор читається через SSH із ~/flag.txt. Значення не вбудовані в образ; без обох коректних прапорів він не запуститься.

⁠Мережа динамічного завдання

ШляхАдреса / порт
Публічний HTTP-проксі платформиexternal.link → контейнер, TCP 8080
Веб через VPNVPN-адреса контейнера, TCP 8080
SSH через VPNVPN-адреса контейнера, TCP 2222
Вихід в інтернетДруга мережа та шлюз Laboratory

Контейнер має VPN-інтерфейс eth0 та інтернет-інтерфейс eth1. Адреси й шлюзи визначаються посиланнями на виділені платформою мережі. Зворотний маршрут до VPN-клієнтів задано для стандартного пулу Laboratory 10.128.0.0/10; якщо інсталяція використовує інший пул, змініть routes[].dst у dynamic/exercise.json перед імпортом.

Обидва шлюзи забезпечує Laboratory — вони не запускаються всередині образу. Завданню потрібні виділені заходу динамічні ресурси, VPN та інтернет-мережа. Без цих ресурсів динамічний приклад недоступний. Контейнер не потребує додаткового NET_ADMIN у платформі.

SSH: користувач demo, навчальний пароль cybericebox, прапор у ~/flag.txt. Це навмисно публічний навчальний обліковий запис без прав root; не використовуйте цей пароль для інших систем. Перенаправлення SSH портів, агентів і тунелів вимкнені. Ключі сервера створюються при запуску. Веб не віддає SSH-прапор.

⁠Локальний запуск

Потрібні Docker, Python 3 та Go 1.27 або новіший для перевірки Go-вкладення.

make test
make package
make build

docker run --rm -p 127.0.0.1:8080:8080 -p 127.0.0.1:2222:2222 \
  -e 'WEB_FLAG=ICE{web_local_example}' \
  -e 'SSH_FLAG=ICE{ssh_local_example}' \
  cybericebox/test-exercises:local

Веб: http://127.0.0.1:8080. SSH: ssh -p 2222 [email protected]. Локальні значення вище — приклади; у Laboratory значення генерує платформа. Команда SSH на вебсторінці показує внутрішню VPN-адресу контейнера, тому локально використовуйте адресу хоста з цієї інструкції.

make smoke

Ізольована перевірка створює тимчасові Docker-мережі, HTTP-проксі та справжній тунель WireGuard, перевіряє обидва прапори, SSH без root, інтернет і коректне завершення. Потрібні Linux-контейнери з підтримкою WireGuard у ядрі (зокрема Docker Desktop). Тестові шлюз і клієнт отримують NET_ADMIN; тестовому контейнеру він потрібен лише для встановлення маршрутів замість вузла Laboratory. Тест видаляє лише власні тимчасові ресурси. Це перевірка контейнера та мережевих шляхів, а не розгортання у виробничому Laboratory.

Формат імпорту додатково перевіряється справжнім валідатором daemon v2.5.0, commit ab23a5317e3fbec465439d20094d02d842c84f7d. CI використовує окрему копію вихідного коду daemon; робочі репозиторії платформи не змінюються.

⁠Образи та релізи

Docker Hub: cybericebox/test-exercises⁠, архітектури linux/amd64 та linux/arm64. Імпорт прив’язаний до версії v1.0.0; latest також публікується для зручності локального перегляду.

Для нового релізу змініть версію образу в dynamic/exercise.json, виконайте перевірки та створіть відповідний тег vX.Y.Z. GitHub Actions перевірить збіг версії, збере й перевірить обидві архітектури, опублікує образ і додасть архіви до GitHub Release. Налаштування репозиторію: секрети DOCKERHUB_USERNAME, DOCKERHUB_TOKEN із правом публікації цього образу. Невдалі перевірки блокують публікацію.

Ліцензія: Apache-2.0.

Tag summary

Content type

Image

Digest

sha256:a0c552b72…

Size

24.1 MB

Last updated

8 days ago

docker pull cybericebox/test-exercises