Гостевая статья Reverse Engineering Android-приложений

Тесты на проникновение в мобильные приложения выходят за рамки стандартного обнаружения уязвимостей через Burp Suite. Крайне важно знать, как декомпилировать приложение для проверки уязвимостей в коде приложения. Целью этой статьи является демонстрация различных методов и инструментов для обратного проектирования приложения для Android.

Для запуска процесса реверсирования необходим APK-файл целевого приложения. Обычно клиент несет ответственность за предоставление этого файла тестеру на проникновение. Однако, если по какой-либо причине это невозможно, в этой описываются различные способы получения файла APK из Google Play Store и с реального устройства.

APK-файл
Файлы пакета приложений Android (APK) - это файлы, которые используются операционной системой Android для распространения и установки мобильных приложений. Обычно файл APK представляет собой просто zip-файл, который был переименован в APK, чтобы операционная система Android распознала его как исполняемый файл. Утилита unzip может быть использована для извлечения файлов, которые хранятся внутри APK.

unzip-apk.png

Извлечение данных из файла APK

Каждый APK содержит следующие файлы:
  • AndroidManifest.xml // Определяет разрешения приложения
  • classes.dex // Содержит все файлы классов Java
  • resources.arsc // Содержит всю мета-информацию о ресурсах и узлах

contents-of-an-apk-file.png

Содержимое файла APK

В качестве альтернативы можно использовать и другие инструменты для декомпиляции приложения для Android. Параметр d указывает apktool декомпилировать APK.

decompile-apk-via-apktool.png

Декомпилировать APK через apktool

Другой метод - попытаться преобразовать реальный файл .APK в .JAR, а затем использовать любой инструмент, который может декомпилировать код Java.

dex2jar.png

Конвертировать APK файлы в JAR

jd-gui.png

Декомпилировать файл JAR в собственный код Java

Извлечение файлов APK также можно выполнить с помощью инструмента упаковки активов Android.

aapt-decompile-apk-files.png


Jadx - это еще один инструмент, который может создавать исходный код Java из файлов Android APK и DEX.

jadx-gui.png

Декомпилировать APK через Jadx

Android Манифест
Инструмент упаковки активов Android можно использовать для получения файла манифеста приложения APK.

aapt-manifest-file.png

Получение файла манифеста из aapt

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

aapt-dump-permissions.png

Получение разрешений из манифеста

В качестве альтернативы, если содержимое файла APK уже извлечено, можно использовать более специализированный инструмент, такой как AXMLPrinter, для более элегантного чтения файла XML.

axmlprinter-manifest.png

Просмотр файла манифеста Android

Drozer также может анализировать файлы манифеста установленных приложений:
Код:
dz> run app.package.manifest com.mwr.dz
<manifest versionCode="5"
versionName="2.3.4"
package="com.mwr.dz">
<uses-sdk minSdkVersion="7"
targetSdkVersion="18">
</uses-sdk>
<uses-permission name="android.permission.INTERNET">
</uses-permission>
<application theme="@2131165185"
label="@2131099648"
icon="@2130837513"
debuggable="true"

Классы DEX
Файл classes.dex содержит все java-классы приложения, и его можно разобрать с помощью инструмента baksmali для получения исходного кода java.

baksmali-dex.png

Декомпиляция DEX-файлов

reverse-engineering-dex.png

Файлы DEX

Файлы DEX также могут быть разобраны в инструкции Dalvik:

dexdump-dalvik-instructions.png

Дальвик Инструкции

MobSF
Платформа мобильной безопасности - все в одном наборе, который можно использовать для статического и динамического анализа кода для приложений на телефонах Android, iOS и Windows. MobSF автоматизирует процесс, описанный в этой статье, так как он может декомпилировать APK, читать файл манифеста, выявлять проблемы в исходном коде и в файле манифеста, извлекать сертификат приложения и т. д.

mobsf-main-page.png

MobSF - Главная страница

На изображении ниже показан анализ файла APK с помощью платформы мобильной безопасности:

mobsf-apk-analysis.png

MobSF - APK Анализ файла

С момента загрузки APK, среда автоматически декомпилирует приложение, что устраняет необходимость в дополнительных инструментах.

mobsf-java-source-code.png

Декомпилированный код Java

Официальный GitHub-репозиторий этого инструмента: MobSF/Mobile-Security-Framework-MobSF

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

Перевод:
 

belforensic

Member
30.10.2020
5
0
BIT
0
а есть ли какие методы анализа apk-приложения по следам его работы. Т.е. не в коде пытаться понять, а запустить и отследить (запротоколировать) его действия?
На подобие как в windows есть песочницы с анализаторами (например sandiebox+ bsa)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!