WiFi WPA2

Thank you for reading this post, don't forget to subscribe!

Пред­по­ло­жим, есть сеть myWifiNet с паро­лем p@$$w0rd.

Пароль доста­точ­но не ред­кий и он точ­но будет в любой мало-маль­ски пол­ной сло­вар­ной базе зло­умыш­лен­ни­ков. При­ки­нем­ся, что мы не зна­ем этот пароль и попро­бу­ем его узнать!

Счи­та­ем, что в ком­пью­те­ре есть WiFi кар­точ­ка, сов­ме­сти­мая с нашей зада­чей (а это может быть даже про­стей­шая USB-сете­вая кар­та TP-Link, напри­мер, у меня спра­ви­лась с зада­чей ста­рень­кая TL-WN727N), запу­щен Kali Linux (вир­ту­ал­ка, Live CD, уста­нов­лен­ная на диск - не важ­но). Начали!

Прак­ти­че­ски все коман­ды выпол­ня­ют­ся с пра­ва­ми рута, поэтому:

# sudo su -

(ну или пред­ва­ряй­те все коман­ды sudo)

 

1) Подготовка

Смот­рим, какие име­ют­ся под­хо­дя­щие сете­вые интерфейсы:

# airmon-ng

Ско­рее все­го, это wlan0.

Выклю­ча­ем его:

# ifconfig wlan0 down

"При­би­ва­ем" про­цес­сы, кото­рые сей­час обра­ща­ют­ся к бес­про­вод­ной кар­точ­ке и поме­ша­ют пере­ве­сти кар­ту в режим мониторинга.

# airmon-ng check kill

Пере­во­дим кар­ту в режим мони­то­рин­га (monitor mode):

# iwconfig wlan0 mode monitor
# ifconfig wlan0 up

Про­ве­ря­ем, что интер­фейс пере­ве­ден в режим Monitor:

# iwconfig

Если так не про­ка­ти­ло, про­бу­ем так:

# airmon-ng start wlan0

Про­ве­ря­ем:

# iwconfig

Долж­но быть ок (т.е. Mode: Monitor)

 

2) Ищем "жертву"

Смот­рим, что вооб­ще есть в wifi эфире:

# airodump-ng wlan0

В выво­де коман­ды нахо­дим mac-адрес точ­ки досту­па (BSSID) и канал (CH) нашей сети (ESSID), пароль кото­рой мы будем ста­рать­ся най­ти. Пусть это будет:

BSSID: 11:22:33:44:55:66
CH: 8

#  airodump-ng -c 8 -a wlan0

-a - пока­зы­вать толь­ко свя­зан­ных с сетью клиентов
-с 8 - сеть на 8 канале

Нажми­те бук­ву "o" и цве­том будут выде­ле­ны кли­ен­ты (STATION ука­жет их mac-адре­са), ассо­ци­и­ро­ван­ные к одной точ­кой досту­па (BSSID).

Здесь есть пря­мо инте­рес­ные шту­ки, напри­мер, Probes - здесь ука­зы­ва­ют­ся назва­ния сетей, к кото­рым пыта­ют­ся под­клю­чить­ся кли­ен­ты (т.е. это запро­сы кли­ен­тов). Отсю­да же инте­рес­ная шту­ка - сде­ла­ли вы сеть с скры­тым SSID, но кли­ент, под­клю­ча­ю­щий­ся к такой сети, все рав­но выдаст ее назва­ние. С точ­ки зре­ния хаке­ра факт скры­той сети может при­влечь вни­ма­ние. Но тут уж все индивидуально.

 

3) Запись хендшейка

Немно­го мат­ча­сти: для того что­бы искать пароль сети, надо дождать­ся момен­та, когда бес­про­вод­ной кли­ент будет пытать­ся под­клю­чить­ся к точ­ке досту­па. Для WPA/WPA2 этот про­цесс состо­ит из 4 этап­но­го "руко­по­жа­тия" (4-way handshake), в про­цес­се кото­ро­го про­ис­хо­дит обмен клю­ча­ми меж­ду кли­ен­том и точ­кой досту­па. Вот имен­но это и нуж­но нам про­мо­ни­то­рить и запи­сать для даль­ней­ше­го анализа.

Созда­ем пап­ку, куда будут запи­сы­вать­ся трафик:

# mkdir /var/mycaps

Ждем пере­хва­та хендшейка:

# airodump-ng --bssid 11:22:33:44:55:66 -c 8 -w /var/mycaps/ wlan0

Что­бы в захва­чен­ном тра­фи­ке было что искать, нужен хенд­шейк (руко­по­жа­тие). Воз­мож­ны два вари­ан­та действий:
- мак­си­маль­но скры­тый спо­соб - ждать, пока кли­ент сам штат­но ини­ци­и­ру­ет про­цесс под­клю­че­ния к точ­ке доступа
- гру­бо, но быст­ро - не ждать, пока кли­ент на что-то решить­ся сам и "кик­нуть спек­та­то­ра со сце­ны", отпра­вив кли­ен­ту "мерт­вые паке­ты", из-за чего кли­ент отклю­чить­ся от теку­щей точ­ки досту­па и попы­та­ет­ся под­клю­чить­ся к ней сно­ва. В тео­рии, это может выдать нас (напри­мер, если в бес­про­вод­ной сети ведет­ся непре­рыв­ный ана­лиз тра­фи­ка), но мы не же насто­я­щие хакеры…

Коро­че, пой­дем по быст­ро­му пути и заста­вим бес­про­вод­но­го кли­ен­та отклю­чить­ся от сети. Для это­го в дру­гом окне выпол­ним команду:

# aireplay-ng --deauth=5 -a 11:22:33:44:55:66 -c AA:BB:CC:DD:EE:F1 wlan0

- отправ­ля­ем 5 deauth-паке­тов: --deauth=5
- mac точ­ки досту­па: -a 11:22:33:44:55:66
- mac-адрес пере­под­клю­ча­е­мо­го кли­ен­та: -c AA:BB:CC:DD:EE:F1

А в пер­вом окне ждем паре­хва­та хенд­шей­ка (ждем появ­ле­ния "WPA handshake <наша_сеть>" ввер­ху спра­ва). Как толь­ко дожда­лиь пере­хва­та, завер­ша­ем про­цесс запи­си тра­фи­ка и про­ве­ря­ем, что пап­ка /var/mycaps не пуста!

Обра­ти­те вни­ма­ние - на этом эта­пе зло­умыш­лен­ник поки­да­ет место рас­по­ло­же­ния сети. Теперь ему нуж­ны вычис­ли­тель­ные мощ­но­сти. Очень мно­го мощ­но­стей 🙂 Но! Это не то же самое, когда он был бы вынуж­ден сидеть физи­че­ски вбли­зи объ­ек­та, где его могут запи­сать каме­ры наблю­де­ния или охра­на. А уже чере совсем неболь­шое вре­мя никто не смо­жет сопо­ста­вить факт сто­ян­ки како­го-то авто в тече­ние 15 минут и взлом сети.

 

4) Поиск пароля WiFi сети

Вари­ан­ты:

1. пере­бор (брут­форс). Напри­мер, ути­ли­той hashcat (https://github.com/hashcat/hashcat-utils/releases);
2. ата­ка по сло­ва­рю (тем же hashcat или aircrack-ng).

Про­ил­ли­ст­ри­ую один вари­ант - с помо­щью aircrack-ng (осталь­ное - по жела­нию сами).

Наша цель - не реаль­но кого-то ломать, а уви­деть, что это реаль­но, и оце­нить риск осу­ществ­ле­ния тако­го взлома!

Созда­дим тек­сто­вый файл /var/mydict/pwd_list.txt в кото­рый запи­шем несколь­ко паро­лей (по одно­му на стро­ку), один из кото­рых - насто­я­щий пароль нашей сети:

# mkdir /var/mydict && touch /var/mydict/pwd_list.txt
# cat /var/mydict/pwd_list.txt

2357657-23467
hgfsrrw$2K
p@$$w0rd
123455-676
%sMEFD-643

Это жал­кое подо­бие мно­го­мил­ли­он­ных баз паро­лей, кото­рые исполь­зут­ся в реаль­но­сти, но нам не неде­ли ждать надо, а убе­дить­ся, что все реально.

Поиск паро­ля сети с исполь­зо­ва­ни­ем тако­го "сло­ва­ря":

# aircrack-ng -a 2 -b 11:22:33:44:55:66 -w /var/mydict/pwd_list.txt /var/mycaps/*.cap

где:
/var/mycaps/*.cap - путь к фай­лам с захва­чен­ным и запи­сан­ным тра­фи­ком, в том чис­ле и хендшейка
-a 2 - тип "WPA/WPA2/WPA2-PSK" (а "1" - если WEP, но это уже как-то несо­лид­но совсем)
-b 11:22:33:44:55:66 - mac-адрес точ­ки досту­па бес­про­вод­ной сети
-w /var/mydict/pwd_list.txt - путь до сло­ва­ря паро­лей (по кото­рым идет пере­бор). Если сло­ва­рей несколь­ко, раз­де­ли­те их назва­ния запятыми.

Мож­но было бы еще:
- ука­зать и имя сети (пара­метр -e wifi_net_name) вме­сто MAC-адре­са точки.
- запи­сать най­ден­ный пароль сети в файл file_name (-l file_name)

В нашем при­ме­ре пароль будет най­дет момен­таль­но (что не удивительно).

Изу­че­ние вопро­са, как зани­мать­ся брут­фор­сом (т.е. тупым пере­бо­ром вари­ан­тов, или не очень тупым ;)), не будем здесь поднимать.

 

5) Выводы

Итак, какие мож­но из это­го сде­лать выводы?

1) ника­ких про­стых сло­вар­ных паро­лей! Слож­ный пароль - это един­ствен­ный про­стой спо­соб защи­ты WiFi, т.к. бес­про­вод­ная сеть доступ­на всем и каж­до­му, ваш сосед может меся­ца­ми вас "ломать" и вы даже знать это­го не будете.
2) менять пароль раз в два меся­ца может быть неудоб­ной мерой защи­ты, но зато поз­во­лит све­сти на нет попыт­ки подо­брать пароль, т.к. хаке­ры не успе­ют раз­га­дать ваш ста­рый пароль, а вы уже его поме­ня­е­те на новый.
3) сети WiFi-Enterprise не про­сто так нуж­ны, они поз­во­ля­ют управ­лять поли­ти­кой паро­лей гораз­до гиб­че, чем сооб­щать один пароль раз в два меся­ца всем сотруд­ни­кам или чле­нам семьи/знакомым.