Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ai-ctf — 프롬프트 인젝션, 도구 호출 악용, 그리고 6개의 시뮬레이션된 챗봇 페르소나를 대상으로 한 OSINT에 관한 가이드 레슨을 제공하는 로컬 AI 캡처 더 플래그 플랫폼. | Kitploit
도구/GitHubGitHub/mubix/ai-ctf
OSINT (Open Source Intelligence)Information GatheringWeb SecurityCTFPenetration TestingSupply Chain SecurityLearning & EducationAI SecurityLabs & Practice
GitHubmubix/ai-ctf

ai-ctf

프롬프트 인젝션, 도구 호출 악용, 그리고 6개의 시뮬레이션된 챗봇 페르소나를 대상으로 한 OSINT에 관한 가이드 레슨을 제공하는 로컬 AI 캡처 더 플래그 플랫폼.

183643일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

ai-ctf

프롬프트 인젝션이 처음인 기술자를 위한 안내형 레슨이 포함된 로컬 AI Capture-the-Flag. 플레이어는 프롬프트 인젝션, 도구 호출 악용, 비즈니스 로직 조작, 공급망 핑거프린팅, 웹 정찰, OSINT를 통해 20개의 플래그를 보호하는 여섯 개의 AI 페르소나(하나는 숨겨짐)를 탐색할 수도 있습니다.

안내 경로는 직접 인젝션, 도구 권한 부여, 편집 가능한 지식 문서를 통한 인젝션을 다룹니다. 힌트, 저장된 시도, 도구 증거, 완료 피드백, 보호된 도구 비교를 제공합니다. 원래의 연습 랩은 수동 이벤트 채점을 유지합니다. 모델 추론은 Ollama를 통해 로컬에서 실행되며, 빌드와 모델 다운로드 후에는 핵심 플랫폼에 인터넷 연결이 필요하지 않습니다.

Email Joe in Product Sales는 시뮬레이션된 받은편지함과 Windows 스타일 데스크톱을 추가합니다. Joe의 어시스턴트가 읽을 이메일을 작성한 다음, 실제 모델 요약과 기록된 작업을 확인하세요. 세 가지 목표는 오해를 유발하는 영업 브리프, 가상의 내부 파일 공개, 무단 할인을 다룹니다. 메일 서버, 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 GB이며, 이는 총 런타임 메모리 요구 사항이 아닙니다. 용량은 하드웨어와 모델에 따라 다릅니다. 이벤트 전에 예상 플레이어 수로 확인하세요.
  • 호스트에 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이며 자체 네트워크와 모델 볼륨을 가집니다. 웹 UI만 호스트 포트를 게시합니다: 기본적으로 18080. 다른 포트를 선택하려면 platform/.env에서 CTF_WEB_PORT를 설정하세요. Ollama와 decoy는 게시된 호스트 포트가 없으며, 앱은 자체 Ollama 컨테이너에 연결됩니다. GPU 패스스루는 구성되지 않습니다. CPU와 메모리는 여전히 호스트의 다른 워크로드와 공유됩니다.

다른 Compose 프로젝트 이름으로 생성된 스택을 업그레이드하는 경우, 해당 이름을 docker compose -p YOUR_EXISTING_PROJECT ...로 유지하여 컨테이너와 모델 볼륨을 재사용하세요. 프로젝트 이름을 변경하면 별도의 스택이 생성됩니다.

안내형 Customer Service 레슨은 고정 이벤트 토큰 대신 시도마다 새로운 감사 토큰을 사용합니다. 평문 공개를 인식하고, 예제를 보면서 해결한 것과 보지 않고 해결한 것을 구분합니다. 새로운 시도는 이전 대화와 획득한 진행 상황을 보존합니다. 초보자 프로필은 의도적으로 주장된 지원 운영자 역할을 신뢰합니다. 원래의 Customer Service 연습 봇은 별도로 유지됩니다. 기존 안내형 시도는 플레이어가 새로 시작할 때까지 이전 프로필을 유지합니다.

두 개의 추가 안내형 레슨은 격리된 가상 픽스처를 사용합니다: HR 도구 접근, 그다음 시뮬레이션된 응답을 리디렉션할 수 있는 편집 가능한 지식 문서. 이들은 해당 픽스처 도구에 대해 스키마 검증된 모델 작업 요청을 실행하고, 도구 호출을 기록하며, 결과를 검증합니다. 플레이어는 권한 검사를 통해 동일한 인수를 재생하고 정당한 사용 제어를 검사할 수 있습니다. 이 비교는 두 번째 모델 실행이 아니라 도구 경계를 확인합니다. 이메일은 발송되지 않으며 실제 HR 서비스도 연결되지 않습니다. 원래 페르소나는 원래 답변과 수동 채점을 가진 자기 주도형 연습 랩으로 남습니다.

이메일 시나리오는 All lessons → Email Joe에서 사용할 수 있습니다. File Explorer는 C:\Users\Joe\Documents\Sales와 같은 친숙한 경로를 사용하며, 이는 메모리 내 픽스처를 식별할 뿐 호스트 파일 시스템에 접근하지 않습니다. 각 이메일은 새로운 가상 파일, 발신함, 영업 기록을 받습니다. 스토리 이벤트는 관찰된 모델 및 도구 활동과 별도로 레이블이 지정됩니다. 파일 공개 및 기록 변경 목표는 요약의 주장이 아니라 실행된 작업을 요구합니다. Enforce Joe's tool permissions를 활성화하여 애플리케이션 검사로 두 도구 목표 중 하나를 다시 실행한 다음, 정상 사용을 확인하기 위해 깨끗한 예제를 보내세요. 시도, 힌트, 예제 사용, 진행 상황이 저장됩니다.

기존 설치의 경우 애플리케이션/템플릿 변경에는 웹 이미지 재빌드가 필요합니다. 재시작만으로는 업데이트된 코드가 복사되지 않습니다:

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

레슨 테이블은 기존 계정이나 채팅 기록을 삭제하지 않고 시작 시 생성됩니다. 업데이트 전에 기존 설치를 백업하고 플레이어가 이후 레슨을 이어갈 수 있는지 확인하려면 운영 가이드를 따르세요.

플랫폼은 20개 플래그 중 16개를 자체 포함합니다. 나머지 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
  • app/static/logo.jpg EXIF 메타데이터 (플래그 #20 — PATH에 exiftool 필요)
  • external_artifacts/ 파일 (chatkit README, 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" 줄, 명시적 거부 예시를 줄입니다. 플레이어의 첫 시도 성공률이 올라갑니다.
  • 모델 변경 — docker-compose.yml에서 OLLAMA_MODEL을 편집하고, 해당 모델을 풀한 다음, docker compose up -d web을 실행하여 구성을 적용합니다. 모델 크기만으로는 난이도가 확립되지 않습니다. 이벤트 전 점검을 사용하여 정상 작업, 예제, 네이티브 도구 호출, 구조화된 작업 응답을 다시 확인하세요.

플레이어가 실제로 하는 일

  • Customer Service bot — 시스템 프롬프트를 추출하고, 숨겨진 관리자 쿠폰을 찾습니다.
  • HR bot — 다른 직원의 급여를 빼내고, 스키마 정보를 유출하는 SQL 오류를 유도합니다.
  • Code Review bot — 코드 주석과 docstring에 프롬프트 인젝션을 삽입하여 프로덕션 시크릿을 추출합니다.
  • Checkout bot — $0 주문, 그다음 음수 총액 주문을 하도록 설득합니다.
  • Web Retrieval bot — URL 허용 목록을 탈출하고, 내부 LAN 호스트에 도달하며, LLM을 통해 file:// LFI를 트리거합니다.
  • 숨겨진 6번째 페르소나 — 다른 봇/정찰의 단서를 통해 발견합니다.
  • 웹 정찰 — HTTP 헤더, robots.txt, EXIF 메타데이터.
  • 공급망 OSINT — 헤더에서 플랫폼을 핑거프린팅하고, GitHub 리포지토리를 찾고, 커밋 기록을 파고들고, 공개 Gist 링크를 따라가고, DNS를 쿼리합니다.

원래 공격 카탈로그와 과거 예시 프롬프트는 docs/CHEAT_SHEET.md에 있습니다.


이벤트 운영

docs/SETUP_RUNBOOK.md는 이벤트 주간 체크리스트입니다 (빌드 → 외부 아티팩트 → 드라이 런 → 이벤트 당일). docs/EVENT_DAY_NOTES.md에는 플레이어 브리핑 스크립트, 단계별 힌트 카탈로그, 문제 해결 표가 있습니다.

이벤트 당일 포렌식 — "누가 실제로 무엇을 해결했는가?" — 를 위해 바인드 마운트된 SQLite DB에 대해 platform/scripts/dump_chats.py를 실행하여 메시지별 플래그 감지 칩이 포함된 자체 포함 HTML 보고서를 생성하세요. 이는 부분 문자열 일치이며, 어시스턴트가 시크릿을 공개했거나 도구를 실행했다는 증거가 아닙니다. 안내형 레슨은 자체 검증된 완료 기록을 유지합니다.

기본 ctf_log.html 내보내기, 런타임 데이터, 로컬 환경 파일, 릴리스 아카이브는 Git에서 무시됩니다. 사용자 지정 이름의 내보내기와 배포 백업은 체크아웃 외부나 무시된 platform/data/ 디렉터리에 보관하세요. 플레이어 기록, 자격 증명, 채팅 내보내기는 비공개로 유지해야 합니다.


라이선스

MIT. LICENSE를 참조하세요.


감사의 글

실습형 AI 보안 교육을 위해 Rob Fuller (mubix)가 제작했습니다. 코드는 대부분 AI가 생성했으며, 설계 결정과 콘텐츠는 사람이 소유합니다.

도구 다운로드