Содержание статьи
Сегодня Drozer считается устаревшим инструментом, но он до сих пор отлично помогает быстро получить информацию о приложении и его слабых местах. Рекомендуемый способ запускать drozer — используя Docker:
$ sudo docker run -it kengannonmwr/drozer_docker
Drozer работает в связке с агентом, установленным на устройстве или эмуляторе, скачать его можно здесь. Его следует установить на устройство:
$ adb install drozer-agent-2.3.4.apk
Далее запускаем агент и нажимаем кнопку Embedded Server внизу экрана. После этого к серверу можно подключиться, перейдя в консоль Drozer:
$ drozer console connect --server IP-адрес-телефона
В качестве подопытного приложения будем использовать DIVA (Damn Insecure and Vulnerable App). APK не имеет цифровой подписи, поэтому перед установкой его необходимо подписать, например c помощью uber-apk-signer.
Активности
Типичный воркфлоу Drozer выглядит так. Сначала получаем информацию об установленных приложениях:
dz> run app.package.list
Находим в списке подопытное приложение и получаем информацию о нем:
dz> run app.package.info -a jakhar.aseem.diva
Package: jakhar.aseem.diva
Application Label: Diva
Process Name: jakhar.aseem.diva
Version: 1.0
Data Directory: /data/user/0/jakhar.aseem.diva
APK Path: /data/app/~~f-ZUZleCLc6Lvv3kYkaeww==/jakhar.aseem.diva-GXTPCSZPceqRHtEWH73f1g==/base.apk
UID: 10423
GID: [3003]
Shared Libraries: [/system/framework/android.test.base.jar, /system/framework/org.apache.http.legacy.jar]
Shared User ID: null
Uses Permissions:
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.READ_EXTERNAL_STORAGE
- android.permission.INTERNET
- android.permission.ACCESS_MEDIA_LOCATION
Defines Permissions:
- None
Затем выясняем, какие компоненты можно попытаться использовать для эксплуатации:
dz> run app.package.attacksurface jakhar.aseem.diva
Attack Surface:
3 activities exported
0 broadcast receivers exported
1 content providers exported
0 services exported
is debuggable
Обращаем внимание, что в приложении включен флаг отладки. Далее получаем список активностей:
dz> run app.activity.info -a jakhar.aseem.diva
Package: jakhar.aseem.diva
jakhar.aseem.diva.MainActivity
Permission: null
jakhar.aseem.diva.APICredsActivity
Permission: null
jakhar.aseem.diva.APICreds2Activity
Permission: null
Пробуем их запустить:
dz> run app.activity.start --component jakhar.aseem.diva <имя_активности>
Смысл этого действия в том, чтобы проверить, не торчат ли наружу внутренние активности приложения, которые не должны быть доступны извне. Возможно, эти активности содержат конфиденциальную информацию.
Проверяем:
dz> run app.activity.start --component jakhar.aseem.diva jakhar.aseem.diva.APICredsActivity
Действительно, активность APICredsActivity содержит некий ключ API, имя пользователя и пароль. Активность APICreds2Activity содержит окно с полем для ввода ПИН‑кода.
Две активности DIVA |
Обе эти активности явно должны использоваться только внутри приложения, но по «невнимательности» разработчик забыл сделать их неэкспортируемыми (android:exported="false").
Если активности не запускаются
Начиная с Android 9 запуск активностей в фоне запрещен. Поэтому, чтобы Drozer работал корректно, следи за тем, чтобы он всегда был на экране, а экран смартфона — включен.
Перехват интентов
Еще интереснее, когда программист не только забывает сделать внутреннюю активность приложения неэкспортируемой, но и работает с ней не напрямую, а используя широковещательные интенты. Допустим, в приложении есть такой код, который использует широковещательный интент "com.example.ACTION", чтобы запустить активность (передав ей при этом конфиденциальные данные):
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»