5.5 KiB
Exploiting a debuggeable application
{{#include ../../banners/hacktricks-training.md}}
Om te omseil wortel- en debuggeable kontroles
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
Stappe om 'n Android-app debuggeable te maak en kontroles te omseil
Maak die App Debuggeable
Inhoud gebaseer op https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
- 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 debug-modus te aktiveer. - Hercompileer, teken en zipalign die gewysigde toepassing.
- Installeer die Gewysigde Toepassing:
- Gebruik die opdrag:
adb install <application_name>
.
- Herwin die Pakketnaam:
- Voer
adb shell pm list packages –3
uit om derdeparty-toepassings te lys en die pakketnaam te vind.
- 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 op 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>
.
- Bereid voor vir Debugging in Android Studio:
- Navigeer in Android Studio na File -> Open Profile or APK.
- Open die hergecompileerde APK.
- Stel Breekpunte in Sleutel Java-lêers:
- Plaas breekpunte in
MainActivity.java
(spesifiek in dieonCreate
metode),b.java
, enContextWrapper.java
.
Omseiling van Kontroles
Die toepassing sal op sekere punte verifieer of dit debuggeable is en sal ook kontroleer vir binêre wat 'n gewortelde toestel aandui. Die debugger kan gebruik word om app-inligting te wysig, die debuggeable bit te verwyder, en die name van gesoekte binêre te verander om hierdie kontroles te omseil.
Vir die debuggeable kontrole:
- Wysig Vlaginstellings:
- In die debugger-konsoles se veranderlike afdeling, navigeer na:
this mLoadedAPK -> mApplicationInfo -> flags = 814267974
. - Let wel: Die binêre voorstelling van
flags = 814267974
is11000011100111011110
, wat aandui dat die "Flag_debuggable" aktief is.
Hierdie stappe verseker saam dat die toepassing gedebug kan word en dat sekere sekuriteitskontroles met behulp van die debugger omgegaan kan word, wat 'n meer diepgaande analise of wysiging van die toepassing se gedrag moontlik maak.
Stap 2 behels die verandering van 'n vlagwaarde na 814267972, wat in binêr as 110000101101000000100010100 voorgestel word.
Eksploitering van 'n Kwessie
'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
apktool
om toegang te verkry tot dieAndroidManifest.xml
lêer. - Die teenwoordigheid van
android_debuggable="true"
in die AndroidManifest.xml dui aan dat die toepassing debuggeable is en vatbaar is vir eksploitasie. - Dit is die moeite werd om te noem dat
apktool
slegs gebruik word om die debuggeable 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 die 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.
Inspuiting van Kode tydens Uitvoering
- Die eksploitasie is uitgevoer deur breekpunte in te stel en die toepassing se vloei te beheer.
- Opdragte soos
classes
enmethods <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
, enset
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 die
run
opdrag, wat suksesvol die toepassing se uitvoer in werklike tyd verander het.
Hierdie voorbeeld het gedemonstreer hoe die gedrag van 'n debuggeable toepassing gemanipuleer kan word, wat die potensiaal vir meer komplekse eksploitasies soos die verkryging van shell-toegang op die toestel in die toepassing se konteks beklemtoon.
Verwysings
- 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
{{#include ../../banners/hacktricks-training.md}}