Wpa psk для андроид

Как получить пароли WPA2 при помощи лишь одного устройства на базе Android

Взломать Wi-Fi роутер намного проще, чем вы думаете, даже при помощи телефона на базе Android без прав суперпользователя

Взломать 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-mark hold apache*, чтобы отказаться от некоторых пакетов, связанных с веб-сервером Apache, которые автоматически загружаются во время установки PHP. В этом случае мы не будем засорять систему бесполезными бинарными файлами и службами и, таким образом, немного ускорим установку.

После того как мы отказались от ненужных пакетов, переходим к установке PHP и вводим команду aptget install php.

В конце необходимо перезагрузить Android-устройство. В этом случае мы уже точно будем знать, что все пакеты и обновления для ядра будут работать в системе с Kali, установленной через UserLAnd.

Шаг 2. Настройка PHP-сервера

После перезагрузки устройства запустите приложение UserLAnd и подключитесь к системе с Kali через SSH.

Теперь нам понадобится приложение Screen, позволяющее управлять несколькими терминальными сессиями внутри одной консоли. В нашем случае речь идет об одном и том же Android-устройстве. Приложение Screen умеет «отсоединять» или закрывать окно терминала без потери информации, с которой вы работали во время сессии.

Для запуска приложения введите следующую команду screen.

Затем открываем шелл с правами суперпользователя при помощи команды su.

Создаем директорию с именем «phpServer/» при помощи команды mkdir.

Переходим в созданную директорию, используя команду cd:

Создаем файл «index.php» в редакторе nano.

Вставляем в созданный файл следующий PHP-скрипт, сохраняем и выходим из nano. Нажмите Ctrl-x и Enter.

Этот PHP-скрипт позволяет перехватывать данные и не требует модификации. Когда целевая система на базе Windows 10 отсылает учетные записи для Wi-Fi, этот PHP-сервер сохранит пароли в файле, где в имени будет указана дата, а в качестве расширения – «.credz».

Читайте также:  Ng android ru линия танца

Запускаем PHP-сервер при помощи команды php S 0.0.0.0:80. Ключ –S отвечает за запуск веб-сервера, встроенного в PHP, а 0.0.0.0 делает доступным сервер на каждом интерфейсе. Номер порта, на котором висит сервер – 80. Этот порт используется по умолчанию всеми веб-серверами и браузерами.

Для выхода (или отсоединения) сессии, запущенной в приложении Screen без остановки PHP-сервера, нажмите Ctrla, а затем d.

Есть два способа проверить, что PHP-сервер продолжает работать в фоновом режиме. Например, можно использовать curl для отправки на сервер некоторых данных, эмулирующих Wi-Fi пароль.

Затем при помощи команды ls посмотрите, какие файлы появились в директории phpServer/.

Смотрим содержимое файлов с расширением .credz при помощи команды cat.

Второй способ проверки работоспособности сервера – команда netstat и браузера на Android-устройстве.

Обратите внимание, что 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.

Инициируем шелл с правами суперпользователя.

Затем при помощи wget загружаем архив с Ngrok. Последнюю версию можно посмотреть на странице загрузки (на момент написания статьи последняя версия — 2.2.8).

Далее распаковываем архив.

Ищем бинарный файл ngrok.

Во время настройки Ngrok указываем выданный ранее аутентификационный токен, что позволит получить доступ ко всем функциям и связать локальный PHP-сервер с учетной записью. Выполняем команду ngrok с аргументом authtoken.

Подробнее о доступных аргументах и о том, как работает Ngrok написано в официальной документации.

Шаг 6. Запуск туннеля

Запускаем команду ngrok, чтобы PHP-сервер стал публично доступным.

Здесь я столкнулся с раздражающей ошибкой, приводящей к сбою в Ngrok и пустому экрану в Android. До конца не понятно, где находится проблема: в бинарном файле Ngrok, в приложении Screen / ConnectBot / UserLAnd или где-то еще. Если вы используете встроенный SSH-клиент или JuiceSSH вместо ConnectBot, и ошибка не возникает, значит, проблема связана с SSH.

Если экран замирает во время запуска вышеуказанной команды, нажмите Ctrlc для отмены, а затем Ctrld для завершения сессии в приложении Screen. Далее нужно повторно создать сессию, открыть шелл с правами суперпользователя и запустить команду, указанную ранее. Пробуйте до тех пор, пока все не заработает. Если вы знаете причины замирания или методом решения этой проблемы, поделитесь своими знаниями в комментариях.

После успешного запуска Ngrok обратите внимание на поле «Forwarding». URL, указанный в этом поле, нужно добавить в полезную нагрузку. Затем отсоедините сессию в Screen без остановки сервера Ngrok, нажав Ctrla, а затем d.

Шаг 7. Проверка работоспособности туннеля

Читайте также:  Посмотреть ток заряда android

После отсоединения от сессии нужно проверить работоспособность Ngrok и PHP посредством отсылки данных при помощи curl. Не забудьте заменить слово «SUBDOMAIN» на адрес, указанный в поле «Forwarding».

В случае успешной отправки данных Curl должен вернуть несколько HTML-строк. Используя команду cat, смотрим содержимое созданного файла с расширением .credz.

Шаг 8. Создание полезной нагрузки на PowerShell

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

Теперь для целевой системы нам нужно создать полезную нагрузку на PowerShell, выглядящую примерно так:

Скрипт, показанный выше, в цикле проходит по всем сетевым именам (SSID), находящимся на компьютере (найденным в XML-файлах в папке «C:\ProgramData\Microsoft\Wlansvc\Profiles\»), запускает команду netsh для каждого SSID и вытаскивает пароли для Wi-Fi в чистом виде из поля «Key Content».

Затем результаты работы команды netsh парсятся, обнаруженные SSID’ы и пароли соединяются в переменной «$sendData» и отправляются на сервер Ngrok.

Рассмотрим на примере, как работает netsh. Если у вас Windows 10 в терминале введите команду ниже для просмотра паролей:

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

Рисунок 3: Пример работы команды netsh

Ниже показана та же самая полезная нагрузка в однострочном формате:

Сохраняем полезную нагрузку в этом формате в директории /sdcard/Download/ в файле с расширением .bat. Из этой папки файл будет доступен в операционной системе Android для последующих манипуляций.

Перед сохранением файла не забудьте заменить «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» особенно касаемо аспектов социальной инженерии.

Читайте также:  Pixels to dpi android

Вариант 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/.

Шаг 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_.

Источник

Оцените статью