Расшифровка WPA трафика в Wireshark
Sam SepiolНачнём с теории, чтобы понять, почему процесс расшифровки Wi-Fi трафика в Wireshark требует некоторых усилий и почему нельзя просто расшифровать любой захваченный Wi-Fi трафик даже если есть пароль от Точки Доступа.
При передаче по Wi-Fi трафик шифруется с использованием PTK (Pairwise transient key — можно перевести как Парный переходной ключ). При этом PTK является динамичным, то есть создаётся заново для каждого нового соединения. Таким образом получается, что Wi-Fi трафик для каждого соединения в одной и той же Точке Доступа зашифрован разными PTK, причём даже для одного Клиента после переподключения PTK меняется. Для вычисления PTK необходимы данные из четырёх этапного рукопожатия, а также пароль от Wi-Fi сети (на самом деле нужна ещё и другая информация, например имя (SSID) сети, но получение этих данных не является проблемой).
Главное, что нужно понять: для расшифровки Wi-Fi трафика необходимо четырёх этапное рукопожатие. Причём не любое, а именно то, которое произошло для передачи того трафика, который нужно расшифровать. Но для использования захваченного рукопожатия необходим пароль от Wi-Fi сети.
Итак, чтобы расшифровать Wi-Fi трафик нужны:
1) рукопожатие, произошедшее между Клиентом и Точкой доступа непосредственно перед обменом расшифровываемой информацией
2) пароль для подключения к Точке Доступа
Далее будет показано два примера захвата Wi-Fi трафика и его расшифровки. Первый захват данных выполнен с помощью Airodump-ng, а затем беспроводной трафик будет расшифрован в Wireshark. Во втором примере данные будут захвачены и расшифрованы с использованием только Wireshark.
Захват Wi-Fi трафика в Airodump-ng
Чтобы данные были пригодны для расшифровки, нужно чтобы Wi-Fi карта не переключала каналы, а выполняла захват информации на одном канале, на котором работает целевая Точка Доступа. Поэтому начнём со сбора информации о целевой точки доступа.
Смотрим имена беспроводных интерфейсов:
iw dev
Переводим ИНТЕРФЕЙС в режим монитора командами вида:
sudo
ip link set
ИНТЕРФЕЙС down
sudo
iw ИНТЕРФЕЙС set
monitor control
sudo
ip link set
ИНТЕРФЕЙС up
Запускаем airodump-ng командой вида:
sudo
airodump-ng ИНТЕРФЕЙС
Например, я хочу захватить и расшифровать трафик для Точки Доступа Paangoon_2G, которая работает на 9 канале.
![](https://sun9-70.userapi.com/c204820/v204820933/20ac6/zden8fcVLns.jpg)
Тогда мне нужно перезапустить airodump-ng командой вида:
sudo
airodump-ng ИНТЕРФЕЙС --channel КАНАЛ --write ИМЯ_ФАЙЛА
![](https://sun9-45.userapi.com/c204820/v204820933/20abe/5761uK2vKPw.jpg)
Надпись WPA handshake говорит о том, что было захвачено четырёх этапное рукопожатие. Это означает что:
- теперь мы сможем расшифровать Wi-Fi данные (если у нас есть ключ от Wi-Fi сети)
- мы сможем расшифровать данные только для конкретного клиента (с которым было совершено рукопожатие)
- мы сможем расшифровать данные, которые были отправлены только после этого захваченного рукопожатия
Расшифровка Wi-Fi трафика в Wireshark
Открываем файл захвата в Wireshark. В исходном виде трафик выглядит примерно так:
![](https://sun9-4.userapi.com/c204820/v204820933/20ace/kGS6BvXdQB0.jpg)
То есть без расшифровки мы видим только MAC-адреса участников передачи данных, пакеты некоторых видов, а также пакеты с данными — полезная нагрузка в которых зашифрована.
Перед расшифровкой убедимся, что имеется хендшейк, иначе продолжать нет смысла:
eapol
![](https://sun9-72.userapi.com/c204820/v204820933/20ad6/DjXilfWSYrk.jpg)
Перед расшифровкой нам нужно сделать некоторые изменения в настройках протокола IEEE 802.11.
Перейдите в Edit → Preferences, раскройте секцию protocol и выберите IEEE 802.11. Настройки должны быть такими:
![](https://sun9-27.userapi.com/c204820/v204820933/20ade/XqulF4Hmb7w.jpg)
Когда у вас будут такие же настройки, как и на предыдущем скриншоте, нажмите на кнопку Edit рядом с надписью Decryption Keys (для добавления WEP/WPA ключа):
![](https://sun9-67.userapi.com/c204820/v204820933/20ae6/v5sbo-6Q1AU.jpg)
Нажмите кнопку Создать. В открывшемся окне в поле Key type выберите wpa-pwd, введите пароль от Wi-Fi сети, а через двоеточие имя (SSID) сети и нажмите ОК.
![](https://sun9-4.userapi.com/c204820/v204820933/20aed/I-b_3ts3SqY.jpg)
Например, в моём случае пароль 00001777, а имя сети Paangoon_2G, тогда я ввожу:
00001777:Paangoon_2G
![](https://sun9-71.userapi.com/c204820/v204820933/20af5/Ui7y47exTLA.jpg)
Нажмите кнопку Применить:
Трафик будет расшифрован:
![](https://sun9-53.userapi.com/c204820/v204820933/20afd/AI_ZYsB_dos.jpg)
Теперь там видны DNS, HTTP запросы и ответы, а также другие сетевые пакеты.
Если захвачен трафик не только для данной сети, но и для других сетей, работающих на этом же канале, либо для данной сети но других клиентов, для которых не захвачены рукопожатия, то этот трафик не будет расшифрован.
Захват Wi-Fi в Wireshark
Трафик Wi-Fi можно захватить непосредственно в Wireshark. Но нам предварительно нужно переключить Wi-Fi карту на тот же канал, на котором работает целевая Точка Доступа. Это делается командами вида:
sudo
ip link set
ИНТЕРФЕЙС down
sudo
iw ИНТЕРФЕЙС set
monitor control
sudo
ip link set
ИНТЕРФЕЙС ups
udo
iw dev ИНТЕРФЕЙС set
channel КАНАЛ
В этих командах нужно слова ИНТЕРФЕЙС и КАНАЛ заменить на действительные данные.
Когда интерфейс переключён на нужный канал, в Wireshark найдите этот интерфейс, в его свойствах поставьте галочку Capture packets in monitor mode. Затем начните захват данных:
![](https://sun9-55.userapi.com/c204820/v204820933/20b05/7jw5kZNlA9o.jpg)
Последующая расшифровка выполняется точно таким же образом, как показано выше.
Заключение
Для расшифровки WEP Wi-Fi трафика достаточно знать только пароль. Но ТД с WEP уже практически не встречаются.