Step 166. 무선 보안: WPA2와 핸드셰이크 — 공기 중에 떠도는 열쇠 재료

Step 166. 무선 보안: WPA2와 핸드셰이크 — 공기 중에 떠도는 열쇠 재료

Level 2 — 보안 입문과 공격 스킬 기초 | 난이도 ★★★☆☆ | 예상 소요 시간 2.5시간

전제: Step 34(포트와 서비스), Step 122~124(패스워드 공격 시리즈)를 마쳤다. 해시와 오프라인 크래킹의 개념을 안다.

  • 준비물: 필기 도구(핸드셰이크 순서도를 직접 그릴 것), (선택) 모니터 모드 지원 무선 어댑터 + 내 공유기
  • 성격 안내: 오늘은 [개념] 챕터입니다. 무선 실측은 장비가 있어야 가능하므로, 이 챕터의 명령과 화면은 출력 예시입니다.
  • 윤리·법적 경계: 무선 공격은 물리적 경계가 없어서 특히 위험합니다. 옆집·카페·회사의 AP는 절대 대상이 될 수 없으며, 전파법·정보통신망법상 명백한 범죄입니다. 장비가 있어도 실습은 내가 소유한 공유기와 내 기기 사이에서만 합니다. 이 챕터의 목표는 공격 실행이 아니라, 왜 강한 비밀번호가 유일한 방어인지 구조적으로 이해하는 것입니다.

유선 네트워크의 패킷은 케이블 안을 지나지만, 무선의 패킷은 공기 중에 전부 뿌려집니다. 안테나만 있으면 누구나 받을 수 있습니다. WPA2는 이 상황에서 비밀번호를 어떻게 지킬까요? 정답은 "비밀번호를 절대 보내지 않는다"입니다. 대신 접속할 때마다 주고받는 네 개의 메시지 — 4-way 핸드셰이크 안에 "비밀번호를 아는 사람만 만들 수 있는 검증값"을 실어 보냅니다.

문제는 그 검증값이 공기 중에 떠돈다는 것입니다. 캡처해서 집으로 가져가면, Step 124에서 배운 오프라인 크래킹이 기다리고 있습니다 — 서버도, 잠금도, 로그도 없는 세계에서 무한정 대입할 수 있습니다. 오늘은 이 구조를 끝까지 해부하고, WPA3가 정확히 어느 점을 고쳤는지 정리합니다.


1. 학습 목표

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

  • WPA2 4-way 핸드셰이크의 네 메시지를 순서대로 설명한다
  • PMK → PTK → MIC로 이어지는 열쇠 파생 구조를 그림으로 그린다
  • 핸드셰이크 캡처가 왜 오프라인 크래킹으로 이어지는지 설명한다
  • PMKID 공격이 핸드셰이크 캡처와 무엇이 다른지 말한다
  • WPA3(SAE)가 고친 점과, 그래도 남는 비밀번호 문제를 정리한다

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

오늘의 도구 한눈에 보기

구분 내용
언어·환경 개념 중심 — 명령은 aircrack-ng 스위트 읽기 (출력 예시)
오늘의 명령 airmon-ng, airodump-ng, aireplay-ng, aircrack-ng (구조 이해용)
필요한 개념 PMK/PTK/MIC, 논스(nonce), 오프라인 크래킹, PMKID, SAE
오늘의 산출물 핸드셰이크 순서도 1장 + WPA2 vs WPA3 비교표

2-1. 비밀번호는 전파를 타지 않는다

WPA2-PSK(가정용 와이파이의 표준)에서 공유기 비밀번호는 어느 패킷에도 실리지 않습니다. 대신 비밀번호와 네트워크 이름(SSID)으로 미리 만들어 둔 PMK(Pairwise Master Key, 쌍별 마스터 키)이 모든 것의 뿌리입니다. 공유기와 기기가 "서로 PMK를 알고 있다"는 사실을, PMK 자체를 보내지 않고 증명하는 것이 핸드셰이크입니다.

비밀번호를 보내지 않으면서 아는지 확인하는 구조는 이미 만났습니다 — 웹 로그인의 해시 검증, SSH의 키 교환과 같은 가족입니다.

2-2. 4-way 핸드셰이크 — 네 개의 메시지

기기(클라이언트)가 공유기(AP)에 접속할 때 교환하는 네 메시지입니다.

AP                                     기기
 | --- (1) ANonce (AP의 무작위 수) ----> |
 | <--- (2) SNonce + MIC --------------- |
 | --- (3) GTK 설치 + MIC -------------> |
 | <--- (4) 확인 응답 ------------------ |
  • (1) AP가 무작위 수 ANonce를 보냅니다.
  • (2) 기기가 자신의 무작위 수 SNonce를 만들고, PMK + ANonce + SNonce + 양쪽 MAC 주소로 PTK(Pairwise Transient Key)를 계산합니다. 그리고 PTK로 만든 MIC(메시지 무결성 코드) — "나 PTK 만들었고, 그러려면 PMK를 아는 사람이어야 해"라는 증명을 함께 보냅니다.
  • (3) AP도 같은 재료로 PTK를 계산하고, 받은 MIC와 대조합니다. 맞으면 그룹 키(GTK)를 전달합니다.
  • (4) 기기가 확인 응답. 이후 통신은 PTK/GTK로 암호화됩니다.

핵심: (2)번 메시지의 MIC가 검증 재료 전부입니다. 도청자는 ANonce, SNonce, 양쪽 MAC, MIC를 전부 받을 수 있습니다 — 빠진 것은 PMK 하나뿐이고, PMK는 비밀번호에서 나옵니다.

2-3. 왜 오프라인 크래킹이 되는가

도청자의 계산을 따라가 봅시다.

  1. 비밀번호 후보 하나를 고른다 (password123 등)
  2. 후보 + SSID로 PMK 후보를 만든다
  3. PMK 후보 + (도청한) ANonce/SNonce/MAC으로 PTK 후보를 만든다
  4. PTK 후보로 MIC를 계산해, 도청한 MIC와 비교한다
  5. 같으면 — 그 후보가 진짜 비밀번호다

Step 124의 해시 크래킹과 정확히 같은 형태입니다. 핸드셰이크 파일이 곧 "크래킹 가능한 해시"입니다. 서버가 없으니 잠금도 속도 제한도 없고, GPU 풀가동으로 초당 수십만 개를 대입할 수 있습니다. 이것이 "와이파이 비밀번호는 길고 유일해야 한다"의 구조적 이유입니다.

2-4. PMKID — 접속조차 필요 없는 공격

2018년에 발표된 PMKID 공격은 더 조용합니다. 많은 AP는 접속 요청에 대한 첫 응답에 PMKID라는 값을 포함하는데, 이것이 PMK와 AP의 MAC 등으로 만든 해시입니다. 즉 다른 기기가 접속하는 순간을 기다릴 필요 없이, AP에 요청 한 번 보내고 받은 PMKID만으로 오프라인 크래킹 재료가 완성됩니다.

기존 핸드셰이크 캡처는 "접속 중인 기기를 끊어 재접속을 유도(디스커넥션 공격)"하는 소란이 필요했는데, PMKID는 그조차 생략합니다. 방어자 입장에서는 탐지할 이벤트가 더 적다는 뜻입니다.

2-5. WPA3 — 무엇이 달라졌나

WPA3는 핸드셰이크를 SAE(Simultaneous Authentication of Equals, Dragonfly 핸드셰이크)로 교체했습니다.

항목 WPA2-PSK WPA3-SAE
핵심 재료 비밀번호에서 만든 고정 PMK 매 세션 새로운 키 합의
캡처 후 오프라인 크래킹 가능 (MIC 대입) 불가 — 캡처해도 대입할 정답 형태가 없음
순방향 비밀성 없음 있음 — 비밀번호가 나중에 털려도 과거 트래픽 안전
관리 프레임 보호 선택 필수 — 디스커넥션 공격 무력화

달라진 본질: SAE는 비밀번호를 "직접 재료"로 쓰지 않고 매번 새로운 키 합의를 하므로, 도청한 패킷은 오프라인 대입의 문제지가 되지 못합니다. 다만 약한 비밀번호 자체는 여전히 위험합니다 — 온라인 추측과 사전 기반 시도는 남아 있고, WPA2/WPA3 혼용(트랜지션) 모드에서는 WPA2 쪽으로 끌어내리는 다운그레이드 공격의 여지도 있습니다.


3. 따라 하기

오늘의 따라 하기는 "손으로 구조를 재현하는" 연습입니다. 장비가 있는 분만 3-4를 실제로 실행하고, 나머지는 출력 예시를 읽는 것으로 충분합니다.

3-1. aircrack-ng 스위트 — 네 도구의 역할 읽기

무선 공격의 표준 도구 모음인 aircrack-ng 스위트는 이름이 곧 역할입니다.

도구 하는 일 비유하자면
airmon-ng 무선 카드를 모니터 모드로 전환 귀를 공기 중으로
airodump-ng 주변 AP와 클라이언트를 수집·표시 도청 녹음기
aireplay-ng 디스커넥션 등 패킷 주입 재접속 유도
aircrack-ng 캡처 파일에 워드리스트 대입 오프라인 크래커

읽는 법: 네 개를 순서대로 이어 붙이면 "귀를 열고 → 녹음하고 → 재료를 모으고 → 집에서 대입하는" 전체 흐름이 됩니다. 각각의 세부 옵션보다 이 파이프라인을 외우는 것이 먼저입니다.

3-2. 핸드셰이크 순서도 손으로 그리기

2-2의 네 메시지를 책을 덮고 그려 봅니다. 단, 각 화살표 옆에 세 가지를 꼭 적으세요.

  1. 그 메시지에 실린 값 (ANonce? SNonce? MIC?)
  2. 그 메시지를 만드는 데 필요한 재료 (PMK? PTK?)
  3. 도청자가 이 메시지에서 얻는 것

기준 예시 (여러분의 그림과 대조하세요):

(1) AP → 기기 : ANonce
    도청자 수확: ANonce (크래킹 재료 1)
(2) 기기 → AP : SNonce + MIC
    도청자 수확: SNonce + MIC (재료 완성 — 이 시점부터 오프라인 크래킹 가능)
(3) AP → 기기 : GTK (암호화돼 전달)
(4) 기기 → AP : 확인

읽는 법: (2)번 메시지 하나로 도청자의 재료가 완성된다는 것 — 이것이 순서도에서 반드시 스스로 발견해야 할 포인트입니다. "핸드셰이크 캡처"라는 말이 실은 "(1)(2)만 있으면 된다"는 뜻임이 보이면 성공입니다.

3-3. 크래킹 명령 해부 — 출력 예시

장비 없이 읽는 연습입니다. 아래는 출력 예시입니다(무선 실측 불가).

sudo airmon-ng start wlan0
sudo airodump-ng wlan0mon
sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon
aircrack-ng -w wordlist.txt capture-01.cap
                               Aircrack-ng 1.7
      [00:00:12] 843210/14344392 keys tested (68901.23 k/s)
      KEY FOUND! [ Summer2026! ]
      Master Key     : 3F 8A ... (PMK)
      Transient Key  : 11 9C ... (PTK)

읽는 법: 화면의 숫자들을 해석할 수 있어야 합니다 — 84만 개를 시험했고 초당 6.9만 개, 찾은 열쇠는 Summer2026!라는 계절+연도 비밀번호입니다(Step 165의 스프레이 후보와 같은 패턴임에 주목). 그리고 결과로 PMK와 PTK가 인쇄됩니다 — 여러분이 3-2에서 그린 그 바로 그 값들입니다.

3-4. (장비가 있는 경우만) 내 공유기로 실습

모니터 모드를 지원하는 어댑터(알파 AWUS036 계열 등)가 있고, 내 공유기 + 내 기기라는 조건이 갖춰진 경우에만:

  1. sudo airmon-ng start wlan0으로 모니터 모드 전환
  2. sudo airodump-ng wlan0mon으로 주변 AP 목록 확인 (여기까지는 수신만)
  3. 내 AP의 채널로 고정하고, 내 폰을 재접속시켜 화면에 WPA handshake 표시 확인
  4. 일부러 사전에 있는 약한 비밀번호로 바꾼 내 AP에서만 aircrack-ng -w 실행
  5. 끝나면 비밀번호를 즉시 강한 것으로 되돌리고 airmon-ng stop으로 복귀

⚠️ 주변 AP가 목록에 보이는 것공격하는 것은 완전히 다릅니다. 수신은 장비의 자연스러운 동작이지만, 디스커넥션 패킷을 남의 AP에 보내는 순간 불법입니다.

3-5. 방어 정리 — 내 공유기 점검 목록

공격 구조를 알았으니 방어는 명확합니다.

  1. 비밀번호를 길고 유일하게 — 오프라인 크래킹의 유일한 방어벽. 사전 단어 + 계절/연도 패턴 금지
  2. WPA3(또는 WPA2/WPA3 혼용)로 전환 — 공유기가 지원하면
  3. WPS 비활성화 — PIN 브루트포스라는 별도의 뒷문을 닫음
  4. 게스트 네트워크 분리 — 방문자·IoT 기기를 본 네트워크와 격리
  5. 공유기 관리자 페이지 비밀번호 변경 — 공장 초기값 그대로인 경우가 많음

4. 미션과 연습문제

미션 — 핸드셰이크 구조 문서와 방어 점검표

  1. 책을 덮고 4-way 핸드셰이크 순서도를 그린 뒤, 각 메시지에 실린 값·필요 재료·도청자 수확 세 칸을 채운다
  2. 2-3의 크래킹 절차 5단계를 자기 말로 다시 쓴다 — 특히 "왜 서버가 없는데 검증이 가능한가"를 포함할 것
  3. PMKID 공격과 핸드셰이크 캡처의 차이를 두 줄로 정리한다
  4. 3-5의 점검 목록으로 내 집 공유기를 실제로 점검하고 결과를 기록한다 (비밀번호 변경 시 그 사실만 기록, 비밀번호 자체는 적지 않음)

연습문제

문제 1. WPA2에서 비밀번호가 패킷에 실리지 않는데도 크래킹이 가능한 이유를 MIC의 역할로 설명해 보세요.

문제 2. 오프라인 크래킹이 Step 122의 온라인 브루트포스보다 위험한 이유 두 가지를 말해 보세요.

문제 3. WPA3-SAE가 캡처 기반 오프라인 크래킹을 불가능하게 만드는 원리를 한 문장으로 말해 보세요.

문제 4. "와이파이 비밀번호는 길고 유일해야 한다"는 조언이 왜 핸드셰이크 구조에서 직접 도출되는지 설명해 보세요.


5. 모범 답안과 완료 기준

미션 모범 답안

크래킹 절차를 자기 말로 쓴 예:

도청자는 핸드셰이크에서 ANonce, SNonce, 양쪽 MAC, MIC를 확보한다. 비밀번호 후보로 PMK 후보를 만들고, 확보한 재료로 PTK 후보를 만들어 MIC를 다시 계산한다. 이 MIC가 도청한 MIC와 같으면 후보가 정답이다 — 서버 없이도, MIC라는 "정답지"가 패킷 안에 들어 있기 때문에 검증이 가능하다.

검증하는 법: ① 순서도에 세 칸(값·재료·수확)이 전부 있는가. ② "(2)번 메시지로 재료 완성"을 찾아냈는가. ③ PMKID 설명에 "접속 기다림 불필요, AP 응답 하나로 재료 확보"가 있는가. ④ 공유기 점검에서 WPS·관리자 비밀번호까지 확인했는가 — 비밀번호만 바꾸고 끝내면 절반입니다.

연습문제 해답

문제 1 해답. 비밀번호 자체는 안 실리지만, 비밀번호(→PMK→PTK)로만 만들 수 있는 MIC가 실립니다. 도청자는 나머지 재료(논스, MAC)를 전부 갖고 있으므로, 비밀번호 후보만 바꿔 가며 MIC를 다시 계산해 대조할 수 있습니다. MIC가 곧 "비밀번호의 시험지 채점 기준"입니다.

문제 2 해답. 첫째, 속도 제한과 잠금이 없습니다 — 서버가 없으니 GPU가 허락하는 만큼 무한 대입합니다. 둘째, 흔적이 대상에게 남지 않습니다 — 캡처는 수신일 뿐이고 크래킹은 공격자 컴퓨터에서 일어나, 피해자는 알 방법이 없습니다.

문제 3 해답. SAE는 비밀번호에서 고정 키를 직접 파생하지 않고 매 세션 새로운 키 합의를 하므로, 도청한 패킷에는 "후보를 대입해 채점할 정답지(MIC 같은 것)"가 없습니다.

문제 4 해답. 핸드셰이크 캡처 후의 크래킹 성공 여부는 오직 "비밀번호가 후보 목록에 있느냐"로 결정됩니다. 암호학은 무너지지 않고 사람의 비밀번호 습관이 무너지므로, 길고 유일한 비밀번호가 이 구조에서 사실상 유일한 사용자 방어입니다.

완료 기준 체크리스트

  • [ ] 4-way 핸드셰이크 네 메시지를 책 안 보고 그릴 수 있다
  • [ ] PMK→PTK→MIC 파생 구조를 설명할 수 있다
  • [ ] 캡처 → 오프라인 크래킹의 인과를 말할 수 있다
  • [ ] PMKID 공격의 차이점을 설명할 수 있다
  • [ ] WPA3-SAE의 개선점과 한계를 둘 다 말할 수 있다
  • [ ] 내 공유기를 점검 목록대로 확인했다
  • [ ] 타인의 AP가 절대 대상이 아님을 확인했다

6. 흔한 실수와 해결

벽 1. airmon-ng start wlan0에서 인터페이스가 안 보인다

증상: 목록이 비어 있거나 no such device 류의 메시지.
원인: 내장 무선 카드는 모니터 모드를 지원하지 않는 경우가 많습니다. 특히 노트북 내장 카드.
해결: 알파 AWUS036 계열처럼 모니터 모드를 공식 지원하는 USB 어댑터가 필요합니다. 장비가 없으면 이 챕터는 개념 정리로 완료하면 됩니다 — 그것이 정상 경로입니다.

벽 2. airodump에 WPA handshake가 안 뜬다

증상: 캡처를 시작했는데 핸드셰이크 표시가 없습니다.
원인: 핸드셰이크는 접속 순간에만 발생합니다. 이미 접속된 기기만 있으면 잡히지 않습니다.
해결: 내 기기를 껐다 켜서 재접속시키세요. (실전에서 aireplay-ng 디스커넥션으로 강제 재접속을 유도하지만, 이것은 패킷 주입이라 내 장비에서만.) 또는 PMKID 방식이 접속 대기 자체를 생략한다는 2-4를 떠올리세요.

벽 3. 캡처했는데 aircrack이 아무것도 못 찾는다

증상: 수백만 개를 시험하고 KEY NOT FOUND.
원인: 비밀번호가 워드리스트에 없습니다. 크래킹은 사전의 싸움입니다.
해결: 정상입니다 — 그것이 방어입니다. 반대로 생각하세요: 여러분의 비밀번호가 rockyou에 있었다면 12초 만에 나왔을 것입니다. 이 경험을 그대로 3-5 점검으로 연결하세요.

벽 4. WPA2와 WPA3가 섞여 있어 뭐가 뭔지 모르겠다

증상: 공유기 설정에 "WPA2/WPA3 혼용"이 있습니다.
원인: 구형 기기 호환을 위한 트랜지션 모드입니다.
해결: 혼용 모드는 편리하지만 WPA2의 약점(오프라인 크래킹 가능성)을 일부 계승합니다. 모든 기기가 WPA3를 지원하면 WPA3 전용으로 전환하는 것이 목표입니다.

벽 5. 옆집 와이파이로 "실력 시험"을 하고 싶어진다

증상: airodump에 보이는 옆집 AP가 호기심을 자극합니다.
원인: 도구가 손에 쥐어진 순간의 흔한 충동입니다.
해결: 절대 안 됩니다. 타인 AP에 대한 디스커넥션·크래킹 시도는 전파법·정보통신망법 위반의 범죄이고, 무선은 수신 흔적조차 물리적 단서를 남깁니다. 실력 시험은 내 공유기와 CTF의 무선 문제로 충분합니다.


7. 정리

오늘의 개념

개념 한 줄 설명
PMK 비밀번호+SSID에서 미리 만드는 마스터 키 — 뿌리
PTK PMK+논스+MAC으로 세션마다 만드는 실제 암호화 키
MIC "PTK를 아는가"의 증명값 — 도청자의 채점 기준
4-way 핸드셰이크 접속 시 키 합의 네 메시지 — (1)(2)만으로 크래킹 재료 완성
PMKID 공격 AP 응답 하나로 재료 확보 — 접속 대기 생략
SAE (WPA3) 매 세션 새 키 합의 — 캡처 대입 불가, 순방향 비밀성
WPS PIN 기반 간편 접속 — 꺼야 할 별도의 뒷문

오늘의 명령어

명령 하는 일
sudo airmon-ng start wlan0 모니터 모드 전환
sudo airodump-ng wlan0mon 주변 AP·클라이언트 수집
airodump-ng -c 채널 --bssid MAC -w 파일 대상 채널 고정 캡처
aircrack-ng -w 사전 캡처.cap 오프라인 대입
(방어) 공유기 설정 WPA3 전환, WPS 끄기, 관리자 비번 변경

명령어보다 중요한 감각

오늘의 구조를 한 문장으로 줄이면 이렇습니다: "비밀번호를 보내지 않는 설계가 오히려 비밀번호 하나에 모든 것을 걸게 했다." 비밀번호가 패킷에 안 실리는 것은 안전한 게 아니라, 검증 재료(MIC)가 공기 중에 떠다니고 그 재료의 유일한 미지수가 비밀번호라는 뜻입니다.

이 구조를 알면 보안 뉴스가 다르게 읽힙니다. "WPA2 크래킹" 기사는 암호학이 깨진 게 아니라 누군가의 비밀번호가 사전에 있었다는 뜻이고, "WPA3 도입" 기사는 채점 기준 자체를 없앴다는 뜻입니다. 그리고 지금 당장 할 일은 하나 — 내 공유기의 비밀번호가 사전에 있는 형태인지 확인하는 것입니다.


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