hacktricks/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md
2024-02-11 02:07:06 +00:00

88 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Uitbuiting van 'n toepassing wat gedebug kan word
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-opslagplekke.
</details>
# **Om die wortel- en gedebug kan word kontroles te omseil**
Hierdie gedeelte van die pos is 'n opsomming van die pos [**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)
## Stappe om 'n Android-toepassing gedebug kan word te maak en kontroles te omseil
### **Maak die toepassing gedebug kan word**
Inhoud gebaseer op https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
1. **Ontbind die APK:**
- Gebruik die APK-GUI-hulpmiddel om die APK te ontbind.
- Voeg `android:debuggable=true` by in die _android-manifest_-lêer om die gedebug-modus te aktiveer.
- Hersaam, teken en zipalign die gewysigde toepassing.
2. **Installeer die Gewysigde Toepassing:**
- Gebruik die opdrag: `adb install <toepassing_naam>`.
3. **Haal die Pakketnaam op:**
- Voer `adb shell pm list packages 3` uit om derdeparty-toepassings te lys en die pakketnaam te vind.
4. **Stel die Toepassing in om op die gedebugger se verbinding te wag:**
- Opdrag: `adb shell am setup-debug-app w <pakketnaam>`.
- **Let op:** Hierdie opdrag moet elke keer uitgevoer word voordat die toepassing begin om te verseker dat dit wag vir die gedebugger.
- Vir volharding, gebruik `adb shell am setup-debug-app w -persistent <pakketnaam>`.
- Om alle vlae te verwyder, gebruik `adb shell am clear-debug-app <pakketnaam>`.
5. **Maak gereed vir gedebugging in Android Studio:**
- Navigeer in Android Studio na _File -> Open Profile or APK_.
- Maak die hersaamde APK oop.
6. **Stel breekpunte in sleutel Java-lêers:**
- Plaas breekpunte in `MainActivity.java` (spesifiek in die `onCreate`-metode), `b.java`, en `ContextWrapper.java`.
### **Kontroles omseil**
Die toepassing sal op sekere punte verifieer of dit gedebug kan word en sal ook kyk vir binêre lêers wat dui op 'n gewortelde toestel. Die gedebugger kan gebruik word om toepassingsinligting te wysig, die gedebugbare bit te verwyder, en die name van gesoekte binêre lêers te verander om hierdie kontroles te omseil.
Vir die gedebug-klank:
1. **Verander vlae-instellings:**
- In die veranderlike-afdeling van die gedebugger se konsole, navigeer na: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
- **Let op:** Die binêre voorstelling van `flags = 814267974` is `11000011100111011110`, wat aandui dat die "Flag_debuggable" aktief is.
![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png)
Hierdie stappe verseker gesamentlik dat die toepassing gedebug kan word en dat sekere sekuriteitskontroles omseil kan word deur die gedebugger te gebruik, wat 'n meer diepgaande analise of wysiging van die toepassing se gedrag fasiliteer.
Stap 2 behels die verandering van 'n vlaewaarde na 814267972, wat binêr voorgestel word as 110000101101000000100010100.
# **Uitbuiting van 'n kwesbaarheid**
'n Demonstrasie is verskaf met behulp van 'n kwesbare toepassing wat 'n knoppie en 'n teksvak bevat. Aanvanklik vertoon die toepassing "Crack Me". Die doel is om die boodskap van "Try Again" na "Hacked" te verander tydens uitvoering, sonder om die bronkode te wysig.
## **Kontrole vir Kwesbaarheid**
- Die toepassing is ontbind met behulp van `apktool` om toegang te verkry tot die `AndroidManifest.xml`-lêer.
- Die teenwoordigheid van `android_debuggable="true"` in die AndroidManifest.xml dui daarop dat die toepassing gedebug kan word en vatbaar is vir uitbuiting.
- Dit is die moeite werd om op te merk dat `apktool` slegs gebruik word om die gedebugbare status te kontroleer sonder om enige kode te wysig.
## **Die Opstel Voorberei**
- Die proses behels die begin van 'n emulator, die installeer van die kwesbare toepassing, en die gebruik van `adb jdwp` om Dalvik VM-poorte wat luister te identifiseer.
- Die JDWP (Java Debug Wire Protocol) maak dit moontlik om 'n toepassing wat in 'n VM loop te debug deur 'n unieke poort bloot te stel.
- Poort deurstuur was nodig vir afstandsbediening, gevolg deur die koppel van JDB aan die teiken-toepassing.
## **Kode inspuiting tydens uitvoering**
- Die uitbuiting is uitgevoer deur breekpunte te stel en die toepassing se vloei te beheer.
- Opdragte soos `classes` en `methods <class_name>` is gebruik om die struktuur van die toepassing te ondersoek.
- 'n Breekpunt is gestel by die `onClick`-metode, en die uitvoering daarvan is beheer.
- Die opdragte `locals`, `next`, en `set` is gebruik om plaaslike veranderlikes te ondersoek en te wysig, veral deur die "Try Again" boodskap na "Hacked" te verander.
- Die gewysigde kode is uitgevoer met behulp van die `run`-opdrag, wat die toepassing se uitset suksesvol in werklike tyd verander het.
Hierdie voorbeeld het gedemonstreer hoe die gedrag van 'n toepassing wat gedebug kan word, gemanipuleer kan word, en beklemtoon die potensiaal vir meer komple