Exploiting a debuggeable application

Exploiting a debuggeable application

Support HackTricks

Zaobilaženje root i debuggeable provere

Ovaj deo posta je sažetak iz posta https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0

Koraci za pravljenje Android aplikacije debuggeable i zaobilaženje provera

Pravljenje aplikacije debuggeable

Sadržaj zasnovan na https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0

  1. Dekompajlirajte APK:

  • Iskoristite APK-GUI alat za dekompajliranje APK-a.

  • U android-manifest datoteci, dodajte android:debuggable=true da omogućite režim debagovanja.

  • Ponovo kompajlirajte, potpišite i zipalign-ujte izmenjenu aplikaciju.

  1. Instalirajte izmenjenu aplikaciju:

  • Koristite komandu: adb install <application_name>.

  1. Preuzmite ime paketa:

  • Izvršite adb shell pm list packages –3 da biste naveli aplikacije trećih strana i pronašli ime paketa.

  1. Postavite aplikaciju da čeka na vezu sa debagerom:

  • Komanda: adb shell am setup-debug-app –w <package_name>.

  • Napomena: Ova komanda mora biti pokrenuta svaki put pre pokretanja aplikacije kako bi se osiguralo da čeka na debager.

  • Za trajnost, koristite adb shell am setup-debug-app –w -–persistent <package_name>.

  • Da biste uklonili sve oznake, koristite adb shell am clear-debug-app <package_name>.

  1. Pripremite se za debagovanje u Android Studiju:

  • Idite u Android Studio na File -> Open Profile or APK.

  • Otvorite rekompajlirani APK.

  1. Postavite prekidne tačke u ključnim Java datotekama:

  • Postavite prekidne tačke u MainActivity.java (specifično u onCreate metodi), b.java, i ContextWrapper.java.

Zaobilaženje provera

Aplikacija će u određenim trenucima proveravati da li je debuggable i takođe će proveravati binarne datoteke koje ukazuju na uređaj sa root-om. Debager se može koristiti za modifikaciju informacija o aplikaciji, uklanjanje debuggable bita i promenu imena pretraživanih binarnih datoteka kako bi se zaobišle ove provere.

Za debuggable proveru:

  1. Izmenite postavke oznaka:

  • U sekciji varijabli konzole debagera, idite na: this mLoadedAPK -> mApplicationInfo -> flags = 814267974.

  • Napomena: Binarna reprezentacija flags = 814267974 je 11000011100111011110, što ukazuje da je "Flag_debuggable" aktivan.

https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png

Ovi koraci zajedno osiguravaju da aplikacija može biti debagovana i da se određene sigurnosne provere mogu zaobići korišćenjem debagera, olakšavajući dublju analizu ili modifikaciju ponašanja aplikacije.

Korak 2 uključuje promenu vrednosti oznake na 814267972, koja se u binarnom obliku predstavlja kao 110000101101000000100010100.

Eksploatacija ranjivosti

Demonstracija je pružena korišćenjem ranjive aplikacije koja sadrži dugme i textview. U početku, aplikacija prikazuje "Crack Me". Cilj je promeniti poruku sa "Try Again" na "Hacked" u toku izvršavanja, bez modifikacije izvornog koda.

Proveravanje ranjivosti

  • Aplikacija je dekompajlirana korišćenjem apktool da bi se pristupilo AndroidManifest.xml datoteci.

  • Prisutnost android_debuggable="true" u AndroidManifest.xml ukazuje da je aplikacija debuggable i podložna eksploataciji.

  • Vredno je napomenuti da se apktool koristi isključivo za proveru statusa debuggable bez izmene bilo kog koda.

Priprema postavki

  • Proces je uključivao pokretanje emulatora, instaliranje ranjive aplikacije i korišćenje adb jdwp za identifikaciju Dalvik VM portova koji slušaju.

  • JDWP (Java Debug Wire Protocol) omogućava debagovanje aplikacije koja se izvršava u VM-u izlaganjem jedinstvenog porta.

  • Port forwarding je bio neophodan za daljinsko debagovanje, nakon čega je JDB povezan na ciljnu aplikaciju.

Injektovanje koda u toku izvršavanja

  • Eksploatacija je izvršena postavljanjem prekidnih tačaka i kontrolisanjem toka aplikacije.

  • Komande poput classes i methods <class_name> korišćene su za otkrivanje strukture aplikacije.

  • Prekidna tačka je postavljena u onClick metodi, a njeno izvršavanje je kontrolisano.

  • Komande locals, next, i set korišćene su za inspekciju i modifikaciju lokalnih varijabli, posebno menjajući poruku "Try Again" u "Hacked".

  • Izmenjeni kod je izvršen korišćenjem run komande, uspešno menjajući izlaz aplikacije u realnom vremenu.

Ovaj primer je demonstrirao kako se ponašanje debuggable aplikacije može manipulisati, ističući potencijal za složenije eksploate poput dobijanja shell pristupa na uređaju u kontekstu aplikacije.

References

Support HackTricks

Last updated