Step 105. ★ 점검 — 워게임 기법 목록화
Level 2 — 보안 입문과 공격 스킬 기초 | 난이도 ★★☆☆☆ | 예상 소요 시간 2시간
전제: Step 96~104(Bandit 0~30, Natas 0~15)를 풀었다. Step 89의 개인 위키가 열려 있다.
- 준비물: 개인 위키(또는 마크다운 에디터), 지금까지의 write-up, 재풀이용 Bandit/Natas 접속 환경.
- ⚠️ 이 챕터의 실습은 내 랩·합법 플랫폼 전용입니다. 허가 없는 시스템에 적용하면 범죄입니다.
- 성격 안내: 오늘은 새 기술을 배우지 않습니다. ★ 점검 챕터 — 이미 푼 문제들을 "기법"이라는 단위로 재조립하는 날입니다.
여기까지 오면서 여러분은 60개 안팎의 문제를 풀었습니다. 그런데 잘 생각해 보면 그 60문제는 사실 스무 가지 남짓한 기법의 변주입니다. find 조건 검색이 세 번 나왔고, 소스 코드 읽기가 다섯 번 나왔고, 쿠키 조작이 두 번 나왔습니다. 문제는 이 반복이 머릿속에서 체계가 없이 흩어져 있다는 것입니다.
오늘의 목표는 그 흩어짐을 표로 잡는 것입니다. 기법 카드 정리가 끝나면 새 문제를 만났을 때의 반응이 바뀝니다 — "뭐부터 하지?"가 아니라 "이건 아까 그 패턴이네." 분류표는 한 번 만들고 끝나는 문서가 아니라, 앞으로 500일 내내 커 가는 개인 무기고의 목차입니다.
1. 학습 목표
이 챕터를 끝내면 다음을 할 수 있습니다:
- Bandit 0~30, Natas 0~15에서 쓴 기법을 누락 없이 나열한다
- 기법을 정찰 / 인증·세션 우회 / 권한 상승 / 데이터 처리 네 분류로 정리한다
- 각 기법에 "징후(언제 떠올릴지)"와 "도구·명령"을 붙여 기법 카드를 만든다
- 가장 많이 막혔던 유형 세 개를 골라 재풀이로 실력을 검증한다
- 분류표 v1을 개인 위키에 저장하고 갱신 규칙을 정한다
2. 배경 지식 — 오늘의 도구와 개념
오늘의 도구 한눈에 보기
| 구분 | 내용 |
|---|---|
| 언어·환경 | 마크다운 문서(개인 위키), 필요시 재풀이용 SSH·브라우저 |
| 오늘의 명령어 | 새 명령 없음 — 지금까지의 명령을 "기법"으로 묶는 날 |
| 필요한 개념 | 기법 카드(징후·도구·대표 사례), 4분류 프레임, 청킹(chunking) |
| 오늘의 산출물 | 위키 문서 워게임_기법_분류표_v1.md + 재풀이 기록 3건 |
2-1. 왜 "문제"가 아니라 "기법"으로 기억하는가
문제 단위로 기억하면 기억이 문제 수만큼 필요합니다. 기법 단위로 기억하면 스무 개의 칸에 수백 문제를 걸 수 있습니다. 전문가와 초보의 차이는 기억력이 아니라 이 청킹(chunking) — 경험을 큰 덩어리로 묶는 방식에 있다는 것이 체스와 프로그래밍 연구에서 반복적으로 확인된 사실입니다.
워게임 성장 곡선의 중간 지점이 바로 여기입니다. 기법을 의식적으로 묶는 작업을 한 번이라도 해 본 사람과 안 한 사람은, 이후 새 문제에서의 출발 속도가 다릅니다.
점검 챕터가 커리큘럼에 주기적으로 박혀 있는 이유도 같습니다. 달리기만 하면 근육이 자라도 자세는 무너집니다. 오늘은 멈춰 서서 자세를 고치는 날 — 근육(문제 풀이 수)을 자세(기법 체계)로 옮기는 작업입니다.
2-2. 4분류 프레임
이 책이 제안하는 기본 골격입니다. 억지로 맞추지 말고, 겹치면 양쪽에 적으세요.
| 분류 | 묻는 질문 | 대표 기법 |
|---|---|---|
| ① 정찰·탐색 | "여기 뭐가 있지?" | ls -a, find 조건 검색, 소스 보기, robots.txt |
| ② 인증·세션 우회 | "문지방을 어떻게 넘지?" | 쿠키 변조, 헤더 조작, SQL 인젝션, 인코딩 역산 |
| ③ 권한 상승 | "더 높은 권한을 어떻게 얻지?" | setuid 실행 파일, cron 스크립트 악용, 쓰기 가능 파일 |
| ④ 데이터 처리 | "이 데이터를 어떻게 읽지?" | 인코딩 변환(base64/hex/rot13), diff, sort+uniq, git 이력 |
이 네 칸은 워게임을 넘어 실제 침투 테스트의 단계와도 평행합니다. 정찰 없이 공격 없고, 인증 우회 없이 내부 없고, 권한 상승 없이 장악 없습니다.
2-3. 기법 카드의 세 칸 — 징후가 핵심이다
기법 카드는 세 칸으로 만듭니다.
### 기법명: (예) find 조건 검색
- **징후**: "서버 어딘가에 조건을 만족하는 파일이 숨어 있다"는 힌트가 보일 때
- **도구/명령**: `find . -type f -size 1033c ! -executable`
- **대표 사례**: Bandit 5→6, 6→7
징후 칸이 카드의 심장입니다. 명령은 검색하면 나옵니다. 하지만 "이 상황에서 이 기법을 떠올리는 능력"은 징후를 말로 적어 본 사람에게만 생깁니다. 카드 한 장의 완성 기준은 하나입니다 — 다음에 비슷한 문제를 보면 이 카드가 저절로 떠오를 것 같은가.
2-4. 분류는 완벽하지 않아도 된다
"쿠키 변조는 인증 우회인가 데이터 처리인가?" 같은 고민에 시간을 쓰지 마세요. 분류는 진리가 아니라 색인입니다. 책꽂이의 칸이 어디든 중요한 것은 나중에 찾을 수 있느냐입니다. 어느 칸에 넣을지 30초 안에 못 정하면 양쪽에 다 적고 넘어가세요.
2-5. 실전의 분류표 — MITRE ATT&CK
여러분이 오늘 만드는 것의 "업계 표준판"이 존재합니다. MITRE ATT&CK은 실제 침해 사고에서 관찰된 공격 기법을 전수 조사해 분류한 거대한 표입니다 — 정찰, 초기 침입, 권한 상승, 방어 회피 같은 단계(전술) 아래 수백 개의 기법이 번호와 함께 정리되어 있습니다. 침해 보고서가 "T1059 계열 기법 사용"이라고 적는 것을 본 적 있다면 그것이 이 표의 기법 번호입니다.
오늘의 4분류는 그 표의 아주 작은 입문판입니다. 지금 개인 무기고를 버전 관리하는 습관을 들이면, 나중에 ATT&CK를 만났을 때 "아, 이거 내 분류표의 확장판이네"라고 읽을 수 있습니다. 체계화하는 습관 자체가 실무 기술입니다.
3. 따라 하기
3-1. 기법 긁어모으기 — 원시 목록
위키에 새 문서 워게임_기법_분류표_v1.md를 열고, Step 96~104의 write-up을 훑으며 쓴 기법을 전부 나열합니다. 이때 정리하지 말고 날것으로 씁니다. 참고용 시작 목록:
숨김 파일(ls -a), 특수 파일명(./-, 공백), file로 정체 판정,
find 크기/조건 검색, 인코딩 변환(base64, hex, rot13, tr),
diff 비교, sort+uniq 중복 찾기, netcat 접속, 포트 스캔 감각,
SSL로 접속(openssl s_client), 소스 코드 읽기(PHP), robots.txt,
include 추적, 경로 탐색(../), 인코딩 역산, 명령어 인젝션,
필터(블랙리스트) 우회, hidden input 조작, 쿠키 값 변조,
헤더(Referer/User-Agent) 조작, git 이력 뒤지기, setuid 실행 파일,
cron 스크립트 악용, 쓰기 가능 폴더 활용, XOR 키 복구,
쿠키 위조(암호화 분석 후), 파일 업로드 우회, SQL 인젝션, Blind SQLi
30개 안팎이면 정상입니다. 여러분의 write-up에만 있는 기법이 더 있으면 그것이 더 가치 있는 항목입니다.
3-2. 4분류로 배치하기
날것 목록을 2-2의 네 칸에 나눠 담습니다. 표 형태로 만드는 것을 권합니다.
| 기법 | 분류 | 징후 | 도구/명령 | 대표 사례 |
|---|---|---|---|---|
| find 조건 검색 | ① | "어딘가 숨은 파일" 힌트 | find . -size 1033c |
Bandit 5 |
| 소스 코드 읽기 | ① | 소스 보기 버튼, 로직 궁금증 | View sourcecode | Natas 6~15 |
| 쿠키 변조 | ② | 로그인 상태가 쿠키에 의존 | 개발자 도구 Application | Natas 4~5 |
| XOR 키 복구 | ④(→②) | 쿠키가 이상한 문자열 + 소스에 XOR 로직 | 파이썬 ^ |
Natas 11 |
| SQL 인젝션 | ② | 입력이 DB 질의로 보이는 폼 | ' OR '1'='1 |
Natas 14~15 |
| setuid 파일 | ③ | 소유자 권한으로 뭔가 해야 함 | find / -perm -4000 |
Bandit 20 |
| cron 악용 | ③ | 주기적으로 실행되는 스크립트 발견 | cat /etc/cron.d/* |
Bandit 21~23 |
읽는 법: "XOR 키 복구"처럼 분류가 어중간한 것은 화살표로 둘 다 표시했습니다. 분석은 ④지만 목적은 ② — 이런 표시가 나중에 오히려 기법의 성격을 정확히 기억하게 해 줍니다.
3-3. 징후 칸 다듬기 — 오늘의 핵심 노동
각 행의 "징후"를 자기 말로 다시 씁니다. 나쁜 예와 좋은 예:
-
나쁜 징후: "find를 쓸 때" (기법을 기법으로 설명 — 아무 도움 안 됨)
-
좋은 징후: "힌트에 크기·권한·소유자 같은 파일 속성 조건이 있을 때"
-
나쁜 징후: "SQL 인젝션 문제에서"
-
좋은 징후: "로그인·검색 폼인데 입력이 그대로 쿼리에 들어가는 소스가 보일 때"
징후는 미래의 여러분에게 보내는 쪽지입니다. "이런 장면을 보면 이 카드를 꺼내"라고 쓰는 것입니다.
3-4. 재풀이 3문제 — 분류표의 실력 검증
분류표만 만들고 끝내면 문서일 뿐입니다. 가장 많이 막혔던 유형 세 개를 골라 해당 문제를 다시 풉니다. 규칙:
- 옛 write-up을 보지 않고 분류표만 보고 풀 것
- 풀면서 "징후가 실제로 떠올랐는가"를 관찰할 것
- 안 떠올랐으면 징후 칸을 그 자리에서 고칠 것
재풀이에서 막히면 카드가 잘못 쓰인 것이고, 술술 풀리면 카드가 살아 있는 것입니다. 이 피드백이 분류표를 진짜 무기로 만듭니다.
재풀이 기록은 이런 형식을 권합니다.
[재풀이 1] Bandit 20 (setuid 실행 파일)
- 카드만 보고 풀이: 성공 / 소요 6분
- 떠오른 징후: "setuid" 단어가 힌트에 있어 ③번 칸을 바로 엶
- 고친 점: 징후에 "실행하면 다른 사용자로 뭔가를 시키는 파일" 추가
3-5. 갱신 규칙 정하기
문서 맨 아래에 규칙을 적습니다.
### 갱신 규칙
- 새 기법을 만나면 즉시 카드 1장 추가 (버전 +0.1)
- 한 달에 한 번: 같은 기법의 사례가 3개 넘으면 하위 변형으로 분화
- 분류가 자꾸 겹치면 분류 기준 자체를 의심하고 v2로 개정
버전 번호를 다는 이유는 이 문서가 "완성품"이 아니라 "살아 있는 목차"임을 스스로에게 상기시키기 위해서입니다.
규칙이 세 줄을 넘어갈 필요는 없습니다. 지킬 수 있는 규칙 세 개가 지키지 못할 규칙 열 개보다 낫습니다.
3-6. 분류표 사용법 — 읽는 순서를 정해 두기
완성한 표는 "새 문제를 만났을 때" 펴는 물건입니다. 사용 절차까지 정해 두세요.
- 문제(또는 서버)를 본다 → ① 정찰 칸부터 위에서 아래로 훑는다
- 뭔가 걸리면 그 기법의 카드를 열어 명령을 확인한다
- 인증이 막히면 ② 칸, 권한이 부족하면 ③ 칸, 데이터가 안 읽히면 ④ 칸
"처음 보는 문제 앞에서 무엇을 먼저 여는가"가 정해진 사람과 아닌 사람의 차이는 워게임 후반부에서 크게 벌어집니다. 분류표는 기록물이자, 여러분의 진입 절차서입니다.
4. 미션과 연습문제
미션 — 기법 분류표 v1 완성
워게임_기법_분류표_v1.md를 완성합니다 — 기법 25개 이상, 전 행에 징후·도구·대표 사례 필수- 4분류 각 칸에 최소 3개 이상의 기법이 들어가야 합니다
- 막혔던 유형 3개를 골라 분류표만 보고 재풀이하고, 결과(성공/실패와 고친 징후)를 문서에 기록합니다
- 갱신 규칙 3줄을 문서 말미에 적습니다
연습문제
문제 1. 문제 단위 기억과 기법 단위 기억의 차이를 "청킹" 개념으로 설명해 보세요.
문제 2. 기법 카드 세 칸(징후·도구·사례) 중 왜 "징후"가 핵심인지, 명령어는 검색하면 되지 않느냐는 반문에 답해 보세요.
문제 3. "은폐에 의한 보안 깨기(숨김 파일 찾기)"는 4분류 중 어디에 넣겠습니까? 그리고 그 분류가 문제 상황 판별에 어떻게 도움이 되는지 설명해 보세요.
문제 4. 분류표를 "한 번 만들고 끝"이 아니라 계속 갱신해야 하는 이유를, 앞으로의 학습 과정(CTF, 실전 머신)과 연결해 설명해 보세요.
5. 모범 답안과 완료 기준
미션 모범 답안
분류표의 골격 예시 (여러분의 표는 이것보다 길고 구체적이어야 합니다):
| 분류 | 기법 수 (예) | 대표 카드 |
|---|---|---|
| ① 정찰·탐색 | 8 | 소스 읽기, find 조건 검색, robots.txt |
| ② 인증·세션 우회 | 7 | 쿠키 변조, SQLi, 헤더 조작 |
| ③ 권한 상승 | 5 | setuid, cron, 쓰기 가능 파일 |
| ④ 데이터 처리 | 8 | 인코딩 변환, diff, XOR 분석 |
검증하는 법: ① 기법이 25개 이상이고 빈 칸(징후 없음 등)이 없는가. ② 재풀이 3건이 기록되어 있고, 실패한 경우 고친 징후가 함께 적혀 있는가. ③ 갱신 규칙이 있는가. ④ 문서 어딘가를 읽고 즉시 해당 기법을 다시 실행할 수 있는가 — 이것이 최종 시험입니다.
연습문제 해답
문제 1 해답. 청킹은 흩어진 정보를 의미 있는 덩어리로 묶는 인지 전략입니다. 문제 단위로 기억하면 새 문제는 항상 "처음 보는 것"이지만, 기법 단위로 묶어 두면 새 문제가 "아는 기법의 새 얼굴"로 인식됩니다. 기억 용량은 같아도 검색 속도가 달라집니다.
문제 2 해답. 명령어 문법은 검색 가능하지만, "지금이 그 명령을 쓸 때"라는 판단은 검색할 수 없습니다. 검색은 떠올린 뒤에만 작동합니다. 징후 칸은 바로 그 "떠올림"을 훈련하는 칸이라서 카드의 심장입니다.
문제 3 해답. ① 정찰·탐색에 넣는 것이 자연스럽습니다 — "숨겨진 것을 찾아내는" 활동이니까요. 이렇게 분류해 두면 "처음 보는 서버/페이지에서 뭘 해야 하지?"라는 상황이 곧 ①번 칸을 여는 신호가 됩니다. 분류가 곧 사고의 출발점입니다.
문제 4 해답. 앞으로 만날 CTF 문제와 실전 머신은 같은 기법의 더 복잡한 변형입니다. 분류표가 갱신되지 않으면 Step 105 시점의 실력에 색인이 멈춥니다. 새 기법 추가, 사례 누적, 분화(한 기법이 여러 변형으로 갈라짐)가 일어나야 이 문서가 성장 곡선 그 자체의 기록이 됩니다.
완료 기준 체크리스트
- [ ] 기법 25개 이상이 담긴 분류표 v1을 완성했다
- [ ] 모든 카드에 징후·도구·대표 사례 세 칸이 있다
- [ ] 징후 칸이 "기법 이름의 재진술"이 아니라 상황 묘사다
- [ ] 4분류 각 칸에 3개 이상 배치했다
- [ ] 재풀이 3문제를 분류표만으로 수행하고 기록했다
- [ ] 막힌 재풀이의 징후 칸을 그 자리에서 고쳤다
- [ ] 문서 말미에 갱신 규칙 3줄을 적었다
6. 흔한 실수와 해결
벽 1. 완벽한 분류를 찾다가 진행이 멈춘다
증상: "이 기법은 ②인가 ④인가"를 30분째 고민하고 있습니다.
원인: 분류를 진리 탐구로 착각했습니다. 분류는 색인이지 진리가 아닙니다.
해결: 30초 규칙 — 안 정해지면 양쪽에 다 적고 넘어가세요. Step 105의 완료 기준은 "정확한 분류"가 아니라 "다음에 떠올릴 수 있는 분류"입니다.
벽 2. 징후 칸에 "XX를 쓸 때"라고 쓰게 된다
증상: 카드가 전부 "find를 쓸 때: find를 쓴다" 식입니다.
원인: 문제의 장면이 아니라 기법 자체를 기준으로 쓰는 습관.
해결: 문장을 이렇게 시작하세요 — "화면/힌트에 ___가 보이면". 빈칸에 채워지는 것이 징후입니다. 3-3의 나쁜 예/좋은 예를 다시 보세요.
벽 3. 옛 write-up이 없어 기법이 기억나지 않는다
증상: 분명 풀었는데 뭘 썼는지 모릅니다.
원인: Step 96~104에서 기록 박자(사이클의 ④)가 빠진 구간이 있습니다.
해결: 기억 안 나는 문제는 지금 빨리 다시 풀며 기록을 복구하세요 — 그것이 곧 3-4의 재풀이 후보입니다. 그리고 이 경험 자체가 "기록 없는 발견은 없었던 발견"이라는 교훈의 증거로 문서에 적을 가치가 있습니다.
벽 4. 분류표를 만들었는데 재풀이에서 안 떠오른다
증상: 표를 봐도 문제 앞에서 백지 상태입니다.
원인: 표를 "만드는" 것과 표로 "생각하는" 것은 다릅니다. 카드가 아직 머리에 이사하지 않았습니다.
해결: 정상입니다. 재풀이를 3개가 아니라 5~7개로 늘리세요. 표를 보고 풀기 → 표를 덮고 풀기 순서로 반복하면 카드가 머리로 옮겨갑니다.
벽 5. 문서를 만들고 다시는 열지 않는다
증상: v1이 한 달째 v1입니다.
원인: 갱신 규칙이 없거나, 규칙이 캘린더에 없습니다.
해결: "새 기법 즉시 추가"는 습관으로, "월 1회 분화 점검"은 캘린더 알림으로 고정하세요. 무기고는 쓰는 사람만 커집니다.
7. 정리
오늘의 개념
| 개념 | 한 줄 설명 |
|---|---|
| 기법 카드 | 징후·도구·대표 사례 세 칸의 색인 카드 |
| 징후 | "이 장면을 보면 이 카드를 꺼내라"는 상황 묘사 — 카드의 심장 |
| 4분류 프레임 | 정찰 / 인증·세션 우회 / 권한 상승 / 데이터 처리 |
| 청킹 | 경험을 기법 단위로 묶어 검색 속도를 올리는 인지 전략 |
| 분류는 색인 | 진리가 아니라 찾아내기 위한 장치 — 겹쳐도 된다 |
| 재풀이 | 분류표의 실효성을 검증하는 유일한 시험 |
오늘의 명령어
| 명령·도구 | 하는 일 |
|---|---|
| (새 명령 없음) | 오늘의 도구는 문서와 재풀이 |
| 개인 위키 (Step 89) | 분류표 v1의 저장소 |
| 재풀이용 SSH·브라우저 | 카드의 실효성 검증 장비 |
명령어보다 중요한 감각
워게임의 진짜 수확은 비밀번호 목록이 아니라 패턴을 알아보는 눈입니다. 오늘 만든 표는 그 눈의 지도 초판입니다. 앞으로 새 문제 앞에서 "이건 아까 그 패턴"이라는 문장이 떠오르는 횟수가 여러분의 실력입니다. 그 횟수를 늘리는 방법은 하나뿐 — 분류표를 만들고, 다시 펴고, 고치는 반복입니다. 그리고 이 정리 습관은 워게임을 넘어 갑니다 — 취약점 보고서의 분류, 침해 사고의 공격 기법 분류(실무에서는 MITRE ATT&CK라는 거대한 "기법 분류표"를 씁니다), 공부한 내용의 복습 카드까지, 전부 오늘과 같은 일입니다. 지도는 그리는 날이 아니라 다시 펼치는 날에 값어치가 나옵니다. 캘린더에 갱신일을 적어 두세요.
전부 체크되면 Step 105 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.