
Скрипт и набор аппаратного обеспечения для автоматического массового деаутентификации клиентов 802.11. Захватывает пакеты для последующих неблаговидных целей.
Скрипт для массовой автоматической деаутентификации клиентов 802.11. Захватывает пакеты для последующих злонамеренных действий. Отличный повод для разговора в вашей местной кофейне.
Данный скрипт разработан для работы на Raspberry Pi 3 или выше. Разумеется, он также будет работать на аналогичном оборудовании с такими же или большими возможностями.
Для эффективной работы скрипта потребуется дополнительное оборудование. Вам также понадобится:
Для максимальной эффективности также рекомендуется иметь:
Лично я использую ConnectBot вместе с Hacker's Keyboard на своём телефоне для управления такими системами через SSH. Это привлекает минимум внимания и помещается в карман.
Рекомендую настроить устройство на автоматическое подключение к вашему собственному VPN, чтобы избежать проблем с маршрутизацией/NAT. Настройка OpenVPN на облачном хосте — самый простой способ этого добиться. Обязательно используйте директиву конфигурации сервера OpenVPN client-to-client или настройте перенаправление другим способом.
Для подключения устройства к Интернету, очевидно, потребуется другой метод, кроме Wi‑Fi. Самый простой вариант — сотовая связь. Если вы не планируете удалённо загружать захваченные пакеты, требуется очень мало пропускной способности (<100 Киб/с). Можно обойтись дешёвым «безлимитным» тарифом, который ограничивает скорость после использования определённого объёма данных.
У меня возникали проблемы с MTU при использовании OpenVPN через сотовую сеть. Самый простой способ исправить это — установить MTU на 1200 с помощью команды ip link set dev tunX mtu 1200, где tunX — ваше туннельное устройство. В зависимости от вашей сети может потребоваться другое значение MTU.
В зависимости от конкретной конфигурации подключённые USB‑устройства могут потреблять больше энергии, чем Raspberry Pi может обеспечить обычным способом. Использование USB‑хаба с внешним питанием, такого как упомянутый выше, позволит питать адаптеры через другой USB‑порт аккумулятора. Некоторые дешёвые USB‑хабы будут «обратно питать» хаб на Raspberry Pi. Это допустимо, если вы используете качественный аккумулятор, и даже полезно.
Другое решение — подать дополнительное питание на USB‑хаб с помощью разветвителя например, такого. Это работает, но я не рекомендую. Это ещё одна вещь, которая может случайно отключиться, и в целом неудобно при организации.
Если вы обеспечиваете удалённое управление через подключённый по USB телефон, по возможности убедитесь, что аккумулятор полностью заряжен при запуске системы. Некоторые дешёвые устройства могут не потреблять достаточный ток, чтобы компенсировать расход энергии при постоянном подключении к передаче данных.
Комбинация нескольких адаптеров, Raspberry Pi и сотового модема будет сильно нагреваться. Особенно горячими работают Panda PAU06. Если вы не обращаете внимания на тепло, это может привести к оплавлению адаптеров или ещё более серьёзным последствиям. Проведите тестовый запуск с выбранной сумкой/контейнером при комнатной температуре, чтобы убедиться, что она обеспечивает достаточное рассеивание тепла. Если вы вынуждены использовать систему в жаркой среде, например, внутри автомобиля в тёплый день, примите дополнительные меры для предотвращения перегрева. В случае автомобиля достаточно настроить климат-контроль на кондиционер и периодически запускать двигатель удалённо.
Некоторые дешёвые телефоны склонны к перегреву из-за сочетания дополнительного оборудования и необходимости регулярной передачи данных. В таких условиях они могут отключаться, лишая вас возможности удалённого управления. Размещение телефона в отдельном отсеке от остальной системы поможет, но лучше использовать другое устройство.
Если вы планируете использовать систему скрытно, имейте в виду, что тепло может привлечь внимание неожиданным образом. Если оставить её на приборной панели автомобиля в снежный день, она растопит снег и лёд. На лобовом стекле появится аккуратное круглое чистое пространство, в центре которого будет видна система, в то время как всё остальное будет покрыто снегом!
Инструкции по установке wisp подробно описаны в rpi-install.md. Действия должны быть аналогичными для систем, отличных от Raspbian. Wisp зависит от aireplay-ng из aircrack-ng для передачи кадров деаутентификации. Обратите внимание: вам потребуется собрать Python-3.7.1 для устройства, что также описано в файле rpi-install.md.
Wisp зависит от ещё одной небольшой программы на C под названием dream. Исходный код включён как dream.c. Dream зависит от libpcap.
Скомпилируйте dream для вашего устройства командой gcc -O3 dream.c -lpcap.
Dream — это инструмент для мониторинга трафика 802.11 с выводом, пригодным для grep. Он также сохраняет захваченный трафик в файлы в стандартном формате pcap. Wisp вызывает dream для каждого мониторингового адаптера и анализирует вывод на предмет клиентского трафика. Вот его аргументы:
--a: Сообщать только о трафике от ассоциированных клиентов. (Все пакеты всё равно записываются на диск, если включён --d.)--d (file): Сохранять пакеты в указанный файл.-[b][c][d][f][s][t]: Задаёт, какие поля выводить в каждой строке, а именно:
b: BSSc: Номер канала.d: Имя устройства, которое приняло пакет.f: Частота.s: Станция (STA).t: Временная метка pcap.Эти поля всегда выводятся в одном и том же порядке, независимо от указанного порядка. (То есть -bcst эквивалентно -sctb.)
Wisp читает конфигурацию из файла в формате JSON с именем wisp.json. Вот описание ключей:
monitors: Содержит список устройств, которые будут настроены как мониторы. Каждое устройство содержит подключачи, описывающие его конкретную конфигурацию:
channel: Канал для мониторинга.injector: Устройство, которое будет настроено для инжекции кадров деаутентификации.timing: Перечисляет несколько параметров времени, все задаются в миллисекундах:
delay: Задержка между отправкой пакетов деаутентификации на одного клиента.jitter: Модулирует время задержки случайной величиной в указанном диапазоне.stale: Время, в течение которого клиент не наблюдается, прежде чем он будет удалён из списка задержки. Имеет небольшой практический эффект, если только оно не близко к интервалу задержки.Все параметры загружаются из wisp.json, поэтому wisp запускается просто: python3 ./wisp.py
Wisp автоматически настраивает адаптеры, как описано в wisp.json. Он также отключает rfkill и завершает все мешающие процессы, аналогично поведению airmon-ng.
Wisp переименовывает указанные устройства в формат wispX, где X — номер, связанный с phy. При выходе он переименовывает устройства обратно в исходные имена.
Wisp выводит символ . за каждый отправленный деаутентификационный пакет. Это простой и эффективный способ убедиться, что он работает корректно.
Wisp (через dream) создаёт файлы pcap с префиксом имени радиоадаптера (phy), захватившего пакеты, и случайной шестнадцатеричной строкой, оканчивающиеся на .cap. Например, что-то вроде phy0-8cf9ec5ca146943f.cap. Затем вы можете просматривать, анализировать и обрабатывать их любыми стандартными инструментами для файлов pcap.