hacktricks/mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md

261 lines
11 KiB
Markdown
Raw Normal View History

2024-02-10 13:11:20 +00:00
# Objection Tutorijal
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Drugi načini podrške HackTricks-u:
2024-01-03 10:43:38 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2024-02-10 13:11:20 +00:00
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>
2022-10-27 23:22:18 +00:00
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
**Savet za bug bounty**: **Prijavite se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
2022-10-27 23:22:18 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
2024-02-10 13:11:20 +00:00
## **Uvod**
**objection - Runtime Mobile Exploration**
[**Objection**](https://github.com/sensepost/objection) je alat za istraživanje mobilnih aplikacija u realnom vremenu, pokretan od strane [Frida](https://www.frida.re). Napravljen je sa ciljem da pomogne u proceni mobilnih aplikacija i njihovog bezbednosnog položaja bez potrebe za jailbroken ili rooted mobilnim uređajem.
**Napomena:** Ovo nije neka vrsta jailbreak / root zaobilaska. Korišćenjem `objection`, i dalje ste ograničeni svim restrikcijama koje nameće odgovarajući sandbox sa kojim se suočavate.
2024-02-10 13:11:20 +00:00
### Rezime
**Cilj** **objection**-a je omogućiti korisniku da pozove **glavne akcije koje nudi Frida**. **Inače**, korisnik će morati da napravi **jedan skript za svaku aplikaciju** koju želi da testira.
2024-02-10 13:11:20 +00:00
## Tutorijal
2024-02-10 13:11:20 +00:00
Za ovaj tutorijal ću koristiti APK koji možete preuzeti ovde:
{% file src="../../../.gitbook/assets/app-release.zip" %}
Ili sa njegovog [originalnog repozitorijuma ](https://github.com/asvid/FridaApp)(preuzmite app-release.apk)
2024-02-10 13:11:20 +00:00
### Instalacija
```bash
pip3 install objection
```
2024-02-10 13:11:20 +00:00
### Povezivanje
Napravite **običnu 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 izabrati aplikaciju koju želite testirati unutar opcije _**--gadget**_. U ovom slučaju:
```bash
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
```
2024-02-10 13:11:20 +00:00
### Osnovne radnje
Neće biti navedene sve moguće komande objekcije u ovom tutorijalu, već samo one koje sam smatrao korisnijim.
2024-02-10 13:11:20 +00:00
#### Okruženje
Neke zanimljive informacije (poput lozinki ili putanja) mogu se pronaći unutar okruženja.
```bash
env
```
#### Frida Informacije
```bash
frida
```
![](<../../../.gitbook/assets/image (1090).png>)
#### Postavi/Preuzmi
2021-04-12 10:24:17 +00:00
```bash
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
```
2024-02-10 13:11:20 +00:00
#### Uvoz frida skripte
2021-04-12 10:24:17 +00:00
```bash
import <local path frida-script>
```
2022-09-01 21:06:19 +00:00
#### SSLPinning
2021-04-12 10:24:17 +00:00
```bash
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
```
#### Detekcija root-a
2021-04-12 10:24:17 +00:00
```bash
android root disable #Attempts to disable root detection on Android devices.
2021-01-13 09:35:52 +00:00
android root simulate #Attempts to simulate a rooted Android environment.
```
#### Izvrši komandu
2024-02-10 13:11:20 +00:00
```bash
android shell_exec whoami
```
#### Snimci ekrana
2021-04-12 10:24:17 +00:00
```bash
android ui screenshot /tmp/screenshot
2021-04-12 10:24:17 +00:00
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
```
### Statistička analiza pretvorena u dinamičku
U stvarnoj aplikaciji trebalo bi da znamo sve informacije otkrivene u ovom delu pre korišćenja prigovora zahvaljujući **statističkoj analizi**. U svakom slučaju, na ovaj način možda možete videti **nešto novo** jer ćete ovde imati potpuni spisak klasa, metoda i izvezenih objekata.
Ovo je takođe korisno ako iz nekog razloga **niste u mogućnosti da dobijete neki čitljiv izvorni kod** aplikacije.
#### Spisak aktivnosti, prijemnika i servisa
2024-02-08 03:08:28 +00:00
```bash
android hooking list activities
```
![](<../../../.gitbook/assets/image (1013).png>)
2024-02-08 03:08:28 +00:00
```bash
android hooking list services
android hooking list receivers
```
Frida će pokrenuti grešku ako ništa nije pronađeno
2024-02-10 13:11:20 +00:00
#### Dobijanje trenutne aktivnosti
2024-02-08 03:08:28 +00:00
```bash
android hooking get current_activity
```
![](<../../../.gitbook/assets/image (810).png>)
#### Pretraga Klasa
Počnimo sa traženjem klasa unutar naše aplikacije
2024-02-08 03:08:28 +00:00
```bash
android hooking search classes asvid.github.io.fridaapp
```
![](<../../../.gitbook/assets/image (504).png>)
#### Pretraga metoda klase
Sada ćemo izdvojiti metode unutar klase _MainActivity:_
2024-02-08 03:08:28 +00:00
```bash
android hooking search methods asvid.github.io.fridaapp MainActivity
```
![](<../../../.gitbook/assets/image (926).png>)
2024-02-10 13:11:20 +00:00
#### Lista deklarisanih metoda klase sa njihovim parametrima
Otkrijmo koje parametre metodi klase zahtevaju:
2024-02-08 03:08:28 +00:00
```bash
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
```
![](<../../../.gitbook/assets/image (296).png>)
2024-02-10 13:11:20 +00:00
#### Lista klasa
Takođe možete da prikažete sve klase koje su učitane unutar trenutne aplikacije:
2024-02-08 03:08:28 +00:00
```bash
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
```
Ovo je veoma korisno ako želite da **povežete metodu klase, a znate samo ime klase**. Možete koristiti ovu funkciju da **pronađete koji modul poseduje klasu** i zatim povežete njenu metodu.
### Povezivanje je lako
2024-02-10 13:11:20 +00:00
#### Povezivanje (praćenje) metode
Iz [izvornog koda](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt) aplikacije znamo da se **funkcija** _**sum()**_ **iz klase** _**MainActivity**_ **izvršava svake sekunde**. Pokušajmo **da izbacimo sve moguće informacije** svaki put kada se funkcija pozove (argumente, vrednost povratka i stek poziva):
2024-02-08 03:08:28 +00:00
```bash
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
```
![](<../../../.gitbook/assets/image (1083).png>)
#### Hakovanje (pratnja) cele klase
Zapravo, smatram da su svi metodi klase MainActivity zaista interesantni, hajde da ih **hukujemo sve**. Budite oprezni, ovo može **uzrokovati pad** aplikacije.
2024-02-08 03:08:28 +00:00
```bash
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
```
Ako igrate sa aplikacijom dok je klasa povezana, videćete kada se **svaka funkcija poziva**, njene **argumente** i **vrednost povratka**.
![](<../../../.gitbook/assets/image (858).png>)
#### Menjanje boolean vrednosti povratka funkcije
Iz izvornog koda možete videti da funkcija _checkPin_ dobija _String_ kao argument i vraća _boolean_. Hajde da funkciju **uvek vraća true**:
![](<../../../.gitbook/assets/image (880).png>)
2024-02-10 13:11:20 +00:00
Sada, ako unesete bilo šta u polje za unos PIN koda, videćete da je sve validno:
![](<../../../.gitbook/assets/image (225).png>)
2024-02-10 13:11:20 +00:00
### Instance klase
Pretražite i štampajte **aktivne instance određene Java klase**, navedene potpuno kvalifikovanim imenom klase. Rezultat je pokušaj dobijanja string vrednosti za otkriveni prigovor koji bi tipično **sadržavao vrednosti svojstava objekta**.
```
android heap print_instances <class>
```
![](<../../../.gitbook/assets/image (1092).png>)
2022-09-01 21:06:19 +00:00
### Keystore/Intents
2024-02-10 13:11:20 +00:00
Možete se igrati sa keystore-om i intentima koristeći:
2024-02-08 03:08:28 +00:00
```bash
android keystore list
android intents launch_activity
android intent launch_service
```
### Memorija
#### Izbacivanje
2021-02-20 13:33:50 +00:00
```bash
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
```
2024-02-10 13:11:20 +00:00
#### Lista
2024-02-08 03:08:28 +00:00
```bash
memory list modules
```
![](<../../../.gitbook/assets/image (283).png>)
Na dnu liste možete videti Fridu:
![](<../../../.gitbook/assets/image (1094).png>)
Pogledajmo šta Frida izvozi:
![](<../../../.gitbook/assets/image (295).png>)
2024-02-10 13:11:20 +00:00
#### Pretraga/Pisanje
Takođe možete pretraživati i pisati unutar memorije pomoću Objection-a:
2024-02-08 03:08:28 +00:00
```bash
memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)
```
2022-09-01 21:06:19 +00:00
### SQLite
Možete koristiti komandu `sqlite` da biste interagovali sa SQLite bazama podataka.
### Exit
2024-02-08 03:08:28 +00:00
```bash
exit
```
2024-02-10 13:11:20 +00:00
## Šta mi nedostaje u Objection-u
* Metode hakovanja ponekad ruše aplikaciju (ovo je takođe zbog Fridda).
* Ne možete koristiti instance klasa da biste pozvali funkcije instance. I ne možete kreirati nove instance klasa i koristiti ih da biste pozvali funkcije.
* Ne postoji prečica (poput one za sslpinnin) da hakujete sve uobičajene kripto metode koje koristi aplikacija kako biste videli šifrovani tekst, običan tekst, ključeve, IV-e i algoritme koji se koriste.
2022-04-28 16:01:33 +00:00
2022-10-27 23:22:18 +00:00
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
**Savet za bug bounty**: **Prijavite se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
2022-10-27 23:22:18 +00:00
{% embed url="https://go.intigriti.com/hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-03 10:43:38 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>