テストケース

テストケース

からこのウィキページ:

WPAとWPA2は、EAPOLハンドシェイクから得られたキーを使用してトラフィックを暗号化します。4つすべて復号化しようとしているセッションにハンドシェイク パケットが存在しない場合、Wireshark はトラフィックを復号化できません。キャプチャ内の EAPOL パケットを見つけるには、表示フィルタ eapol を使用できます。

復号化は (1, 2, 4) でも機能しますが、(1, 2, 3) では機能しないことに気付きました。私の知る限り、少なくともユニキャスト トラフィックに関しては、最初の 2 つのパケットで十分です。Wireshark がこれをどのように処理するのか、つまり、4 番目のパケットが単なる確認応答であるのに、なぜ最初のシーケンスだけが機能するのか、正確に説明してもらえますか。また、(1, 2, 3, 4) が機能する場合、(1, 2, 4) が常に機能することが保証されていますか。

テストケース

これは、gzip 圧縮されたハンドシェイク (1、2、4) と暗号化されたARPパケット (SSID: SSID、パスワード: password) のbase64エンコードです。

H4sICEarjU8AA2hhbmRzaGFrZS5jYXAAu3J400ImBhYGGPj/n4GhHkhfXNHr37KQgWEqAwQzMAgx
6HkAKbFWzgUMhxgZGDiYrjIwKGUqcW5g4Ldd3rcFQn5IXbWKGaiso4+RmSH+H0MngwLUZMarj4Rn
S8vInf5yfO7mgrMyr9g/Jpa9XVbRdaxH58v1fO3vDCQDkCNv7mFgWMsAwXBHMoEceQ3kSMZbDFDn
ITk1gBnJkeX/GDkRjmyccfus4BKl75HC2cnW1eXrjExNf66uYz+VGLl+snrF7j2EnHQy3JjDKPb9
3fOd9zT0TmofYZC4K8YQ8IkR6JaAT0zIJMjxtWaMmCEMdvwNnI5PYEYJYSTHM5EegqhggYbFhgsJ
9gJXy42PMx9JzYKEcFkcG0MJULYE2ZEGrZwHIMnASwc1GSw4mmH1JCCNQYEF7C7tjasVT+0/J3LP
gie59HFL+5RDIdmZ8rGMEldN5s668eb/tp8vQ+7OrT9jPj/B7425QIGJI3Pft72dLxav8BefvcGU
7+kfABxJX+SjAgAA

デコードするには:

$ base64 -d | gunzip > handshake.cap

実行して、パケットtsharkが正しく復号化されるかどうかを確認しますARP

$ tshark -r handshake.cap -o wlan.enable_decryption:TRUE -o wlan.wep_key1:wpa-pwd:password:SSID

次のように印刷されます:

  1 0.000000 D-Link_a7:8e:b4 -> HonHaiPr_22:09:b0 EAPOLキー
  2 0.006997 HonHaiPr_22:09:b0 -> D-Link_a7:8e:b4 EAPOLキー
  3 0.038137 HonHaiPr_22:09:b0 -> D-Link_a7:8e:b4 EAPOLキー
  4 0.376050 ZyxelCom_68:3a:e4 -> HonHaiPr_22:09:b0 ARP 192.168.1.1 は 00:a0:c5:68:3a:e4 にあります

答え1

EAPOL交換は、一時キーの更新にも使用されます。新しいキーは、サプリカントが4/4を送信した後にサプリカントにインストールされ、オーセンティケータが4/4を受信するとオーセンティケータにインストールされます[1]。Wiresharkがキー再生成を正しく処理する必要がある場合、パケットはキー再生成中にまだ流れている可能性があるため(バッファリングのために流れるべきではない場合でも)、フレーム内の4/4パケットを読み取った後にのみキーを使用する必要があります。

最初の 4WHS については、4/4 を待たずに済む可能性はありますが、実装が面倒だったというのはまったく理解できます。3/4 は、グループ キー (興味がなくても、4WHS の一部ではない AP またはクライアントからの ARP 要求は表示されないことに注意してください) と管理キーが含まれているため、依然として必要です。3/4 もスキップできますが、その場合、交換が成功したかどうかの確認はできません。これは、3/4 は認証者が PMK を認識していることを確認するために使用されるためです。

[1] 現在の方式では、4/4 メッセージが失われた場合、サプリカントは新しいキーの使用を開始し、認証者は古いキーを引き続き使用するため、古いキーで暗号化された 3/4 を再送信しても役に立ちません。この問題は、WPA2 のその他の多くの問題の中でも、最新の 802.11 2012 標準で 2 つのキーを並行して保持することで解決されています。

答え2

PTK を構築するために必要なすべての情報は、手順 1 と 2 で交換されます。これは、ユニキャスト トラフィックを復号化するのに十分なはずです。

ステップ 3 を実行しないと、GTK が使用できなくなるため、マルチキャスト/ブロードキャストの復号化はできなくなります。

ステップ 4 はキャプチャ トラフィックを復号化するために実際には必要ありませんが、ステップ 4 がない場合、クライアント/AP は暗号化の使用を開始しません。Wireshark は、データの復号化を試みる前に、これをキーとして選択する場合があります。

答え3

まあ、明らかに WireShark のドキュメントは間違っています。:-)

ドキュメントから外れてここ:

  • EAPOL 1 と 2 の後、両側はトラフィックの復号化に使用される一時キーを認識します。
  • 3番目のメッセージは、双方が時間キーを知っていることの証明であり、認証子(ベースステーション) は一時キーの使用を開始する準備ができています。
  • 4番目のメッセージは、EAPOLの前に設定されたPMKからEAPOLで導出された一時キーへの切り替えをトリガーします。

それで、それは理にかなっています。WireShark はメッセージ 3 を何にも必要としません。メッセージ 1 と 2 の後でキーを認識しますが、メッセージ 4 を受信するまで、トラフィックの復号化にキーの使用を開始するのを待ちます。

人生において、特にフリー ソフトウェアの動作には保証はありませんが、WireShark がセッションを復号化するためにメッセージ 3 が存在する必要はないだろうと推測するのは妥当です。

答え4

理由は説明されていないが、airdecap-ngから引用するとドキュメンテーションいずれかの方法、

WPA/WPA2 Requirements

The capture file must contain a valid four-way handshake. For this purpose having (packets 2 and 3) or (packets 3 and 4) will work correctly. In fact, you don't truly need all four handshake packets. 

関連情報