Використання додатку з можливістю налагодження
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Обхід перевірок 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
- Декомпілювати 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
, успішно змінивши вихідні дані додатку в реальному часі.
Цей приклад продемонстрував, як можна маніпулювати поведінкою налагоджуваного додатку, підкреслюючи потенціал для більш складних експлуатацій, таких як отримання доступу до оболонки на пристрої в контексті додатку.
Посилання
- https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
- https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.