Step 270. HTB Medium 1대 (누적 5) + Medium 졸업 정리

Step 270. HTB Medium 1대 (누적 5) + Medium 졸업 정리

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

전제: HTB Medium 4대를 root까지 풀었다(Step 265~269). 기법 분류표(Step 105)와 자산 목록 습관(Step 269)이 있다.

  • 준비물: HTB 계정과 VPN 연결, 개인 위키, 지금까지의 Medium 공략 기록 4건.
  • ⚠️ 이 챕터의 실습은 내 랩·합법 플랫폼 전용입니다. 허가 없는 시스템에 적용하면 범죄입니다. Hack The Box(hackthebox.com)는 운영자가 공격 연습용으로 공식 개방한 합법 학습 플랫폼입니다 — HTB 머신 외에는 오늘의 기술을 쓰지 않습니다.
  • 화면 안내: HTB 접속 화면과 머신 공략 장면은 전부 화면 예시입니다. 실제 접속과 풀이는 여러분이 직접 합니다.
  • 성격 안내: 오늘은 반은 전투(다섯 번째 Medium), 반은 정리(졸업 문서)입니다.

다섯 대의 Medium 머신은 "중급 실력"의 방증입니다. 하지만 푼 것과 정리한 것은 다릅니다 — 다섯 번의 공략이 머릿속에 흩어져 있으면, 그것은 경험 다섯 번이지 실력이 아닙니다. 오늘은 마지막 한 대를 풀고, 다섯 대 전체를 통째로 복기해 "Medium 패턴"을 추출합니다.

이 정리는 다음 구간(Hard)의 주춧돌입니다. Hard에서 살아남는 사람은 기술이 더 많은 사람이 아니라, 자기 패턴과 약점을 정확히 아는 사람입니다.


1. 학습 목표

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

  • 다섯 번째 Medium 머신을 독립 공략한다
  • 5대 공략 기록을 종합 표(입구·상승·소요 시간·교훈)로 정리한다
  • 빈도 분석으로 "Medium에서 가장 많이 나온 패턴"을 순위 매긴다
  • "운으로 푼 머신"과 "실력으로 푼 머신"을 구분해 자기 평가의 과신을 막는다
  • 미래의 나와 팀원을 위한 "Medium 공략 가이드" 한 장을 완성한다

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

오늘의 도구 한눈에 보기

구분 내용
언어·환경 HTB 플랫폼(VPN) + 개인 위키(마크다운)
오늘의 명령 새 명령 없음 — 지금까지의 루틴 총동원 + 정리용 표
필요한 개념 패턴 추출, 빈도 분석, 운과 실력의 분리, 졸업 기준
오늘의 산출물 누적 5대 root + Medium_종합_분석.md + Medium_공략_가이드.md

2-1. 왜 다섯 대째에 정리하는가

세 가지 이유가 있습니다. 첫째, 표본의 크기 — 두세 대로는 우연이 패턴으로 오인되지만, 다섯 대면 반복되는 구조가 보입니다. 둘째, 기억의 신선도 — 더 늦으면 첫 머신의 막힘이 흐릿해집니다. 셋째, 타이밍 — Hard로 넘어가기 직전이 "내 무기고의 재고 조사"를 하기 가장 좋은 시점입니다.

Step 105에서 Bandit과 Natas를 "기법"으로 재조립했던 것을 기억하세요. 오늘은 같은 작업을 실전 머신 단위로 합니다 — 그때의 기법 카드가 오늘 종합 표의 재료입니다.

2-2. 종합 표의 다섯 열

적는 것 왜 필요한가
머신 이름, OS 패턴을 OS별로 나눠 볼 수 있게
입구 벡터 최초 침투 경로(웹 취약점, 자격증명 재사용 등) "Medium의 문은 주로 어디인가"
상승 기법 user → root의 핵심 기법 "Medium의 계단은 주로 무엇인가"
소요 시간 정찰/침투/상승 각각 시간을 어디에 쓰는지가 약점 지도
핵심 교훈 한 문장 다음 머신에서 재사용할 문장

"소요 시간" 열이 의외로 가장 중요합니다. 기술 부족은 시간 사용으로 드러납니다 — 열거에 70%를 쓴 사람은 열거 체계가 없는 것이고, 상승에서 3시간을 쓴 사람은 privesc 체크리스트를 다시 봐야 합니다.

2-3. 운과 실력의 분리

다섯 대를 모두 풀었다는 사실만으로 과신하면 Hard에서 크게 다칩니다. 각 머신에 솔직한 등급을 매기세요.

  • 실력으로 푼 머신: 막힐 때마다 내 체계(자산 목록, 체크리스트)가 다음 수를 알려 줬다
  • 운이 좋았던 머신: 우연히 처음 시도한 것이 통했거나, write-up을 엿봤거나, 남의 힌트가 결정적이었다

운으로 푼 머신은 "풀지 않은 것"이 아닙니다 — 다만 그 머신의 패턴은 내 것이 아직 아니므로, 종합 표에서 따로 표시합니다. 졸업의 기준은 "5대 클리어"가 아니라 "5대 중 몇 대를 내 체계로 풀었는가"입니다.

2-4. 졸업 정리 문서의 독자는 미래의 나와 팀원

오늘 만드는 Medium_공략 가이드.md는 블로그 글이 아니라 작전 매뉴얼입니다. 독자는 두 명 — 3개월 뒤 Hard에서 막혀서 Medium으로 되돌아와 복습하는 나, 그리고 이 책의 뒤를 따라오는 동료. 이 독자들에게 필요한 것은 미사여구가 아니라 "Medium 머신을 받으면 처음 30분에 뭘 하는가"와 "어디서 막히면 어디로 돌아가는가"입니다.


3. 따라 하기

3-1. 다섯 번째 Medium 공략

먼저 전투입니다. 누적 5대째가 될 머신을 고르세요. 이번에는 의식적으로 지금까지의 루틴을 "실험"처럼 적용합니다 — Step 268의 열거 깊이, Step 269의 자산 목록과 체인 사고를 처음부터 끝까지 의식하며 진행합니다.

공략 중에는 시간 로그를 남기세요 (화면 예시):

[14:00] 머신 배포, nmap 시작
[14:25] 웹 열거 — gobuster, vhost 확인
[15:10] 입구 발견 — 파일 업로드 우회로 웹셸
[15:40] user.txt 확보
[17:30] 권한 상승 — SUID 바이너리(GTFOBins)로 root

이 로그의 시간 차이가 3-2 종합 표의 "소요 시간" 열이 됩니다. 기록 없이 풀면 정리할 재료가 없습니다.

3-2. 5대 종합 표 작성

root를 잡았으면(또는 타임박스 종료) 위키에 Medium_종합_분석.md를 만들고 다섯 대를 한 표에 놓습니다. 아래는 형식 예시입니다 — 여러분의 실제 기록으로 채우세요 (표 내용은 화면 예시).

머신 OS 입구 벡터 상승 기법 소요 시간 핵심 교훈
M-1 Linux 웹 디렉터리의 백업 파일 → 자격증명 sudo 스크립트 악용 6시간(열거 4) 열거를 넓게 먼저
M-2 Windows 기본 자격증명 → SMB 접속 AlwaysInstallElevated 4시간 기본 계정부터 대입
M-3 Linux 업로드 우회 → 웹셸 SUID + GTFOBins 5시간(상승 3) GTFOBins 즐겨찾기
M-4 Linux 정보 노출 → 로그인 → LFI 체인 커널 취약점 7시간 체인 사고(Step 269)
M-5 Linux vhost 열거 → 신규 도메인 cron 쓰기 가능 3시간 vhost를 빼먹지 말 것

읽는 법: 표를 완성하는 순간 이미 분석의 절반이 끝납니다 — 다섯 행을 나란히 놓는 것 자체가 패턴을 드러내니까요.

채우다 보면 빈칸이 나올 수 있습니다 — 시간 로그가 없는 머신의 "소요 시간" 같은 칸입니다. 그런 칸은 억지로 추정하지 말고 "기록 없음"이라고 적으세요. 빈칸을 정직하게 표시해 두어야 다음 분석(3-4)이 그 사실을 재료로 씁니다.

3-3. 빈도 분석 — 패턴 순위 매기기

표를 보고 질문 세 개에 답합니다.

질문 1: 입구는 주로 어디였나? 위 예시라면 웹 관련(백업 파일, 업로드, LFI, vhost)이 5회 중 4회입니다. 여러분의 표에서도 아마 웹이 압도적일 것입니다 — Medium Linux 머신의 입구 대부분이 웹이라는 것은 널리 알려진 경향이기도 합니다.

질문 2: 상승은 주로 무엇이었나? sudo 설정, SUID, cron, 커널 취약점, 서비스 오설정. 어느 유형이 반복됐는지 세어 보세요. 반복된 유형은 "Medium 상승의 기본기" — 완전히 몸에 읽혀 있어야 합니다.

질문 3: 시간은 어디에 쓰였나? 다섯 대의 시간 로그를 합산해 비율을 냅니다.

정찰·열거:  12시간 (48%)
침투:        8시간 (32%)
권한 상승:   5시간 (20%)

이 비율이 곧 여러분의 약점 지도입니다. 열거 비율이 50%를 넘으면 열거 체계를 정비할 시간이고, 상승 비율이 높으면 Step 259~260의 체크리스트 복습이 우선입니다.

3-4. 약점 갱신 — 아직 느린 단계와 원인

Step 105에서 만든 기법 분류표와 오늘의 종합 표를 겹쳐 보세요. 질문은 세 개입니다.

  1. 가장 시간을 뺏은 단계는 무엇인가? (빈도 분석의 질문 3)
  2. 그 단계에서 느린 원인은 기술 부족인가, 절차 부재인가? — 기술 부족은 "몰라서", 절차 부재는 "알지만 빼먹어서"입니다. 처방이 다릅니다.
  3. 그 약점을 메울 구체적 동작 하나는 무엇인가? — "열거를 잘하자"가 아니라 "웹 머신이면 첫 30분에 vhost 스캔을 필수 항목으로"처럼 동작으로 적습니다.

이 세 답을 종합 표 아래에 "약점 지도"로 적습니다. 이 문서가 Hard 도전(Step 273~)에서 여러분의 출발점입니다.

3-5. Medium 공략 가이드 한 장

마지막 산출물입니다. 위키에 Medium_공략_가이드.md를 만들고 아래 뼈대를 채우세요 — 여러분의 표와 약점에서 나온 문장으로.

# Medium 공략 가이드 (v1)

## 첫 30분 루틴
- nmap -sV -sC → 전체 포트 스캔을 백그라운드로
- 웹이 보이면: 기술 스택 확인 → 디렉터리 스캔 → vhost 스캔
- 자산 목록 문서를 처음부터 열어 둔다

## 입구 우선순위 (내 5대 빈도 순)
1. 웹 — 백업 파일, 업로드, LFI/RFI, 인젝션
2. 자격증명 — 기본값, 재사용, 노출 파일
3. (여러분의 순위로 갱신)

## 상승 루틴
- Linux: sudo -l → SUID → cron → 쓰기 가능 파일 → 커널
- Windows: winPEAS → 서비스 권한 → 레지스트리 → 토큰

## 막혔을 때
- 30분 정체 → 자산 목록 × 미시도 표면 곱하기 (Step 269)
- 같은 가설 반복 금지 → 열거로 회귀
- 같은 가설 반복 금지 → 열거로 회귀

## 내 약점과 주의
- (3-4의 답을 여기에)

왜 한 장인가: 두 장이면 안 읽게 됩니다. 전투 중에 펼치는 문서는 한 화면이어야 합니다. 자세한 것은 각 항목에서 내 write-up으로 링크를 거세요.

3-6. 졸업 선언 전의 자기 점검

가이드까지 완성했다면 마지막 질문 — "이 다섯 대 중 실력으로 푼 머신이 몇 대인가?"

  • 4~5대: Medium 졸업을 선언해도 됩니다. Step 273의 Hard 도전으로 진행하세요.
  • 2~3대: 졸업은 하되, 운으로 푼 머신의 유형(입구 또는 상승)을 한 대 더 풀어 보강하는 것을 권합니다.
  • 0~1대: 솔직함이 필요합니다. write-up 없이 Medium을 1~2대 더 풀고 다시 이 정리를 하세요. 늦는 것이 아니라 빠르게 가는 길입니다.

4. 미션과 연습문제

미션 — Medium 졸업 패키지

  1. HTB Medium 머신 1대(누적 5)를 시간 로그와 함께 공략한다
  2. Medium_종합_분석.md에 5대 종합 표와 빈도 분석(입구·상승·시간)을 완성한다
  3. 약점 지도(가장 느린 단계, 원인, 처방 동작)를 갱신한다
  4. Medium_공략_가이드.md 한 장을 완성하고 각 항목에 내 write-up 링크를 건다
  5. 실력/운 구분을 표시하고 졸업 여부를 스스로 판정한다

연습문제

문제 1. 두세 대가 아니라 다섯 대째에 패턴을 추출하는 이유를 "표본"이라는 단어로 설명해 보세요.

문제 2. "소요 시간" 열이 기술 부족을 드러내는 원리를 설명해 보세요.

문제 3. "운으로 푼 머신"을 표에 따로 표시해야 하는 이유를 졸업 기준과 연결해 말해 보세요.

문제 4. 약점의 원인이 "기술 부족"인 경우와 "절차 부재"인 경우의 처방 차이를 예를 들어 설명해 보세요.


5. 모범 답안과 완료 기준

미션 모범 답안

3-2의 표 형식이 뼈대입니다. 다섯 행이 실제 기록으로 채워지고, 빈도 분석의 세 질문(입구·상승·시간)에 대한 답이 문장으로 있어야 합니다. 가이드는 한 화면 분량, 각 항목이 동작으로 적혀 있어야 합니다.

검증하는 법: ① 종합 표의 다섯 열이 전부 채워졌는가. ② 빈도 분석에 숫자가 있는가("웹이 많았다"가 아니라 "5회 중 4회"). ③ 약점 지도의 처방이 동작으로 적혔는가. ④ 가이드의 각 항목에서 내 write-up으로 링크가 걸렸는가. ⑤ 실력/운 구분이 표시됐는가.

연습문제 해답

문제 1 해답. 표본이 작으면 우연이 패턴으로 오인됩니다. 두 대 모두 웹 입구였다고 해도 우연일 수 있지만, 다섯 대 중 네 대가 웹 입구라면 경향으로 읽을 수 있습니다. 패턴 추출은 반복되는 구조를 잡는 작업이므로, 구조가 드러날 만큼의 표본(다섯 대)이 필요합니다.

문제 2 해답. 기술이 있는 단계는 절차대로 빠르게 지나가고, 없는 단계는 시행착오로 시간을 소모합니다. 따라서 각 단계에 쓴 시간의 비율이 곧 기술 수준의 지도가 됩니다 — 열거에 48%를 썼다면 그 단계의 체계가 가장 먼저 손봐야 할 곳입니다.

문제 3 해답. 졸업 기준은 "클리어 수"가 아니라 "내 체계로 푼 수"이기 때문입니다. 우연히 통한 입구나 남의 힌트로 넘긴 상승은 다음 머신에서 재현되지 않습니다. 구분 표시가 없으면 5대 클리어라는 숫자만 남아 과신으로 이어지고, Hard에서 그 과신의 대가를 치릅니다.

문제 4 해답. 기술 부족("몰라서")은 학습으로 메웁니다 — 예: 커널 취약점 판별을 몰랐다면 관련 개념을 공부하고 연습 머신을 풉니다. 절차 부재("알지만 빼먹어서")는 체크리스트로 메웁니다 — 예: vhost 스캔을 알면서도 빼먹었다면 첫 30분 루틴의 필수 항목으로 박아 넣습니다. 전자를 후자로 오진하면 아는 것을 또 공부하는 낭비가 생깁니다.

완료 기준 체크리스트

  • [ ] 다섯 번째 Medium 머신을 시간 로그와 함께 공략했다
  • [ ] 5대 종합 표(머신·입구·상승·시간·교훈)를 완성했다
  • [ ] 빈도 분석으로 입구·상승·시간 사용의 순위를 냈다
  • [ ] 약점 지도(느린 단계, 원인, 처방 동작)를 갱신했다
  • [ ] 실력으로 푼 머신과 운으로 푼 머신을 구분했다
  • [ ] Medium 공략 가이드 한 장을 완성하고 write-up 링크를 걸었다
  • [ ] 졸업 여부를 스스로 판정하고 다음 행동을 정했다

6. 흔한 실수와 해결

벽 1. 다섯 번째 머신에서 이틀째 막힌다

증상: 루틴을 다 돌렸는데 입구가 안 보입니다.
원인: Medium 후반부는 "열거를 더 깊게"가 답인 경우가 많습니다 — 첫 스캔에 없던 것이 전체 포트나 UDP, vhost에 있습니다.
해결: Step 268의 열거 깊이 체크리스트로 회귀하세요. nmap -p- 전체 포트, UDP 상위 100, 대형 워드리스트, vhost/서브도메인 — 이 넷 중 하나가 입구를 숨기고 있는 것이 Medium의 상수입니다.

벽 2. 종합 표를 채우려니 첫 머신 기억이 없다

증상: M-1의 입구가 무엇이었는지 모르겠습니다.
원인: 그때 시간 로그와 자산 목록을 안 남겼습니다. 기록 없는 전투는 복기 불가능입니다.
해결: 그 머신의 write-up(있다면)이나 HTB 프로필의 진행 기록을 뒤져 최대한 복원하세요. 복원이 안 되는 칸은 "기록 없음"이라고 적으세요 — 그 빈칸 자체가 오늘의 가장 값진 교훈("기록이 실력이다")입니다.

벽 3. 5대를 다 풀었는데도 "내가 잘하는 건가" 확신이 없다

증상: 클리어했지만 불안합니다.
원인: 정상적인 감각이고, 오히려 좋은 신호입니다 — 메타인지가 작동하고 있다는 뜻입니다.
해결: 그 불안의 정체를 3-6의 자기 점검으로 수치화하세요. "실력으로 푼 머신 4/5"라는 문장은 불안을 계획으로 바꿉니다.
벽 4. 가이드가 세 장, 네 장으로 불어난다

증상: 정리하다 보니 모든 기법을 다 넣고 싶어집니다.
원인: 매뉴얼을 백과사전으로 만들고 있습니다. 전투 중 펼치는 문서는 길면 죽습니다.
해결: 한 화면 규칙을 지키세요. 잘라낸 내용은 삭제가 아니라 링크입니다 — 기법 상세는 Step 105의 분류표와 각 write-up에 이미 있습니다. 가이드는 목차와 판단 기준만 담습니다.

벽 5. 빈도 분석이 "제 취향"이 되어 버린다

증상: "웹을 좋아해서 웹만 깊게 했다"는 사실을 "Medium은 웹이 많다"는 경향으로 읽고 있습니다.
원인: 표본 다섯 개에는 여러분의 선택 편향이 섞여 있습니다.
해결: 커뮤니티의 공개 write-up 몇 개를 훑어 빈도를 교차 확인하세요. 내 표의 순위와 커뮤니티의 경향이 다르면, 그 차이가 곧 "내가 아직 안 만나본 유형" 목록입니다.

벽 6. 정리를 시작하니 "남에게 보여 줄 만한가"가 신경 쓰인다

증상: 가이드를 쓰다가 문장을 고치느라 진도가 안 나갑니다.
원인: 독자를 넓게 잡았습니다. 이 문서의 독자는 미래의 나와 동료 — 이미 맥락을 아는 사람들입니다.
해결: Step 89의 원칙 그대로, 검색 가능성만 통과하면 됩니다. 문장이 투박해도 "6개월 뒤 내가 찾아서 쓸 수 있는가"가 유일한 기준입니다. 공개용으로 다듬는 것은 나중의, 별도의 작업입니다.


7. 정리

오늘의 개념

개념 한 줄 설명
패턴 추출 개별 공략을 표로 나란히 놓아 반복 구조를 찾는 작업. 다섯 대가 최소 표본
종합 표 머신·입구·상승·소요 시간·교훈의 다섯 열. 나란히 놓는 것 자체가 분석
빈도 분석 입구·상승·시간 사용의 순위. 시간 비율은 곧 약점 지도
운과 실력의 분리 졸업 기준은 클리어 수가 아니라 "내 체계로 푼 수"
약점 지도 가장 느린 단계 + 원인(기술/절차) + 처방 동작. Hard의 출발점
한 장 가이드 전투 중 펼치는 작전 매뉴얼. 상세는 링크로, 본문은 판단 기준만

오늘의 도구

도구·문서 용도
시간 로그 공략 중 단계별 시각 기록 — 종합 표의 "소요 시간" 열 재료
Medium_종합_분석.md 5대 표 + 빈도 분석 + 약점 지도
Medium_공략_가이드.md 첫 30분 루틴·입구 우선순위·상승 루틴·막힘 대처를 담은 한 장
Step 105 기법 분류표 오늘의 정리와 겹쳐 볼 이전 무기고
Step 259~260 privesc 체크리스트 상승 단계가 약점일 때의 복습처

명령어보다 중요한 감각

정리는 풀이의 뒤처리가 아니라 실력이 생기는 장소입니다. 다섯 대를 풀고 그냥 지나간 사람은 경험을 다섯 번 했고, 표로 정리한 사람은 패턴을 하나 얻었습니다. 경험은 새 머신 앞에서 매번 처음부터 시작하지만, 패턴은 시작 지점을 앞당깁니다. 그리고 하나 더 — 오늘의 "운과 실력 분리" 습관은 보안을 넘어 모든 기술 학습의 자세입니다. 스스로를 속이지 않는 사람의 성장 곡선은 느려 보이다가 어느 순간 가파르게 치고 올라갑니다.


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