Готовый троян для андроид

Пишем троян под Андроид

Когда мы говорим о плагинах и модульных приложениях, то в первую очередь имеем в виду обычный пользовательский софт. Однако модульный дизайн может быть не менее полезен при разработке руткитов и бэкдоров. Обычными средствами обновлять такой софт слишком палевно, да и не всегда возможно, а вот незаметно подгрузить модуль с новой функциональностью по сети — это пожалуйста. А если вынести ключевую функциональность в модули и удалять их сразу после загрузки, то можно серьезно подпортить жизнь реверсеру.

В классической Java есть класс под названием java.lang.ClassLoader. Его задача — загружать байт-код указанного класса (файл с расширением .class) в виртуальную машину во время исполнения приложения. Затем можно создать объект этого класса и вызывать его методы с помощью рефлексии. Такой вот способ динамической загрузки кода, который можно использовать для написания приложений с расширяемой функциональностью, или, попросту говоря, поддержкой плагинов.

В Android нет виртуальной машины Java и нет класса ClassLoader, но есть его аналог DexClassLoader, выполняющий ровно ту же функцию, но в отношении байт-кода Dalvik (и файлов .dex вместо .class соответственно). И, в отличие от настольной Java, где проще положить нужный jar-файл в CLASSPATH и не возиться с динамической загрузкой, в Android такой подход дает действительно много преимуществ, главное из которых в том, что функциональность приложения можно расширять и обновлять незаметно для пользователя и ни о чем его не спрашивая. В любой момент твое приложение может скачать файл с классом с сервера, загрузить, а затем удалить файл.

Кроме этого, классы можно хранить прямо в пакете APK и загружать во время старта приложения. Профит здесь в том, что код загружаемых классов будет отделен от кода самого приложения и находиться в APK «не по адресу»; инструменты типа apktool, которыми так любят пользоваться реверсеры, их просто не увидят. С другой стороны, это скорее защита от дурака, так как нормальный реверсер быстро смекнет, что к чему.

Как бы там ни было, динамическая загрузка классов — очень полезная штука при написании не совсем «белых» приложений, поэтому любой security-специалист должен знать, как этот механизм работает и как он используется в троянах.

ПРОСТЕЙШИЙ ПРИМЕР

Чтобы все написанное далее было проще понять, сразу приведу пример рабочего загрузчика классов:

В целом здесь все просто: код загружает jar-архив /sdcard/myapp/module. jar с нашим классом, загружает из него класс com.example.modules.simple. Module, создает объект и вызывает метод run(). Обрати внимание на три момента:

  • DexClassLoader умеет загружать как «просто» файлы .dex, так и jar-архивы, последние предпочтительнее из-за сжатия и возможности использовать цифровую подпись;
  • второй аргумент конструктора DexClassLoader — это каталог, который он использует для сохранения оптимизированного байт-кода (odex), для простоты мы указываем приватный каталог самого приложения;
  • в качестве аргумента метода loadClass всегда необходимо указывать адрес класса вместе с именем пакета.

Чтобы проверить данный код на работоспособность, создадим простейший модуль:
Не торопись создавать новый проект в Android Studio, можешь накидать этот код в блокноте и собрать его в jar-архив прямо из командной строки:

Удостоверься, что каталоги platforms/android-23 и build-tools/23.0.3 существуют, в твоем случае их имена могут отличаться.

Если все пройдет гладко, на выходе ты получишь файл module.jar. Останется только добавить код загрузчика в приложение, положить module.jar на карту памяти, собрать и запустить приложение.

ДОЛОЙ РЕФЛЕКСИЮ

Рефлексия — хорошая штука, но в данном случае она только мешает. Один метод без аргументов с ее помощью вызвать нетрудно, однако, если мы хотим, чтобы наше приложение имело развитый API модулей с множеством методов, принимающих несколько параметров, нужно придумать что-то более удобное. Например, использовать заранее определенный интерфейс, который будет реализовывать каждый модуль.

Читайте также:  Как найти устройство андроид с компьютера

Применив такой подход к приведенному выше примеру, мы получим следующие три файла:

Файл ModuleInterface.java с описанием API:

2. Файл Module.java с реализацией нашего модуля:

3.Новый загрузчик модуля (помести в свое приложение):

КОГДА МОДУЛЕЙ МНОГО

С одним модулем разобрались, но что, если их будет много? Как вести учет этих модулей и не потеряться среди них? На самом деле все просто — для этого можно использовать hashmap. Еще раз изменим загрузчик: Данный код загружает все jar-файлы из указанного каталога, загружает их классы Module, создает на их основе объекты и помещает их в хешмап modules. Обрати внимание на трюк, использованный при загрузке класса и размещении объекта в хешмапе. Он нужен для простоты: вместо того чтобы выяснять принадлежность каждого модуля/класса к пакету, мы просто условились, что имя jar-файла модуля будет соотноситься с именем пакета по схеме com.example.modules.ИМЯ_JAR_ФАЙЛА, так что мы сразу знаем полный адрес класса каждого модуля.

Например, приведенный ранее модуль принадлежит пакету com.example. modules.simple (см. директиву package), поэтому его необходимо включить в jar-архив simple.jar (меняем —output=module.jar на —output=simple. jar в команде сборки). Когда придет время создать новый модуль (к примеру, remote_shell), первой строчкой в его исходниках ты укажешь package com. example.modules.remote_shell.Module; и запакуешь скомпилированный байт-код в jar-архив remote_shell.jar.

Имя jar-файла (без расширения) используется также в качестве ключа в хешмапе, поэтому, зная имя модуля, всегда можно запустить его методы:

БЕРЕМ МОДУЛИ С СОБОЙ

На данном этапе у нас уже есть приложение, способное загружать неограниченное количество модулей из указанного каталога и с удобством работать с ними. Осталось разобраться с тем, как распространять эти модули. Самый очевидный вариант — загружать их с сервера, пусть наш «троян» делает это раз в день, а после скачивания модулей запускает загрузчик модулей, чтобы подгрузить их в приложение. Рассказывать, как сделать это, я не буду, здесь все элементарно, и решение этой задачи ты найдешь в любой вводной статье или книге про разработку для Android.

Еще один вариант — включить модули в пакет с приложением. В этом случае наш троян будет иметь доступ к необходимым модулям сразу после первого запуска, что защитит от проблем с выходом в сеть. Когда же сеть появится, он сможет догружать модули с сервера, если это необходимо.

Чтобы включить модули в APK, их необходимо поместить в каталог assets внутри проекта (в нашем случае в assets/modules), а затем реализовать распаковщик модулей в нужный нам каталог. В коде это будет выглядеть примерно так:


Все очень просто. Код находит модули внутри пакета и поочередно копирует их в каталог /sdcard/myapp, из которого затем их можно будет подгрузить с помощью загрузчика.

Создать приложение для Android, которое сможет обновлять само себя и расширять свою функциональность незаметно для пользователя, довольно легко, и автор этих строк неоднократно видел применение такого метода в реальных троянах. Для чего эту технику будешь использовать ты — решать только тебе, однако я хотел бы напомнить, что наш журнал не поощряет любые незаконные действия, а автор статьи будет совсем не рад узнать, что научил кого-то писать трояны, которых для Android и так уже слишком много.

Источник

Готовый троян для андроид

Android Trojan (Built with Android SDK 22) source code

Upd. 15.09.16 PROJECT MOVED! The code above is older (base) version!

The links to the latest and constantly updated public version are below:

HERE ARE LINKS TO ALL THE COMPONENTS:

Android trojan with abilities of remote control,root commands execution, recording and online sound streaming

Compatible with all Android from Gingerbread (API 10) up to Lollipop (API 22)

Читайте также:  Включить root права андроиде

This is a concept of Android remote control and wiretapping tool (trojan with several functions). It consists of server and client parts.

The client part’s code should be put to your webhosting (the folder named «html»). It’s recommended to set rw- privileges on all files.

The actual trojan part consists of service apk and starter apk. The service should be installed on victim’s device first. After that you need to install starter and choose one of two options. either install as root, or non-root install. After that the starter is no longer needed and should be uninstalled. (for example via button in the bottom left of the screen).

Once it’s done, the hidden service should be started automatically with boot. It wont be seen in installed apk’s at all if it’s installed as root (and it wont be possible to kill its process completely if the user doesnt know about root features and how to use them)

What server actually does:

Records all phone calls and tries to upload them to your web-server in 3gp format every 3 hours (the uploaded files simply should be renamed to .3gp)

Sends you the copy of all incoming sms in real time if the internet was available at that moment.

When the screen is turned off if the internet is available, it back connects to your web-server and periodically checks for new commands. The commands are as following:

Command : — execute regular shell command on the victim’s device

Upload file : — should be filled with full path to the file that will be uploaded to logs/ directory on your server

root [command] — try to execute command as root (if device is rooted)

sms — get all sms dump from device

download [file_url] — download file from the specified url onto device (into app’s data/files directory)

restart — restarts the service

loc — get last known location (active location isnt used because it can be too alarming for victim)

info — get basic informaion such as current connection type,battery level, available memory and service provider name

record [secs] — record sound from the mic for amount of seconds (will be saved to data/files/logs)

stream [ip] [port] — start real-time streaming sound from the device’s mic via udp to your listening computer * (client is described later)

sync — upload all files that were logged to the app’s files/logs directory

quit — end shell session

clear — clear data/logs directory

photo — silently make photos from all available cameras on device (1 from each) and save them to files/logs

calllogs — get victim call’s history

bookmarks = get bookmarks from the system browser

history — get browsing history from the system browser

screenshot — make a screenshot of the device’s current screen (works on rooted device only)

getcontacts — get contact list with names and numbers from the device

sendsms [number] [text] — send sms to specified number with some text

For the purposes of preserving invisibility all the «bad» activity is stopped once the device screen is on (except for call recording and incoming sms’es copies sending). This way it wont disturb user and decrease the probability of them starting to suspect something.

Before the compilation and use, change the value of the variable final static String site = «http://192.168.100.27/»; in the MyService.java file to your web-server host with slash in the end, for example «http://yourwebserver.com/» . It also should be the root path where the contents of html folder should be put.

  • The source of the streamer client is in file streamer.java
  • The source of the starter.apk is in file starter.java
Читайте также:  Android products and services

Upd. 11.09.2016 New Update is coming. New features in the upcoming version:

  • Lots of optimisation
  • non-root full factory format support 🙂
  • OTP encryption support
  • Telegram real-time notifications about victim’s actions
  • silent execution of ussd codes
  • more interesting root features ^^

About

Android trojan with abilities of recording calls, live mic streaming , remote root commands execution and other

Источник

AhMyth. Создаем RAT для Android с помощью простого конструктора

Содержание статьи

Термином RAT (Remote Access Tool) принято называть утилиты удаленного администрирования. Они могут использоваться в благих целях по своему прямому назначению, как, например, знаменитый TeamViewer, а могут устанавливаться злодеями в глубокой тайне от пользователя. В подобных случаях RAT нередко расшифровывают как Remote Access Trojan, и прямой перевод английского слова rat — «крыса» — тут приходится как нельзя кстати.

AhMyth RAT (Remote Access Trojan) — это приложение с открытым исходным кодом, в настоящее время находится на стадии бета-версии. Программа ориентирована на пользователей Windows, но на GitHub можно найти исходники и для Unix-подобных платформ.

AhMyth RAT состоит из двух компонентов.

Серверное приложение, с помощью которого можно управлять зараженным устройством и генерировать файлы APK с вредоносным кодом. Создано оно на Electron framework — фреймворке, разработанном в GitHub для создания простых графических приложений.

Клиентский APK, содержащий вредоносный код, который позволяет получить удаленный доступ к зараженному устройству. То есть наш APK будет выполнять функции бэкдора.

Установка AhMyth RAT

Серверная часть устанавливается очень просто, тем более автор выложил в свободный доступ бинарники программы. Но при желании можно скомпилировать ее из исходников. Лично я проводил свои тесты на машине под управлением Windows 10.

Для работы утилиты нам необходима виртуальная машина Java. Устанавливаем ее с официального сайта Java. Затем нужно скачать бинарники самой AhMyth. Их ты можешь найти в официальном репозитории проекта на GitHub, вкладка Assets. При скачивании лучше отключить антивирус, чтобы его не хватил удар от происходящего.

Создаем зараженный APK

Чтобы создать файл APK для Android, открой вкладку APK Builder. Внешний вид конструктора вредоносных мобильных приложений показан на следующей иллюстрации.

Вкладка с конструктором APK

Пользоваться этим инструментом очень просто. В окне Source IP мы прописываем IP-адрес атакующей машины (этот адрес потом легко вычисляется при исследовании вредоноса). В поле Source Port ты можешь указать порт, который будет зарезервирован машиной для прослушивания подключений. По умолчанию используется порт 42 474.

WARNING

Помни, что распространение вирусов и вредоносных программ — незаконное действие и влечет за собой уголовную ответственность. Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не призывают к использованию полученных знаний в практических целях и не несут ответственности за любой возможный вред, причиненный материалом.

Без использования дополнительной опции Bind With Another Apk ты сгенерируешь мобильное приложение только с вредоносным кодом. И это практически бесполезно, поскольку заставить юзера установить такую программу можно разве что под пытками.

Но есть проверенный способ создания малвари, который используют все продвинутые вирмейкеры: найти в интернете какой-нибудь APK и склеить его с вредоносом. Для этого поставь флажок Bind With Another Apk, выбери нужный APK и укажи метод интеграции вредоноса в телефон. Есть два метода: при запуске зараженного APK или при перезагрузке телефона после установки RAT. Авторы программы рекомендуют второй вариант.

Осталось нажать кнопку Build — по умолчанию зараженный файл сохраняется в папку C:\Users\ \AhMyth\Output .

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Источник

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