Wireshark WPA чотиристороннє рукостискання


13

З цієї сторінки вікі :

WPA та WPA2 використовують ключі, отримані від рукостискання EAPOL для шифрування трафіку. Якщо всі чотири пакети рукостискання не будуть присутні для сеансу, який ви намагаєтесь розшифрувати, Wireshark не зможе розшифрувати трафік. Ви можете використовувати фільтр дисплея eapol, щоб знайти пакети EAPOL у вашому захопленні.

Я помітив, що дешифрування працює і з (1, 2, 4), але не з (1, 2, 3). Наскільки я знаю, перших двох пакетів достатньо, принаймні для того, що стосується одноразового трафіку. Може хтось, будь ласка, пояснить, як саме Wireshark справляється з цим, іншими словами, чому працює лише колишня послідовність, враховуючи, що четвертий пакет - це лише підтвердження? Також, чи гарантується, що (1, 2, 4) завжди працюватиме, коли (1, 2, 3, 4) працює?

Тестовий випадок

Це gzipped рукостискання (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

Він не може .. він повинен розшифровуватись, оскільки у нього є всі чотири, або ви підключені до мережі Wi-Fi, і це розшифровує пакети
Павло

Я (очевидно) говорю про пакети, захоплені в режимі RFMON.
cYrus

@Paul: я змінив питання; ти можеш відповісти?
cYrus

Я б хотів, щоб міг. Якщо ви дотримуєтеся послідовності EAPOL, клієнт отримує PTK лише після першого пакету (анонс передається). AP знає PTK після другого пакету (сноунс). Якщо ви спостерігаєте за цими двома і знаєте MAC, що, звичайно, ви робите, і ssid + psk, то це має бути все, що вам потрібно. Третій пакет - це просто GTK для трансляції та багатоадресної передачі, а четвертий - це лише ACK. Якщо ви розшифровуєте одноадресний (що відповідає арп-відповідь), то перших двох пакетів має бути достатньо. Я не можу не допомогти, але думаю, що мені щось не вистачає, оскільки все говорить, що вам потрібно четверо.
Павло

Чи далі ви з цим?
Павло

Відповіді:


1

Обмін EAPOL також використовується для оновлення тимчасових ключів. Нові ключі встановлюються на Суплікант після того, як він надсилає 4/4, і встановлюються на Аутентифікатор, коли він отримує 4/4 [1]. Якщо Wireshark повинен правильно попрацювати з рекейкінгом, він повинен використовувати клавіші лише після зчитування пакету 4/4 у кадрі, оскільки пакети все ще можуть надходити під час повторної трансляції (навіть у випадку, коли вони не повинні через буферизацію)

Для перших 4WHS не чекати 4/4 можливо, але цілком зрозуміло, що вони просто лінувалися його реалізувати. 3/4 все ще необхідний, оскільки він містить групові ключі (навіть якщо ви не зацікавлені в них, але знайте, що ви не побачите ARP-запити від AP або клієнта, для якого у вас немає частини 4WHS) та ключі управління. Ви також можете пропустити 3/4, але тоді у вас немає підтвердження того, що обмін був успішним, оскільки 3/4 використовується для перевірки того, що Аутентифікатор знає ПМК.

[1] Зауважте, що при поточній схемі, якщо повідомлення 4/4 загублено, заявник почав використовувати новий ключ, а автентифікатор все ще використовує старий ключ, і повторна повторна 3/4, зашифрована за допомогою старого ключа, не допоможе . Ця проблема, серед багатьох інших із WPA2, вирішується в останньому стандарті 802.11 2012, зберігаючи дві клавіші паралельно.


1

Вся інформація, необхідна для побудови ПТК, обмінюється на кроках 1 і 2. Цього має бути достатньо для розшифрування одноадресного трафіку.

Без кроку 3 у вас не буде GTK, тому розшифрування багатоадресної передачі / трансляції буде неможливою.

Крок 4 насправді не потрібен для дешифрування трафіку захоплення, але якщо немає кроку 4, клієнт / AP не почнуть використовувати шифрування. Wireshark може відключити це, перш ніж він спробує також розшифрувати дані.


0

Ну, очевидно, що документація WireShark помилкова. :-)

Опис документації тут :

  • Після EAPOL 1 і 2 обидві сторони знають тимчасовий ключ, який буде використовуватися для розшифрування трафіку.
  • Третє повідомлення - це доказ того, що обидві сторони знають тимчасовий ключ і вказує на те, що Аутентифікатор (базова станція) готовий розпочати використання тимчасового ключа.
  • Четверте повідомлення запускає перемикач з PMK, встановленого перед EAPOL, на тимчасовий ключ, отриманий в EAPOL

Тож з цим це має сенс. WireShark не потребує повідомлення 3 ні для чого. Він знає ключі після повідомлень 1 і 2, але він чекає, коли він почне використовувати їх для розшифровки трафіку, поки не отримає повідомлення 4.

У житті немає жодних гарантій, особливо поведінки вільного програмного забезпечення, але розумно зробити ставку, що для WireShark для розшифрування сеансу не повинно бути вимоги щодо повідомлення 3.


Мені здається, що пакет 4 не потрібен ні правильно - він розроблений лише для того, щоб його чекати.
Павло

@Paul, це так, як сказати "відновити" не потрібно після "паузи".
Старий Про

@OldPro, я не впевнений, що очікування 4 ° - це гарна ідея, захоплені пакети, як правило, губляться, особливо коли вони подорожують по повітрю.
cYrus

@cYrus, чекати 4 важливо, оскільки ключі шифрування потрібно одночасно змінювати з обох сторін. Якщо клієнт не отримує 4, він не знає, що база отримала 3. Якщо клієнт не отримує 4, він знову надсилає 3 (що викликає повторне повторення 4), поки він або не отримає 4 або не відмовиться від спроби щоб створити з'єднання.
Старий Про

@OldPro: Я не говорю про протокол. Обидві сторони можуть отримувати всі пакети, але вони можуть бути відкинуті або не захоплені об'єктом, який пасивно фіксує трафік.
cYrus

0

Це не пояснює , чому, але цитуючи airdecap-нг документації в будь-якому випадку,

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. 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.