mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
229 lines
7.7 KiB
Markdown
229 lines
7.7 KiB
Markdown
# Objection Tutorial
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|
|
|
|
## **Inleiding**
|
|
|
|
**objection - Runtime Mobile Exploration**
|
|
|
|
[**Objection**](https://github.com/sensepost/objection) is 'n runtime mobiele verkenning toolkit, aangedryf deur [Frida](https://www.frida.re). Dit is gebou met die doel om te help om mobiele toepassings en hul sekuriteitsposisie te evalueer sonder die behoefte aan 'n jailbreak of ge-root mobiele toestel.
|
|
|
|
**Let wel:** Dit is nie 'n vorm van jailbreak / root omseiling nie. Deur `objection` te gebruik, is jy steeds beperk deur al die beperkings wat deur die toepaslike sandbox opgelê word.
|
|
|
|
### Samevatting
|
|
|
|
Die **doel** van **objection** is om die gebruiker toe te laat om die **hoofd aksies wat Frida bied** aan te roep. **Andersins**, sal die gebruiker 'n **enkele skrip vir elke toepassing** wat hy wil toets, moet skep.
|
|
|
|
## Tutorial
|
|
|
|
Vir hierdie tutorial gaan ek die APK gebruik wat jy hier kan aflaai:
|
|
|
|
{{#file}}
|
|
app-release.zip
|
|
{{#endfile}}
|
|
|
|
Of van sy [oorspronklike berging](https://github.com/asvid/FridaApp)(aflaai app-release.apk)
|
|
|
|
### Installasie
|
|
```bash
|
|
pip3 install objection
|
|
```
|
|
### Verbinding
|
|
|
|
Maak 'n **gereguleerde ADB-verbinding** en **begin** die **frida** bediener op die toestel (en kyk of frida werk op beide die kliënt en die bediener).
|
|
|
|
As jy 'n **gerootte toestel** gebruik, is dit nodig om die toepassing te kies wat jy binne die _**--gadget**_ opsie wil toets. in hierdie geval:
|
|
```bash
|
|
frida-ps -Uai
|
|
objection --gadget asvid.github.io.fridaapp explore
|
|
```
|
|
### Basiese Aksies
|
|
|
|
Nie alle moontlike opdragte van objections gaan in hierdie tutoriaal gelys word nie, net diegene wat ek meer nuttig gevind het.
|
|
|
|
#### Omgewing
|
|
|
|
Sommige interessante inligting (soos wagwoorde of paaie) kan binne die omgewing gevind word.
|
|
```bash
|
|
env
|
|
```
|
|
.png>)
|
|
|
|
#### Frida Inligting
|
|
```bash
|
|
frida
|
|
```
|
|
.png>)
|
|
|
|
#### Laai op/Laai af
|
|
```bash
|
|
file download <remote path> [<local path>]
|
|
file upload <local path> [<remote path>]
|
|
```
|
|
#### Importeer frida-skrip
|
|
```bash
|
|
import <local path frida-script>
|
|
```
|
|
#### SSLPinning
|
|
```bash
|
|
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
|
|
```
|
|
#### Worteldetektering
|
|
```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
|
|
```
|
|
#### Skermskoots
|
|
```bash
|
|
android ui screenshot /tmp/screenshot
|
|
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
|
|
```
|
|
### Statiese analise gemaak Dinamies
|
|
|
|
In 'n werklike toepassing behoort ons al die inligting wat in hierdie deel ontdek is, te ken voordat ons objection gebruik, danksy **statiese analise**. Hoe dit ook al sy, op hierdie manier kan jy dalk **iets nuuts** sien, aangesien jy hier slegs 'n volledige lys van klasse, metodes en geexporteerde voorwerpe sal hê.
|
|
|
|
Dit is ook nuttig as jy op een of ander manier **nie 'n leesbare bronkode** van die toepassing kan kry nie.
|
|
|
|
#### Lys aktiwiteite, ontvangers en dienste
|
|
```bash
|
|
android hooking list activities
|
|
```
|
|
.png>)
|
|
```bash
|
|
android hooking list services
|
|
android hooking list receivers
|
|
```
|
|
Frida sal 'n fout bekendstel as daar geen gevind word nie
|
|
|
|
#### Verkry huidige aktiwiteit
|
|
```bash
|
|
android hooking get current_activity
|
|
```
|
|
.png>)
|
|
|
|
#### Soek Klasse
|
|
|
|
Kom ons begin soek na klasse binne ons aansoek
|
|
```bash
|
|
android hooking search classes asvid.github.io.fridaapp
|
|
```
|
|
.png>)
|
|
|
|
#### Soek Metodes van 'n klas
|
|
|
|
Nou laat ons die metodes binne die klas _MainActivity:_ onttrek.
|
|
```bash
|
|
android hooking search methods asvid.github.io.fridaapp MainActivity
|
|
```
|
|
.png>)
|
|
|
|
#### Lys verklaarde Metodes van 'n klas met hul parameters
|
|
|
|
Kom ons uitvind watter parameters die metodes van die klas benodig:
|
|
```bash
|
|
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
|
|
```
|
|
.png>)
|
|
|
|
#### Lys klasse
|
|
|
|
Jy kan ook al die klasse lys wat binne die huidige toepassing gelaai is:
|
|
```bash
|
|
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 **metode van 'n klas wil hook en jy weet net die naam van die klas**. Jy kan hierdie funksie gebruik om te **soek watter module die klas besit** en dan sy metode te hook.
|
|
|
|
### Hooking is maklik
|
|
|
|
#### Hooking (kyk) na 'n metode
|
|
|
|
Van die [bronkode](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt) van die toepassing weet ons dat die **funksie** _**sum()**_ **van** _**MainActivity**_ elke **sekonde** uitgevoer word. Kom ons probeer om **alle moontlike inligting** te dump elke keer as die funksie aangeroep word (argumente, terugkeerwaarde en terugsporing):
|
|
```bash
|
|
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
|
|
```
|
|
.png>)
|
|
|
|
#### Hooking (kyk) 'n hele klas
|
|
|
|
Eintlik vind ek al die metodes van die klas MainActivity regtig interessant, laat ons **hulle almal hook**. Wees versigtig, dit kan 'n toepassing **crash**.
|
|
```bash
|
|
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 **terug** waarde.
|
|
|
|
.png>)
|
|
|
|
#### Verander boolean terugwaarde van 'n funksie
|
|
|
|
Uit die bronkode kan jy sien dat die funksie _checkPin_ 'n _String_ as argument ontvang en 'n _boolean_ teruggee. Kom ons maak die funksie **altyd waar** terug:
|
|
|
|
.png>)
|
|
|
|
Nou, as jy enigiets in die tekskas vir die PIN-kode skryf, sal jy sien dat enigiets geldig is:
|
|
|
|
.png>)
|
|
|
|
### Klas instansies
|
|
|
|
Soek en druk **lewende instansies van 'n spesifieke Java-klas**, gespesifiseer deur 'n volledig gekwalifiseerde klasnaam. Uit is die resultaat van 'n poging om 'n stringwaarde vir 'n ontdekte beswaar te verkry wat tipies **eienskapswaardes vir die objek** sou bevat.
|
|
```
|
|
android heap print_instances <class>
|
|
```
|
|
.png>)
|
|
|
|
### Keystore/Intents
|
|
|
|
Jy kan met die keystore en intents speel deur:
|
|
```bash
|
|
android keystore list
|
|
android intents launch_activity
|
|
android intent launch_service
|
|
```
|
|
### Geheue
|
|
|
|
#### Dump
|
|
```bash
|
|
memory dump all <local destination> #Dump all memory
|
|
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
|
|
```
|
|
#### Lys
|
|
```bash
|
|
memory list modules
|
|
```
|
|
.png>)
|
|
|
|
Aan die onderkant van die lys kan jy frida sien:
|
|
|
|
.png>)
|
|
|
|
Kom ons kyk wat frida uitvoer:
|
|
|
|
.png>)
|
|
|
|
#### Soek/Skryf
|
|
|
|
Jy kan ook binne geheue soek en skryf met objection:
|
|
```bash
|
|
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.
|
|
|
|
### Exit
|
|
```bash
|
|
exit
|
|
```
|
|
## Wat ek mis in Objection
|
|
|
|
- Die hooking metodes laat soms die toepassing crash (dit is ook as gevolg van Frida).
|
|
- Jy kan nie die instansies van die klasse gebruik om funksies van die instansie aan te roep nie. En jy kan nie nuwe instansies van klasse skep en hulle gebruik om funksies aan te roep nie.
|
|
- Daar is nie 'n snelkoppeling (soos die een vir sslpinnin) om al die algemene kripto metodes wat deur die toepassing gebruik word te hook nie om gesifde teks, gewone teks, sleutels, IVs en algoritmes wat gebruik word te sien.
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|