Objection Tutorial

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Bug bounty tip: prijavite se za Intigriti, premium bug bounty platformu koju su kreirali hakeri, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas, i počnite da zarađujete nagrade do $100,000!

Introduction

objection - Runtime Mobile Exploration

Objection je alat za istraživanje mobilnih aplikacija u realnom vremenu, pokretan Frida. Izgrađen je s ciljem da pomogne u proceni mobilnih aplikacija i njihovog bezbednosnog stanja bez potrebe za jailbreak-ovanim ili root-ovanim mobilnim uređajem.

Napomena: Ovo nije neka vrsta jailbreak / root zaobilaženja. Korišćenjem objection, i dalje ste ograničeni svim ograničenjima koja nameće odgovarajući sandbox s kojim se suočavate.

Resume

Cilj objection je omogućiti korisniku da pozove glavne akcije koje nudi Frida. U suprotnom, korisnik će morati da kreira jedan skript za svaku aplikaciju koju želi da testira.

Tutorial

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

2MB
app-release.zip
archive

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

Installation

pip3 install objection

Connection

Napravite redovnu 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 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 sve moguće komande objekcija navedene u ovom tutorijalu, samo one 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 nijedna nije pronađena

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

Lista 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 nabrojati 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.

Hook-ovanje je lako

Hook-ovanje (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 (posmatranje) cele klase

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 važeće:

Instance klasa

Pretražite i odštampajte žive instance specifične Java klase, navedene punim imenom klase. Rezultat je pokušaj dobijanja string vrednosti za otkrivenu primedbu 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 frida:

Hajde da proverimo šta frida izvozi:

Pretraži/Piši

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 za hooking ponekad sruš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 hooking svih uobičajenih kripto metoda koje koristi aplikacija da biste videli šifrovani tekst, običan tekst, ključeve, IV-ove i korišćene algoritme.

Bug bounty saveta: prijavite se za Intigriti, premium bug bounty platformu koju su kreirali hakeri, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas, i počnite da zarađujete nagrade do $100,000!

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

Last updated