Objection Tutorial
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Bug bounty tip: prijavite se za Intigriti, premium bug bounty platformu koju su kreirali hakeri, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas, i počnite da zarađujete nagrade do $100,000!
Introduction
objection - Runtime Mobile Exploration
Objection je alat za istraživanje mobilnih aplikacija u realnom vremenu, pokretan Frida. Izgrađen je s ciljem da pomogne u proceni mobilnih aplikacija i njihovog bezbednosnog stanja bez potrebe za jailbreak-ovanim ili root-ovanim mobilnim uređajem.
Napomena: Ovo nije neka vrsta jailbreak / root zaobilaženja. Korišćenjem objection
, i dalje ste ograničeni svim ograničenjima koja nameće odgovarajući sandbox s kojim se suočavate.
Resume
Cilj objection je omogućiti korisniku da pozove glavne akcije koje nudi Frida. U suprotnom, korisnik će morati da kreira jedan skript za svaku aplikaciju koju želi da testira.
Tutorial
Za ovaj tutorijal ću koristiti APK koji možete preuzeti ovde:
Ili iz njegovog originalnog repozitorijuma(preuzmite app-release.apk)
Installation
Connection
Napravite redovnu ADB konekciju i pokrenite frida server na uređaju (i proverite da li frida radi i na klijentu i na serveru).
Ako koristite rootovani uređaj, potrebno je odabrati aplikaciju koju želite da testirate unutar --gadget opcije. u ovom slučaju:
Osnovne Akcije
Nisu sve moguće komande objekcija navedene u ovom tutorijalu, samo one koje sam smatrao korisnijim.
Okruženje
Neke zanimljive informacije (kao što su lozinke ili putanje) mogu se naći unutar okruženja.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-a15396d7921ec411dd889b31f1a518fda22f042c%252Fimage%2520%28220%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=e1e0daf2&sv=1)
Frida Informacije
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-9181a7d109dccb8412635a30668d8014b6631a5a%252Fimage%2520%281093%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=db293264&sv=1)
Učitavanje/Preuzimanje
Uvezi frida skript
SSLPinning
Detekcija root-a
Exec Command
Screenshots
Staticka analiza postala dinamička
U pravoj aplikaciji trebali bismo znati sve informacije otkrivene u ovom delu pre nego što koristimo objection zahvaljujući statickoj analizi. U svakom slučaju, na ovaj način možda možete videti nešto novo jer ćete ovde imati samo potpunu listu klasa, metoda i eksportovanih objekata.
Ovo je takođe korisno ako nekako niste u mogućnosti da dobijete neki čitljiv izvorni kod aplikacije.
Lista aktivnosti, prijemnika i servisa
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-7e07102b4e6f87e96c3cf4594a136d3590691ab7%252Fimage%2520%281016%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=ff08b8a8&sv=1)
Frida će pokrenuti grešku ako nijedna nije pronađena
Dobijanje trenutne aktivnosti
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-74a3163d5e09a99eb2f038694ec0dbfdcac1a99b%252Fimage%2520%28813%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=12403e6&sv=1)
Pretraži klase
Hajde da počnemo da tražimo klase unutar naše aplikacije.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-1ee9326a975e60d9b89c0e3d5fe185992cbd3fcb%252Fimage%2520%28507%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=79241279&sv=1)
Metode pretrage klase
Sada hajde da izdvojimo metode unutar klase MainActivity:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-1978dd558bcc997a2b44343ac7af9829143d0dcd%252Fimage%2520%28929%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=4e0ba6bb&sv=1)
Lista deklarisanih metoda klase sa njihovim parametrima
Hajde da otkrijemo koji parametri su potrebni metodama klase:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-006ca9f28c8918e23f7d6a94dcbe93bc208cbad8%252Fimage%2520%28299%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=f05a62dd&sv=1)
Lista klasa
Takođe možete nabrojati sve klase koje su učitane unutar trenutne aplikacije:
Ovo je veoma korisno ako želite da hook-ujete metodu klase i samo znate ime klase. Možete koristiti ovu funkciju da pretražite koji modul poseduje klasu i zatim hook-ujete njenu metodu.
Hook-ovanje je lako
Hook-ovanje (posmatranje) metode
Iz izvornog koda aplikacije znamo da se funkcija sum() iz MainActivity izvršava svake sekunde. Pokušajmo da izvučemo sve moguće informacije svaki put kada se funkcija pozove (argumenti, povratna vrednost i backtrace):
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-b010358dd58a1b962e52a5c5cccc0ad3fe94e250%252Fimage%2520%281086%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=3e23ce63&sv=1)
Hooking (posmatranje) cele klase
Zapravo, smatram da su sve metode klase MainActivity zaista zanimljive, hajde da hook-ujemo sve. Budite oprezni, ovo može srušiti aplikaciju.
Ako igrate sa aplikacijom dok je klasa povezana, videćete kada se svaka funkcija poziva, njene argumente i vraćenu vrednost.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-7db5cbb7b07bcb7fa428cbd450b13cd47f022997%252Fimage%2520%28861%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=1010631d&sv=1)
Promena boolean vraćene vrednosti funkcije
Iz izvornog koda možete videti da funkcija checkPin prima String kao argument i vraća boolean. Hajde da funkcija uvek vraća true:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-877c67db112f6e5b507630bf5f8ec5fc1620eb66%252Fimage%2520%28883%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=fb7479ba&sv=1)
Sada, ako napišete bilo šta u tekstualno polje za PIN kod, videćete da je bilo šta važeće:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-3e9c614b9566726b780aa8b994ffe0c333adf618%252Fimage%2520%28228%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=bfd660af&sv=1)
Instance klasa
Pretražite i odštampajte žive instance specifične Java klase, navedene punim imenom klase. Rezultat je pokušaj dobijanja string vrednosti za otkrivenu primedbu koja bi obično sadržala vrednosti svojstava za objekat.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-bc3c40e93d4448fb6cd7847a09def112744fe463%252Fimage%2520%281095%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=a19d5b33&sv=1)
Keystore/Intents
Možete se igrati sa keystore-om i intencijama koristeći:
Memorija
Ispis
Lista
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-2515a86824aeb76433556a4e4d4b9fcd51ba353a%252Fimage%2520%28286%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=8d6cde79&sv=1)
Na dnu liste možete videti frida:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-ac353e4c43f8b5470e4ab7e2a302cbb0381340c4%252Fimage%2520%281097%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=44d0bd55&sv=1)
Hajde da proverimo šta frida izvozi:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3850298721-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fs712eRnz5qRNRafWqq3N%252Fuploads%252Fgit-blob-2f8a8d54cec70561d458fa19b847e4c563761f1b%252Fimage%2520%28298%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=6c3878a4&sv=1)
Pretraži/Piši
Takođe možete pretraživati i pisati unutar memorije sa objection:
SQLite
Možete koristiti komandu sqlite
za interakciju sa sqlite bazama podataka.
Exit
Šta mi nedostaje u Objection
Metode za hooking ponekad sruše aplikaciju (to je takođe zbog Frida).
Ne možete koristiti instance klasa za pozivanje funkcija instance. I ne možete kreirati nove instance klasa i koristiti ih za pozivanje funkcija.
Ne postoji prečica (poput one za sslpinnin) za hooking svih uobičajenih kripto metoda koje koristi aplikacija da biste videli šifrovani tekst, običan tekst, ključeve, IV-ove i korišćene algoritme.
Bug bounty saveta: prijavite se za Intigriti, premium bug bounty platformu koju su kreirali hakeri, za hakere! Pridružite nam se na https://go.intigriti.com/hacktricks danas, i počnite da zarađujete nagrade do $100,000!
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated