Objection Tutorial
Last updated
Last updated
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!
objection - Runtime Mobile Exploration
Objection - це набір інструментів для дослідження мобільних додатків в режимі виконання, заснований на Frida. Він був створений з метою допомогти оцінити мобільні додатки та їхню безпеку без необхідності використання зламаного або рутованого мобільного пристрою.
Примітка: Це не є формою обходу jailbreak / root. Використовуючи objection
, ви все ще обмежені всіма обмеженнями, накладеними відповідним пісочницею, з якою ви стикаєтеся.
Мета objection - дозволити користувачу викликати основні дії, які пропонує Frida. В іншому випадку, користувачеві потрібно буде створити один скрипт для кожного додатку, який він хоче протестувати.
Для цього уроку я буду використовувати APK, який ви можете завантажити тут:
Або з його оригінального репозиторію (завантажити app-release.apk)
Зробіть звичайне з'єднання ADB і запустіть сервер frida на пристрої (і перевірте, що frida працює як на клієнті, так і на сервері).
Якщо ви використовуєте рутований пристрій, потрібно вибрати додаток, який ви хочете протестувати, у параметрі --gadget. у цьому випадку:
Не всі можливі команди objections будуть перераховані в цьому посібнику, лише ті, які я вважаю більш корисними.
Деяка цікава інформація (наприклад, паролі або шляхи) може бути знайдена всередині середовища.
У реальному додатку ми повинні знати всю інформацію, виявлену в цій частині, перш ніж використовувати objection завдяки статичному аналізу. У будь-якому випадку, таким чином ви, можливо, зможете побачити щось нове, оскільки тут ви отримаєте лише повний список класів, методів та експортованих об'єктів.
Це також корисно, якщо якимось чином ви не можете отримати читабельний вихідний код додатку.
Frida видасть помилку, якщо нічого не знайдено
Давайте почнемо шукати класи всередині нашого додатку.
Тепер давайте витягнемо методи всередині класу MainActivity:
Давайте з'ясуємо, які параметри потрібні методам класу:
Ви також можете перерахувати всі класи, які були завантажені в поточному додатку:
Це дуже корисно, якщо ви хочете перехопити метод класу і знаєте лише назву класу. Ви можете використовувати цю функцію, щоб знайти, який модуль належить класу і потім перехопити його метод.
З джерельного коду програми ми знаємо, що функція sum() з MainActivity виконується кожну секунду. Спробуємо вивантажити всю можливу інформацію щоразу, коли викликається функція (аргументи, значення повернення та стек викликів):
Насправді, всі методи класу MainActivity мені дуже цікаві, давайте захукаємо їх усі. Будьте обережні, це може викликати збій програми.
Якщо ви граєте з додатком, поки клас підключений, ви побачите, коли кожна функція викликається, її аргументи та значення повернення.
З вихідного коду ви можете побачити, що функція checkPin отримує String як аргумент і повертає boolean. Давайте зробимо так, щоб функція завжди повертала true:
Тепер, якщо ви напишете щось у текстовому полі для PIN-коду, ви побачите, що все є дійсним:
Шукайте та друкуйте живі екземпляри конкретного Java класу, вказаного повністю кваліфікованим ім'ям класу. Вихід - це результат спроби отримати значення рядка для виявленого objection, яке зазвичай містить значення властивостей для об'єкта.
Ви можете грати з keystore та intents, використовуючи:
Внизу списку ви можете побачити frida:
Давайте перевіримо, що експортує frida:
Ви також можете шукати та записувати в пам'яті за допомогою objection:
Ви можете використовувати команду sqlite
для взаємодії з базами даних sqlite.
Методи хуків іноді викликають аварійне завершення програми (це також пов'язано з 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)