소개
이 문서에서는 Catalyst 9800 WLC에서 사용 가능한 문제 해결 툴을 사용하여 802.1X WLAN에 대한 OTA(Over-the-Air) 패킷 캡처를 해독하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- Catalyst 9800 WLC에서 802.1X WLAN을 구성하는 방법
- Catalyst 9800 WLC에서 조건부 디버깅을 활성화하여 방사성 추적을 수행하는 방법
- 스니퍼 모드의 액세스 포인트 또는 무선 진단 도구가 있는 Macbook을 사용하여 OTA(Over-the-Air) 패킷 캡처를 가져오는 방법
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
- Catalyst 9800-L WLC, Cisco IOS® XE Cupertino 17.9.3
- 스니퍼 모드의 Catalyst 9130AX Access Point
- Cisco ISE 버전 3.3
- Wireshark 4.0.8
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
EAP+8021X를 통해 ID가 검증되면 신청자와 인증자 간의 핸드셰이크에서 생성된 PTK(Pairwise Transient Key)를 사용하여 무선 트래픽이 암호화됩니다. PTK는 PMK(Pairwise Master Key)를 사용하여 계산됩니다. 이 PMK는 MSK(마스터 세션 키)에서 파생됩니다. MSK는 RADIUS Access-Accept 메시지(RADIUS 공유 암호를 사용하여 암호화됨)의 특성 값 쌍에 포함됩니다. 따라서 4방향 핸드셰이크가 제3자에 의해 가로채어지더라도 OTA(Over-the-Air) 패킷 캡처에서 트래픽을 투명하게 볼 수 없습니다.
일반적으로, PMK의 생성은 유선 네트워크에서 취해지는 패킷 캡처, RADIUS 공유 비밀에 대한 지식 및 관심 값을 추출하기 위한 일부 코딩을 의미합니다. 대신 이 방법을 사용하면 Catalyst 9800 WLC(Radioactive Traces)에서 문제 해결에 사용할 수 있는 도구 중 하나를 사용하여 MSK를 얻은 다음 Wireshark와 같은 잘 알려진 패킷 분석 도구에서 사용할 수 있습니다.
참고: PTK(Pairwise Transient Keys)를 계산하는 데 필요한 정보가 4방향 핸드셰이크를 통해 공중을 통해 교환되므로 이 절차는 WPA2에서만 작동합니다. 대신 WPA3에서는 Dragonfly 핸드셰이크라고 하는 것을 통해 SAE(Simultaneous Authentication of Equals)가 수행됩니다.
구성
1단계. 관심 엔드포인트의 방사능 추적 시작
Catalyst 9800 WLC에서 Troubleshooting(문제 해결) > Radioactive Traces(방사능 추적)로 이동하고 Add(추가) 버튼을 클릭하여 트래픽을 해독할 디바이스의 MAC 주소를 입력합니다.
방사성 추적 목록에 추가된 MAC 주소
추가한 후에는 목록 상단에서 Start(시작) 버튼을 클릭하여 Conditional Debug(조건부 디버그)를 활성화해야 합니다. 이렇게 하면 데이터 평면에서 교환된 정보를 볼 수 있습니다(MSK는 여기에 있음).
조건부 디버그가 활성화된 상태로 디바이스가 방사성 추적 목록에 추가되었습니다.
2단계. Over-the-Air 패킷 캡처 얻기
Over-the-Air 패킷 캡처를 시작하고 엔드포인트를 802.1X WLAN에 연결합니다.
이 무선 패킷 캡처는 스니퍼 모드에서 액세스 포인트를 사용하거나 무선 진단 기본 제공 도구를 사용하여 Macbook에서 얻을 수 있습니다.
참고: 패킷 캡처에 모든 802.11 프레임이 포함되었는지 확인합니다. 가장 중요한 것은 이 과정에서 4자 악수를 포착하는 것이 필수다.
4방향 핸드셰이크(패킷 475~478)를 지나는 모든 트래픽이 어떻게 암호화되는지 확인합니다.
암호화된 무선 트래픽.
3단계. 디바이스의 방사선 추적 생성 및 내보내기
1단계와 동일한 화면에서 무선 트래픽을 캡처한 후 녹색 Generate(생성) 버튼을 클릭합니다.
시간 간격 팝업 창에서 요구 사항에 맞는 시간 프레임을 선택합니다. 여기서 내부 로그를 활성화할 필요는 없습니다.
Apply to Device(디바이스에 적용)를 클릭하여 Radioactive Trace(방사능 추적)를 생성합니다.
RA 추적을 위한 시간 간격입니다.
Radioactive Trace(방사성 추적)가 준비되면 Trace(추적) 파일 이름 바로 옆에 다운로드 아이콘이 표시됩니다. Radioactive Trace(방사능 추적)를 다운로드하려면 클릭하십시오.
Radioactive Trace 다운로드 가능.
4단계. Radioactive Trace(방사능 흔적)에서 MSK 얻기
다운로드한 Radioactive Trace(방사능 추적) 파일을 열고 Access-Accept(액세스 수락) 메시지 이후 eap-msk 특성을 검색합니다.
2022/09/23 20:00:08.646494126 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: Received from id 1812/143 172.16.5.112:0, Access-Accept, len 289
2022/09/23 20:00:08.646504952 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: authenticator 8b 11 23 7f 6a 37 4c 9a - dd e0 26 88 56 6a 82 f5
2022/09/23 20:00:08.646511532 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: User-Name [1] 7 "Alice"
2022/09/23 20:00:08.646516250 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: Class [25] 55 ...
2022/09/23 20:00:08.646566556 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: EAP-Message [79] 6 ...
2022/09/23 20:00:08.646577756 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: Message-Authenticator[80] 18 ...
2022/09/23 20:00:08.646601246 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: EAP-Key-Name [102] 67 *
2022/09/23 20:00:08.646610188 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: Vendor, Microsoft [26] 58
2022/09/23 20:00:08.646614262 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: MS-MPPE-Send-Key [16] 52 *
2022/09/23 20:00:08.646622868 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: Vendor, Microsoft [26] 58
2022/09/23 20:00:08.646642158 {wncd_x_R0-0}{1}: [radius] [15612]: (info): RADIUS: MS-MPPE-Recv-Key [17] 52 *
2022/09/23 20:00:08.646668839 {wncd_x_R0-0}{1}: [radius] [15612]: (info): Valid Response Packet, Free the identifier
2022/09/23 20:00:08.646843647 {wncd_x_R0-0}{1}: [dot1x] [15612]: (info): [0093.3794.2730:capwap_9000000c] Received an EAP Success
2022/09/23 20:00:08.646878921 {wncd_x_R0-0}{1}: [dot1x] [15612]: (info): [0093.3794.2730:capwap_9000000c] Entering idle state
2022/09/23 20:00:08.646884283 {wncd_x_R0-0}{1}: [dot1x] [15612]: (info): [0093.3794.2730:capwap_9000000c] Posting AUTH_SUCCESS on Client
2022/09/23 20:00:08.646913535 {wncd_x_R0-0}{1}: [dot1x] [15612]: (info): [0000.0000.0000:capwap_9000000c] Setting EAPOL eth-type to 0x888e, destination mac to 0093.3794.2730
2022/09/23 20:00:08.646914875 {wncd_x_R0-0}{1}: [dot1x] [15612]: (info): [0000.0000.0000:capwap_9000000c] Sending out EAPOL packet
2022/09/23 20:00:08.646996798 {wncd_x_R0-0}{1}: [dot1x] [15612]: (info): [0093.3794.2730:capwap_9000000c] Sent EAPOL packet - Version : 3,EAPOL Type : EAP, Payload Length : 4, EAP-Type = 0
2022/09/23 20:00:08.646998966 {wncd_x_R0-0}{1}: [dot1x] [15612]: (info): [0093.3794.2730:capwap_9000000c] EAP Packet - SUCCESS, ID : 0x95
2022/09/23 20:00:08.647000954 {wncd_x_R0-0}{1}: [dot1x] [15612]: (info): [0000.0000.0000:unknown] Pkt body: 03 95 00 04
2022/09/23 20:00:08.647004108 {wncd_x_R0-0}{1}: [dot1x] [15612]: (info): [0093.3794.2730:capwap_9000000c] EAPOL packet sent to client
2022/09/23 20:00:08.647008702 {wncd_x_R0-0}{1}: [auth-mgr] [15612]: (info): [0093.3794.2730:capwap_9000000c] Authc success from Dot1X, Auth event success
2022/09/23 20:00:08.647025898 {wncd_x_R0-0}{1}: [auth-mgr] [15612]: (info): [0093.3794.2730:capwap_9000000c] Raised event APPLY_USER_PROFILE (14)
2022/09/23 20:00:08.647033682 {wncd_x_R0-0}{1}: [auth-mgr] [15612]: (info): [0093.3794.2730:capwap_9000000c] Raised event RX_METHOD_AUTHC_SUCCESS (3)
2022/09/23 20:00:08.647101204 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : username 0 "Alice"
2022/09/23 20:00:08.647115452 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : class 0 43 41 43 53 3a 30 42 30 35 31 30 41 43 30 30 30 30 30 30 31 41 36 42 45 46 33 34 37 35 3a 69 73 65 6c 61 62 2d 75 77 75 2f 34 38 34 36 32 34 34 35 31 2f 33 38
2022/09/23 20:00:08.647116846 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : EAP-Message 0 <hidden>
2022/09/23 20:00:08.647118074 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : Message-Authenticator 0 <hidden>
2022/09/23 20:00:08.647119674 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : EAP-session-id 0 "??O×.?Ê?$2V?Öï?<úiUˆú ”?ó>“>ƒ?ôE9Æ#1oÊ0ÖÕM°8p’ŠÀ?1ò¿–ã‡|¥?–p”½"
2022/09/23 20:00:08.647128748 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : MS-MPPE-Send-Key 0 c7 22 cb f0 93 31 02 a4 1b b0 2f 0a 76 9b b2 23 81 0c b1 e1 4f b6 37 2e 8e 33 78 22 3d c8 1d 7d
2022/09/23 20:00:08.647137606 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : MS-MPPE-Recv-Key 0 fb c1 c3 f8 2c 13 66 6e 4d dc 26 b8 79 7e 89 83 f0 12 54 73 cb 61 51 da fa af 02 bf 96 87 67 4c
2022/09/23 20:00:08.647139194 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : dnis 0 "A4-9B-CD-AA-18-80"
2022/09/23 20:00:08.647140612 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : formatted-clid 0 "00-93-37-94-27-30"
2022/09/23 20:00:08.647141990 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : audit-session-id 0 "0B0510AC0000001A6BEF3475"
2022/09/23 20:00:08.647158674 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : eap-msk 0 fb c1 c3 f8 2c 13 66 6e 4d dc 26 b8 79 7e 89 83 f0 12 54 73 cb 61 51 da fa af 02 bf 96 87 67 4c c7 22 cb f0 93 31 02 a4 1b b0 2f 0a 76 9b b2 23 81 0c b1 e1 4f b6 37 2e 8e 33 78 22 3d c8 1d 7d
2022/09/23 20:00:08.647159912 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : eap-emsk 0
2022/09/23 20:00:08.647161666 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : method 0 0 [dot1x]
2022/09/23 20:00:08.647164452 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : clid-mac-addr 0 00 93 37 94 27 30
2022/09/23 20:00:08.647166150 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : intf-id 0 2415919116 (0x9000000c)
2022/09/23 20:00:08.647202312 {wncd_x_R0-0}{1}: [auth-mgr] [15612]: (info): [0093.3794.2730:capwap_9000000c] Method dot1x changing state from 'Running' to 'Authc Success
eap-msk 문자열 뒤의 값은 MSK입니다. 복사한 다음 저장하여 다음 단계에서 사용합니다.
2022/09/23 20:00:08.647158674 {wncd_x_R0-0}{1}: [aaa-attr-inf] [15612]: (info): Applying Attribute : eap-msk 0 fb c1 c3 f8 2c 13 66 6e 4d dc 26 b8 79 7e 89 83 f0 12 54 73 cb 61 51 da fa af 02 bf 96 87 67 4c c7 22 cb f0 93 31 02 a4 1b b0 2f 0a 76 9b b2 23 81 0c b1 e1 4f b6 37 2e 8e 33 78 22 3d c8 1d 7d
5단계. Wireshark에서 MSK를 IEEE 802.11 암호 해독 키로 추가
Wireshark에서 Wireshark > Preferences > Protocols > IEEE 802.11로 이동합니다.
"Enable decryption(해독 활성화)"이라고 표시된 상자를 선택한 다음 Decryption keys(해독 키) 바로 옆에 있는 Edit(편집)를 선택합니다.
하단의 "+" 버튼을 클릭하여 새 암호 해독 키를 추가하고 키 유형으로 msk를 선택합니다.
4단계에서 얻은 eap-msk 값을 공백 없이 붙여넣습니다.
마지막으로 OK(확인)를 클릭하여 Decryption keys(암호 해독 키) 창을 닫은 다음 OK(확인)를 클릭하여 Preferences(기본 설정) 창을 닫고 암호 해독 키를 적용합니다.
wireshark 기본 설정에 암호 해독 키가 추가되었습니다.
6단계. 해독된 802.1X 트래픽 분석
이제 무선 트래픽이 어떻게 표시되는지 확인합니다. 스크린샷에서는 ARP 트래픽(패킷 482 및 484), DNS 쿼리 및 응답(패킷 487 및 488), ICMP 트래픽(패킷 491~497) 및 TCP 세션에 대한 3방향 핸드셰이크의 시작(패킷 507)을 볼 수 있습니다.
암호 해독된 무선 트래픽.