Objection Tutorial
Reading time: 7 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Вступ
objection - Дослідження мобільних додатків в реальному часі
Objection - це набір інструментів для дослідження мобільних додатків в реальному часі, що працює на базі Frida. Він був створений з метою допомогти оцінити мобільні додатки та їхню безпеку без необхідності використання джейлбрейкнутого або рутованого мобільного пристрою.
Примітка: Це не є формою обходу джейлбрейку / руту. Використовуючи objection
, ви все ще обмежені всіма обмеженнями, накладеними відповідним пісочницею, з якою ви стикаєтеся.
Резюме
Мета objection - дозволити користувачу викликати основні дії, які пропонує Frida. В іншому випадку, користувачеві потрібно буде створити окремий скрипт для кожного додатку, який він хоче протестувати.
Туторіал
Для цього туторіалу я буду використовувати APK, який ви можете завантажити тут:
Або з його оригінального репозиторію(завантажити app-release.apk)
Встановлення
pip3 install objection
Connection
Зробіть звичайне 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>
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.
Виконати команду
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
Статичний аналіз став динамічним
У реальному додатку ми повинні знати всю інформацію, виявлену в цій частині, перш ніж використовувати objection завдяки статичному аналізу. У будь-якому випадку, таким чином ви, можливо, зможете побач
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 класу, вказаного повністю кваліфікованим ім'ям класу. Ось результат спроби отримати рядкове значення для виявленого objection, яке зазвичай містить значення властивостей для об'єкта.
android heap print_instances <class>
Keystore/Intents
Ви можете грати з keystore та intents, використовуючи:
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
exit
Що мені не вистачає в Objection
- Методи хуків іноді призводять до збоїв програми (це також пов'язано з Frida).
- Ви не можете використовувати екземпляри класів для виклику функцій екземпляра. І ви не можете створювати нові екземпляри класів і використовувати їх для виклику функцій.
- Немає ярлика (як для sslpinnin), щоб підключити всі загальні криптографічні методи, що використовуються програмою, щоб побачити зашифрований текст, відкритий текст, ключі, IV та алгоритми, що використовуються.
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.