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

6.1 KiB
Raw Blame History

Uitbuiting van 'n toepassing wat gedebug kan word

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

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

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.
  1. Installeer die Gewysigde Toepassing:
  • Gebruik die opdrag: adb install <toepassing_naam>.
  1. Haal die Pakketnaam op:
  • Voer adb shell pm list packages 3 uit om derdeparty-toepassings te lys en die pakketnaam te vind.
  1. 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>.
  1. Maak gereed vir gedebugging in Android Studio:
  • Navigeer in Android Studio na File -> Open Profile or APK.
  • Maak die hersaamde APK oop.
  1. 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

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