Objection Tutorial
Підказка щодо багів у винагороду: зареєструйтеся на Intigriti, преміальній платформі для пошуку багів, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!
Вступ
objection - Рантаймовий мобільний дослідження
Objection - це набір інструментів для рантаймового мобільного дослідження, який працює на основі Frida. Він був створений з метою допомогти оцінювати мобільні додатки та їхню безпеку без необхідності в джейлбрейку або рутованому мобільному пристрої.
Примітка: Це не якийсь вид обхіду джейлбрейку / рута. Використовуючи objection
, ви все ще обмежені всіма обмеженнями, накладеними сховищем, з яким ви стикаєтеся.
Резюме
Мета objection - дозволити користувачеві викликати основні дії, які пропонує Frida. Інакше користувачу доведеться створити один скрипт для кожного додатка, який він хоче протестувати.
Посібник
Для цього посібника я використаю APK, який ви можете завантажити тут:
Або з його оригінального репозиторію (завантажте app-release.apk)
Встановлення
Підключення
Встановіть звичайне з'єднання ADB та запустіть сервер frida на пристрої (і перевірте, що frida працює як на клієнті, так і на сервері).
Якщо ви використовуєте пристрій з рут-доступом, необхідно вибрати додаток, який ви хочете протестувати в параметрі --gadget. у цьому випадку:
Основні дії
Не всі можливі команди objections будуть перераховані в цьому посібнику, лише ті, які я вважаю найбільш корисними.
Середовище
Деяка цікава інформація (наприклад, паролі або шляхи) можуть бути знайдені в середовищі.
Інформація про Frida
Завантаження/Завантаження
Імпорт frida скрипта
Перевірка SSL
Виявлення рут-прав доступу
Виконання команди
Знімки екрану
Статичний аналіз стає динамічним
У реальному додатку ми повинні знати всю інформацію, виявлену в цій частині, перед використанням зауваження. У будь-якому випадку, цим способом можливо побачити щось нове, оскільки тут ви матимете повний список класів, методів та експортованих об'єктів.
Це також корисно, якщо ви якимось чином не можете отримати деякий читабельний вихідний код додатку.
Список діяльностей, приймачів та служб
Frida запустить помилку, якщо нічого не знайдено
Отримання поточної активності
Пошук класів
Давайте почнемо шукати класи у нашому додатку
Пошук методів класу
Тепер давайте витягнемо методи всередині класу MainActivity:
Список визначених методів класу з їх параметрами
Давайте визначимо, які параметри потрібні методам класу:
Список класів
Ви також можете переглянути всі класи, які були завантажені в поточну програму:
Це дуже корисно, якщо ви хочете підключити метод класу, і ви знаєте лише назву класу. Ви можете використовувати цю функцію, щоб знайти, який модуль володіє класом, а потім підключити його метод.
Підключення стає легким
Підключення (спостереження) методу
З вихідного коду додатку ми знаємо, що функція sum() з MainActivity виконується кожну секунду. Спробуємо вивести всю можливу інформацію кожного разу, коли викликається функція (аргументи, значення повернення та стек викликів):
Підключення (спостереження) за цілою класом
Фактично, я вважаю всі методи класу MainActivity дійсно цікавими, давайте підключимо їх всі. Будьте обережні, це може призвести до збою додатку.
Якщо ви граєте з додатком під час підключення класу, ви побачите, коли кожна функція викликається, її аргументи та повертає значення.
Зміна булевого значення повернення функції
З вихідного коду можна побачити, що функція checkPin отримує String як аргумент і повертає boolean. Давайте зробимо так, щоб функція завжди повертала true:
Тепер, якщо ви щось введете у текстове поле для коду PIN, ви побачите, що будь-що є дійсним:
Екземпляри класу
Шукайте та друкуйте живі екземпляри певного класу Java, вказаного повністю кваліфікованим ім'ям класу. Результатом є спроба отримати рядкове значення для виявленого заперечення, яке зазвичай містить значення властивостей для об'єкта.
Хранилище ключів/Інтенти
Ви можете грати з хранилищем ключів та інтентами, використовуючи:
Пам'ять
Вивантаження
Список
У нижній частині списку ви можете побачити frida:
Давайте перевіримо, що експортує frida:
Пошук/Запис
Ви також можете шукати та записувати в пам'ять за допомогою objection:
SQLite
Ви можете використовувати команду sqlite
для взаємодії з базами даних SQLite.
Вихід
Що мені не вистачає в Objection
Методи підключення іноді призводять до аварійного завершення додатка (це також через Frida).
Ви не можете використовувати екземпляри класів для виклику функцій екземпляра. І ви не можете створювати нові екземпляри класів і використовувати їх для виклику функцій.
Немає швидкого способу (подібного до того, що для sslpinnin) підключити всі загальні криптографічні методи, які використовуються додатком, щоб побачити зашифрований текст, звичайний текст, ключі, IV та використані алгоритми.
Підказка щодо винагороди за помилки: зареєструйтесь на Intigriti, преміальній платформі для винагород за помилки, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!
Last updated