Создание полезной нагрузки для Android в MSFVenom

Msfvenom

Процесс создания полезной нагрузки для Android похож на создание пейлоада для ОС Linux. Структура каталогов может быть другой, но вам, как и раньше, придется изменить установочный файл для внедрения своей полезной нагрузки. Установочный файл Android называется Android Package (APK) и содержит все, что необходимо Android для установки нового приложения.

Еще по теме: Обход антивируса в Meterpreter

Создание полезной нагрузки для Android в MSFVenom

Начнем с создания вредоносного APK-файла с помощью инструмента MSFVenom.

Создайте новую папку на рабочем столе под названием AndroidTrojan и перейдите к ней:

Затем сгенерируйте новый вредоносный APK-файл, содержащий имплант в виде обратной оболочки:

Эта команда создает новый APK-файл со встроенным в него вредоносным кодом.

В следующей главе разберем данное приложение и обсудим его структуру, что поможет вам создать собственный троян для ОС Android.

Анализ APK-файла для изучения полезной нагрузки

Команда, использовавшаяся в предыдущем примере, сделала всю работу за нас. Чтобы понять, как именно она скрыла полезную нагрузку, декомпилируем установочный файл malware.apk и исследуем его структуру каталогов.

Для декомпиляции APK-файла используем инструмент реверс инжиниринга apktool.

Выполните следующую команду, чтобы скачать и установить его:

Чтобы декомпилировать (d) файл, выполните команду:

Этот инструмент создаст папку с именем malicious, содержащую декомпилированные файлы. Перейдите в нее и выведите список всех файлов и папок в каталоге, используя следующие команды:

После этого вы должны увидеть следующие файлы и папки: AndroidManifest.xml, apktool.yml, original, res и smali. Файл AndroidManifest.xml содержит описание приложения. Ниже приведен фрагмент его содержимого:

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

Файл apktool.yml содержит информацию об APK-файле, в том числе номер версии и тип сжатия. В папке original находится скомпилированная версия AndroidManifest.xml, файл, содержащий его хеш, и файлы с информацией о подписях. Папка res содержит такие ресурсы приложения, как изображения или строки.

Наконец, в папке smali находятся ассемблерные файлы, связанные с приложением. Туда же мы поместили имплант. Вы можете просмотреть ассемблерные файлы, относящиеся к импланту Metasploit, передав команде ls имя каталога smali/com/metasploit/stage/:

Если вам доводилось работать с мобильными приложениями, то вы, вероятно, ожидали увидеть файл .dex. Эти файлы содержат байт-код, выполняемый Android Runtime (ART). Причина его отсутствия заключается в том, что формат smali является ассемблерным представлением, а .dex — машинным представлением кода приложения. Файл Payload.smali содержит код, связанный с нашим вредоносной полезной нагрузкой, и чуть позже мы перенесем его в другой APK-файл, чтобы создать троянскую программу.

А пока исследуем файл MainActivity.smali:

Вредоносный APK-файл запускает MainService‚ созданный разработчиками Metasploit Framework вредоносный Android-сервис, который загрузит полезную нагрузку в фоновом режиме. Если вы хотите сразу запустить вредоносную полезную нагрузку, то можете добавить следующий фрагмент в приведенный выше код:

Точно так же вы можете создать собственную троянскую программу, декомпилировав существующий APK-файл, скопировав папку Metasploit в папку smali, а затем добавив предыдущий фрагмент в MainActivity.smali для запуска кода полезной нагрузки.

Сборка и подписывание APK-файла

После исследования файла мы можем снова собрать его, выполнив следующую команду:

Чтобы приложение можно было запускать на устройстве Android, его необходимо подписать. Вы можете сделать это с помощью инструмента Java Keystore, который хранит такие данные, как открытые и закрытые ключи, используемые для подписи.

Материал ключа никогда не покидает это хранилище. Вместо этого приложение передает в Keystore данные, а хранилище использует материал защищенного ключа для подписи или шифрования этих данных, после чего возвращает результаты, как показано на скрине ниже. Некоторые системы используют для хранения материала ключа отдельное защищенное оборудование, которое называется доверенной средой выполнения.

Полезная нагрузка Android MSFVenom
Материал ключа никогда не покидает хранилище Keystore

Выполните следующую команду, чтобы установить Java Development Kit (JDK), содержащий инструменты, с помощью которых мы будем подписывать троянский APK-файл:

Сгенерируйте RSA-ключ для подписывания трояна с помощью команды:

Мы используем утилиту Java keytool для генерации нового ключа (-genkey). Вместо того чтобы отображать пару ключей, мы сохраняем их в файле Keystore (-keystore), который называется my-malicious.keystore. Хранилище Keystore может хранить несколько записей, каждая из которых имеет псевдоним (-alias). Наша запись называется alias_name_malicious. Следующий параметр определяет криптографический алгоритм (-keyalg). В данном случае мы выбрали RSA и задали в качестве размера ключа (-keysize) значение 3072. Мы также указали, что ключ должен оставаться действительным (-validity) в течение 10 000 дней.

Теперь используем утилиту Java jarsigner, чтобы подписать APK-файл:

Сначала мы выбираем алгоритм создания подписи, в данном случае — это SHA2 с RSA (-sigalg SHA2withRSA). Затем используем SHA2 в качестве хеш/дайджестфункции (-digestalg SHA2). Наконец, указываем хранилище ключей (-keystore) и псевдоним ключа. В данном случае мы используем только что созданное хранилище ключей (my-malicious.keystore) и запись с псевдонимом (alias_name_malicious).

Еще по теме:

Ban32

Хакер-самоучка, который может взломать тостер и настроить его на отправку вам утреннего приветствия в коде Морзе.

Добавить комментарий