Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Drozer — мастхев в арсенале любого пентестера. Это армейский швейцарский нож для выполнения типичных задач тестирования на проникновение. Drozer позволяет получить информацию о приложении, запустить его активности, подключиться к ContentProvider’у, отправить сообщения сервису, в общем — все, чтобы вытащить из приложения информацию или заставить его сделать то, что нам нужно, через стандартные API и каналы коммуникации.
Сегодня 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-адрес-телефона
Консоль Drozer
В качестве подопытного приложения будем использовать 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 работал корректно, следи за тем, чтобы он всегда был на экране, а экран смартфона — включен.
Источник: xakep.ru