6.1 KiB
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:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud GitHub-opslagplekke.
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
- 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.
- Installeer die Gewysigde Toepassing:
- Gebruik die opdrag:
adb install <toepassing_naam>
.
- Haal die Pakketnaam op:
- Voer
adb shell pm list packages –3
uit om derdeparty-toepassings te lys en die pakketnaam te vind.
- 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>
.
- Maak gereed vir gedebugging in Android Studio:
- Navigeer in Android Studio na File -> Open Profile or APK.
- Maak die hersaamde APK oop.
- Stel breekpunte in sleutel Java-lêers:
- Plaas breekpunte in
MainActivity.java
(spesifiek in dieonCreate
-metode),b.java
, enContextWrapper.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:
- 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
is11000011100111011110
, wat aandui dat die "Flag_debuggable" aktief is.
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 dieAndroidManifest.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
enmethods <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
, enset
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