hacktricks/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md

11 KiB

Objection Tutorijal

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Savet za bug bounty: Prijavite se za Intigriti, premium platformu za bug bounty kreiranu od hakera, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas, i počnite da zarađujete nagrade do $100,000!

{% embed url="https://go.intigriti.com/hacktricks" %}

Uvod

objection - Runtime Mobile Exploration

Objection je alat za istraživanje mobilnih aplikacija u realnom vremenu, pokretan od strane Frida. Napravljen je sa ciljem da pomogne u proceni mobilnih aplikacija i njihovog bezbednosnog položaja bez potrebe za jailbroken ili rooted mobilnim uređajem.

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

Rezime

Cilj objection-a je omogućiti korisniku da pozove glavne akcije koje nudi Frida. Inače, korisnik će morati da napravi jedan skript za svaku aplikaciju koju želi da testira.

Tutorijal

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

{% file src="../../../.gitbook/assets/app-release.zip" %}

Ili sa njegovog originalnog repozitorijuma (preuzmite app-release.apk)

Instalacija

pip3 install objection

Povezivanje

Napravite običnu ADB konekciju 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 izabrati aplikaciju koju želite testirati unutar opcije --gadget. U ovom slučaju:

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

Osnovne radnje

Neće biti navedene sve moguće komande objekcije u ovom tutorijalu, već samo one koje sam smatrao korisnijim.

Okruženje

Neke zanimljive informacije (poput lozinki ili putanja) mogu se pronaći unutar okruženja.

env

Frida Informacije

frida

Postavi/Preuzmi

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

Uvoz frida skripte

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.

Izvrši komandu

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

Statistička analiza pretvorena u dinamičku

U stvarnoj aplikaciji trebalo bi da znamo sve informacije otkrivene u ovom delu pre korišćenja prigovora zahvaljujući statističkoj analizi. U svakom slučaju, na ovaj način možda možete videti nešto novo jer ćete ovde imati potpuni spisak klasa, metoda i izvezenih objekata.

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

Spisak 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

Pretraga Klasa

Počnimo sa traženjem klasa unutar naše aplikacije

android hooking search classes asvid.github.io.fridaapp

Pretraga metoda klase

Sada ćemo izdvojiti metode unutar klase MainActivity:

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

Lista deklarisanih metoda klase sa njihovim parametrima

Otkrijmo koje parametre metodi klase zahtevaju:

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

Lista klasa

Takođe možete da prikažete 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 povežete metodu klase, a znate samo ime klase. Možete koristiti ovu funkciju da pronađete koji modul poseduje klasu i zatim povežete njenu metodu.

Povezivanje je lako

Povezivanje (praćenje) metode

Iz izvornog koda aplikacije znamo da se funkcija sum() iz klase MainActivity izvršava svake sekunde. Pokušajmo da izbacimo sve moguće informacije svaki put kada se funkcija pozove (argumente, vrednost povratka i stek poziva):

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

Hakovanje (pratnja) cele klase

Zapravo, smatram da su svi metodi klase MainActivity zaista interesantni, hajde da ih hukujemo sve. Budite oprezni, ovo može uzrokovati pad aplikacije.

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 vrednost povratka.

Menjanje boolean vrednosti povratka funkcije

Iz izvornog koda možete videti da funkcija checkPin dobija String kao argument i vraća boolean. Hajde da funkciju uvek vraća true:

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

Instance klase

Pretražite i štampajte aktivne instance određene Java klase, navedene potpuno kvalifikovanim imenom klase. Rezultat je pokušaj dobijanja string vrednosti za otkriveni prigovor koji bi tipično sadržavao vrednosti svojstava objekta.

android heap print_instances <class>

Keystore/Intents

Možete se igrati sa keystore-om i intentima koristeći:

android keystore list
android intents launch_activity
android intent launch_service

Memorija

Izbacivanje

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:

Pogledajmo šta Frida izvozi:

Pretraga/Pisanje

Takođe možete pretraživati i pisati unutar memorije pomoću Objection-a:

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 da biste interagovali sa SQLite bazama podataka.

Exit

exit

Šta mi nedostaje u Objection-u

  • Metode hakovanja ponekad ruše aplikaciju (ovo je takođe zbog Fridda).
  • Ne možete koristiti instance klasa da biste pozvali funkcije instance. I ne možete kreirati nove instance klasa i koristiti ih da biste pozvali funkcije.
  • Ne postoji prečica (poput one za sslpinnin) da hakujete sve uobičajene kripto metode koje koristi aplikacija kako biste videli šifrovani tekst, običan tekst, ključeve, IV-e i algoritme koji se koriste.

Savet za bug bounty: Prijavite se za Intigriti, premium platformu za bug bounty kreiranu od hakera, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas, i počnite da zarađujete nagrade do $100,000!

{% embed url="https://go.intigriti.com/hacktricks" %}

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: