Exploiting a debuggeable application

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.

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

Last updated