Eksploatacija aplikacije koja se može debagovati
Reading time: 4 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Obilaženje root i debagovanja 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 omogućavanje debagovanja Android aplikacije i obilaženje provera
Omogućavanje debagovanja aplikacije
Sadržaj zasnovan na https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
- Decompile APK:
- Iskoristite APK-GUI alat za dekompilaciju APK-a.
- U android-manifest datoteci, dodajte
android:debuggable=true
da omogućite režim debagovanja. - Ponovo kompajlirajte, potpišite i zipalign modifikovanu aplikaciju.
- Instalirajte modifikovanu aplikaciju:
- Koristite komandu:
adb install <application_name>
.
- Preuzmite naziv paketa:
- Izvršite
adb shell pm list packages –3
da biste naveli aplikacije trećih strana i pronašli naziv paketa.
- Postavite aplikaciju da čeka na vezu debagera:
- 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:
- Navigirajte u Android Studiju do 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 uonCreate
metodi),b.java
, iContextWrapper.java
.
Obilaženje provera
Aplikacija će u određenim trenucima proveravati da li je debagovana i takođe će proveravati binarne datoteke koje ukazuju na uređaj sa root pristupom. Debager se može koristiti za modifikaciju informacija o aplikaciji, uklanjanje oznake debagovanja i promenu imena pretraživanih binarnih datoteka kako bi se obile ove provere.
Za proveru debagovanja:
- Modifikujte postavke oznaka:
- U sekciji varijabli konzole debagera, navigirajte do:
this mLoadedAPK -> mApplicationInfo -> flags = 814267974
. - Napomena: Binarna reprezentacija
flags = 814267974
je11000011100111011110
, š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 obiti 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.
Provera ranjivosti
- Aplikacija je dekompilirana korišćenjem
apktool
da bi se pristupiloAndroidManifest.xml
datoteci. - Prisutnost
android_debuggable="true"
u AndroidManifest.xml ukazuje da je aplikacija debagovana i podložna eksploataciji. - Vredno je napomenuti da se
apktool
koristi isključivo za proveru statusa debagovanja bez modifikacije bilo kog koda.
Priprema postavke
- 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 ciljanju aplikaciju.
Injektovanje koda u toku izvršavanja
- Eksploatacija je izvršena postavljanjem prekidnih tačaka i kontrolisanjem toka aplikacije.
- Komande poput
classes
imethods <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
, iset
korišćene su za inspekciju i modifikaciju lokalnih varijabli, posebno menjajući poruku "Try Again" u "Hacked". - Modifikovani 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 debagovane aplikacije može manipulisati, ističući potencijal za složenije eksploate poput dobijanja shell pristupa na uređaju u kontekstu aplikacije.
Reference
- 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
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.