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
```
![](<../../../images/image (220).png>)
#### Frida Inligting
```bash
frida
```
![](<../../../images/image (1093).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
```
![](<../../../images/image (1016).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
```
![](<../../../images/image (813).png>)
#### Soek Klasse
Kom ons begin soek na klasse binne ons aansoek
```bash
android hooking search classes asvid.github.io.fridaapp
```
![](<../../../images/image (507).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
```
![](<../../../images/image (929).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
```
![](<../../../images/image (299).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
```
![](<../../../images/image (1086).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.
![](<../../../images/image (861).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:
![](<../../../images/image (883).png>)
Nou, as jy enigiets in die tekskas vir die PIN-kode skryf, sal jy sien dat enigiets geldig is:
![](<../../../images/image (228).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>
```
![](<../../../images/image (1095).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
```
![](<../../../images/image (286).png>)
Aan die onderkant van die lys kan jy frida sien:
![](<../../../images/image (1097).png>)
Kom ons kyk wat frida uitvoer:
![](<../../../images/image (298).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}}