Пентест для Android. Используем Drozer для исследования безопасности приложений

Содержание статьи

  • Активности
  • Перехват интентов
  • Перехват возвращаемого значения
  • ContentProvider
  • Сервисы
  • Другие возможности
  • Бонус
  • Выводы

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

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *