Exploiting a debuggeable application
Last updated
Last updated
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Цей розділ посту є підсумком з посту https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
Контент на основі https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
Декомпілюйте APK:
Використовуйте інструмент APK-GUI для декомпіляції APK.
У файлі android-manifest вставте android:debuggable=true
, щоб увімкнути режим налагодження.
Знову скомпілюйте, підпишіть та zipalign модифікований додаток.
Встановіть модифікований додаток:
Використовуйте команду: adb install <application_name>
.
Отримайте назву пакету:
Виконайте adb shell pm list packages –3
, щоб перерахувати сторонні додатки та знайти назву пакету.
Налаштуйте додаток на очікування підключення налагоджувача:
Команда: 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>
.
Підготуйтеся до налагодження в Android Studio:
Перейдіть в Android Studio до File -> Open Profile or APK.
Відкрийте скомпільований APK.
Встановіть точки зупинки в ключових Java-файлах:
Встановіть точки зупинки в MainActivity.java
(зокрема в методі onCreate
), b.java
та ContextWrapper.java
.
Додаток у певні моменти перевіряє, чи він підлягає налагодженню, а також перевіряє наявність бінарних файлів, що вказують на рутований пристрій. Налагоджувач може бути використаний для зміни інформації про додаток, скидання біта налагодження та зміни назв шуканих бінарних файлів для обходу цих перевірок.
Для перевірки налагодження:
Змініть налаштування прапорців:
У секції змінних консолі налагоджувача перейдіть до: 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
, успішно змінюючи вихід додатку в реальному часі.
Цей приклад продемонстрував, як можна маніпулювати поведінкою налагоджуваного додатку, підкреслюючи потенціал для більш складних експлуатацій, таких як отримання доступу до оболонки на пристрої в контексті додатку.
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)