G
Gidroponika
В моих предыдущих статьях мы рассматривали основную структуру и инструменты пентестирования и ADB. Теперь давайте рассмотрим некоторые точки входа для тестирования приложений Android.
С точки зрения безопасности файл манифеста, как правило, является первым, что проверяет пентестер на взаимодействие.
Файл манифеста Android
- Он предоставляет детальную информацию о приложении android
- Он называет java пакеты для приложения
- Он заявляет о полномочиях
- Он описывает компоненты приложения android
- Он содержит декларацию минимального уровня API, какое требует приложение
- Минимальная версия Android, необходимая для запуска программы
Службы
Для демонстрации мы можем использовать приложение insecurebank.apk
Разрешить отладку: «true»
Если приложение помечается как отлаживаемое, то любой злоумышленник может получить доступ к данным приложения, присваивая привилегии этого приложения, или он может запускать произвольный код, пользуясь полномочиями этого разрешения. В случае неотлаживаемого приложения злоумышленнику сначала необходимо использовать root для устройства, чтобы извлечь любые данные.
Java Debug Wire Protocol - это центральная связь между отладчиком и экземпляром JVМ.
Не используя root для устройства, невозможно извлечь данные или запускать произвольный код с использованием полномочий приложения.
Перед запуском приложения
После запуска приложения
На вышеприведенном рисунке изображен доступ шел моего персонального телефона, к которому не применялся root.
Разрешить резервное копирование: «true»
Этот параметр определяет, возможно ли резервное копирование и восстановление данных приложения пользователем, который включил отладку usb. Поэтому приложения, которые обрабатывают и хранят конфиденциальную информацию, такую как данные карты, пароли и т. д., должны иметь этот параметр ложным, чтобы предотвратить такие риски.
Откройте терминал
Код:
– Adb backup –apk –shared (apk name)
Код:
Cat backup.ab zlib-flate -uncompress > backup_compressed.tar
Права доступа
Право доступа – это ограничение, которое лимитирует доступ к части кода или данным на устройстве.
Приложения, у которых есть полномочия копировать данные на внешнее хранилище, должны быть пересмотрены, чтобы гарантировать, что на них не хранится особо важная информация.
Все полномочия, запрашиваемые приложением, должны быть пересмотрены, чтобы гарантировать, что они не несут угрозу безопасности.
Существует четыре значения, которые можно использовать с этим атрибутом:
- Normal (нормальный)
- Dangerous (опасный)
- Signature (сигнатура)
- Signature Or System (сигнатура или система)
Пример -
Код:
<Permission>
Android: protectionLevel=”signature”
</permission>
Значения (Intents)
Это компоненты, которые используются для объединения двух или более различных компонентов Android вместе. Значения могут использоваться для выполнения множества задач, таких как начало действия, действия переключения и запуск служб.
Значения могут использоваться для запуска деятельности, отправки ее любым заинтересованным компонентам вещательного приемника и для связи с фоновой службой. Сообщения о значениях следует пересматривать, чтобы гарантировать, что они не содержат никакой особо важной информации, которую можно перехватить.
Код:
<Intent-filter>
<action android: name=”string” />
<category android: name=”string” />
</intent-filter>
Явные значения подключают одно действие к другому в одном приложении. Эти значения определяют целевой компонент по его имени, и они обычно используются для внутренних сообщений приложения, таких как действие, запускающее сестринскую активность (sister activity), когда пользователь нажимает кнопку.
Скрытые значения не называют цель, а поле для названия компонента остается пустым. Скрытые значения часто используются для активации компонентов в других приложениях. Например, если мы хотим показать пользователю местоположение на карте, мы можем использовать скрытое значение, чтобы запросить другое способное на это приложение отображать указанное местоположение на карте.