Використання додатку з можливістю налагодження

Reading time: 4 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Обхід перевірок root та налагодження

Цей розділ посту є резюме з посту https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0

Кроки для перетворення Android-додатку на налагоджуваний та обходу перевірок

Перетворення додатку на налагоджуваний

Контент на основі https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0

  1. Декомпілювати APK:
  • Використовуйте інструмент APK-GUI для декомпіляції APK.
  • У файлі android-manifest вставте android:debuggable=true, щоб увімкнути режим налагодження.
  • Знову скомпілюйте, підпишіть та zipalign модифікований додаток.
  1. Встановіть модифікований додаток:
  • Використовуйте команду: adb install <application_name>.
  1. Отримайте назву пакету:
  • Виконайте adb shell pm list packages –3, щоб перерахувати сторонні додатки та знайти назву пакету.
  1. Налаштуйте додаток на очікування підключення налагоджувача:
  • Команда: adb shell am setup-debug-app –w <package_name>.
  • Примітка: Цю команду потрібно виконувати щоразу перед запуском додатку, щоб він чекав на налагоджувач.
  • Для постійності використовуйте adb shell am setup-debug-app –w -–persistent <package_name>.
  • Щоб видалити всі прапорці, використовуйте adb shell am clear-debug-app <package_name>.
  1. Підготуйтеся до налагодження в Android Studio:
  • Перейдіть в Android Studio до File -> Open Profile or APK.
  • Відкрийте скомпільований APK.
  1. Встановіть точки зупинки в ключових Java-файлах:
  • Розмістіть точки зупинки в MainActivity.java (зокрема в методі onCreate), b.java та ContextWrapper.java.

Обхід перевірок

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

Для перевірки налагодження:

  1. Змініть налаштування прапорців:
  • У секції змінних консолі налагоджувача перейдіть до: this mLoadedAPK -> mApplicationInfo -> flags = 814267974.
  • Примітка: Бінарне представлення flags = 814267974 є 11000011100111011110, що вказує на те, що "Flag_debuggable" активний.

https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png

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

Крок 2 передбачає зміну значення прапорця на 814267972, яке в бінарному вигляді представлено як 110000101101000000100010100.

Використання вразливості

Демонстрація була надана за допомогою вразливого додатку, що містить кнопку та текстове поле. Спочатку додаток відображає "Crack Me". Мета полягає в тому, щоб змінити повідомлення з "Try Again" на "Hacked" під час виконання, не змінюючи вихідний код.

Перевірка на вразливість

  • Додаток був декомпільований за допомогою apktool, щоб отримати доступ до файлу AndroidManifest.xml.
  • Наявність android_debuggable="true" у AndroidManifest.xml вказує на те, що додаток є налагоджуваним і підлягає експлуатації.
  • Варто зазначити, що apktool використовується лише для перевірки статусу налагодження без зміни будь-якого коду.

Підготовка налаштувань

  • Процес передбачав ініціювання емулятора, встановлення вразливого додатку та використання adb jdwp для ідентифікації портів Dalvik VM, які слухають.
  • JDWP (Java Debug Wire Protocol) дозволяє налагоджувати додаток, що працює в VM, відкриваючи унікальний порт.
  • Портове перенаправлення було необхідним для віддаленого налагодження, після чого JDB було підключено до цільового додатку.

Впровадження коду під час виконання

  • Експлуатація була здійснена шляхом встановлення точок зупинки та контролю за потоком виконання додатку.
  • Команди, такі як classes та methods <class_name>, використовувалися для виявлення структури додатку.
  • Точка зупинки була встановлена в методі onClick, і її виконання контролювалося.
  • Команди locals, next та set використовувалися для перевірки та зміни локальних змінних, зокрема зміни повідомлення "Try Again" на "Hacked".
  • Модифікований код був виконаний за допомогою команди run, успішно змінивши вихідні дані додатку в реальному часі.

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

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks