Objection Tutorijal

Reading time: 8 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) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Uvod

objection - Runtime Mobile Exploration

Objection je alat za runtime istraživanje mobilnih aplikacija, zasnovan na Frida. Napravljen je sa ciljem da pomogne pri proceni mobilnih aplikacija i njihovog bezbednosnog stanja bez potrebe za jailbroken ili rooted mobilnim uređajem.

Napomena: Ovo nije neka vrsta jailbreak / root bypass. Korišćenjem objection, i dalje ste ograničeni svim restrikcijama koje nameće odgovarajući sandbox sa kojim se suočavate.

Rezime

Cilj objection je da omogući korisniku da pozove glavne akcije koje nudi Frida. U suprotnom, korisnik bi morao da kreira pojedinačni skript za svaku aplikaciju koju želi da testira.

Tutorijal

Za ovaj tutorijal koristiću APK koji možete preuzeti ovde:

Ili iz njegovog original repository (download app-release.apk)

Instalacija

bash
pip3 install objection

Povezivanje

Napravite uobičajenu ADB konekciju i pokrenite frida server na uređaju (i proverite da frida radi i na clientu i na serveru).

Ako koristite rooted device, potrebno je izabrati aplikaciju koju želite testirati unutar opcije --gadget. U ovom slučaju:

bash
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore

Osnovne radnje

U ovom tutorijalu neće biti navedene sve moguće komande programa objections, već samo one koje sam smatrao korisnijim.

Okruženje

Neke interesantne informacije (kao što su lozinke ili putanje) mogu se naći u okruženju.

bash
env

Frida Informacije

bash
frida

Otpremanje/Preuzimanje

bash
file download <remote path> [<local path>]
file upload <local path> [<remote path>]

Uvoz frida skripta

bash
import <local path frida-script>

SSLPinning

bash
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.

Detekcija root-a

bash
android root disable  #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.

Exec naredba

bash
android shell_exec whoami

Snimci ekrana

bash
android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false  #This may enable you to take screenshots using the hardware keys

Statička analiza postala dinamična

U stvarnoj aplikaciji trebalo bi da znamo sve informacije otkrivene u ovom delu pre upotrebe objection zahvaljujući statičkoj analizi. Ipak, na ovaj način možda ćete videti nešto novo, jer ćete ovde imati samo kompletan spisak klasa, metoda i exportovanih objekata.

Ovo je takođe korisno ako iz nekog razloga niste u mogućnosti da dobijete čitljiv izvorni kod aplikacije.

Lista aktivnosti, receivera i servisa

bash
android hooking list activities

bash
android hooking list services
android hooking list receivers

Frida će pokrenuti grešku ako nijedna nije pronađena

Dohvatanje trenutne aktivnosti

bash
android hooking get current_activity

Pretraga klasa

Počnimo da tražimo klase u našoj aplikaciji.

bash
android hooking search classes asvid.github.io.fridaapp

Pretraživanje metoda klase

Sada izvucimo metode unutar klase MainActivity:

bash
android hooking search methods asvid.github.io.fridaapp MainActivity

Lista deklarisanih metoda klase sa njihovim parametrima

Hajde da utvrdimo koji parametri su potrebni metodama klase:

bash
android hooking list class_methods asvid.github.io.fridaapp.MainActivity

Lista klasa

Takođe možete nabrojati sve klase koje su učitane u trenutnoj aplikaciji:

bash
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.

Ovo je veoma korisno ako želite da hook-ujete metodu klase i znate samo ime klase. Možete koristiti ovu funkciju da pretražite koji modul poseduje klasu i zatim hook-ujete njenu metodu.

Hooking je jednostavan

Hooking (praćenje) metode

Iz source code aplikacije znamo da se funkcija sum() iz MainActivity izvršava svake sekunde. Pokušajmo da dump-ujemo sve moguće informacije svaki put kada se funkcija pozove (argumenti, vraćena vrednost i backtrace):

bash
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return

Hooking (praćenje) cele klase

Zapravo smatram da su sve metode klase MainActivity zaista zanimljive, hajde da ih sve hook them all. Budite oprezni, ovo može da crash aplikaciju.

bash
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return

Ako se igrate aplikacijom dok je klasa hooked videćete kada se svaka funkcija poziva, njene argumente i vraćenu vrednost.

Promena boolean povratne vrednosti funkcije

Iz izvornog koda možete videti da funkcija checkPin prima String kao argument i vraća boolean. Hajde da učinimo da funkcija uvek vraća true:

Sada, ako upišete bilo šta u polje za PIN videćete da je sve validno:

Instance klase

Pretražite i ispišite žive instance određene Java klase, navedene punim kvalifikovanim imenom klase. Out je rezultat pokušaja dobijanja string vrednosti za otkrivenu objection koja bi tipično sadržala vrednosti svojstava objekta.

android heap print_instances <class>

Keystore/Intents

Možete da eksperimentišete sa keystore i intents koristeći:

bash
android keystore list
android intents launch_activity
android intent launch_service

Memorija

Dump

bash
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part

Lista

bash
memory list modules

Na dnu liste možete videti frida:

Hajde da proverimo šta frida eksportuje:

Pretraga/Upis

Takođe možete pretraživati i upisivati u memoriju pomoću objection:

bash
memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)

SQLite

Možete koristiti komandu sqlite za interakciju sa sqlite bazama podataka.

Izlaz

bash
exit

Šta mi nedostaje u Objection

  • Metode hookovanja ponekad ruše aplikaciju (ovo je takođe zbog Frida).
  • Ne možete koristiti instance klasa za pozivanje metoda instance. Takođe ne možete kreirati nove instance klasa i koristiti ih za pozivanje metoda.
  • Ne postoji prečica (kao ona za sslpinnin) za hookovanje svih uobičajenih crypto metoda koje aplikacija koristi da biste videli šifrovani tekst, plain text, keys, IVs i algoritme koji se koriste.

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) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks