Step 250. ★ 중간 점검: 종합 포렌식 문제 독립 해결 + 보고서 — 증명하는 사람이 된다

Step 250. ★ 중간 점검: 종합 포렌식 문제 독립 해결 + 보고서 — 증명하는 사람이 된다

Level 3 — CTF 실전과 공격 스킬 심화 | 난이도 ★★★★☆ | 예상 소요 시간 4시간

전제: Step 240~249(Forensics 트랙 전체 — 디스크·메모리·네트워크·로그·메타데이터·암호화 아티팩트), Step 248(종합 챌린지 5개), Step 249(IR 보고서 6단 구성)를 마쳤다.

  • 준비물: 안 풀어 본 종합 포렌식 문제 1개(아래 2-2의 선정 기준 참고), 작업 일지용 마크다운 파일, 증거 정리용 폴더.
  • ⚠️ 이 챕터의 실습은 내 랩·합법 플랫폼 전용입니다. 허가 없는 시스템에 적용하면 범죄입니다. 연습 문제는 합법 CTF 플랫폼(드림핵, CTF 아카이브 등)에서 고릅니다.
  • 성격 안내: 오늘은 [워게임] 챕터이자 중간 점검입니다. 3번 섹션은 절차와 서식만 제공합니다 — 문제 풀이는 처음부터 끝까지 여러분 혼자의 힘입니다. 외부 플랫폼 문제를 다루므로 이 챕터의 화면은 출력 예시입니다.

Forensics 트랙의 졸업 시험입니다. 포렌식은 "풀었다"가 아니라 "증명했다"가 완성입니다 — 플래그를 찾는 것으로 끝나지 않고, 모든 주장에 증거(명령, 출력, 스크린샷)가 붙은 보고서로 마무리되어야 합니다. 오늘의 완료 조건은 두 개입니다: 미지의 종합 문제를 독립 해결할 것, 그리고 제3자가 재현할 수 있는 보고서를 남길 것.

지금까지의 챕터가 기법 하나하나를 가르쳤다면, 오늘은 그 기법들을 아무도 알려 주지 않는 순서로 스스로 배열하는 훈련입니다. 막히는 것은 실패가 아니라 점검의 일부입니다 — 어디서 막혔는가가 곧 여러분의 진단표입니다.


1. 학습 목표

이 챕터를 끝내면 다음을 할 수 있습니다:

  • 종합 포렌식 문제를 도움 없이 선정하고 착수할 수 있다
  • 분석 전 과정을 작업 일지(시각·도구·발견·가설)로 기록한다
  • 멀티 스테이지 문제에서 기법 사슬(증거 → 기법 → 다음 증거)을 스스로 구성한다
  • 증거 목록과 분석 과정이 분리된 재현 가능한 보고서를 작성한다
  • "제3자 재현 가능성" 기준으로 자기 보고서를 셀프 검증한다

2. 배경 지식 — 오늘의 도구와 개념

오늘의 도구 한눈에 보기

구분 내용
언어·환경 지금까지 배운 포렌식 도구 전부 (binwalk, exiftool, tshark, Volatility, hashcat 등)
오늘의 명령 새 명령은 없습니다 — 있는 도구의 조합이 오늘의 내용입니다
필요한 개념 멀티 스테이지, 기법 사슬, 작업 일지, 재현 가능성, 플레이북
오늘의 산출물 작업 일지 1부 + 분석 보고서 1부 + 개인 포렌식 플레이북 갱신

2-1. 종합 문제의 구조 — 기법이 사슬로 얽힌다

실전형 문제는 기법이 섞여 나옵니다. 고전적인 배열 하나를 예로 들면:

pcap 수신 → 패킷에서 파일 추출 → 추출한 파일이 암호화됨
→ 암호 크래킹(힌트는 메타데이터에) → 열린 문서 안에 플래그

한 증거가 다른 증거의 열쇠인 구조입니다. 각 고리는 이미 배운 기법이지만, "다음 고리가 무엇인지"는 아무도 알려 주지 않습니다. 종합 문제의 난이도는 개별 기법이 아니라 이 연결에서 나옵니다.

2-2. 문제 선정 기준 — 점검이 되려면

중간 점검용 문제는 다음 조건을 만족해야 합니다.

  • 안 풀어 본 것 — 기억으로 푸는 점검은 점검이 아닙니다
  • 멀티 스테이지 — 기법이 최소 2개 이상 연결된 것 (드림핵 Forensics 중급, CTF 아카이브의 종합 문제 등)
  • 솔루션이 존재하는 것 — 최후의 수단입니다. 풀이 후 자기 분석과 대조할 때만 엽니다
  • 혼자 완주 가능한 분량 — 2~4시간. 그 이상 걸리는 문제는 쪼개서 기록합니다

2-3. 작업 일지 — 기록이 곧 분석이다

오늘의 핵심 습관입니다. 시도하는 즉시, 다음 네 칸을 적습니다.

[시각] 도구/명령: (실제로 친 것)
발견: (출력에서 눈에 띈 것 — 출력 자체는 evidence/에 저장)
가설: (이 발견이 시사하는 것)
다음: (다음에 할 일)

"발견 즉시 기록"이 원칙입니다. 나중에 몰아서 쓰는 기록은 기억의 재구성이고, 기억은 미화됩니다 — Step 173에서 배운 그대로입니다. 막혀서 헤맨 30분도 기록입니다. 그 시간이 보고서의 "돌파 과정" 절의 재료입니다.

2-4. 막힘 회귀 체크리스트 — 아직 안 써본 도구

막혔을 때의 회귀 지점을 미리 정해 둡니다. "아직 안 써본 도구" 목록을 훑는 것입니다.

□ 파일인데 이상하다 → file, binwalk, strings
□ 그림/사진이다 → exiftool, zsteg, steghide
□ 소리다 → 스펙트로그램(Audacity), 음성 재생
□ 패킷이다 → tshark 통계부터 (Step 249의 순서)
□ 메모리다 → Volatility imageinfo → pslist → filescan
□ 암호화됐다 → 힌트를 다른 증거에서 찾는다 (열쇠는 다른 고리에)

"이 파일을 여는 비밀번호가 저쪽 증거에 있지 않을까"라는 연결 의심이 종합 문제의 핵심 감각입니다.

2-5. 보고서 구조 — Step 128·173·249의 연장

오늘의 보고서는 네 축입니다.

① 증거 목록     — 받은 파일 전부, 각각의 해시
② 분석 과정     — 증거별로 적용한 기법과 출력 (명령 순서 그대로)
③ 연결 관계     — 어떤 증거가 어떤 증거의 열쇠였는가 (사슬 그림)
④ 결론          — 플래그 또는 사고 재구성 결과

Step 173의 기준을 그대로 물려받습니다 — 모든 주장에 증거가 붙고, 독자가 명령을 따라 하면 같은 결론에 닿습니다.


3. 따라 하기

오늘의 3번 섹션은 풀이가 아니라 절차와 서식입니다. 실제 문제는 여러분이 고르고, 여러분이 풉니다.

3-1. 착수 — 문제 선정과 증거 봉인

문제를 골랐으면 분석 전에 세 가지를 합니다.

mkdir -p step250/evidence step250/notes
cd step250
# 받은 증거 파일을 evidence/에 넣고 해시를 찍는다
sha256sum evidence/* | tee notes/hashes.txt

읽는 법: 해시를 찍는 이유는 두 가지입니다 — 분석 중 원본이 변하지 않았음을 보이는 것, 그리고 보고서에서 "이 해시의 파일"이라고 증거를 지목할 수 있게 하는 것입니다. 이후 모든 분석 출력은 notes/에 파일로 남깁니다 (명령 | tee notes/01-file.txt 식).

3-2. 개시 — 첫 30분의 정찰 서식

문제 파일을 열기 전에 계획을 씁니다. 서식:

# 문제: (이름/출처) — 착수 (날짜 시각)

### 증거 목록과 예상 기법
| 파일 | 해시 앞 8자리 | 겉보기 정체 | 적용할 기법(가설) |
|------|--------------|-------------|-------------------|
| ____ | ____ | ____ | ____ |

### 첫 가설
이 문제는 아마 ____ 유형일 것이다. 근거: ____

읽는 법: "적용할 기법(가설)" 칸이 오늘의 훈련 대상입니다. 틀려도 됩니다 — 틀린 가설이 맞는 가설로 교정되는 과정이 일지에 남는 것, 그것이 독립 분석력의 증거입니다.

3-3. 분석 — 일지를 굴러가게 하는 리듬

분석 중에는 2-3의 네 칸(시각·도구·발견·가설)을 반복합니다. 한 단계가 끝날 때마다 현재 상태를 한 줄로 갱신합니다.

[현재 상태] 확보한 것: ____ / 막힌 것: ____ / 다음 고리 후보: ____

30분 이상 진전이 없으면 2-4의 회귀 체크리스트를 열고 "아직 안 써본 도구"를 하나씩 짚습니다. 그래도 막히면 가설을 거꾸로 묻습니다 — "출제자는 이 증거를 왜 줬을까?"

3-4. 기법 사슬 그리기 — 연결의 시각화

해결이 보이기 시작하면 고리들을 한 장의 사슬로 그립니다.

[challenge.pcap] --tshark 추출--> [secret.zip] --암호 필요-->
[힌트: photo.jpg의 EXIF 코멘트] --크래킹--> [secret.txt] --> 플래그

읽는 법: 이 그림이 보고서의 ③ 연결 관계 절이 됩니다. 화살표마다 "어떤 도구의 어떤 출력"이 근거인지 표시하세요. 화살표에 근거가 없으면 추측입니다.

3-5. 마무리 — 보고서 조립과 셀프 검증

풀이가 끝나면 일지를 보고서로 다듬습니다. 그리고 마지막 질문을 던집니다.

① 이 보고서의 증거 목록과 해시가 실제 파일과 일치하는가?
② ② 분석 과정의 명령을 그대로 치면 같은 출력이 나오는가?
③ 화살표(연결)마다 근거 출력이 붙어 있는가?
④ 결론이 ①~③ 없이도 성립한다고 주장한 부분이 없는가?
   (있으면 그 부분이 증거 없는 주장입니다)
⑤ 이 문제에서 처음 쓴 도구·옵션을 플레이북에 추가했는가?

다섯 질문에 전부 ‘예’이면 제출 가능한 보고서입니다. 하나라도 ‘아니오’면 그 절로 돌아갑니다.


4. 미션과 연습문제

미션 — 종합 포렌식 문제 독립 해결과 보고서 완성

  1. 2-2 기준으로 안 풀어 본 멀티 스테이지 문제를 1개 선정합니다
  2. 3-1~3-2의 서식으로 착수하고, 해시 목록을 남깁니다
  3. 분석 전 과정을 3-3의 일지 형식으로 기록합니다 — 막힌 시간도 포함
  4. 해결 후 3-4의 기법 사슬 그림을 그립니다
  5. 2-5의 네 축으로 보고서를 작성하고, 3-5의 다섯 질문으로 셀프 검증합니다
  6. 이 문제에서 새로 쓴 도구·기법을 개인 포렌식 플레이북에 추가합니다

연습문제

문제 1. "포렌식은 풀었다가 아니라 증명했다가 완성"이라는 말을, 보고서의 어느 요소가 이 차이를 만드는지와 함께 설명해 보세요.

문제 2. 작업 일지를 "나중에 몰아서" 쓰면 안 되는 이유를 두 가지 들어 보세요.

문제 3. 멀티 스테이지 문제에서 "연결 의심"이란 무엇이며, 왜 종합 문제의 핵심 감각인지 설명해 보세요.

문제 4. 중간 점검 문제에 "솔루션이 존재하는 것"을 고르라는 이유와, 솔루션의 올바른 사용 시점을 설명해 보세요.


5. 모범 답안과 완료 기준

미션 모범 답안

완성된 산출물의 형태 예시입니다 (문제마다 내용은 다릅니다 — 형태를 기준으로 삼으세요).

step250/
├── evidence/            # 원본 증거 (손대지 않음)
├── notes/
│   ├── hashes.txt       # sha256 목록 — 착수 시 생성
│   ├── 01-file.txt      # 각 단계의 명령+출력 (tee로 저장)
│   ├── 02-binwalk.txt
│   └── journal.md       # 시각·도구·발견·가설 일지
└── report.md            # ①증거 목록 ②분석 과정 ③연결 관계 ④결론

보고서의 ③ 연결 관계 절 예시:

challenge.pcap -(tshark: ftp-data 추출)-> secret.zip
  -(암호 필요 → 다른 증거 탐색)-> cover.jpg
cover.jpg -(exiftool: Comment 필드 "try the year we met")->
  암호 후보 4자리 -> (zip2john + john: 4자리 숫자 규칙)->
  secret.txt -> 플래그 확인

검증하는 법: ① sha256sum -c notes/hashes.txt가 전부 OK인가. ② 사슬의 화살표마다 괄호 안의 근거(도구+발견)가 있는가. ③ 일지에 막힌 구간과 돌파가 최소 1건 있는가. ④ 플레이북에 추가된 항목이 있는가. 전부 ‘예’이면 완성입니다. 솔루션을 열었다면, 자기 풀이와 다른 고리가 있었는지 비교 문단을 보고서 끝에 붙이세요 — 그것도 학습의 산출물입니다.

연습문제 해답

문제 1 해답. "풀었다"는 플래그 문자열 하나로 증명되지만, "증명했다"는 그 플래그에 이르는 모든 주장에 증거가 붙은 상태입니다. 이 차이를 만드는 요소는 ① 증거 목록(해시 포함), ② 재현 가능한 명령과 출력, ③ 연결의 근거입니다. 플래그는 결과이고, 증거의 사슬은 설득력입니다 — 실무에서 보고서를 읽는 사람은 플래그가 아니라 사슬을 검토합니다.

문제 2 해답. 첫째, 기억은 왜곡됩니다 — 40분 헤맨 구간이 5분으로 줄어드는 식입니다 (Step 173의 복기 원리). 둘째, 중간 발견물(임시 파일, 중간 출력)은 시간이 지나면 지워지거나 덮입니다 — 즉시 기록만이 그 자리의 증거를 보존합니다. 일지는 분석의 부산물이 아니라 분석의 일부입니다.

문제 3 해답. 한 증거를 여는 열쇠가 다른 증거에 있을 것이라고 의심하는 습관입니다 — "이 zip의 비밀번호가 저 jpg의 메타데이터에 있지 않을까". 종합 문제는 개별 기법이 아니라 이 연결을 찾는 능력을 측정하도록 설계됩니다. 단일 기법 문제의 도구 지식은 이미 트랙에서 검증됐고, 오늘 검증하는 것은 배열의 능력입니다.

문제 4 해답. 중간 점검의 목적은 측정이지 좌절이 아닙니다. 솔루션이 있어야 정말 풀 수 없는 문제(출제 오류, 환경 의존)에서 영원히 막히는 사고를 피할 수 있습니다. 사용 시점은 "완주 후 대조"가 원칙이고, 부득이 열었다면 ① 몇 시간을 혼자 시도했는지 일지에 적고, ② 힌트의 최소 단위(다음 고리 하나)만 보고, ③ 나머지는 다시 혼자 풉니다. 그리고 보고서에 "솔루션 참고 구간"을 정직하게 표시합니다.

완료 기준 체크리스트

  • [ ] 안 풀어 본 멀티 스테이지 문제를 선정했다
  • [ ] 증거 해시를 착수 시점에 기록했다
  • [ ] 작업 일지가 시각·도구·발견·가설 형식으로 채워져 있다
  • [ ] 막힌 구간과 돌파 과정이 일지에 있다
  • [ ] 기법 사슬 그림의 화살표마다 근거가 있다
  • [ ] 보고서 네 축(증거·과정·연결·결론)이 완성됐다
  • [ ] 셀프 검증 다섯 질문에 전부 ‘예’로 답했다
  • [ ] 새로 쓴 도구를 플레이북에 추가했다

6. 흔한 실수와 해결

벽 1. "어떤 문제를 골라야 할지" 한 시간째 고르고만 있다

증상: 문제 목록만 계속 훑고 착수를 못 합니다.
원인: 완벽한 문제를 고르려는 마음입니다.
해결: 2-2 기준에 맞는 첫 번째 문제를 고르세요. 문제 선택의 품질보다 완주의 품질이 점수를 만듭니다. 고르는 데 15분이 넘으면 타이머를 끄고 그 자리에 있는 것으로 시작합니다.

벽 2. 중간 산출물을 덮어써서 사슬이 끊긴다

증상: 추출한 파일을 같은 이름으로 다시 추출해 원본을 잃었습니다.
원인: 작업 폴더 규칙의 부재입니다.
해결: 단계마다 새 파일명(01_extract.zip, 02_cracked.txt)을 쓰세요. 원본 증거 폴더는 쓰기 금지입니다. 해시 목록(notes/hashes.txt)으로 원본 무결성은 언제든 검증할 수 있습니다.

벽 3. 일지를 미루다 "이거 어떻게 찾았더라"가 된다

증상: 풀이는 끝났는데 보고서를 쓸 재료가 없습니다.
원인: 기록을 "나중에"로 미룬 것입니다 — 2-3의 경고 그대로입니다.
해결: 이번에는 터미널 history와 남은 출력 파일로 재구성할 수 있는 부분만 정직하게 쓰고, 재구성 불가능한 부분은 [기록 없음 — 추정]으로 표시하세요. 그리고 다음 문제부터는 tee를 기본값으로 둡니다. 빈칸을 표시하는 정직함도 점검의 산출물입니다.

벽 4. 보고서가 성공 경로만 담고 있다

증상: 두 시간 헤맨 기록이 보고서에 없습니다.
원인: 실패를 부끄러워하는 마음입니다.
해결: Step 173의 문장을 기억하세요 — 막힘과 돌파의 기록이 독자의 함정 회피 문장이고, 보고서의 신뢰 그 자체입니다. "처음엔 X라고 가설을 세웠으나 Y 출력으로 기각"이라는 문장이 있는 보고서가, 없는 보고서보다 믿을 수 있습니다.

벽 5. 솔루션을 보고 나서 "내가 다 푼 것"으로 기록한다

증상: 보고서에 참고 사실이 없는데 일지에는 수십 시간의 공백이 있습니다.
원인: 점검을 평가로 착각하는 마음입니다 — 점검은 자기 진단 도구이지 남에게 보이는 성적표가 아닙니다.
해결: 참고 구간을 표시하는 것이 오히려 유리합니다. "여기까지 독립, 여기서 힌트"라는 경계가 정확한 자기 실력 지도를 만듭니다. 지도가 정확해야 다음 훈련이 정해집니다.


7. 정리

오늘의 개념

개념 한 줄 설명
멀티 스테이지 기법 여러 개가 사슬로 얽힌 문제 구조
기법 사슬 증거 → 기법 → 다음 증거의 연결 그림
작업 일지 시각·도구·발견·가설의 즉시 기록
연결 의심 열쇠는 다른 고리에 있다고 의심하는 습관
재현 가능성 제3자가 명령을 따라 하면 같은 결론에 닿는 상태
플레이북 내가 쓴 도구·기법의 누적 문서

오늘의 명령어·도구

도구 하는 일
sha256sum evidence/* 증거 봉인 — 착수의 첫 명령
명령 | tee notes/NN-이름.txt 출력을 화면과 파일에 동시에
sha256sum -c notes/hashes.txt 원본 무결성 검증
회귀 체크리스트(2-4) 막혔을 때 안 써본 도구를 짚는 표
셀프 검증 5문(3-5) 제출 전 마지막 관문

명령어보다 중요한 감각

이번 점검이 측정한 것은 도구 지식이 아니라 배열의 능력입니다 — 아무도 순서를 알려 주지 않을 때 스스로 사슬을 만드는 힘. 그리고 보고서가 가르쳐 준 것: 포렌식에서 실력은 "아는 것"이 아니라 "증명할 수 있는 것"입니다. 오늘 완성한 보고서는 여러분의 첫 번째 독립 분석 증명서입니다. 이 문서가 있으면, 다음 구간(실전 머신 해킹)에서도 같은 질문을 스스로에게 던질 수 있습니다 — "나는 지금 무엇을 증명하고 있는가?"


전부 체크되면 Step 250 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.