hacktricks/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md

108 lines
7.6 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.

# Exploiting a debuggeable application
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# **Om die wortel- en debuggeer kontroles te omseil**
Hierdie afdeling 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-app debuggeerbaar te maak en kontroles te omseil
### **Maak die App Debuggeerbaar**
Inhoud gebaseer op https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
1. **Decompile die APK:**
- Gebruik die APK-GUI hulpmiddel om die APK te dekompileer.
- In die _android-manifest_ lêer, voeg `android:debuggable=true` in om die debugmodus te aktiveer.
- Hercompileer, teken en zipalign die gewysigde toepassing.
2. **Installeer die Gewysigde Toepassing:**
- Gebruik die opdrag: `adb install <application_name>`.
3. **Herwin die Pakketnaam:**
- Voer `adb shell pm list packages 3` uit om derdeparty-toepassings te lys en die pakketnaam te vind.
4. **Stel die App in om op Debugger Verbinding te Wag:**
- Opdrag: `adb shell am setup-debug-app w <package_name>`.
- **Let wel:** Hierdie opdrag moet elke keer voor die begin van die toepassing uitgevoer word om te verseker dat dit vir die debugger wag.
- Vir volharding, gebruik `adb shell am setup-debug-app w -persistent <package_name>`.
- Om alle vlae te verwyder, gebruik `adb shell am clear-debug-app <package_name>`.
5. **Bereid voor vir Debugging in Android Studio:**
- Navigeer in Android Studio na _File -> Open Profile or APK_.
- Open die hergecompileerde APK.
6. **Stel Breekpunte in Sleutel Java Lêers:**
- Plaas breekpunte in `MainActivity.java` (spesifiek in die `onCreate` metode), `b.java`, en `ContextWrapper.java`.
### **Omseiling van Kontroles**
Die toepassing sal op sekere punte verifieer of dit debuggeerbaar is en sal ook kontroleer vir binêre wat 'n gewortelde toestel aandui. Die debugger kan gebruik word om app-inligting te wysig, die debuggeerbare bit te verwyder, en die name van gesoekte binêre te verander om hierdie kontroles te omseil.
Vir die debuggeerbare kontrole:
1. **Wysig Vlag Instellings:**
- In die debugger-konsol se veranderlike afdeling, navigeer na: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
- **Let wel:** 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 omgegaan kan word met behulp van die debugger, wat 'n meer diepgaande analise of wysiging van die toepassing se gedrag vergemaklik.
Stap 2 behels die verandering van 'n vlagwaarde na 814267972, wat in binêr as 110000101101000000100010100 voorgestel word.
# **Om 'n Kwessie te Exploiteer**
'n Demonstrasie is verskaf met 'n kwesbare toepassing wat 'n knoppie en 'n teksview bevat. Aanvanklik vertoon die toepassing "Crack Me". Die doel is om die boodskap van "Try Again" na "Hacked" tydens uitvoering te verander, sonder om die bronkode te wysig.
## **Kontroleer vir Kwessies**
- Die toepassing is gedekomplileer met behulp van `apktool` om toegang tot die `AndroidManifest.xml` lêer te verkry.
- Die teenwoordigheid van `android_debuggable="true"` in die AndroidManifest.xml dui aan dat die toepassing debuggeerbaar en kwesbaar is vir eksploitatie.
- Dit is die moeite werd om op te let dat `apktool` slegs gebruik word om die debuggeerbare status te kontroleer sonder om enige kode te verander.
## **Voorbereiding van die Stel**
- Die proses het behels om 'n emulator te begin, die kwesbare toepassing te installeer, en `adb jdwp` te gebruik om Dalvik VM-poorte te identifiseer wat luister.
- Die JDWP (Java Debug Wire Protocol) stel debugging van 'n toepassing wat in 'n VM loop in deur 'n unieke poort bloot te stel.
- Poort forwarding was nodig vir afstand debugging, gevolg deur die aanhegting van JDB aan die teiken toepassing.
## **Kode Injektering tydens Uitvoering**
- Die eksploitatie is uitgevoer deur breekpunte in te stel en die toepassing se vloei te beheer.
- Opdragte soos `classes` en `methods <class_name>` is gebruik om die toepassing se struktuur te ontdek.
- 'n Breekpunt is gestel by die `onClick` metode, en sy uitvoering is beheer.
- Die `locals`, `next`, en `set` opdragte is gebruik om plaaslike veranderlikes te inspekteer en te wysig, veral om die "Try Again" boodskap na "Hacked" te verander.
- Die gewysigde kode is uitgevoer met behulp van die `run` opdrag, wat suksesvol die toepassing se uitvoer in werklike tyd verander het.
Hierdie voorbeeld het gedemonstreer hoe die gedrag van 'n debuggeerbare toepassing gemanipuleer kan word, wat die potensiaal vir meer komplekse eksploitatie soos die verkryging van shell toegang op die toestel in die toepassing se konteks beklemtoon.
## References
* [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)
* [https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications)
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}