HHIDE_DUMP
Гость
H
HHIDE_DUMP
Гость
А сейчас начнется веселье. Согласно Owasp все уязвимости были квалифицированы в
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
M1 – неправильное использование платформы
M2 – небезопасное хранения данных
M3 –небезопасное общение
M4 – небезопасная аутентификация
M5 – недостаточная криптография
M6 – небезопасная
M7 – код клиента
M8 – фальсификация кода
M9 – обратная разработка
M10 – посторонние функции
Также для практики сбора уязвимых приложений-
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Мы используем банк Небезопасных Приложений Андроид (Insecure bank Android Application) для демонстрации уязвимостей -
Сбор информации
Используя drozer, мы можем собирать информацию о приложении Андроид
Код:
команда – run app.package.info –a <.apk name>
Атакующие компоненты Aндроид
Как я уже определил, все компоненты деятельности Андроид, службы, провайдер контента и широковещательные приемники можно найти, перейдя по ссылке -
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
, где мы можем искать их уязвимые места, и узнать, как эти компоненты могут быть уязвимы в приложении.Атакующая деятельность
Экспортируемые виды деятельности
Экспортируемые виды деятельности (exported = True) – это те виды, деятельности, к которым можно получить доступ при помощи другого приложения на том же устройстве. В большинстве случаев после аутентификации в Android-приложении он переходит к новому действию, о котором, в основном, пользователи осведомлены (например, музыкальный плейлист после входа в музыкальный проигрыватель). Но разработчики сохраняют эти операции экспортированными и даже без пользовательских разрешений.
В файле манифеста Android действия упоминаются с экспортированным значением или с помощью команд drozer.
Мы можем получить информацию об экспортируемых видах деятельности.
Код:
команда – run App.activity.info –a <.apk name>
Код:
<activity android:label=”@7F070040″ android:name=”com.android.insecurebankv2.LoginActivity”><intent-filter><action android:name=”android.intent.action.MAIN”><activity android:label=”@7F070040″ android:name=”com.android.insecurebankv2.LoginActivity”><intent-filter><action android:name=”android.intent.action.MAIN”> </action><category android:name=”android.intent.category.LAUNCHER”> </category></intent-filter></activity><activity android:label=”@7F070057″ android:name=”com.android.insecurebankv2.FilePrefActivity” android:windowSoftInputMode=”0x00000034″> </activity><activity android:label=”@7F070054″ android:name=”com.android.insecurebankv2.DoLogin”> </activity><activity android:label=”@7F07005B” android:name=”com.android.insecurebankv2.PostLogin” android:exported=”true”> </activity><activity android:label=”@7F07005E” android:name=”com.android.insecurebankv2.WrongLogin”> </activity><activity android:label=”@7F070055″ android:name=”com.android.insecurebankv2.DoTransfer” android:exported=”true”> </activity><activity android:label=”@7F07005D” android:name=”com.android.insecurebankv2.ViewStatement” android:exported=”true”> </activity>
Поскольку разрешения не определены или экспортированы, значение истинно для действий после входа в систему, и, соответственно, мы можем использовать это, чтобы обойти аутентификацию.
Давайте попробуем вызывать действия после входа без учетных данных, используя drozer.
Пример – Dotransfer, Viewstatement, Changepassword
Код:
Команда в drozer – run app.activity.start –компонент <.apkname>< activityname>
До
После
Использование вредоносного приложения для вызова действий других приложений
Другой способ вызова действий других приложений – написать вредоносное приложение и передать ему название пакета и активности, чтобы запустить его. В нашем случае вредоносное приложение не требует каких-либо разрешений для запуска действий «Post login» уязвимого приложения.
Защита компонента активности
Настройка Андроид: смена экспортированного значения атрибута на ложное (false)
В файле AndroidManifest.XML нашего приложения нам следует добавить следующий атрибут к компоненту приложения для гарантии безопасности. В нашем случае после произведения входа деятельность должна быть безопасна.
Код:
<activity android: label=”@7F070055″ android: name=”com.android.insecurebankv2.DoTransfer” android: exported=”false“></activity>
Ложное (False): Провайдер недоступен для других приложений. Выставьте в Андроид: exported=”false”, чтобы ограничить доступ к провайдеру для вашего приложения. Только у тех приложений, у которых такой же ID (UID) пользователя, как у провайдера, будут иметь доступ к нему.
Вышеприведенный код ограничивает доступ к другим приложениям или любому системному компоненту, отличному от текущего приложения. Только приложения, у которых такой же id пользователя, как и у текущего приложения, смогут получить доступ к этой операции.
Ограничение доступа с помощью пользовательских разрешений
Андроид: экспортируемый Атрибут не является единственным способом ограничить воздействие активности других приложений. Мы также можем вводить ограничения, основанные на разрешениях, определяя пользовательские разрешения для активности.
Это может быть полезно, если разработчик хочет ограничить доступ к компонентам своего приложения для тех приложений, у которых есть разрешения.