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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
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
.png)
Frida Inligting
frida
.png)
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
.png)
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
.png)
Soek Klasse
Kom ons begin soek na klasse binne ons toepassing
android hooking search classes asvid.github.io.fridaapp
.png)
Soek metodes van ’n klas
Nou haal ons die metodes binne die klas MainActivity: uit.
android hooking search methods asvid.github.io.fridaapp MainActivity
.png)
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
.png)
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
.png)
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.
.png)
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:
.png)
Nou, as jy enigiets in die tekskassie vir die PIN-kode tik, sal jy sien dat enigiets geldig is:
.png)
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>
.png)
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
.png)
Onderaan die lys kan jy frida sien:
.png)
Kom ons kyk wat frida uitvoer:
.png)
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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

