Step 310. 모의시험 실패 패턴 분석과 보완 — 못 푼 머신은 세 종류다

Step 310. 모의시험 실패 패턴 분석과 보완 — 못 푼 머신은 세 종류다

Level 4 — OSCP 준비와 응시 | 난이도 ★★★☆☆ | 예상 소요 시간 2일 (분석 반나절 + 보완 학습과 재공략 1.5일)

전제: Step 309의 첫 24시간 모의시험 완주와 종료 리포트.

  • 준비물: 첫 모의시험의 랩 로그와 시간 사용 분석, 미해결 머신 목록, 각 머신의 공식 워크스루(모의시험이 끝난 뒤에만 열람), 파이썬 3(분석 도구). 이 챕터의 분석 데이터 장면은 출력 예시입니다.
  • ⚠️ 이 챕터의 실습은 내 랩·합법 플랫폼 전용입니다. 허가 없는 시스템에 적용하면 범죄입니다. 워크스루 열람과 재공략도 모의시험이 완전히 종료된 뒤, 같은 합법 플랫폼 안에서만 수행합니다.
  • 이 챕터는 개념 챕터입니다 — 새 기법이 아니라, 실패를 처방 가능한 단위로 자르는 분석 방법론을 배웁니다.

모의시험이 끝나면 대부분은 점수만 봅니다. "50점이네, 20점 모자라네" — 그리고 워크스루를 읽고 "아, 그거였네" 하고 넘어갑니다. 이것이 첫 모의시험의 가장 흔한 낭비입니다. 못 푼 머신은 전부 같은 "못 푼 것"이 아니기 때문입니다.

미해결 머신은 최소 세 종류의 실패로 나뉘고, 치료법이 전부 다릅니다. 기술 부재는 학습으로, 열거 누락은 체크리스트로, 시간 관리 실패는 전략 수정으로 고칩니다. 섞어서 "더 열심히"로 치료하면 다음 모의시험에서 같은 곳에서 무너집니다. 오늘은 칼로 자르는 날입니다.


1. 학습 목표

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

  • 미해결 머신을 실패 유형(기술 부재/열거 누락/시간 관리/체력 붕괴/보고서 미비)으로 분류한다
  • 워크스루 대조로 "내가 멈춘 지점"과 "정답 경로"의 거리를 좌표화한다
  • 유형별 보완책(학습+재현 / 체크리스트 추가 / 배분 규칙 수정)을 실제 산출물로 완성한다
  • 분석 도구로 실패 유형 분포를 집계해 1순위 보완 대상을 확정한다
  • 미해결 머신 전부를 혼자 힘으로 재공략해 "구경한 지식"을 "손의 지식"으로 바꾼다

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

오늘의 도구 한눈에 보기

구분 내용
언어·환경 파이썬 3(실패 유형 분석기 fail_analyzer.py), 워크스루 문서, 막힘 체크리스트 파일
오늘의 명령 python fail_analyzer.py demo / python fail_analyzer.py analyze fails.csv
필요한 개념 실패 유형 5분류, 멈춤 좌표, 워크스루 대조법, 유형별 처방의 분리
오늘의 산출물 유형별 실패 분석 문서 1부 + 보완 학습 목록 + 갱신된 막힘 체크리스트

2-1. 실패의 5분류 — 같은 0점이 아니다

미해결 머신을 워크스루와 대조하면, 실패는 다섯 유형 중 하나로 귀결됩니다.

유형 정의 진단 문장 처방
① 기술 부재 그 취약점/기법 자체를 몰랐다 "정답 경로를 읽어도 개념이 처음이다" 학습 + 랩 재현
② 열거 누락 알고 있었는데 확인을 안 했다 "거길 보기만 했어도 풀렸다" 막힘 체크리스트에 추가
③ 시간 관리 풀 수 있었는데 시간이 없었다 "착수도 못 했다 / 묶여 있었다" 배분 규칙 수정
④ 체력 붕괴 특정 시간대에 판단이 무너졌다 "새벽에 한 결정이 전부 틀렸다" 수면·식사 계획 고정
⑤ 보고서 미비 풀었는데 증거/문서가 없다 "찍은 줄 알았는데 없다" 실시간 수집 습관화

분류의 기준은 워크스루 대조입니다. 정답 경로를 읽었을 때 "몰랐다"면 ①, "알았는데 안 봤다"면 ②, "볼 시간이 없었다"면 ③입니다. 이 구분이 왜 중요한가 하면 — ②인 사람이 ①으로 착각해 새 기법을 공부하는 것은, 알고도 안 쓰는 병을 약을 더 먹어 고치려는 것과 같습니다.

2-2. 멈춤 좌표 — "못 풀었다"는 분석이 아니다

분석의 단위는 머신이 아니라 지점입니다. "독립B를 못 풀었다"는 분석이 아니라, "독립B의 웹 로그인에서 2시간 정지했고, 정답은 숨은 /backup 경로였다"가 분석입니다.

멈춤 좌표 기록 양식 (머신당):
- 머신: 독립B
- 멈춘 지점: 웹 로그인 폼 — 브루트포스와 SQLi를 시도하고 정지 (150분 소요)
- 정답 경로: 디렉터리 열거 → /backup/index.php.bak → 소스 내 하드코딩 자격증명
- 분기점: gobuster 결과에서 .bak를 보고도 "백업 파일은 설마" 하고 넘김
- 유형: ② 열거 누락

핵심 칸은 분기점입니다 — 결과(못 풂)가 아니라 판단("설마" 하고 넘김)이 실패의 본체입니다. 분기점이 적혀 있어야 체크리스트가 "뭘 확인해라"를 넘어 "어떤 마음일 때 확인해라"까지 닿습니다.

2-3. 유형별 처방 — 치료법이 다르다는 것의 실천

① 기술 부재의 처방은 학습이되, 조건이 하나 붙습니다 — 반드시 랩에서 재현합니다. 읽기만 하면 다음에 또 막힙니다. AS-REP 로스팅을 몰라서 막혔다면, 문서를 읽고 끝이 아니라 랩 도메인에서 실제로 티켓을 뽑아 크랙까지 해야 합니다. 손으로 한 번 — 그것이 "아는 것"과 "구경한 것"의 경계입니다.

② 열거 누락의 처방은 막힘 체크리스트에의 추가입니다. 형식은 조건-행동입니다:

추가 예시:
- "웹 서비스 발견 시" → "백업/소스 확장자 스캔 (.bak .old .zip .git) 포함"
- "MSSQL 발견 시" → "xp_cmdshell 활성화 여부 확인"
- "리눅스 쉘 획득 시" → "sudo -l, SUID, cron 순으로 3분 안에 확인"

③ 시간 관리의 처방은 규칙 수정입니다. "독립B에 묶여 독립D를 착수도 못 했다"면 — B의 상한이 지켜지지 않은 것이므로, 상한을 시각으로 명시하고 전환을 외부 장치(타이머 경고)에 의존하게 바꿉니다.

2-4. 분포가 곧 전략 — 최다 유형이 다음 훈련을 결정한다

한 건 한 건의 분석이 끝나면 분포를 봅니다. 분포는 여러분의 약점 지도입니다.

  • ①이 최다 → 기술 범위의 구멍. 다음 주는 공략 훈련이 아니라 학습 주간입니다.
  • ②가 최다 → 기술은 있는데 절차가 샌다. 체크리스트 강화와 "막히면 체크리스트로 돌아가는 습관"의 훈련.
  • ③이 최다 → 실력은 합격권인데 운영이 점수를 태운다. 다음 모의시험에서 가장 회수하기 쉬운 점수입니다.
  • ④⑤가 보인다 → 기술 문제로 위장하기 쉬운 운영 문제. 수면 예약과 증거 습관부터 고칩니다.

두 번째 모의시험(Step 311)의 목표는 이 분포에서 최다 유형이 줄어드는 것입니다 — 점수 상승은 그 결과입니다.


3. 따라 하기

3-1. 워크스루 대조 — 멈춤 좌표 채우기

모의시험이 완전히 끝난 지금, 미해결 머신의 워크스루를 처음으로 엽니다. 규칙이 있습니다 — 한 머신씩, 읽기 전에 내 로그를 먼저 펼칩니다.

대조 절차 (머신당 20~30분):
1. 내 랩 로그에서 그 머신의 마지막 상태를 읽는다 — 어디까지 갔는가
2. 워크스루를 처음부터 읽다가, 내가 안 간 분기가 나오면 멈춘다
3. 그 분기를 멈춤 좌표 양식(2-2)에 기록한다
4. "이 분기를 내가 봤다면 풀렸는가?"를 스스로 채점한다 — Yes면 ②, No면 ①
5. 유형을 확정해 CSV에 추가한다

왜 4번이 중요한가: "봤으면 풀었을까?"의 답이 유형을 가릅니다. 워크스루를 다 읽고 나면 전부 알 것 같아지는 착각(후견지명 편향)이 오므로, 분기 지점에서 읽기를 멈추고 먼저 채점해야 합니다.

3-2. 분석 도구로 분포 집계

챕터의 분석 도구에 내 데이터를 넣습니다. 먼저 내장 예시로 출력을 익힙니다 — 실측 결과입니다.

python fail_analyzer.py demo
=== 실패 유형 분포 ===
  1 기술 부재        1건 ■
  2 열거 누락        2건 ■■
  3 시간 관리 실패     1건 ■
  4 체력/컨디션 붕괴    0건 -
  5 보고서 미비       1건 ■

=== 머신별 분석 ===

[독립B] 유형 2 — 열거 누락 (소요 150분)
  멈춘 지점 : 웹 로그인에서 2시간 정지
  정답 경로 : 숨은 /backup 경로의 소스 유출이 입구
  보완책    : 막힘 체크리스트에 항목 추가 — 아는데 안 본 것

[AD세트] 유형 1 — 기술 부재 (소요 360분)
  멈춘 지점 : 도메인 사용자 열거까지
  정답 경로 : AS-REP 로스팅 — 개념 자체를 몰랐음
  보완책    : 학습 + 랩 재현 — 읽기만 하면 다음에 또 막힌다

[독립D] 유형 3 — 시간 관리 실패 (소요 0분)
  멈춘 지점 : 착수조차 못함
  정답 경로 : 독립B에 묶여 시간 소진
  보완책    : 배분 규칙 수정 — 상한/전환 타이밍 재설계

[독립C] 유형 2 — 열거 누락 (소요 140분)
  멈춘 지점 : low-priv 쉘까지
  정답 경로 : sudo -l을 확인 안 함 — SUID 답이었음
  보완책    : 막힘 체크리스트에 항목 추가 — 아는데 안 본 것

[보고서] 유형 5 — 보고서 미비 (소요 -분)
  멈춘 지점 : 종료 후 집계
  정답 경로 : 새벽에 푼 머신 스크린샷 2장 누락
  보완책    : 증거 실시간 수집 + 템플릿 사전 준비

최다 유형: 2 열거 누락 (2건) — 다음 모의시험의 1순위 보완 대상

읽는 법: 이 예시 세션의 진단은 "기술자의 실력 부족"이 아닙니다. 5건 중 4건(②×2, ③, ⑤)이 운영과 절차의 문제이고, 진짜 기술 공백(①)은 AD 세트의 한 건뿐입니다. 최다 유형이 열거 누락 — 이 응시자의 다음 훈련은 새 기법 학습이 아니라 체크리스트 습관화여야 합니다. 내 데이터로 분석할 때는 같은 형식의 CSV(머신,유형,멈춘지점,정답경로,소요분)를 만들어 python fail_analyzer.py analyze fails.csv로 실행합니다.

3-3. 유형별 보완 산출물 만들기

분류가 끝났으면 처방을 문서로 완성합니다. 머릿속의 "다음엔 잘해야지"는 산출물이 아닙니다.

유형 산출물 완료 조건
① 기술 부재 주제별 학습 + 랩 재현 로그 명령/출력이 남은 재현 기록
② 열거 누락 막힘 체크리스트의 신규 항목 조건-행동 형식으로 추가됨
③ 시간 관리 수정된 배분 규칙 "3시간 상한" → "03:00 전환" 식 시각 명시
④ 체력 붕괴 수면·식사 블록의 계획표 고정 다음 모의시험 계획표에 반영
⑤ 보고서 미비 랩 로그 양식에 증거 확인 칸 추가 머신당 마지막 랩에 체크 항목 존재

3-4. 재공략 — 손으로 다시 풀어야 내 것이다

마지막 단계이자 가장 중요한 단계입니다. 미해결 머신 전부를, 워크스루를 닫고, 혼자 힘으로 다시 공략합니다.

화면 예시 (재공략 로그):

[재공략] 독립B — 35분 만에 완주
  분기점 재현: gobuster에서 .bak 발견 → 즉시 확인 (체크리스트 신규 항목 첫 사용)
  감각 메모: "설마"가 올라오는 순간이 확인 신호다
[재공략] AD세트 — 2시간 10분, AS-REP 로스팅 재현 성공
  학습 기록: docs/ad_asrep_roasting.md 작성, 랩에서 티켓 추출→크랙까지 재현

읽는 법: 재공략에서 빨리 풀리는 것은 당연합니다 — 정답을 봤으니까요. 재공략의 목적은 정답 재생이 아니라 분기점에서의 새 반응 확인입니다. "설마" 하고 넘기던 그 지점에서 이번에는 멈춰 서서 확인했는가 — 그 반응 변화가 다음 모의시험에서 재발 방지를 담보합니다. 재공략 후에는 그 머신의 보고서도 완성합니다 — ⑤의 훈련 겸용입니다.


4. 미션과 연습문제

미션 — 실패 분석 문서와 보완 완료

  1. 첫 모의시험의 미해결 머신 전부에 대해 워크스루 대조(3-1)를 수행하고 멈춤 좌표를 채웁니다.
  2. CSV로 유형을 집계해 fail_analyzer.py analyze를 실행하고, 분포와 최다 유형을 문서에 기록합니다.
  3. 유형별 보완 산출물(3-3의 표)을 전부 완성합니다 — ①은 재현 로그, ②는 체크리스트 항목, ③은 수정 규칙.
  4. 미해결 머신 전부를 워크스루 없이 재공략해 완주하고, 각각 보고서를 완성합니다.
  5. 분석 문서 마지막에 "두 번째 모의시험의 검증 지표" 한 줄을 적습니다 — 예: "열거 누락 2건 → 0~1건".

연습문제

문제 1. "알고 있었는데 확인을 안 한" 실패(②)를 새 기법 학습으로 치료하면 안 되는 이유는 무엇인가요? ②의 올바른 처방이 체크리스트인 이유와 함께 설명해 보세요.

문제 2. 워크스루 대조에서 "분기 지점에서 읽기를 멈추고 먼저 채점"하는 이유를, 후견지명 편향의 관점에서 설명해 보세요.

문제 3. ③ 시간 관리 실패의 처방을 "다음엔 시간을 잘 쓴다"가 아니라 규칙 수정(시각 명시)으로 해야 하는 이유는 무엇인가요?

문제 4. 재공략은 정답을 본 뒤라 빨리 풀리는 것이 당연합니다. 그런데도 재공략이 "구경이 아니라 지식이 되는" 조건은 무엇이며, 무엇을 확인해야 재공략이 성공한 것인가요?


5. 모범 답안과 완료 기준

미션 모범 답안

검증 기준으로 확인하세요.

  1. 멈춤 좌표의 구체성: 모든 미해결 머신에 "멈춘 지점/정답 경로/분기점/유형" 네 칸이 채워져 있는가 — "몰랐음"만 있는 항목은 분석이 아닙니다.
  2. 채점의 선행: 각 유형이 워크스루 분기점에서의 자기 채점("봤으면 풀렸는가")에 근거하는가 — 다 읽고 정한 유형은 후견지명에 오염됐을 수 있습니다.
  3. 산출물의 존재: ①은 재현 로그(명령·출력 포함), ②는 조건-행동 형식의 체크리스트 신규 항목, ③은 시각이 명시된 수정 규칙 — 각각이 파일로 존재하는가.
  4. 재공략의 완주: 미해결 머신이 전부 혼자 힘으로 완주됐고, 분기점에서의 반응 변화가 메모로 남아 있는가.
  5. 검증 지표: 다음 모의시험에서 무엇이 줄어야 하는지가 수치로 적혀 있는가.

연습문제 해답

문제 1 해답. ②의 병은 지식의 부재가 아니라 호출의 실패이기 때문입니다 — 머릿속에 있는 항목이 막힌 순간에 떠오르지 않은 것입니다. 새 기법을 학습해도 그 항목은 같은 방식으로 침묵합니다. 체크리스트가 처방인 이유는 호출을 기억에서 절차로 옮기기 때문입니다 — "떠올리기"를 기다리지 않고 "막히면 펼치는 문서"가 확인을 강제합니다. ②는 공부의 문제가 아니라 공학의 문제입니다.

문제 2 해답. 워크스루를 끝까지 읽은 뒤의 뇌는 정답을 알고 있으므로 "나도 봤으면 알았을 것"이라고 과대평가합니다 — 이것이 후견지명 편향입니다. 이 상태에서 정한 유형은 ②(알았는데 안 봄)로 부풀려지고 ①(몰랐음)이 숨습니다. 분기점에서 읽기를 멈추고 채점하면, 그 시점의 나는 아직 정답을 모르므로 채점이 정직합니다. 유형 분류의 정확도는 처방의 정확도이므로, 채점의 타이밍이 분석 전체의 품질을 결정합니다.

문제 3 해답. 의지 기반 결심은 시험 12시간째의 피로한 뇌에 집행을 맡기는 것이기 때문입니다. "잘 쓰겠다"는 판단 없는 약속이고, 피로한 뇌는 판단을 유기합니다. 규칙 수정 — "머신당 3시간 상한"을 "03:00에 전환, 알람 설정"으로 구체화하는 것 — 은 판단을 제거합니다. 시각이 되면 움직이는 것이지, 움직일지를 그때 결정하지 않습니다. ③의 처방이 규칙인 이유는 ②의 처방이 체크리스트인 이유와 같습니다 — 기억과 의지를 절차와 장치로 바꾸는 것.

문제 4 해답. 조건은 분기점에서의 반응 변화입니다. 정답을 알고 정답을 재생하는 재공략은 구경의 반복이지만, 처음 넘겼던 분기점("설마 백업 파일이겠어"의 순간)에 도달했을 때 이번에는 멈춰 서서 확인하는가 — 그 반응이 바뀌어야 다음 미지의 머신에서도 바뀝니다. 확인할 것은 두 가지입니다 — 재공략이 워크스루 없이 완주됐는가(절차의 체화), 그리고 분기점에서의 새 반응이 메모로 기록됐는가(감각의 언어화). 둘째가 없으면 다음 시험의 나는 첫 시험의 나와 같습니다.

완료 기준 체크리스트

  • [ ] 미해결 머신 전부의 멈춤 좌표(지점/경로/분기점/유형)를 채웠다
  • [ ] 분기점에서 읽기를 멈추고 먼저 자기 채점했다
  • [ ] fail_analyzer.py로 유형 분포를 집계하고 최다 유형을 확정했다
  • [ ] ① 항목은 랩 재현 로그로 보완했다
  • [ ] ② 항목은 막힘 체크리스트에 조건-행동으로 추가했다
  • [ ] ③ 항목은 시각 명시 규칙으로 수정했다
  • [ ] 미해결 머신 전부를 혼자 힘으로 재공략하고 보고서를 완성했다
  • [ ] 두 번째 모의시험의 검증 지표(무엇이 줄어야 하는가)를 수치로 적었다

6. 흔한 실수와 해결

벽 1. analyze를 돌렸는데 CSV가 안 읽혀요

증상:

FileNotFoundError: [Errno 2] No such file or directory: 'fails.csv'

원인: 실행 위치(현재 디렉터리)에 CSV가 없거나 파일명이 다릅니다.

해결: CSV가 있는 폴더에서 실행하거나 경로를 포함해 python fail_analyzer.py analyze data/fails.csv처럼 지정하세요. 엑셀에서 저장한 CSV는 인코딩이 CP949일 수 있습니다 — 이 도구는 UTF-8을 읽으므로 "다른 이름으로 저장 → CSV UTF-8"을 선택하세요.

벽 2. 워크스루를 본 뒤 "이제 아니까" 넘어가고 싶어져요

증상: 재공략 없이 다음 머신의 워크스루로 넘어가는 자신을 발견합니다.

원인: 바로 그 지점입니다 — 이해의 쾌감이 재현의 노동을 회피하게 만듭니다. 읽어서 아는 것과 손이 하는 것은 다른 저장소에 쌓입니다.

해결: 규칙 하나 — 워크스루는 재공략 후에만 다음 권으로 넘깁니다. 순서를 "대조 → 재현 → 다음"으로 고정하면 회피의 물리적 경로가 차단됩니다. 재현이 귀찮다면 그것이 바로 재현이 필요한 머신이라는 신호입니다 — 쉬운 머신은 귀찮지 않습니다.

벽 3. 전부 ②로 분류하게 돼요 — "다 볼 수 있었던 것 같아서"

증상: 솔직히 몰랐던 기법도 "알았으면 풀었을 것" 같은 기분이 듭니다.

원인: 후견지명 편향입니다 — 정답을 안 뒤의 뇌는 과거의 무지를 재구성하지 못합니다.

해결: 채점 질문을 바꾸세요. "봤으면 풀었을까?"가 아니라 "이 기법을 설명하라고 하면 지금(읽기 전 시점의 나는) 설명할 수 있었나?" 입니다. 설명할 수 없었으면 ①입니다. 그래도 애매하면 ①으로 분류하세요 — ①의 처방(재현)은 ②에도 해가 없지만, ②의 처방(체크리스트)만으로는 ①이 치유되지 않습니다. 애매할 때는 더 무거운 처방이 안전합니다.

벽 4. 분석 문서를 쓰다 보니 자책만 남아요

증상: "왜 이걸 못 봤지"가 반복되고 의욕이 꺾입니다.

원인: 분석을 심문으로 하고 있습니다. 분석의 목적은 처벌이 아니라 지도 제작입니다.

해결: 문서의 톤을 관찰자로 바꾸세요 — "나는 왜" 대신 "이 응시자는 150분째에 분기를 놓쳤다"처럼 3인칭으로 기록하면 자책이 데이터로 바뀝니다. 그리고 기억하세요 — 첫 모의시험에서 실패 유형이 전부 드러난 것은 가장 싸게 치른 수업입니다. 본시험에서 드러났다면 재응시료와 몇 달이었을 것입니다.

벽 5. 재공략이 30분 만에 끝나요 — 이게 훈련이 맞나요?

증상: 정답을 아니까 너무 빨리 풀려서 허무합니다.

원인: 정상입니다 — 재공략의 목적은 시간이 아니라 반응입니다.

해결: 3-4의 기준을 확인하세요 — 분기점에서 멈춰 섰는가, 새 반응을 메모했는가. 둘 다 했다면 30분짜리 재공략도 완전한 훈련입니다. 오히려 빨리 끝난다는 것은 그 머신의 지식이 이미 여러분 것이 됐다는 뜻입니다. 허무함은 훈련이 아니라 회수가 끝났다는 신호로 읽으세요.


7. 정리

오늘의 개념

개념 한 줄 설명
실패 5분류 기술 부재 / 열거 누락 / 시간 관리 / 체력 붕괴 / 보고서 미비 — 처방이 다르다
멈춤 좌표 "못 풀었다"가 아니라 "어디서, 어떤 판단으로 멈췄는가"의 기록
분기점 결과가 아니라 판단이 실패의 본체 — "설마"가 올라온 그 지점
후견지명 편향 정답을 본 뇌는 무지를 재구성 못 함 — 분기점에서 먼저 채점
재현 조건 읽기만 하면 구경 — 손으로 다시 풀어야 지식
검증 지표 다음 모의시험에서 줄어야 할 것의 수치 — 보완의 합격선

오늘의 도구

도구 하는 일
멈춤 좌표 양식 머신별 실패를 지점·경로·분기점·유형으로 기록
python fail_analyzer.py demo 예시 데이터로 유형 분포 읽기 연습
python fail_analyzer.py analyze fails.csv 내 데이터로 분포 집계·최다 유형 확정
막힘 체크리스트 ②의 처방이 쌓이는 문서 — 조건-행동 형식
재공략 로그 분기점에서의 반응 변화를 기록하는 문서

명령어보다 중요한 감각

모의시험의 점수는 하루짜리지만, 실패 분포는 자산입니다. "50점"은 아무 처방도 낳지 않지만, "열거 누락 2건"은 정확히 두 줄의 체크리스트를 낳습니다. 실패를 유형으로 자르는 능력은 OSCP를 넘어 앞으로의 모든 시험·프로젝트·장애 대응에서 재사용됩니다 — 같은 실패를 두 번 하지 않는 사람의 비밀은 기억력이 아니라 분류입니다.


전부 체크되면 Step 310 완료입니다.