はじめに
このドキュメントでは、Catalyst 9800 WLCで使用可能なトラブルシューティングツールを使用して、802.1X WLANのOver-the-Air(OTA)パケットキャプチャを復号化する方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- Catalyst 9800 WLCでの802.1X WLANの設定方法
- Catalyst 9800 WLCで条件付きデバッグを有効にして放射性トレースを実行する方法
- スニファモードのアクセスポイントまたはワイヤレス診断ツールを備えたMacbookを使用してOver-the-Airパケットキャプチャを取得する方法
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- Catalyst 9800-L WLC、Cisco IOS® XE Cupertino 17.9.3
- スニファモードのCatalyst 9130AXEアクセスポイント
- Cisco ISE バージョン 3.3
- Wireshark 4.0.8
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
EAP+8021XでIDが検証されると、サプリカントとオーセンティケータ間のハンドシェイクから生成されたPairwise Transient Key(PTK)を使用してワイヤレストラフィックが暗号化されます。PTKは、計算にPairwise Master Key(PMK)を使用します。このPMKは、マスターセッションキー(MSK)から取得されます。MSKは、RADIUS Access-Acceptメッセージ(RADIUS共有秘密を使用して暗号化)の属性値ペア(AVP)に含まれます。その結果、4ウェイハンドシェイクがサードパーティによって代行受信されても、Over-the-Air(OTA)パケットキャプチャでトラフィックを透過的に確認することはできません。
通常、PMKの生成は、有線ネットワークで取得されるパケットキャプチャ、RADIUS共有秘密の情報、および対象の値を抽出するためのコーディングを意味します。代わりに、この方法を使用して、Catalyst 9800 WLC(放射性トレース)のトラブルシューティングに使用できるツールの1つを使用してMSKを取得し、Wiresharkなどの既知のパケット分析ツールでMSKを使用できます。
注:Pairwise Transient Keys(PTK)の計算に必要な情報は、4ウェイハンドシェイクにより無線接続で交換されるため、この手順はWPA2でのみ機能します。その代わり、WPA3では、Dragonflyハンドシェイクと呼ばれる方法で、Equals(SAE)の同時認証が実行されます。
設定
ステップ 1:目的のエンドポイントの放射性トレースの開始
Catalyst 9800 WLCで、Troubleshooting > Radioactive Tracesの順に進み、Addボタンをクリックして、トラフィックの復号化を行うデバイスのMACアドレスを入力します。
放射性トレースリストに追加されたMACアドレス
追加したら、必ずリストの上部にあるStartボタンをクリックして、Conditional Debugを有効にします。これにより、データプレーン(MSKがある)で交換される情報を確認できます。
条件付きデバッグが有効な状態で、放射性トレースリストに追加されたデバイス。
ステップ 2:Over-the-Airパケットキャプチャの取得
Over-the-Airパケットキャプチャを開始し、エンドポイントを802.1X WLANに接続します。
このOver-the-Air(OTA)パケットキャプチャは、Snifferモードのアクセスポイントを使用するか、MacBookにワイヤレス診断組み込みツールを使用して取得できます。
注:パケットキャプチャにすべての802.11フレームが含まれていることを確認します。最も重要なのは、プロセス中に4ウェイハンドシェイクをキャプチャする必要があることです。
4ウェイハンドシェイク(パケット475 ~ 478)を通過するすべてのトラフィックがどのように暗号化されるかを確認します。
暗号化されたワイヤレストラフィック。
ステップ 3:デバイスの放射性トレースの生成とエクスポート
ステップ1と同じ画面で、無線トラフィックをキャプチャしたら緑色のGenerateボタンをクリックします。
期間ポップアップウィンドウで、ニーズに合った期間を選択します。ここで内部ログを有効にする必要はありません。
Apply to Deviceをクリックして放射性トレースを生成します。
RAトレースの時間間隔。
放射性トレースの準備が整うと、トレースファイル名の横にdownloadアイコンが表示されます。これをクリックして放射性トレースをダウンロードします。
ダウンロード可能な放射性トレース。
ステップ 4:放射性トレースからのMSKの取得
ダウンロードした放射性トレースファイルを開き、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:MSKをWiresharkの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セッション(パケット507)の3ウェイハンドシェイクの開始を確認できます。
復号化されたワイヤレストラフィック