Drozer Tutorial

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Підказка щодо багів у винагороду: зареєструйтеся на Intigriti, преміальній платформі для пошуку багів, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!

APK для тестування

Деякі частини цього посібника були взяті з PDF-документації Drozer.

Установка

Встановіть клієнт Drozer всередині вашого хоста. Завантажте його з останніх релізів.

pip install drozer-2.4.4-py2-none-any.whl
pip install twisted
pip install service_identity

Завантажте та встановіть drozer APK з останніх релізів. На даний момент це цей.

adb install drozer.apk

Запуск сервера

Агент працює на порту 31415, нам потрібно перенаправити порт, щоб встановити зв'язок між клієнтом Drozer та агентом, ось команда для цього:

adb forward tcp:31415 tcp:31415

Нарешті, запустіть додаток та натисніть "ON" унизу

І підключіться до нього:

drozer console connect

Цікаві Команди

Команда

Опис

Help MODULE

Показує довідку обраного модуля

list

Показує список всіх модулів drozer, які можна виконати в поточній сесії. Це приховує модулі, які ви не маєте відповідних дозволів для запуску.

shell

Запускає інтерактивну оболонку Linux на пристрої в контексті Агента.

clean

Видаляє тимчасові файли, збережені drozer на пристрої Android.

load

Завантажує файл, що містить команди drozer та виконує їх послідовно.

module

Знаходить та встановлює додаткові модулі drozer з Інтернету.

unset

Видаляє змінну за іменем, яку drozer передає будь-яким оболонкам Linux, які він породжує.

set

Зберігає значення в змінній, яка буде передана як змінна середовища будь-яким оболонкам Linux, які породжує drozer.

shell

Запускає інтерактивну оболонку Linux на пристрої в контексті Агента.

run MODULE

Виконує модуль drozer

exploit

Drozer може створювати експлойти для виконання на пристрої. drozer exploit list

payload

Експлойти потребують навантаження. drozer payload list

Пакет

Знайдіть назву пакету, фільтруючи за частиною назви:

dz> run app.package.list -f sieve
com.mwr.example.sieve

Основна інформація пакету:

dz> run app.package.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
Process Name: com.mwr.example.sieve
Version: 1.0
Data Directory: /data/data/com.mwr.example.sieve
APK Path: /data/app/com.mwr.example.sieve-2.apk
UID: 10056
GID: [1028, 1015, 3003]
Shared Libraries: null
Shared User ID: null
Uses Permissions:
- android.permission.READ_EXTERNAL_STORAGE
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.INTERNET
Defines Permissions:
- com.mwr.example.sieve.READ_KEYS
- com.mwr.example.sieve.WRITE_KEYS

Прочитайте Маніфест:

run app.package.manifest jakhar.aseem.diva

Поверхня атаки пакету:

dz> run app.package.attacksurface com.mwr.example.sieve
Attack Surface:
3 activities exported
0 broadcast receivers exported
2 content providers exported
2 services exported
is debuggable
  • Дії: Можливо, ви можете запустити дію та обійти якийсь вид авторизації, який повинен вас зупинити від запуску.

  • Постачальники контенту: Можливо, ви можете отримати доступ до приватних даних або використати деякі вразливості (SQL-ін'єкція або обхід шляху).

  • Служби:

Дії

Значення "android:exported" експортованого компонента дії встановлено ​​на "true" в файлі AndroidManifest.xml:

<activity android:name="com.my.app.Initial" android:exported="true">
</activity>

Перелік експортованих активностей:

dz> run app.activity.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.FileSelectActivity
com.mwr.example.sieve.MainLoginActivity
com.mwr.example.sieve.PWList

Запуск діяльності:

Можливо, ви можете запустити діяльність та обійти якийсь вид авторизації, яка повинна запобігти вам запуску її.

dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList

Ви також можете запустити експортовану активність з adb:

  • PackageName - це com.example.demo

  • Ім'я активності для експорту - com.example.test.MainActivity

adb shell am start -n com.example.demo/com.example.test.MainActivity

Постачальники контенту

Цей пост був настільки великим, що ви можете отримати доступ до нього на окремій сторінці тут.

Сервіси

Експортований сервіс оголошується всередині Manifest.xml:

<service android:name=".AuthService" android:exported="true" android:process=":remote"/>

У коді перевірте функцію **handleMessage**, яка буде отримувати повідомлення:

Список сервісів

dz> run app.service.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
com.mwr.example.sieve.AuthService
Permission: null
com.mwr.example.sieve.CryptoService
Permission: null

Взаємодія з сервісом

app.service.send            Send a Message to a service, and display the reply
app.service.start           Start Service
app.service.stop            Stop Service

Приклад

Подивіться довідку drozer для app.service.send:

Зверніть увагу, що спочатку ви будете відправляти дані всередині "msg.what", потім "msg.arg1" і "msg.arg2", вам слід перевірити всередині коду яка інформація використовується і де. Використовуючи опцію --extra, ви можете відправити щось, що буде інтерпретовано як "msg.replyTo", і використовуючи --bundle-as-obj ви створюєте об'єкт з наданими деталями.

У наступному прикладі:

  • what == 2354

  • arg1 == 9234

  • arg2 == 1

  • replyTo == object(string com.mwr.example.sieve.PIN 1337)

run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj

Приймачі трансляцій

У розділі основної інформації про Android ви можете побачити, що таке Приймач трансляцій.

Після виявлення цих Приймачів трансляцій вам слід перевірити код їх. Зверніть особливу увагу на функцію onReceive, оскільки вона буде обробляти отримані повідомлення.

Виявлення всіх приймачів трансляцій

run app.broadcast.info #Detects all

Перевірка приймачів трансляцій додатка

#Check one negative
run app.broadcast.info -a jakhar.aseem.diva
Package: jakhar.aseem.diva
No matching receivers.

# Check one positive
run app.broadcast.info -a com.google.android.youtube
Package: com.google.android.youtube
com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver
Permission: null
com.google.android.apps.youtube.app.common.notification.GcmBroadcastReceiver
Permission: com.google.android.c2dm.permission.SEND
com.google.android.apps.youtube.app.PackageReplacedReceiver
Permission: null
com.google.android.libraries.youtube.account.AccountsChangedReceiver
Permission: null
com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver
Permission: null

Трансляції Взаємодії

app.broadcast.info          Get information about broadcast receivers
app.broadcast.send          Send broadcast using an intent
app.broadcast.sniff         Register a broadcast receiver that can sniff particular intents

Надіслати повідомлення

У цьому прикладі, зловживаючи FourGoats apk Content Provider, ви можете надіслати довільне SMS на будь-який не-преміум номер без запиту дозволу від користувача.

Якщо ви прочитаєте код, параметри "phoneNumber" та "message" повинні бути надіслані до Content Provider.

run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!"

Чи можна налагоджувати

Виробничий APK ніколи не повинен бути налагоджуваним. Це означає, що ви можете прикріпити відлагоджувач Java до запущеної програми, інспектувати її в режимі виконання, встановлювати точки зупинки, переходити крок за кроком, збирати значення змінних і навіть змінювати їх. Інститут InfoSec має відмінну статтю про розкриття глибин, коли ваша програма може бути налагоджуваною та впроваджувати код в режимі виконання.

Коли програма може бути налагоджуваною, це буде вказано в Маніфесті:

<application theme="@2131296387" debuggable="true"

Ви можете знайти всі програми, які можна налагоджувати за допомогою Drozer:

run app.package.debuggable

Посібники

Додаткова інформація

Підказка щодо багів: зареєструйтесь на Intigriti, преміальній платформі для пошуку багів, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated