Objection Tutorial
Reading time: 7 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
- 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 istraživanje mobilnih aplikacija u realnom vremenu, pokretan od strane Frida. Napravljen je s ciljem da pomogne u proceni mobilnih aplikacija i njihove sigurnosne pozicije bez potrebe za jailbreak-ovanim ili root-ovanim mobilnim uređajem.
Napomena: Ovo nije neka vrsta bypass-a za jailbreak / root. Korišćenjem objection
, i dalje ste ograničeni svim restrikcijama koje nameće odgovarajući sandbox s kojim se suočavate.
Rezime
Cilj objection je omogućiti korisniku da pozove glavne akcije koje nudi Frida. Inače, korisnik će morati da kreira jedan skript za svaku aplikaciju koju želi da testira.
Tutorijal
Za ovaj tutorijal ću koristiti APK koji možete preuzeti ovde:
Ili iz njegovog originalnog repozitorijuma(preuzmite app-release.apk)
Instalacija
pip3 install objection
Veza
Napravite redovnu ADB vezu i pokrenite frida server na uređaju (i proverite da li frida radi i na klijentu i na serveru).
Ako koristite rootovani uređaj, potrebno je odabrati aplikaciju koju želite da testirate unutar --gadget opcije. u ovom slučaju:
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
Osnovne Akcije
Nisu svi mogući komandi objekcija navedeni u ovom tutorijalu, samo oni koje sam smatrao korisnijim.
Okruženje
Neke zanimljive informacije (kao što su lozinke ili putanje) mogu se naći unutar okruženja.
env
Frida Informacije
frida
Učitavanje/Preuzimanje
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
Uvezi frida skript
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 Command
android shell_exec whoami
Screenshots
android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
Staticka analiza postala dinamička
U pravoj aplikaciji trebali bismo znati sve informacije otkrivene u ovom delu pre nego što koristimo objection zahvaljujući statickoj analizi. U svakom slučaju, na ovaj način možda možete videti nešto novo jer ćete ovde imati samo potpunu listu klasa, metoda i eksportovanih objekata.
Ovo je takođe korisno ako nekako niste u mogućnosti da dobijete neki čitljiv izvorni kod aplikacije.
Lista aktivnosti, prijemnika i servisa
android hooking list activities
android hooking list services
android hooking list receivers
Frida će pokrenuti grešku ako ništa nije pronađeno
Dobijanje trenutne aktivnosti
android hooking get current_activity
Pretraži klase
Hajde da počnemo da tražimo klase unutar naše aplikacije
android hooking search classes asvid.github.io.fridaapp
Metode pretrage klase
Sada hajde da izdvojimo metode unutar klase MainActivity:
android hooking search methods asvid.github.io.fridaapp MainActivity
Prikazivanje deklarisanih metoda klase sa njihovim parametrima
Hajde da otkrijemo koji parametri su potrebni metodama klase:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
Lista klasa
Takođe možete navesti sve klase koje su učitane unutar trenutne aplikacije:
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 samo znate ime klase. Možete koristiti ovu funkciju da pretražite koji modul poseduje klasu i zatim hook-ujete njenu metodu.
Hookovanje je lako
Hookovanje (posmatranje) metode
Iz izvornog koda aplikacije znamo da se funkcija sum() iz MainActivity izvršava svake sekunde. Pokušajmo da izvučemo sve moguće informacije svaki put kada se funkcija pozove (argumenti, povratna vrednost i backtrace):
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
Hooking (watching) an entire class
Zapravo, smatram da su sve metode klase MainActivity zaista zanimljive, hajde da hook-ujemo sve. Budite oprezni, ovo može srušiti aplikaciju.
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
Ako igrate sa aplikacijom dok je klasa povezana, videćete kada se svaka funkcija poziva, njene argumente i vraćenu vrednost.
Promena boolean vraćene vrednosti funkcije
Iz izvornog koda možete videti da funkcija checkPin prima String kao argument i vraća boolean. Hajde da funkcija uvek vraća true:
Sada, ako napišete bilo šta u tekstualno polje za PIN kod, videćete da je bilo šta validno:
Instance klasa
Pretražite i štampajte žive instance specifične Java klase, navedene punim imenom klase. Rezultat je pokušaj dobijanja string vrednosti za otkrivenu objašnjenje koja bi obično sadržala vrednosti svojstava za objekat.
android heap print_instances <class>
Keystore/Intents
Možete se igrati sa keystore-om i intencijama koristeći:
android keystore list
android intents launch_activity
android intent launch_service
Memorija
Ispis
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
Na dnu liste možete videti fridu:
Hajde da proverimo šta frida izvozi:
Pretraga/Pisanje
Takođe možete pretraživati i pisati unutar memorije sa 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.
Exit
exit
Šta mi nedostaje u Objection
- Metode hookovanja ponekad ruše aplikaciju (to je takođe zbog Frida).
- Ne možete koristiti instance klasa za pozivanje funkcija instance. I ne možete kreirati nove instance klasa i koristiti ih za pozivanje funkcija.
- Ne postoji prečica (poput one za sslpinnin) za hookovanje svih uobičajenih kripto metoda koje koristi aplikacija da biste videli šifrovani tekst, običan tekst, ključeve, IV-ove i korišćene algoritme.
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
- 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.