Тесты на проникновение в мобильные приложения выходят за рамки стандартного обнаружения уязвимостей через Burp Suite. Крайне важно знать, как декомпилировать приложение для проверки уязвимостей в коде приложения. Целью этой статьи является демонстрация различных методов и инструментов для обратного проектирования приложения для Android.
Для запуска процесса реверсирования необходим APK-файл целевого приложения. Обычно клиент несет ответственность за предоставление этого файла тестеру на проникновение. Однако, если по какой-либо причине это невозможно, в этой
APK-файл
Файлы пакета приложений Android (APK) - это файлы, которые используются операционной системой Android для распространения и установки мобильных приложений. Обычно файл APK представляет собой просто zip-файл, который был переименован в APK, чтобы операционная система Android распознала его как исполняемый файл. Утилита unzip может быть использована для извлечения файлов, которые хранятся внутри APK.
Извлечение данных из файла APK
Каждый APK содержит следующие файлы:
Содержимое файла APK
В качестве альтернативы можно использовать и другие инструменты для декомпиляции приложения для Android. Параметр d указывает apktool декомпилировать APK.
Декомпилировать APK через apktool
Другой метод - попытаться преобразовать реальный файл .APK в .JAR, а затем использовать любой инструмент, который может декомпилировать код Java.
Конвертировать APK файлы в JAR
Декомпилировать файл JAR в собственный код Java
Извлечение файлов APK также можно выполнить с помощью инструмента упаковки активов Android.
Jadx - это еще один инструмент, который может создавать исходный код Java из файлов Android APK и DEX.
Декомпилировать APK через Jadx
Android Манифест
Инструмент упаковки активов Android можно использовать для получения файла манифеста приложения APK.
Получение файла манифеста из aapt
Поскольку вышеприведенный вывод не легко читается, следующая команда может сбросить только разрешения приложения.
Получение разрешений из манифеста
В качестве альтернативы, если содержимое файла APK уже извлечено, можно использовать более специализированный инструмент, такой как AXMLPrinter, для более элегантного чтения файла XML.
Просмотр файла манифеста Android
Drozer также может анализировать файлы манифеста установленных приложений:
Классы DEX
Файл classes.dex содержит все java-классы приложения, и его можно разобрать с помощью инструмента baksmali для получения исходного кода java.
Декомпиляция DEX-файлов
Файлы DEX
Файлы DEX также могут быть разобраны в инструкции Dalvik:
Дальвик Инструкции
MobSF
Платформа мобильной безопасности - все в одном наборе, который можно использовать для статического и динамического анализа кода для приложений на телефонах Android, iOS и Windows. MobSF автоматизирует процесс, описанный в этой статье, так как он может декомпилировать APK, читать файл манифеста, выявлять проблемы в исходном коде и в файле манифеста, извлекать сертификат приложения и т. д.
MobSF - Главная страница
На изображении ниже показан анализ файла APK с помощью платформы мобильной безопасности:
MobSF - APK Анализ файла
С момента загрузки APK, среда автоматически декомпилирует приложение, что устраняет необходимость в дополнительных инструментах.
Декомпилированный код Java
Официальный GitHub-репозиторий этого инструмента: MobSF/Mobile-Security-Framework-MobSF
Резюме
Обратное проектирование приложения для Android может дать понимание того, как приложение действительно работает в фоновом режиме и как оно взаимодействует с реальным телефоном. Эти знания помогут в процессе обнаружения уязвимостей, которые существуют в коде и не являются очевидными.
Перевод:
Для запуска процесса реверсирования необходим APK-файл целевого приложения. Обычно клиент несет ответственность за предоставление этого файла тестеру на проникновение. Однако, если по какой-либо причине это невозможно, в этой
Ссылка скрыта от гостей
описываются различные способы получения файла APK из Google Play Store и с реального устройства.APK-файл
Файлы пакета приложений Android (APK) - это файлы, которые используются операционной системой Android для распространения и установки мобильных приложений. Обычно файл APK представляет собой просто zip-файл, который был переименован в APK, чтобы операционная система Android распознала его как исполняемый файл. Утилита unzip может быть использована для извлечения файлов, которые хранятся внутри APK.
Извлечение данных из файла APK
Каждый APK содержит следующие файлы:
- AndroidManifest.xml // Определяет разрешения приложения
- classes.dex // Содержит все файлы классов Java
- resources.arsc // Содержит всю мета-информацию о ресурсах и узлах
Содержимое файла APK
В качестве альтернативы можно использовать и другие инструменты для декомпиляции приложения для Android. Параметр d указывает apktool декомпилировать APK.
Декомпилировать APK через apktool
Другой метод - попытаться преобразовать реальный файл .APK в .JAR, а затем использовать любой инструмент, который может декомпилировать код Java.
Конвертировать APK файлы в JAR
Декомпилировать файл JAR в собственный код Java
Извлечение файлов APK также можно выполнить с помощью инструмента упаковки активов Android.
Jadx - это еще один инструмент, который может создавать исходный код Java из файлов Android APK и DEX.
Декомпилировать APK через Jadx
Android Манифест
Инструмент упаковки активов Android можно использовать для получения файла манифеста приложения APK.
Получение файла манифеста из aapt
Поскольку вышеприведенный вывод не легко читается, следующая команда может сбросить только разрешения приложения.
Получение разрешений из манифеста
В качестве альтернативы, если содержимое файла APK уже извлечено, можно использовать более специализированный инструмент, такой как AXMLPrinter, для более элегантного чтения файла XML.
Просмотр файла манифеста 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.
Декомпиляция DEX-файлов
Файлы DEX
Файлы DEX также могут быть разобраны в инструкции Dalvik:
Дальвик Инструкции
MobSF
Платформа мобильной безопасности - все в одном наборе, который можно использовать для статического и динамического анализа кода для приложений на телефонах Android, iOS и Windows. MobSF автоматизирует процесс, описанный в этой статье, так как он может декомпилировать APK, читать файл манифеста, выявлять проблемы в исходном коде и в файле манифеста, извлекать сертификат приложения и т. д.
MobSF - Главная страница
На изображении ниже показан анализ файла APK с помощью платформы мобильной безопасности:
MobSF - APK Анализ файла
С момента загрузки APK, среда автоматически декомпилирует приложение, что устраняет необходимость в дополнительных инструментах.
Декомпилированный код Java
Официальный GitHub-репозиторий этого инструмента: MobSF/Mobile-Security-Framework-MobSF
Резюме
Обратное проектирование приложения для Android может дать понимание того, как приложение действительно работает в фоновом режиме и как оно взаимодействует с реальным телефоном. Эти знания помогут в процессе обнаружения уязвимостей, которые существуют в коде и не являются очевидными.
Перевод:
Ссылка скрыта от гостей