Взлом WiFi на Python

WiFi иконка

Работа пентестера основана на законом взломе и довольно часто возникает необходимость подключиться к WiFi, не зная пароль. Технология WPS уже давно помогает пентестерам взламывать WiFi. В нашей сегодняшней статье мы посмотрим, как самостоятельно реализовать атаку на WiFi, основанную на слабостях алгоритмов генерации WPS PIN.

Еще по теме: Лучшие хакерские программы для взлома со смартфона

Большинство сегодняшних роутеров поддерживает стандарт WPS (Wi-Fi Protected Setup), который дает возможность меньше чем за минуту установить надежное соединение между устройством и маршрутизатором, минуя этап настройки шифрования и ввода пароля. Девайсы подключаются по отдельному восьмизначному ключу WPS PIN, который состоит из цифр. Восьмая цифра — дайджест.

Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция сайта www.spy-soft.net, ни автор не несут никакой ответственности за любой возможный вред, причиненный материалами этой статьи. Взлом WiFi преследуется по закону!

Из всего разнообразия методов взлома WiFi:

  • подбор ПИН-кода или ключа безопасности методом перебора (брутфорс);
  • использование уязвимостей реализации;
  • социальная инженерия;
  • использование слабостей генерации ПИН-кодов.

В сегодняшней статье мы рассмотрим последний метод из списка.

Атака WPS Pixie Dust уже морально устарела, однако и сегодня мне встречаются подверженные ей роутеры. Проблема кроется в генерации случайных чисел и позволяет не ломать все восемь цифр в лоб, а угадывать лишь четыре из них, так как оставшиеся можно получить из ответов роутера.

Откуда берут стандартный PIN

При покупке маршрутизатора, в нем уже содержится полученный специальным алгоритмом WPS PIN для начального подключения к роутеру через WPS. WPS PIN состоит из восьми цифр. Как производители роутеров его получают? Очевидно, что нужно нечто уникальное для идентификации и генерации различных значений. Правильно — это MAC устройства, который мы можем получить из широковещательного BSSID.

BSSID (Basic Service Set Identifier) — уникальный идентификатор беспроводной сети. Часто BSSID совпадает с MAC-адресом устройства Ethernet MAC.

Генерация WPS PIN на примере

Как вы уже поняли, все начинается с BSSID. Подключаем к сети наш сeксуaльный роутер.

взлом wifi python
Страстный роутер ждет взлома

Анализируем любым удобным способом (например, Dumpper).

взлом wifi python
Dumpper внятным языком рассказывает нам о близлежащих беспроводных сетях

BSSID получили: C4:6E:1F:6A:8D:04.

Пришло время пошалить: открываем браузер и начинаем искать на различных (в том числе и на буржуйских) сайтах и форумах, как работают алгоритмы генерации PIN-кодов у конкретного производителя сетевого оборудования. Если нет желание это делать, то всегда можно «выдернуть» эти функции из сторонних программных продуктов с открытым исходным кодом.

Предположим, мы нашли, что большинство стареньких роутеров этого вендора используют алгоритм генерации ПИН-кода из последних трех октетов MAC-адреса устройства: 24-bit PIN = MAC[7..12].

Вот реализация этого алгоритма на Python.

Результатом работы скрипта будет ПИН-код 69829161. Проверим его достоверность.

взлом wifi python
Полученный WPS PIN идентичен стандартному (заводскому)

Подготовка и требования

Приступим. При разработке собственной утилиты для тестирования беспроводных точек доступа нам потребуется:

  • Windows 7 и выше;
  • Python 3 и выше;
  • удобная IDE;
  • любимый браузер;
  • личный маршрутизатор Wi-Fi с технологией WPS «для пыток»;
  • WpsWin (входит в состав того самого Dumpper);
  • IDA и Hex-Rays Tool.

Сразу, забегая вперед, скажу, что запускать готовый скрипт нужно будет с правами администратора. Можно с этим либо согласиться и перейти непосредственно к разработке, либо читать дальше.

Автозапуск с правами администратора

Для автозапуска мы будем использовать следующий код:

Теперь при попытке запустить скрипт вызов будет передан на UAC (если активен) и откроется новое окно терминала, где наш код выполнится от под администратором.

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

Разработка

Прежде всего добавим алгоритм подсчета дайджеста MAC-адреса (он уже был выше):

А также несколько функций генерации заветных ПИН-кодов.

Это далеко не полный список существующих алгоритмов, поэтому оставшиеся варианты будут вашим домашним заданием.

Немного реверса

Разумеется, нужен способ проверить получившиеся ПИН-коды. В этом нам и поможет WpsWin. Эта утилита позволяет подключиться к беспроводной точке доступа посредством технологии WPS. Но какие параметры ей передавать? Расчехляем IDA, подгружаем наш PE и исследуем.

Вот что нам необходимо проделать с исполняемым файлом:

  • найти передаваемые аргументы для взаимодействия через командную строку;
  • отыскать сообщения об успешных, неудачных и ошибочных результатах подключения;
  • пропатчить PE с целью сокращения тайм-аута на подключение к маршрутизатору.

Первая нужная функция находится по адресу 0x004012A0.

взлом wifi на python
Все аргументы командной строки как на ладони

Вторую можно найти по 0x00403370, а третья — это локальная метка основной функции.

взломать wifi python
Ошибка при невозможности подключения к беспроводной точке доступа

взломать wifi на python
Сообщение о некорректном ключе для подключения

По дефолту время тайм-аута соединения с роутером равно девяноста секундам.
Мы столько ждать не готовы, поэтому уменьшаем это время до (приблизительно) пяти секунд.

Само значение передается аргументом второй, найденной нами функции.

взломать wifi на python
Долой длительное ожидание

Патчим через «Edit → Patch program → Assemble…» и сохраняем.

взломать wifi на python
Да здравствует маленький тайм-аут!

Подключение по WPS

Продолжаем дописывать наш код. Запускаем WpsWin, передавая ему параметры для подключения к конкретной беспроводной сети, после чего благополучно перехватываем вывод и проверяем результат.

К сожалению, WpsWin не позволяет отобразить список близлежащих сетей с поддержкой WPS, как это делает wash в Linux, а значит, нам остается реализовать эту функцию самим.

Угадываем WPS PIN

Еще несколько десятков кликов по клавиатуре, и код готов.

Тестирование утилиты

Запускаем скрипт из терминала Windows. Выбираем беспроводную сеть. Профит!

утилита для взлома wifi на python
Удивительно, но программа работает
программа на python для взлома wifi
Вознаграждение за труды

Дополнительные фичи

Если же вам, дорогой читатель, захочется модернизировать этот код, то вот несколько интересных идей для реализации.

  1. Переписать утилиту с использованием встроенной библиотеки cmd, которая имитирует CLI.
  2. Придумать иной способ получения списка беспроводных сетей.
  3. Отыскать все возможные алгоритмы генерации WPS PIN у разных производителей.
  4. Добавить проверку на наличие у беспроводной точки доступа технологии WPS.
  5. Создать счетчик неудачных попыток ассоциации, что поможет выявить вероятную блокировку (Lock) или использование межсетевого экранирования в беспроводной сети.
  6. Добавить звуковое оповещение, когда будет найден верный ПИН-код.

Выводы

Что у нас есть по результатам:

  • +10 к интеллекту скиллу разработки средств автоматизированного тестирования;
  • небольшой список алгоритмов генерации ПИН-кодов;
  • работающая утилита тестирования слабостей генерации WPS PIN;
  • пароль от беспроводной сети.

Не могу не сказать, что вендоры уже давно знают об этой слабости и в последних обновлениях прошивок проблема, скорее всего, уже исправлена. Хоть иногда я и встречал «современные» точки доступа, где для генерации ПИН-кода был использован MAC, увеличенный (или уменьшенный) на единицу, доля уязвимых устройств с каждым днем все меньше.

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся аналитикой компьютерных угроз. Анонсы новых статей в Телеграме.

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

  1. Даниель Стародубцев

    Это действительно работает

    Ответить
    1. Влад

      Можеш на почту скинуть алгоритм пжпжп

    2. ANDREY

      Брат, пожалуйста скинь мне код nout.org@gmail.com , за ранее огромное спасибо здоровья тебе и счастья!

  2. Deth man

    Мне код скинеш?
    Вот она : dethmanize@gmail.com

    Ответить
  3. Саня

    Скинь тоже по братски, почта вот: nailjonenailjone@gmail.com

    Ответить
  4. Alcohol

    Скинь мне тоже пж на почту: dmitry.arsyonov@mail.ru

    Ответить
  5. Vasea

    Скиньте алгоритм плиз

    Ответить
  6. Максон

    Скиньте код пожалуйста.
    merser.zombie@gmail.com

    Ответить
  7. Ахмедов Руслан

    Привет, можешь пж скинуть исходный код ? Буду очень благодарен. Вот почта: rus8412014@gmail.com

    Ответить
  8. Oleg

    Скиньте мне на почту пожалуйста
    oleglaguta43@gmail.com

    Ответить
  9. Влад

    Сбросьте мне тоже пожалуйста код. Почта: vorona.vor62@gmail.com. Заранее спасибо!

    Ответить
  10. Кирилл

    Пожалуйста пришлите мне код, большое спасибо тому кто откликнется. Почта:lirikman2007@gmail.com
    Очень нужен код

    Ответить
  11. Knsag

    Ща скину

    Ответить
  12. m

    скиньте код, пожалуйста.вот почта jakobvip2005@gmail.com

    Ответить
  13. михаил

    скинь и мне пожалуста на эту etoturnikman@gmail.com

    Ответить
  14. Bohdan

    буду благодарен, если скинете и мне yarinko.b@gmail.com

    Ответить
  15. Тихон

    Привет! Можешь мне скинуть код в телеграмм:@Zero4kaX Либо на почту monopiskam@gmail.com

    Ответить
  16. вася

    скиньте плиз sonyatitova674@gmail.com

    Ответить
  17. Romka

    скиньте плиз мне тоже prophetix@rambler.ru

    Ответить
  18. Егорка

    скинь пожалуйста и мне, очень прошу !!!! H0rs4@yandex.ru

    Ответить
  19. kitles

    Привет, скинешь пожалуйста алгоритим. Почта : clash2018super@gmail.com

    Ответить
  20. Андрей

    Скиньте код плез на почту
    darkandrey929@gmail.com

    Ответить
  21. Алдияр

    скиньте мне алгоритм пожалуйста
    aldikzaldik@gmail.com

    Ответить
  22. Kostia

    скиньте мне пж почта : kostia.4gore@gmail.com

    Ответить
  23. Artem

    Скиньте пж мне на почту: ghm623595@gmail.com

    Ответить
  24. cleve56

    скиньте пж на почту выводит ошибку в 130 строке pin = i(mac)

    norboyev.diyorbek03@gmail.com

    Ответить
  25. NoName

    Скинь код ПЖ uzikyavny@gmail.com

    Ответить
  26. Михаил

    Привет можете скинуть на почту код?Буду благодарен

    Ответить
  27. Андрей

    Скиньте мне тоже алгоритм пж
    adsizov09@mail.ru

    Ответить
  28. Эд

    скиньте и мне на почту код
    kulaga.m.d@gmail.com

    Ответить
  29. Illya

    Скиньте код плиз на почту
    illyaterescho2007@gmail.com

    Ответить
  30. Влад

    Скиньте пожалуйста код, буду очень признателет если кто-то откликнеться!

    Ответить
  31. Влад

    Скинь пожалуйста код cyud.2019@gmail.com

    Ответить
  32. Андрей

    Пожалуйста и мне скиньте andreiuzik777@gmail.com

    Ответить
  33. alex

    скиньте код пожалуйста alekseipetrushenko@inbox.ru

    Ответить
  34. AtomMax_

    Раз все просят скинуть я тоже попрошу
    Telegram: @AtomMax_
    Или atommax228@gmail.com

    Ответить
  35. Nikita

    Можно скинуть код пожалуйста
    pablo.na0220@gmil.com

    Ответить
  36. Никита

    Скинь тоже код пожалуйста

    Ответить
  37. Никита

    Скинь тоже код пожалуйста kabanovnikita81@gmail.com

    Ответить
  38. Anton

    скинь ссылку код пожалуйста scorpingorance@gmail.com

    Ответить
  39. Danial

    Скиньте пожалуйста newlogi26@gmail.com

    Ответить
  40. Ярос

    Скинь код пожалуйста
    dedurinaroslav@gmail.com

    Ответить
  41. Justin

    Можешь скинуть код
    babyfun215@gmail.com

    Ответить
  42. Степан

    почему после ввода числа окно сворачивается?

    Ответить
  43. MaKaRoShKa

    Скиньте мне код пж
    maksrddr@gmail.com

    Ответить
  44. MaKaRoShKa

    Скиньте код пж
    maksrddr@gmail.com

    Ответить
  45. павел

    отправишь на почту? она: pashada6@mail.ru

    Ответить
  46. slashq

    скиньте код на почту пожалуйста
    почта: fansare6@gmail.com

    Ответить
  47. Эля

    Скиньте код на почту пожалуйста:nuriddinoveldor2008@gmail.com

    Ответить
  48. Эля

    Скиньте исходный код на почту пожалуйста:nuriddinoveldor2008@gmail.com

    Ответить
  49. ITNoob

    Можно пожалуийста обьяснить как написать эту программу и какие файлы нужно создавать?

    Ответить
  50. Utkirbek

    скиньте исходный код пожалуйста на olimovotkirbek49@gmail.com

    Ответить
  51. Женя

    скинь пожалуйста код и мне тоже xocderx@gmail.com

    Ответить
  52. Кира

    Скиньте код пожалуйста

    Ответить
  53. Рома

    скиньте мне тож код fedorcukroma1@gmail.com

    Ответить
  54. Даниил

    скиньте код mqwoy@mail.ru

    Ответить
  55. vladislav

    Привет, можешь скинуть код на почту пожалуйста, буду очень благодарен! почта: vladrozhentsev@inbox.ru

    Ответить
  56. гулайым

    мне тоже скиньте

    Ответить
  57. Александр

    Скиньте код пожалуйста

    Ответить
  58. Денис

    Скиньте код пожалуйста, буду очень признателен
    denysdzhumalo@gmail.com

    Ответить
  59. Tester

    Прошу скинуть код geor55@bk.ru

    Ответить
  60. Самандар

    Пожалуйста можете скинуть код на эту почту smamedsaliev@mail.ru

    Ответить
  61. Umidjon

    Скиньте код плиз на почту

    Ответить
  62. Виталий

    скиньте мне код пожалуйста . почта-mortytv443@gmail.com

    Ответить
  63. ишдщд

    Скиньте код плиз на почту

    Ответить
  64. Клон

    скинте код плиз на почту michael.lopachak@gmail.com

    Ответить
  65. John

    здравствуйте! если вас не затруднит, скиньте пожалуйста! t_n_x@mail.ru

    Ответить
  66. ivan

    здравствуйте! если вас не затруднит, скиньте пожалуйста! misoher797@pgobo.com

    Ответить
  67. Vano

    отправьте код пожалуйста arti.m.2019@inbox.ru

    Ответить
  68. MIM0kr@k0d!1

    коротко о том как собрать базу email, даже парсить удобно

    Ответить
  69. Артём

    скиньте мне код пожалуйста
    вот email: artesyl680@gmail.com

    Ответить
  70. Ярослав

    Прошу пожалуйста отправить код на почту
    Почта — Sklyaryarik@gmail.com

    Ответить
  71. Abo

    дай код пж mkoyanallbert2005@gmail.com

    Ответить
  72. Валентин

    Скиньте умоляю код на почту) promaxemenem@mail.ru

    Ответить
  73. Olha Lazyniuk

    я только начала учится Python.
    посоветуй какие ресурсы лучше использовать для учебы. Уровень информатики близится к 0😅 но я стараюсь впитывать все что нахожу, но не все что нахожу мне понятно. А без понимания начинаются затыки. если есть поясняющая литература на понятном чайнику языке, отправьте пожалуйста в телегу @Olhalazyniuk

    Ответить
  74. Imqwrwee

    Добрый день(вечер, утро), пришлите алгоритм пожалуйста, вот почта: axolt518@proton.me

    Ответить
  75. Легкий на подъем

    Готов помочь со скриптом. Я дописал его и модернизировал. Пишите tg @som_som1

    Ответить