Objection Tutorial

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

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

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

Вступ

objection - Рантаймовий мобільний дослідження

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

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

Резюме

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

Посібник

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

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

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

pip3 install objection

Підключення

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

Якщо ви використовуєте пристрій з рут-доступом, необхідно вибрати додаток, який ви хочете протестувати в параметрі --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>

Перевірка SSL

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

Виявлення рут-прав доступу

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

Виконання команди

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

Статичний аналіз стає динамічним

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

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

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

android hooking list activities
android hooking list services
android hooking list receivers

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

Отримання поточної активності

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.

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

Підключення стає легким

Підключення (спостереження) методу

З вихідного коду додатку ми знаємо, що функція sum() з MainActivity виконується кожну секунду. Спробуємо вивести всю можливу інформацію кожного разу, коли викликається функція (аргументи, значення повернення та стек викликів):

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

Підключення (спостереження) за цілою класом

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

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

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

Зміна булевого значення повернення функції

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

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

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

Шукайте та друкуйте живі екземпляри певного класу Java, вказаного повністю кваліфікованим ім'ям класу. Результатом є спроба отримати рядкове значення для виявленого заперечення, яке зазвичай містить значення властивостей для об'єкта.

android heap print_instances <class>

Хранилище ключів/Інтенти

Ви можете грати з хранилищем ключів та інтентами, використовуючи:

android keystore list
android intents launch_activity
android intent launch_service

Пам'ять

Вивантаження

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:

Пошук/Запис

Ви також можете шукати та записувати в пам'ять за допомогою 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.

Вихід

exit

Що мені не вистачає в Objection

  • Методи підключення іноді призводять до аварійного завершення додатка (це також через Frida).

  • Ви не можете використовувати екземпляри класів для виклику функцій екземпляра. І ви не можете створювати нові екземпляри класів і використовувати їх для виклику функцій.

  • Немає швидкого способу (подібного до того, що для sslpinnin) підключити всі загальні криптографічні методи, які використовуються додатком, щоб побачити зашифрований текст, звичайний текст, ключі, IV та використані алгоритми.

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

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

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

Last updated