Exploiting a debuggeable application
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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
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 foutopsporing 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 Wacht:
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>
.
Bereid voor vir Foutopsporing 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 die onCreate
metode), b.java
, en ContextWrapper.java
.
Die toepassing sal op sekere punte verifieer of dit debuggable is en sal ook kontroleer vir binêre wat 'n ge-root toestel aandui. Die debugger kan gebruik word om app inligting te wysig, die debuggable bit te verwyder, en die name van gesoekte binêre te verander om hierdie kontroles te omseil.
Vir die debuggable kontrole:
Wysig Vlag Instellings:
In die debugger konsole 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.
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 vlag waarde na 814267972, wat in binêr voorgestel word as 110000101101000000100010100.
'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" te verander tydens uitvoering, sonder om die bronkode te wysig.
Die toepassing is gedekompleer 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 aan dat die toepassing debuggable is en vatbaar is vir uitbuiting.
Dit is die moeite werd om op te let dat apktool
slegs gebruik word om die debuggable status te kontroleer sonder om enige kode te verander.
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 foutopsporing van 'n toepassing wat in 'n VM loop in deur 'n unieke poort bloot te stel.
Poort forwarding was nodig vir afstands-foutopsporing, gevolg deur die aanhegting van JDB aan die teikentoepassing.
Die uitbuiting 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 debuggable toepassing gemanipuleer kan word, wat die potensiaal vir meer komplekse uitbuitings soos die verkryging van shell toegang op die toestel in die toepassing se konteks beklemtoon.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)