Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ai-ctf — Локальная платформа для Capture-the-Flag по ИИ с практическими уроками по инъекциям в промпты, злоупотреблению вызовами инструментов и OSINT против шести симулированных персон чат-ботов. | Kitploit
Инструменты/GitHubGitHub/mubix/ai-ctf
OSINT (Разведка открытых источников)Сбор информацииВеб-безопасностьCTFТестирование на ПроникновениеБезопасность Цепочки ПоставокОбучение и ОбразованиеБезопасность ИИЛаборатории и Практика
GitHubmubix/ai-ctf

ai-ctf

Локальная платформа для Capture-the-Flag по ИИ с практическими уроками по инъекциям в промпты, злоупотреблению вызовами инструментов и OSINT против шести симулированных персон чат-ботов.

183643 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

ai-ctf

Локальный AI Capture-the-Flag с пошаговыми уроками для специалистов, впервые сталкивающихся с prompt injection. Игроки также могут исследовать шесть AI-персон (одна скрытая), которые защищают 20 флагов через prompt-injection, злоупотребление вызовами инструментов, манипуляцию бизнес-логикой, фингерпринтинг цепочки поставок, веб-разведку и OSINT.

Пошаговый путь охватывает прямую инъекцию, авторизацию инструментов и инъекцию через редактируемую статью базы знаний. Он предоставляет подсказки, сохранённые попытки, доказательства работы инструментов, обратную связь о завершении и сравнения защищённых инструментов. Оригинальные практические лаборатории сохраняют ручную оценку событий. Инференс модели выполняется локально через Ollama; после сборки и загрузки модели основной платформе не требуется подключение к интернету.

Email Joe in Product Sales добавляет симулированный почтовый ящик и рабочий стол в стиле Windows. Напишите письмо, которое прочитает ассистент Джо, затем наблюдайте за фактическим резюме модели и записанными действиями. Три цели охватывают вводящий в заблуждение коммерческий бриф, раскрытие вымышленного внутреннего файла и несанкционированную скидку. Почтовый сервер, Windows, Wine или дополнительная модель не требуются.


Что внутри

root@kitploit:~
ai-ctf/
├── README.md                  ← вы здесь
├── LICENSE                    ← MIT
├── platform/                  ← всё, что работает в Docker
│   ├── flags.toml             ← центральный конфиг: редактируйте его для настройки значений флагов
│   ├── docker-compose.yml     ← три сервиса: web, ollama, decoy
│   ├── Dockerfile             ← образ веб-приложения
│   ├── app/                   ← исходный код FastAPI (config, personas, tools, chat)
│   ├── data/init.sql          ← схема SQLite + тестовые данные фейковых сотрудников
│   ├── decoy/                 ← крошечный nginx с двумя страницами флагов
│   └── scripts/
│       ├── apply_flags.py     ← вставляет значения из flags.toml в статические файлы
│       ├── render_secret.py   ← запускается при старте контейнера
│       └── dump_chats.py      ← экспортирует журнал чатов в HTML (инструмент для дня мероприятия)
├── external_artifacts/        ← то, что вы публикуете в GitHub / Gist / DNS
│   ├── README.md              ← чек-лист настройки
│   ├── anvil_chatkit/         ← фейковый пакет цепочки поставок
│   ├── gist_content.md        ← вставьте это в публичный Gist
│   └── dns_records.txt        ← TXT-запись для добавления в ваш домен
└── docs/                      ← документация для проведения мероприятия
    ├── ANSWER_KEY.md          ← пошаговые решения + ответы для оригинальных 20 флагов
    ├── CHEAT_SHEET.md         ← рабочие решения + многоуровневые подсказки (только для GM)
    ├── OPERATIONS.md          ← обновления, резервные копии и устранение неполадок
    ├── SETUP_RUNBOOK.md       ← пошаговое руководство на неделю
    └── EVENT_DAY_NOTES.md     ← сценарий брифинга + устранение неполадок

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


Требования

  • Docker + Docker Compose (Compose v2).
  • Достаточно RAM для настроенной модели, приложения, операционной системы и других рабочих нагрузок. Загрузка модели по умолчанию составляет около 4,7 ГБ; это не её общее требование к памяти во время выполнения. Ёмкость зависит от оборудования и модели; проверьте с предполагаемым количеством игроков перед мероприятием.
  • Python 3.11+ на хосте (используется только для вспомогательных скриптов apply_flags.py и dump_chats.py — само приложение работает внутри Docker).
  • exiftool (нужен только если вы меняете EXIF-флаг и хотите, чтобы apply_flags.py перезаписал логотип).
  • Доступ в интернет во время сборки (для pip install и загрузки модели Ollama). После этого основной локальный стек работает офлайн. Опциональная внешняя цепочка OSINT требует доступа в интернет.

Быстрый старт

root@kitploit:~
git clone https://github.com/mubix/ai-ctf.git
cd ai-ctf/platform

# 1. Session secret
echo "SESSION_SECRET=$(python3 -c 'import secrets; print(secrets.token_hex(32))')" > .env

# 2. (Optional) Customize flag values — see "Customizing the flags" below.
#    Default values work fine for a smoke test.

# 3. Build and start
docker compose build
docker compose up -d ollama
docker compose exec ollama ollama pull qwen2.5:7b-instruct-q4_K_M
docker compose up -d

# 4. Open the platform
open http://localhost:18080/    # or your-machine-ip:18080 on another laptop

Зарегистрируйте имя пользователя; платформа сгенерирует 12-символьный пароль и покажет его один раз. Сохраните его на будущее. Вы автоматически входите в систему и можете выбрать Start learning. Возвращающиеся игроки могут войти, чтобы продолжить сохранённый прогресс.

Проект Compose называется ai-ctf и имеет собственную сеть и том модели. Только веб-интерфейс публикует порт хоста: 18080 по умолчанию. Установите CTF_WEB_PORT в platform/.env, чтобы выбрать другой порт. Ollama и decoy не публикуют порты хоста; приложение подключается к собственному контейнеру Ollama. Проброс GPU не настроен. CPU и память по-прежнему разделяются с другими рабочими нагрузками на хосте.

При обновлении стека, созданного под другим именем проекта Compose, сохраните это имя с помощью docker compose -p YOUR_EXISTING_PROJECT ..., чтобы повторно использовать его контейнеры и том модели. Изменение имён проектов создаёт отдельный стек.

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

Ещё два пошаговых урока используют изолированные вымышленные фикстуры: доступ к инструментам HR, затем редактируемая статья базы знаний, которая может перенаправить симулированный ответ. Они выполняют запросы действий модели, прошедшие проверку схемы, против этих фикстурных инструментов, записывают вызовы инструментов и проверяют их результаты. Игроки могут воспроизвести те же аргументы через проверку разрешений и изучить контрольный пример легитимного использования. Это сравнение проверяет границу инструмента, а не второй запуск модели. Ничего не отправляется по почте и никакой реальный HR-сервис не подключён. Оригинальные персоны остаются самостоятельными практическими лабораториями с их оригинальными ответами и ручной оценкой.

Сценарий с электронной почтой доступен через All lessons → Email Joe. Его Проводник использует знакомые пути, такие как C:\Users\Joe\Documents\Sales; они обозначают фикстуры в памяти и никогда не обращаются к файловой системе хоста. Каждое письмо получает свежие вымышленные файлы, исходящие сообщения и запись о продажах. Сюжетные события помечаются отдельно от наблюдаемой активности модели и инструментов. Цели раскрытия файлов и изменения записей требуют выполненных действий, а не утверждения в резюме. Включите Enforce Joe's tool permissions, чтобы перезапустить любую цель инструмента с проверками приложения, затем отправьте чистый пример для проверки нормального использования. Попытки, подсказки, использование разобранного примера и прогресс сохраняются.

Для существующей установки изменения приложения/шаблонов требуют пересборки веб-образа; одного перезапуска недостаточно для копирования обновлённого кода:

root@kitploit:~
cd platform
docker compose up -d --build web

Таблицы уроков создаются при запуске без удаления существующих учётных записей или истории чатов. Следуйте руководству по эксплуатации, чтобы создать резервную копию существующей установки перед обновлением и убедиться, что игроки могут продолжить свои уроки afterward.

Платформа самостоятельно содержит 16 из 20 флагов. Оставшиеся 4 (#14–17) требуют внешней инфраструктуры, которую вы публикуете сами — см. external_artifacts/README.md. Пропустите этот шаг, если вам нужна только внутриплатформенная половина.


Настройка флагов

Все 20 значений флагов находятся в одном файле: platform/flags.toml. Редактируйте значения там, чтобы придать вашему мероприятию собственный колорит (другие токены flag{adjective_noun}, другой код купона, другая зарплата CEO и т. д.).

После редактирования:

root@kitploit:~
cd platform
python3 scripts/apply_flags.py        # stamps values into static files
docker compose up -d --build web decoy # copies updated assets into the images

apply_flags.py обновляет файлы, которые не загружаются Python во время выполнения:

  • data/init.sql (зарплата CEO, флаг #4)
  • decoy/html/private/index.html и decoy/html/internal-tools/index.html
  • EXIF-метаданные app/static/logo.jpg (флаг #20 — требует exiftool в PATH)
  • файлы external_artifacts/ (README chatkit, содержимое gist, DNS-запись, сообщение коммита setup-history.sh)

После изменения любых значений флагов также обновите docs/ANSWER_KEY.md, чтобы ваша проверочная таблица совпадала.

Пересборка не обновляет строки сотрудников, уже находящиеся в базе данных SQLite: сид использует INSERT OR IGNORE. Изменение зарплаты CEO в существующем мероприятии всё равно требует целевой миграции фикстур. Не удаляйте базу данных игроков, чтобы применить это изменение.

Если вы хотите полностью добавить или удалить флаги (изменить, какие персоны существуют, убрать внешнюю цепочку, добавить новый инструмент), редактируйте platform/app/personas/__init__.py и platform/app/tools.py напрямую. Здесь нет DSL — персоны И ЕСТЬ игра.


Ручки сложности

  • Ослабьте промпты персон (platform/app/personas/__init__.py) — меньше защитных оговорок, меньше строк "NEVER", меньше явных примеров отказа. Процент успеха игроков с первой попытки растёт.
  • Смените модель — отредактируйте OLLAMA_MODEL в docker-compose.yml, загрузите эту модель, и запустите docker compose up -d web, чтобы применить конфигурацию. Размер модели сам по себе не определяет сложность. Перепроверьте обычные задачи, разобранные примеры, нативные вызовы инструментов и структурированные ответы действий с помощью проверок перед мероприятием.

Что на самом деле делают игроки

  • Бот Customer Service — извлечь системный промпт; найти скрытый купон менеджера.
  • Бот HR — вытащить зарплаты других сотрудников; вызвать ошибку SQL, которая утекает информацию о схеме.
  • Бот Code Review — внедрить prompt-injection в комментарии кода и docstring, чтобы извлечь производственные секреты.
  • Бот Checkout — убедить его оформить заказ на $0, затем заказ с отрицательной суммой.
  • Бот Web Retrieval — обойти белый список URL; достичь внутреннего хоста LAN; вызвать file:// LFI через LLM.
  • Скрытая 6-я персона — обнаружить её по подсказкам от других ботов / разведки.
  • Веб-разведка — HTTP-заголовки, robots.txt, EXIF-метаданные.
  • OSINT цепочки поставок — определить платформу по заголовкам, найти репозиторий GitHub, покопаться в истории коммитов, перейти по ссылкам на публичный Gist, запросить DNS.

Оригинальный каталог атак и исторические примеры промптов находятся в docs/CHEAT_SHEET.md.


Проведение мероприятия

docs/SETUP_RUNBOOK.md — это чек-лист на неделю (сборка → внешние артефакты → пробный запуск → день мероприятия). docs/EVENT_DAY_NOTES.md содержит сценарий брифинга игроков, каталог многоуровневых подсказок и таблицу устранения неполадок.

Для форензики дня мероприятия — "кто на самом деле что решил?" — запустите platform/scripts/dump_chats.py против примонтированной базы данных SQLite, чтобы создать автономный HTML-отчёт с чипами обнаружения флагов для каждого сообщения. Это совпадения подстрок, а не доказательство того, что ассистент раскрыл секрет или выполнил инструмент. Пошаговые уроки хранят собственные проверенные записи о завершении.

Экспорт ctf_log.html по умолчанию, данные времени выполнения, локальные файлы окружения и релизные архивы игнорируются Git. Храните экспорты с пользовательскими именами и резервные копии развёртывания вне рабочей копии или в игнорируемом каталоге platform/data/. Записи игроков, учётные данные и экспорты чатов должны оставаться приватными.


Лицензия

MIT. См. LICENSE.


Благодарности

Создано Rob Fuller (mubix) для практического обучения AI-безопасности. Код в значительной степени сгенерирован ИИ; проектные решения и контент принадлежат человеку.

Скачать инструмент