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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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
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:
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.
env
.png)
Frida Informacije
frida
.png)
Otpremanje/Preuzimanje
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
Uvoz frida skripta
import <local path frida-script>
SSLPinning
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
Detekcija root-a
android root disable #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.
Exec naredba
android shell_exec whoami
Snimci ekrana
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
android hooking list activities
.png)
android hooking list services
android hooking list receivers
Frida će pokrenuti grešku ako nijedna nije pronađena
Dohvatanje trenutne aktivnosti
android hooking get current_activity
.png)
Pretraga klasa
Počnimo da tražimo klase u našoj aplikaciji.
android hooking search classes asvid.github.io.fridaapp
.png)
Pretraživanje metoda klase
Sada izvucimo metode unutar klase MainActivity:
android hooking search methods asvid.github.io.fridaapp MainActivity
.png)
Lista deklarisanih metoda klase sa njihovim parametrima
Hajde da utvrdimo koji parametri su potrebni metodama klase:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
.png)
Lista klasa
Takođe možete nabrojati sve klase koje su učitane u trenutnoj aplikaciji:
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):
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
.png)
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.
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.
.png)
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:
.png)
Sada, ako upišete bilo šta u polje za PIN videćete da je sve validno:
.png)
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>
.png)
Keystore/Intents
Možete da eksperimentišete sa keystore i intents koristeći:
android keystore list
android intents launch_activity
android intent launch_service
Memorija
Dump
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
Lista
memory list modules
.png)
Na dnu liste možete videti frida:
.png)
Hajde da proverimo šta frida eksportuje:
.png)
Pretraga/Upis
Takođe možete pretraživati i upisivati u memoriju pomoću objection:
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
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks