Objection Tutorial
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bug bounty tip: зареєструйтесь на Intigriti, преміум платформі для bug bounty, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні та почніть заробляти винагороди до $100,000!
Introduction
objection - Runtime Mobile Exploration
Objection - це набір інструментів для дослідження мобільних додатків в режимі виконання, заснований на Frida. Він був створений з метою допомогти оцінити мобільні додатки та їхню безпеку без необхідності використання зламаного або рутованого мобільного пристрою.
Примітка: Це не є формою обходу jailbreak / root. Використовуючи objection
, ви все ще обмежені всіма обмеженнями, накладеними відповідним пісочницею, з якою ви стикаєтеся.
Resume
Мета objection - дозволити користувачу викликати основні дії, які пропонує Frida. В іншому випадку, користувачеві потрібно буде створити один скрипт для кожного додатку, який він хоче протестувати.
Tutorial
Для цього уроку я буду використовувати APK, який ви можете завантажити тут:
Або з його оригінального репозиторію (завантажити app-release.apk)
Installation
Connection
Зробіть звичайне з'єднання ADB і запустіть сервер frida на пристрої (і перевірте, що frida працює як на клієнті, так і на сервері).
Якщо ви використовуєте рутований пристрій, потрібно вибрати додаток, який ви хочете протестувати, у параметрі --gadget. у цьому випадку:
Основні дії
Не всі можливі команди objections будуть перераховані в цьому посібнику, лише ті, які я вважаю більш корисними.
Середовище
Деяка цікава інформація (наприклад, паролі або шляхи) може бути знайдена всередині середовища.
Інформація про Frida
Завантаження/Вивантаження
Імпорт скрипта frida
SSLPinning
Виявлення root-доступу
Виконати команду
Скриншоти
Статичний аналіз став динамічним
У реальному додатку ми повинні знати всю інформацію, виявлену в цій частині, перш ніж використовувати objection завдяки статичному аналізу. У будь-якому випадку, таким чином ви, можливо, зможете побачити щось нове, оскільки тут ви отримаєте лише повний список класів, методів та експортованих об'єктів.
Це також корисно, якщо якимось чином ви не можете отримати читабельний вихідний код додатку.
Список активностей, приймачів та сервісів
Frida видасть помилку, якщо нічого не знайдено
Отримання поточної активності
Пошук класів
Давайте почнемо шукати класи всередині нашого додатку.
Методи пошуку класу
Тепер давайте витягнемо методи всередині класу MainActivity:
Список оголошених методів класу з їхніми параметрами
Давайте з'ясуємо, які параметри потрібні методам класу:
Список класів
Ви також можете перерахувати всі класи, які були завантажені в поточному додатку:
Це дуже корисно, якщо ви хочете перехопити метод класу і знаєте лише назву класу. Ви можете використовувати цю функцію, щоб знайти, який модуль належить класу і потім перехопити його метод.
Перехоплення є простим
Перехоплення (спостереження) методу
З джерельного коду програми ми знаємо, що функція sum() з MainActivity виконується кожну секунду. Спробуємо вивантажити всю можливу інформацію щоразу, коли викликається функція (аргументи, значення повернення та стек викликів):
Хукання (спостереження) за цілим класом
Насправді, всі методи класу MainActivity мені дуже цікаві, давайте захукаємо їх усі. Будьте обережні, це може викликати збій програми.
Якщо ви граєте з додатком, поки клас підключений, ви побачите, коли кожна функція викликається, її аргументи та значення повернення.
Зміна булевого значення повернення функції
З вихідного коду ви можете побачити, що функція checkPin отримує String як аргумент і повертає boolean. Давайте зробимо так, щоб функція завжди повертала true:
Тепер, якщо ви напишете щось у текстовому полі для PIN-коду, ви побачите, що все є дійсним:
Екземпляри класу
Шукайте та друкуйте живі екземпляри конкретного Java класу, вказаного повністю кваліфікованим ім'ям класу. Вихід - це результат спроби отримати значення рядка для виявленого objection, яке зазвичай містить значення властивостей для об'єкта.
Keystore/Intents
Ви можете грати з keystore та intents, використовуючи:
Пам'ять
Вивантаження
Список
Внизу списку ви можете побачити frida:
Давайте перевіримо, що експортує frida:
Пошук/Запис
Ви також можете шукати та записувати в пам'яті за допомогою objection:
SQLite
Ви можете використовувати команду sqlite
для взаємодії з базами даних sqlite.
Exit
Що мені не вистачає в Objection
Методи хуків іноді викликають аварійне завершення програми (це також пов'язано з Frida).
Ви не можете використовувати екземпляри класів для виклику функцій екземпляра. І ви не можете створювати нові екземпляри класів і використовувати їх для виклику функцій.
Немає ярлика (як для sslpinnin), щоб підключити всі загальні криптографічні методи, які використовуються програмою, щоб побачити зашифрований текст, відкритий текст, ключі, IV та алгоритми, що використовуються.
Порада для баг-баунті: зареєструйтесь на Intigriti, преміум платформі для баг-баунті, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні та почніть заробляти винагороди до $100,000!
Вчіться та практикуйте Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Last updated