5.7 KiB
Iskorišćavanje aplikacije koja je moguća za debugovanje
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Bypass-ovanje provere root-a i debugovanja
Ova sekcija posta je sažetak posta https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
Koraci za omogućavanje debugovanja aplikacije i zaobilaženje provera
Omogućavanje debugovanja aplikacije
Sadržaj zasnovan na https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
- Dekompajliranje APK-a:
- Koristite APK-GUI alat za dekompajliranje APK-a.
- U fajlu android-manifest unesite
android:debuggable=true
da biste omogućili režim debugovanja. - Rekompajlirajte, potpišite i zipalign-ujte izmenjenu aplikaciju.
- Instaliranje izmenjene aplikacije:
- Koristite komandu:
adb install <ime_aplikacije>
.
- Dobijanje imena paketa:
- Izvršite
adb shell pm list packages –3
da biste dobili listu aplikacija trećih strana i pronašli ime paketa.
- Postavljanje aplikacije da čeka povezivanje sa debugger-om:
- Komanda:
adb shell am setup-debug-app –w <ime_paketa>
. - Napomena: Ovu komandu treba pokrenuti svaki put pre pokretanja aplikacije kako bi se osiguralo da čeka debugger.
- Za trajnost, koristite
adb shell am setup-debug-app –w -–persistent <ime_paketa>
. - Da biste uklonili sve zastavice, koristite
adb shell am clear-debug-app <ime_paketa>
.
- Priprema za debugovanje u Android Studiju:
- U Android Studiju idite na File -> Open Profile or APK.
- Otvorite rekompajlirani APK.
- Postavljanje tačaka prekida u ključnim Java fajlovima:
- Postavite tačke prekida u
MainActivity.java
(posebno u metodionCreate
),b.java
iContextWrapper.java
.
Zaobilaženje provera
Aplikacija će na određenim mestima proveravati da li je moguće debugovanje i takođe će proveriti postojanje binarnih fajlova koji ukazuju na root-ovani uređaj. Debugger se može koristiti za izmenu informacija o aplikaciji, uklanjanje bita za debugovanje i izmenu imena traženih binarnih fajlova kako bi se zaobišle ove provere.
Za proveru debugovanja:
- Izmena postavki zastavica:
- U odeljku sa promenljivama konzole debugger-a, idite na:
this mLoadedAPK -> mApplicationInfo -> flags = 814267974
. - Napomena: Binarna reprezentacija
flags = 814267974
je11000011100111011110
, što ukazuje da je "Flag_debuggable" aktivan.
Ovi koraci zajedno osiguravaju da se aplikacija može debugovati i da se određene sigurnosne provere mogu zaobići korišćenjem debugger-a, što omogućava dublju analizu ili izmenu ponašanja aplikacije.
Korak 2 uključuje promenu vrednosti zastavice u 814267972, što je binarno predstavljeno kao 110000101101000000100010100.
Iskorišćavanje ranjivosti
Prikaz je dat korišćenjem ranjive aplikacije koja sadrži dugme i tekstualno polje. Početno, aplikacija prikazuje "Crack Me". Cilj je promeniti poruku sa "Try Again" na "Hacked" tokom izvršavanja, bez izmene izvornog koda.
Provera ranjivosti
- Aplikacija je dekompajlirana korišćenjem
apktool
-a kako bi se pristupilo fajluAndroidManifest.xml
. - Prisustvo
android_debuggable="true"
u AndroidManifest.xml ukazuje da je aplikacija moguća za debugovanje i podložna iskorišćavanju. - Vredno je napomenuti da se
apktool
koristi samo za proveru statusa debugovanja bez izmene bilo kog koda.
Priprema postavke
- Proces je uključivao pokretanje emulatora, instaliranje ranjive aplikacije i korišćenje
adb jdwp
za identifikaciju portova Dalvik VM-a koji slušaju. - JDWP (Java Debug Wire Protocol) omogućava debugovanje aplikacije koja se izvršava u VM-u putem izlaganja jedinstvenog porta.
- Bilo je potrebno prosleđivanje porta za daljinsko debugovanje, a zatim povezivanje JDB sa ciljnom aplikacijom.
Ubacivanje koda tokom izvršavanja
- Iskorišćavanje je izvršeno postavljanjem tačaka prekida i kontrolisanjem toka aplikacije.
- Korišćene su komande poput
classes
imethods <ime_klase>
da bi se otkrila struktura aplikacije. - Tačka prekida je postavljena na metodu
onClick
, a njeno izvršavanje je kontrolisano. - Korišćene su komande
locals
,next
iset
da bi se pregledali i izmenili lokalne promenljive, posebno promena poruke "Try Again" u "Hacked". - Izmenjeni kod je izvršen korišćenjem komande
run
, uspešno menjajući izlaz aplikacije u real