# 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 [] file upload [] ``` #### Importeer frida-skrip ```bash import ``` #### 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 ``` ![](<../../../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 #Dump all memory memory dump from_base #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 "" (--string) (--offsets-only) memory write "
" "" (--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}}