Exploiting a debuggeable application
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ovaj deo posta je sažetak iz posta https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
Sadržaj zasnovan na https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
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.
Instalirajte izmenjenu aplikaciju:
Koristite komandu: adb install <application_name>
.
Preuzmite ime paketa:
Izvršite adb shell pm list packages –3
da biste naveli aplikacije trećih strana i pronašli ime paketa.
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>
.
Pripremite se za debagovanje u Android Studiju:
Idite u Android Studio na File -> Open Profile or APK.
Otvorite rekompajlirani APK.
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
.
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:
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.
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.
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.
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.
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.
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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)