학습 모드
학습 모드는 시뮬레이션된 브라우저 환경에서 인터랙티브 단계별 공격 시나리오를 제공합니다. 실제 공격 체인을 따라가면서 취약점이 어떻게 익스플로잇되고 어떻게 방지되는지 이해합니다.
작동 방식
학습 모드는 인터랙티브 공격 시나리오를 따라가는 가이드 분할 화면 인터페이스를 사용합니다:
왼쪽 패널 — 시나리오 가이드
단계별 지침, 시나리오 컨텍스트, 그리고 전체 공격 체인을 안내하는 내레이터입니다. 각 단계는 정확히 무엇을 해야 하는지 알려줍니다.
오른쪽 패널 — 시뮬레이션된 환경
완전히 인터랙티브한 브라우저, 모바일 기기 또는 프록시 시뮬레이션으로 작업을 수행합니다 — 버튼 클릭, 양식 작성 및 실시간 응답 관찰입니다.
학습 모드 인터페이스
시나리오 중 분할 화면 학습 모드가 어떻게 보이는지 보여드립니다:
URL의 id를 /profile/1에서 /profile/2로 변경합니다. 앱이 소유권을 확인하지 않고 두 번째 사용자의 데이터를 제공하는 것을 확인합니다.
params.id를 진실의 출처로 신뢰합니다.시나리오 구조
모든 시나리오는 실제 보안 평가를 반영하는 일관된 5단계 패턴을 따릅니다:
시뮬레이션된 환경
학습 모드는 취약점 카테고리에 따라 세 가지 유형의 시뮬레이션을 사용합니다:
| 환경 | 용도 | 설명 |
|---|---|---|
| SimBrowser | 웹 취약점 | URL 바, 탐색, 양식 및 동적 응답이 있는 완전히 인터랙티브한 웹 브라우저 시뮬레이션입니다. XSS, CSRF, SQL Injection 및 기타 웹 공격에 사용됩니다. |
| SimMobilePhone | 모바일 취약점 | 네이티브 UI 요소, 상태 표시줄 및 터치 상호작용이 있는 iOS 및 Android 기기 시뮬레이션입니다. 안전하지 않은 저장소, WebView 주입 및 인증서 고정 시나리오에 사용됩니다. |
| SimWebProxy | API 취약점 | 원시 API 호출, 헤더 및 페이로드를 보여주는 HTTP 요청/응답 프록시입니다. BOLA, 대량 할당, 잘못된 인증 및 기타 API 보안 시나리오에 사용됩니다. |
진행 상황 추적
각 시나리오는 진행 상황을 추적하므로 중단한 곳에서 바로 이어서 진행할 수 있습니다:
| 메트릭 | 설명 |
|---|---|
| 현재 단계 / 전체 단계 | 시나리오에서의 위치를 보여줍니다 — 예: "14단계 중 8단계" |
| 완료 상태 | in_progress 또는 completed |
| 재개 지원 | 시나리오를 닫고 나중에 돌아올 수 있습니다 — 마지막 단계에서 재개됩니다 |
시나리오 진행 상황
시나리오 목록은 현재 진행 상황을 한눈에 보여줍니다:
코드 리뷰 챌린지가 가르칠 수 없는 것을 가이드 시나리오가 가르치는 시점
연습 모드의 코드 리뷰 챌린지는 독립된 스니펫을 제공합니다. 이는 취약점이 라인에서 어떻게 보이는지에 대한 공정한 표현이지만, 대부분의 실제 취약점은 단일 라인에 있지 않습니다. 파일, 서비스 또는 클라이언트와 서버 사이의 경계에 걸쳐 있습니다. IDOR이 표준적인 예입니다: 잘못된 코드는 데이터베이스 쿼리가 아니라 스택의 세 계층 위에 있는 누락된 권한 부여 확인입니다. 학습 모드는 그 격차를 보여줄 수 있는 형식입니다. 전체 애플리케이션을 앞에 두기 때문입니다.
익스플로잇이 세션 상태, 다단계 요청 흐름 또는 공격자가 제어하는 타이밍에 의존하는 모든 취약점도 마찬가지입니다. 저장된 XSS는 페이로드가 한 사용자에서 다른 사용자로 이동할 때만 중요합니다. 대량 할당은 모델 계층이 노출해서는 안 되는 요청 본문 키를 신뢰할 때만 중요합니다. 스니펫은 그 체인을 보여줄 수 없습니다. 시나리오는 로그인하고, 작업을 수행하고, 응답을 관찰하며, 취약점이 실시간으로 침해로 변하는 것을 보기 때문에 가능합니다. 위의 5단계 시나리오 구조는 정확히 그 아크를 중심으로 설계되었습니다.
이미 시니어인 경우 학습 모드 사용 방법
시니어 개발자와 보안 엔지니어는 내레이터와 단계별 지침이 느리게 느껴지기 때문에 때때로 학습 모드를 건너뜁니다. 그것은 개인적으로 수십 번 익스플로잇한 취약점 클래스에 대해서는 공정합니다. 시니어 학습자를 위한 학습 모드의 올바른 사용은 목표 지향적이며, 완벽주의적이 아닙니다. 도입을 훑어보고, 탐색을 훑어보고, 공격 표면이 익숙하지 않을 때만 익스플로잇 단계에서 속도를 늦추세요. iOS 코드를 작성한 적이 없는 백엔드 엔지니어는 동일한 카테고리의 20개 연습 챌린지보다 단일 모바일 안전하지 않은 저장소 시나리오에서 더 많은 것을 배웁니다. 익숙하지 않은 부분은 개념이 아니라 플랫폼이기 때문입니다.
다른 시니어 사용 사례는 언어 격차를 메우는 것입니다. 잘 모르는 스택을 사용하는 팀에 합류한 경우, 해당 스택의 학습 시나리오는 검토할 애플리케이션 모양과 공격 표면에 대한 빠른 투어 역할도 합니다. 이를 스택 설정의 스택에 맞춘 연습과 결합하여 문서만 읽는 것보다 빠르게 새 코드베이스를 익히세요.
맞춤형 과정은 학습과 연습을 함께 묶습니다
조직 관리자는 학습 시나리오와 연습 주제를 단일 큐레이션 경로로 혼합하는 이름이 지정된 시퀀스를 구축할 수 있습니다 — 빌드 흐름은 맞춤형 과정를 참조하세요. 맞춤형 과정이 할당되면 /learn/custom/<courseId>에서 내장 과정처럼 소비하며 항목은 관리자가 정의한 순서대로 나타납니다. 연습 항목은 여전히 연습 모드에서와 같이 점수를 매기고 XP를 보상합니다. 학습 항목은 여전히 여기와 같이 시나리오별 진행 상황을 기록합니다.