hacktricks/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md
2024-02-10 13:11:20 +00:00

5.7 KiB
Raw Blame History

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:

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

  1. 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.
  1. Instaliranje izmenjene aplikacije:
  • Koristite komandu: adb install <ime_aplikacije>.
  1. Dobijanje imena paketa:
  • Izvršite adb shell pm list packages 3 da biste dobili listu aplikacija trećih strana i pronašli ime paketa.
  1. 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>.
  1. Priprema za debugovanje u Android Studiju:
  • U Android Studiju idite na File -> Open Profile or APK.
  • Otvorite rekompajlirani APK.
  1. Postavljanje tačaka prekida u ključnim Java fajlovima:
  • Postavite tačke prekida u MainActivity.java (posebno u metodi onCreate), b.java i ContextWrapper.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:

  1. Izmena postavki zastavica:
  • U odeljku sa promenljivama konzole debugger-a, 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 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 fajlu AndroidManifest.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 i methods <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 i set 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