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

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

bash
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:

bash
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.

bash
env

Frida Informacije

bash
frida

Učitavanje/Preuzimanje

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

Uvezi frida skript

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 Command

bash
android shell_exec whoami

Screenshots

bash
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

bash
android hooking list activities

bash
android hooking list services
android hooking list receivers

Frida će pokrenuti grešku ako ništa nije pronađeno

Dobijanje trenutne aktivnosti

bash
android hooking get current_activity

Pretraži klase

Hajde da počnemo da tražimo klase unutar naše aplikacije

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

Metode pretrage klase

Sada hajde da izdvojimo metode unutar klase MainActivity:

bash
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:

bash
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:

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 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):

bash
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.

bash
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:

bash
android keystore list
android intents launch_activity
android intent launch_service

Memorija

Ispis

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 fridu:

Hajde da proverimo šta frida izvozi:

Pretraga/Pisanje

Takođe možete pretraživati i pisati unutar memorije sa 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.

Exit

bash
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