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

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

  1. 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.
  1. Instalirajte modifikovanu aplikaciju:
  • Koristite komandu: adb install <application_name>.
  1. Preuzmite naziv paketa:
  • Izvršite adb shell pm list packages –3 da biste naveli aplikacije trećih strana i pronašli naziv paketa.
  1. 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>.
  1. Pripremite se za debagovanje u Android Studiju:
  • Navigirajte u Android Studiju do 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.

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:

  1. Modifikujte postavke oznaka:
  • U sekciji varijabli konzole debagera, navigirajte do: 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 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 pristupilo AndroidManifest.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 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".
  • 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

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