Objection Посібник

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

Вступ

objection - Дослідження мобільних додатків у режимі виконання

Objection — це набір інструментів для дослідження мобільних додатків у режимі виконання, побудований на базі Frida. Він створений з метою допомогти оцінювати мобільні додатки та їхній рівень безпеки без потреби в jailbroken або rooted мобільному пристрої.

Примітка: Це не якась форма jailbreak / root bypass. Використовуючи objection, ви все ще обмежені всіма обмеженнями, накладеними відповідним sandbox, з яким ви маєте справу.

Резюме

Мета objection — дозволити користувачеві викликати основні дії, які пропонує Frida. Інакше, користувачеві доведеться створювати окремий скрипт для кожного застосунку, який він хоче тестувати.

Посібник

Для цього посібника я використаю APK, який ви можете завантажити тут:

Або з його оригінального репозиторію (завантажте app-release.apk)

Встановлення

pip3 install objection

Підключення

Зробіть звичайне ADB-з’єднання та запустіть сервер frida на пристрої (і перевірте, що frida працює як на клієнті, так і на сервері).

Якщо ви використовуєте rooted device, потрібно вибрати додаток, який ви хочете тестувати, через опцію –gadget. У цьому випадку:

frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore

Основні дії

Не всі можливі команди objections будуть перераховані в цьому підручнику, лише ті, які я вважав найкориснішими.

Середовище

У середовищі можна знайти цікаву інформацію (наприклад, паролі або шляхи).

env

Інформація про Frida

frida

Завантаження/Скачування

file download <remote path> [<local path>]
file upload <local path> [<remote path>]

Імпорт скрипта frida

import <local path frida-script>

SSLPinning

android sslpinning disable #Attempts to disable SSL Pinning on Android devices.

Виявлення root

android root disable  #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.

Команда Exec

android shell_exec whoami

Скриншоти

android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false  #This may enable you to take screenshots using the hardware keys

Static analysis зроблено динамічним

У реальному застосунку ми повинні знати всю інформацію, виявлену в цій частині, перед використанням objection завдяки static analysis. У будь‑якому разі таким чином ви можете побачити щось нове, оскільки тут ви матимете лише повний список класів, методів та експортованих об’єктів.

Це також корисно, якщо з якоїсь причини ви не можете отримати читабельний вихідний код додатка.

Перелік активностей, ресіверів і сервісів

android hooking list activities

android hooking list services
android hooking list receivers

Frida згенерує помилку, якщо нічого не знайдено

Отримання поточної Activity

android hooking get current_activity

Пошук класів

Почнемо шукати класи всередині нашого додатка

android hooking search classes asvid.github.io.fridaapp

Пошук методів класу

Тепер витягнемо методи всередині класу MainActivity:

android hooking search methods asvid.github.io.fridaapp MainActivity

Перелік оголошених методів класу з їхніми параметрами

Давайте з’ясуємо, які параметри потрібні методам цього класу:

android hooking list class_methods asvid.github.io.fridaapp.MainActivity

Перелік класів

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

android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.

Це дуже корисно, якщо ви хочете hook the method of a class and you only know the name of the class. Ви можете використати цю функцію, щоб search which module owns the class і потім hook його method.

Hooking дуже просто

Hooking (watching) a method

Зі source code додатку ми знаємо, що function sum() from MainActivity виконується every second. Давайте спробуємо dump all possible information щоразу, коли функція викликається (arguments, return value and backtrace):

android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return

Hooking (спостерігання) цілого класу

Насправді мені здаються всі методи класу MainActivity дуже цікавими, давайте hook them all. Будьте обережні, це може спричинити збій додатка.

android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return

Якщо ви взаємодієте з додатком, поки клас підключено (hooked), ви побачите, коли викликається кожна функція, її аргументи та значення повернення.

Зміна булевого значення, що повертається функцією

Зі коду видно, що функція checkPin отримує String як аргумент і повертає boolean. Давайте зробимо так, щоб функція завжди повертала true:

Тепер, якщо ви введете будь-що в полі для PIN-коду, ви побачите, що будь-що є дійсним:

Екземпляри класів

Шукайте та виводьте live instances of a specific Java class, вказані повним кваліфікованим ім’ям класу. Out — це результат спроби отримати рядкове значення для виявленого objection, яке зазвичай міститиме значення властивостей об’єкта.

android heap print_instances <class>

Keystore/Intents

Ви можете взаємодіяти з keystore та intents за допомогою:

android keystore list
android intents launch_activity
android intent launch_service

Пам’ять

Dump

memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part

Список

memory list modules

Внизу списку ви можете побачити frida:

Давайте перевіримо, що експортує frida:

Search/Write

Ви також можете шукати та записувати в пам’ять за допомогою objection:

memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)

SQLite

Ви також можете використовувати команду sqlite для взаємодії з sqlite databases.

Вихід

exit

Чого мені бракує в Objection

  • Методи hooking іноді призводять до аварійного завершення додатка (це також через Frida).
  • Ви не можете використовувати екземпляри класів, щоб викликати функції екземпляра. І ви не можете створювати нові екземпляри класів і використовувати їх для виклику функцій.
  • Немає шорткату (як-от для sslpinnin), який дозволив би hook-нути всі поширені crypto методи, що використовуються додатком, щоб бачити cyphered text, plain text, keys, IVs та використовувані алгоритми.

Посилання

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks