Objection Tutorial

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Inleiding

objection - Runtime mobiele verkenning

Objection is ’n runtime mobiele verkenning toolkit, aangedryf deur Frida. Dit is gebou met die doel om te help om mobiele toepassings en hul sekuriteitsposisie te beoordeel sonder die behoefte aan ’n jailbroken of rooted mobiele toestel.

Let wel: Dit is nie ’n vorm van jailbreak / root bypass nie. Deur objection te gebruik, bly jy steeds beperk deur al die beperkinge wat deur die toepaslike sandbox opgelê word.

Opsomming

Die doel van objection is om die gebruiker toe te laat om die hoofaksies wat Frida bied aan te roep. Anders sal die gebruiker ’n enkele script vir elke toepassing wat hy wil toets moet skep.

Handleiding

Vir hierdie handleiding gaan ek die APK gebruik wat jy hier kan aflaai:

Of vanaf sy oorspronklike repository (laai app-release.apk af)

Installering

pip3 install objection

Verbinding

Maak ’n regular ADB conection en start die frida server op die toestel (en kontroleer dat frida werk in beide die client en die server).

As jy ’n rooted device gebruik, is dit nodig om die toepassing wat jy wil toets te kies binne die –gadget opsie. In hierdie geval:

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

Basic Actions

Nie alle moontlike commands van objections sal in hierdie tutorial gelys word nie — slegs diegene wat ek nuttiger gevind het.

Environment

Sommige interessante inligting (soos passwords of paths) kan binne die environment gevind word.

env

Frida Inligting

frida

Oplaai/Aflaai

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

Importeer frida script

import <local path frida-script>

SSLPinning

android sslpinning disable #Attempts to disable SSL Pinning on Android devices.

Root opsporing

android root disable  #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.

Voer opdrag uit

android shell_exec whoami

Skermskote

android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false  #This may enable you to take screenshots using the hardware keys

Static analysis made Dynamic

In ’n werklike toepassing behoort ons al die inligting wat in hierdie deel ontdek is te ken voordat ons objection gebruik danksy static analysis. Hoe dit ook al sy, op hierdie manier kan jy dalk iets nuuts sien, aangesien jy hier slegs ’n volledige lys van classes, methods and exported objects sal hê.

Dit is ook nuttig as jy op een of ander manier unable to get some readable source code van die app is.

Lys activities, receivers en services

android hooking list activities

android hooking list services
android hooking list receivers

Frida sal ’n fout gooi as geen een gevind word

Kry huidige aktiwiteit

android hooking get current_activity

Soek Klasse

Kom ons begin soek na klasse binne ons toepassing

android hooking search classes asvid.github.io.fridaapp

Soek metodes van ’n klas

Nou haal ons die metodes binne die klas MainActivity: uit.

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

Lys verklaarde metodes van ’n klas en hul parameters

Kom ons bepaal watter parameters die metodes van die klas benodig:

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

Lys klasse

Jy kan ook al die klasse wat in die huidige toepassing gelaai is, lys:

android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.

Dit is baie nuttig as jy die method van ’n class wil hook en jy net die naam van die class ken. Jy kan hierdie function gebruik om te soek watter module die class besit en dan die method te hook.

Hooking is maklik

Hooking (watching) ’n method

Uit die source code van die toepassing weet ons dat die function sum() from MainActivity elke sekonde uitgevoer word. Kom ons probeer elke keer wanneer die function aangeroep word, alle moontlike inligting te dump (arguments, return value en backtrace):

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

Hooking (monitering) ’n hele klas

Ek vind eintlik al die metodes van die klas MainActivity regtig interessant — kom ons hook them all. Wees versigtig, dit kan ’n toepassing crash.

android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return

As jy met die toepassing speel terwyl die klas gehook is, sal jy sien wanneer elke funksie aangeroep word, sy argumente en die terugkeerwaarde.

Verandering van boolean terugkeerwaarde van ’n funksie

Uit die bronkode kan jy sien dat die funksie checkPin ’n String as argument kry en ’n boolean teruggee. Kom ons maak die funksie altyd true teruggee:

Nou, as jy enigiets in die tekskassie vir die PIN-kode tik, sal jy sien dat enigiets geldig is:

Klasinstansies

Soek en druk lewende instansies van ’n spesifieke Java-klas, gespesifiseer deur ’n volledig gekwalifiseerde klassenaam. Uit is die resultaat van ’n poging om ’n stringwaarde te kry vir ’n ontdekte objection wat tipies eienskapswaardes vir die objek bevat.

android heap print_instances <class>

Keystore/Intents

Jy kan met die keystore en intents speel deur die volgende te gebruik:

android keystore list
android intents launch_activity
android intent launch_service

Geheue

Dump

memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part

Lys

memory list modules

Onderaan die lys kan jy frida sien:

Kom ons kyk wat frida uitvoer:

Soek/Skryf

Jy kan ook binne die geheue soek en skryf met objection:

memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)

SQLite

Jy kan die opdrag sqlite gebruik om met sqlite-databasisse te kommunikeer.

Verlaat

exit

Wat ek in Objection mis

  • Die hooking methods laat soms die toepassing vasloop (dit is ook te wyte aan Frida).
  • Jy kan nie die instances van die classes gebruik om die functions van daardie instance aan te roep nie. En jy kan ook nie nuwe instances van classes skep en dit gebruik om functions aan te roep nie.
  • Daar is nie ’n shortcut (soos die een vir sslpinnin) om al die algemene crypto-metodes wat deur die toepassing gebruik word te hook en sodoende cyphered text, plain text, keys, IVs en algorithms te sien nie.

Verwysings

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks