Exploiting a debuggeable application

Використання додатку, що підлягає налагодженню

Підтримати 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" активний.

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

Крок 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, успішно змінюючи вихід додатку в реальному часі.

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

Посилання

Підтримати HackTricks

Last updated