Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's

This commit is contained in:
Translator 2025-07-15 11:02:50 +00:00
parent 7c92481f9e
commit a5ebd624b7
3 changed files with 193 additions and 66 deletions

View File

@ -337,6 +337,7 @@
- [Manual DeObfuscation](mobile-pentesting/android-app-pentesting/manual-deobfuscation.md)
- [React Native Application](mobile-pentesting/android-app-pentesting/react-native-application.md)
- [Reversing Native Libraries](mobile-pentesting/android-app-pentesting/reversing-native-libraries.md)
- [Shizuku Privileged Api](mobile-pentesting/android-app-pentesting/shizuku-privileged-api.md)
- [Smali - Decompiling, Modifying, Compiling](mobile-pentesting/android-app-pentesting/smali-changes.md)
- [Spoofing your location in Play Store](mobile-pentesting/android-app-pentesting/spoofing-your-location-in-play-store.md)
- [Tapjacking](mobile-pentesting/android-app-pentesting/tapjacking.md)

View File

@ -19,12 +19,13 @@ Pogledajte sledeću listu [**ADB Komandi**](adb-commands.md) da biste naučili k
## Smali
Ponekad je zanimljivo **modifikovati kod aplikacije** da biste pristupili **skrivenim informacijama** (možda dobro obfuskovanim lozinkama ili oznakama). Tada bi moglo biti zanimljivo dekompilirati apk, modifikovati kod i ponovo ga kompajlirati.\
[**U ovom tutorijalu** možete **naučiti kako dekompilirati APK, modifikovati Smali kod i ponovo kompajlirati APK** sa novom funkcionalnošću](smali-changes.md). Ovo može biti veoma korisno kao **alternativa za nekoliko testova tokom dinamičke analize** koji će biti predstavljeni. Tada, **uvek imajte na umu ovu mogućnost**.
Ponekad je zanimljivo **modifikovati kod aplikacije** da biste pristupili **skrivenim informacijama** (možda dobro obfuskovanim lozinkama ili oznakama). Tada bi moglo biti zanimljivo dekompilirati apk, modifikovati kod i rekompilirati ga.\
[**U ovom tutorijalu** možete **naučiti kako dekompilirati APK, modifikovati Smali kod i rekompilirati APK** sa novom funkcionalnošću](smali-changes.md). Ovo može biti veoma korisno kao **alternativa za nekoliko testova tokom dinamičke analize** koji će biti predstavljeni. Tada, **uvek imajte na umu ovu mogućnost**.
## Drugi zanimljivi trikovi
- [Lažiranje vaše lokacije u Play Store-u](spoofing-your-location-in-play-store.md)
- [Shizuku Privileged API (ADB-bazirani pristup bez root privilegija)](shizuku-privileged-api.md)
- **Preuzimanje APK-ova**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd)
- Ekstrakcija APK-a sa uređaja:
```bash
@ -64,7 +65,7 @@ Obratite posebnu pažnju na **firebase URL-ove** i proverite da li je loše konf
**Ranjivosti** identifikovane iz **Manifest.xml** uključuju:
- **Debuggable aplikacije**: Aplikacije postavljene kao debuggable (`debuggable="true"`) u _Manifest.xml_ datoteci predstavljaju rizik jer omogućavaju veze koje mogu dovesti do eksploatacije. Za dalju pomoć o tome kako iskoristiti debuggable aplikacije, pogledajte tutorijal o pronalaženju i eksploataciji debuggable aplikacija na uređaju.
- **Debuggable aplikacije**: Aplikacije postavljene kao debuggable (`debuggable="true"`) u _Manifest.xml_ datoteci predstavljaju rizik jer omogućavaju veze koje mogu dovesti do eksploatacije. Za dalje razumevanje kako iskoristiti debuggable aplikacije, pogledajte tutorijal o pronalaženju i eksploataciji debuggable aplikacija na uređaju.
- **Podešavanja rezervne kopije**: Atribut `android:allowBackup="false"` treba eksplicitno postaviti za aplikacije koje se bave osetljivim informacijama kako bi se sprečile neovlašćene rezervne kopije podataka putem adb, posebno kada je usb debugging omogućen.
- **Mrežna sigurnost**: Prilagođene konfiguracije mrežne sigurnosti (`android:networkSecurityConfig="@xml/network_security_config"`) u _res/xml/_ mogu specificirati sigurnosne detalje kao što su pinovi sertifikata i podešavanja HTTP saobraćaja. Primer je omogućavanje HTTP saobraćaja za određene domene.
- **Izvezene aktivnosti i servisi**: Identifikacija izvezenih aktivnosti i servisa u manifestu može istaknuti komponente koje bi mogle biti zloupotrebljene. Dalja analiza tokom dinamičkog testiranja može otkriti kako iskoristiti ove komponente.
@ -87,7 +88,7 @@ tapjacking.md
### Task Hijacking
**Aktivnost** sa **`launchMode`** postavljenim na **`singleTask` bez definisanog `taskAffinity`** je ranjiva na task hijacking. To znači da se **aplikacija** može instalirati i ako se pokrene pre prave aplikacije, mogla bi **oteti zadatak prave aplikacije** (tako da korisnik misli da koristi pravu aplikaciju dok zapravo koristi **malicioznu aplikaciju**).
**Aktivnost** sa **`launchMode`** postavljenim na **`singleTask` bez definisanog `taskAffinity`** je ranjiva na hijacking zadatka. To znači da se **aplikacija** može instalirati i ako se pokrene pre prave aplikacije, mogla bi **ukrasti zadatak prave aplikacije** (tako da korisnik misli da koristi **malicioznu aplikaciju misleći da koristi pravu**).
Više informacija u:
@ -113,16 +114,16 @@ Kada se radi o datotekama na **eksternom skladištu**, kao što su SD kartice, t
1. **Pristupačnost**:
- Datoteke na eksternom skladištu su **globalno čitljive i zapisive**. To znači da bilo koja aplikacija ili korisnik može pristupiti tim datotekama.
2. **Sigurnosne brige**:
- S obzirom na lakoću pristupa, savetuje se **da se ne čuvaju osetljive informacije** na eksternom skladištu.
- S obzirom na lakoću pristupa, savetuje se **da se ne skladište osetljive informacije** na eksternom skladištu.
- Eksterno skladište može biti uklonjeno ili pristupljeno od strane bilo koje aplikacije, što ga čini manje sigurnim.
3. **Rukovanje podacima iz eksternog skladišta**:
- Uvek **izvršite validaciju unosa** na podacima preuzetim iz eksternog skladišta. Ovo je ključno jer su podaci iz nepouzdanog izvora.
- Čuvanje izvršnih ili klasa datoteka na eksternom skladištu za dinamičko učitavanje se snažno ne preporučuje.
- Skladištenje izvršnih ili klasa datoteka na eksternom skladištu za dinamičko učitavanje se snažno ne preporučuje.
- Ako vaša aplikacija mora preuzeti izvršne datoteke iz eksternog skladišta, osigurajte da su te datoteke **potpisane i kriptografski verifikovane** pre nego što se dinamički učitaju. Ovaj korak je ključan za održavanje sigurnosne integriteta vaše aplikacije.
Eksterno skladište može biti **pristupano** u `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
> [!NAPOMENA]
> [!TIP]
> Počevši od Android 4.4 (**API 17**), SD kartica ima strukturu direktorijuma koja **ograničava pristup aplikaciji na direktorijum koji je specifično za tu aplikaciju**. Ovo sprečava malicioznu aplikaciju da dobije pristup za čitanje ili pisanje datoteka druge aplikacije.
**Osetljivi podaci pohranjeni u čistom tekstu**
@ -132,7 +133,7 @@ Eksterno skladište može biti **pristupano** u `/storage/emulated/0`, `/sdcard`
### Slomljeni TLS
**Prihvatanje svih sertifikata**
**Prihvati sve sertifikate**
Iz nekog razloga, ponekad programeri prihvataju sve sertifikate čak i ako, na primer, ime hosta ne odgovara sa linijama koda poput sledeće:
```java
@ -149,15 +150,15 @@ Neki programeri čuvaju osetljive podatke u lokalnoj memoriji i šifruju ih klju
**Korišćenje Nesigurnih i/ili Zastarelih Algoritama**
Programeri ne bi trebali koristiti **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **hash-ovi** koriste za čuvanje lozinki, na primer, treba koristiti hash-ove otporne na **brute-force** sa solju.
Programeri ne bi trebali koristiti **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **hash-ovi** koriste za čuvanje lozinki, na primer, treba koristiti hash-ove otporne na brute-force sa solju.
### Ostale provere
- Preporučuje se da se **obfuskira APK** kako bi se otežao posao obrnute inženjeringa napadačima.
- Ako je aplikacija osetljiva (kao što su bankarske aplikacije), treba da izvrši **svoje provere da vidi da li je mobilni uređaj root-ovan** i da deluje u skladu s tim.
- Ako je aplikacija osetljiva (kao što su bankarske aplikacije), treba da proveri da li se koristi **emulator**.
- Ako je aplikacija osetljiva (kao što su bankarske aplikacije), treba da **proveri svoju integritet pre izvršavanja** kako bi proverila da li je modifikovana.
- Koristite [**APKiD**](https://github.com/rednaga/APKiD) da proverite koji je kompajler/paker/obfuskator korišćen za izradu APK-a.
- Preporučuje se da se **obfuskira APK** kako bi se otežao rad obrnute inženjeringa napadačima.
- Ako je aplikacija osetljiva (kao što su bankarske aplikacije), trebala bi da izvrši **svoje provere da vidi da li je mobilni uređaj root-ovan** i da deluje u skladu s tim.
- Ako je aplikacija osetljiva (kao što su bankarske aplikacije), trebala bi da proveri da li se koristi **emulator**.
- Ako je aplikacija osetljiva (kao što su bankarske aplikacije), trebala bi da **proveri svoju integritet pre izvršavanja** da bi proverila da li je modifikovana.
- Koristite [**APKiD**](https://github.com/rednaga/APKiD) da proverite koji je kompajler/paker/obfuskator korišćen za izgradnju APK-a.
### React Native Aplikacija
@ -187,7 +188,7 @@ Sa ovim znanjem, **mariana-trench će pregledati kod i pronaći moguće ranjivos
### Otkriće Tajni
Aplikacija može sadržati tajne (API ključeve, lozinke, skrivene URL-ove, subdomene...) unutar nje koje biste mogli otkriti. Možete koristiti alat kao što je [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks).
Aplikacija može sadržati tajne (API ključeve, lozinke, skrivene URL-ove, poddomene...) unutar nje koje biste mogli otkriti. Možete koristiti alat kao što je [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks).
### Obilaženje Biometrijske Autentifikacije
@ -218,7 +219,7 @@ content-protocol.md
### Online Dinamička analiza
Možete kreirati **besplatan nalog** na: [https://appetize.io/](https://appetize.io). Ova platforma vam omogućava da **otpremite** i **izvršite** APK-ove, tako da je korisna za gledanje kako se apk ponaša.
Možete napraviti **besplatan nalog** na: [https://appetize.io/](https://appetize.io). Ova platforma vam omogućava da **otpremite** i **izvršite** APK-ove, tako da je korisna za gledanje kako se apk ponaša.
Možete čak i **videti logove vaše aplikacije** na vebu i povezati se putem **adb**.
@ -237,17 +238,17 @@ Zahvaljujući ADB konekciji možete koristiti **Drozer** i **Frida** unutar emul
avd-android-virtual-device.md
{{#endref}}
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Besplatna verzija:** Personal Edition, morate kreirati nalog. _Preporučuje se da **preuzmete** verziju **SA** _**VirtualBox** da biste izbegli potencijalne greške._)
- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Besplatna verzija:** Personal Edition, morate napraviti nalog. _Preporučuje se da **preuzmete** verziju **SA**_ _**VirtualBox** da biste izbegli potencijalne greške._)
- [**Nox**](https://es.bignox.com) (Besplatno, ali ne podržava Frida ili Drozer).
> [!NOTE]
> Kada kreirate novi emulator na bilo kojoj platformi, zapamtite da što je veći ekran, emulator će sporije raditi. Dakle, odaberite male ekrane ako je moguće.
> [!TIP]
> Kada kreirate novi emulator na bilo kojoj platformi, zapamtite da što je veći ekran, emulator će sporije raditi. Dakle, izaberite male ekrane ako je moguće.
Da biste **instalirali google usluge** (kao što je AppStore) u Genymotion-u, potrebno je da kliknete na crveno označeno dugme na sledećoj slici:
![](<../../images/image (277).png>)
Takođe, primetite da u **konfiguraciji Android VM u Genymotion-u** možete odabrati **Bridge Network mode** (to će biti korisno ako ćete se povezivati na Android VM iz različitog VM-a sa alatima).
Takođe, primetite da u **konfiguraciji Android VM u Genymotion-u** možete izabrati **Bridge Network mode** (ovo će biti korisno ako ćete se povezivati na Android VM iz različitog VM-a sa alatima).
#### Koristite fizički uređaj
@ -266,7 +267,7 @@ Morate aktivirati **debugging** opcije i bilo bi dobro ako možete **root-ovati*
**Logovanje**
Programeri bi trebali biti oprezni da ne izlažu **informacije za debagovanje** javno, jer to može dovesti do curenja osetljivih podataka. Alati [**pidcat**](https://github.com/JakeWharton/pidcat) i `adb logcat` se preporučuju za praćenje logova aplikacije kako bi se identifikovale i zaštitile osetljive informacije. **Pidcat** je omiljen zbog svoje jednostavnosti korišćenja i čitljivosti.
Programeri bi trebali biti oprezni da ne izlažu **informacije za debagovanje** javno, jer to može dovesti do curenja osetljivih podataka. Preporučuju se alati [**pidcat**](https://github.com/JakeWharton/pidcat) i `adb logcat` za praćenje logova aplikacije kako bi se identifikovale i zaštitile osetljive informacije. **Pidcat** je omiljen zbog svoje jednostavnosti korišćenja i čitljivosti.
> [!WARNING]
> Imajte na umu da od **novijih verzija Android-a 4.0**, **aplikacije mogu pristupiti samo svojim logovima**. Dakle, aplikacije ne mogu pristupiti logovima drugih aplikacija.\
@ -284,7 +285,7 @@ Kao pentester, **pokušajte da pogledate ove logove**.
**Podaci o Analitici Poslati Trećim Stranama**
Aplikacije često integrišu usluge poput Google Adsense, što može nenamerno **procuriti osetljive podatke** zbog nepravilne implementacije od strane programera. Da biste identifikovali potencijalna curenja podataka, preporučuje se da **presretnete saobraćaj aplikacije** i proverite da li se šalju bilo kakve osetljive informacije trećim stranama.
Aplikacije često integrišu usluge poput Google Adsense, što može nenamerno **procuriti osetljive podatke** zbog nepravilne implementacije od strane programera. Da biste identifikovali potencijalna curenja podataka, preporučuje se da **presretnete saobraćaj aplikacije** i proverite da li se šalju osetljive informacije trećim stranama.
### SQLite DBs
@ -307,7 +308,7 @@ Takođe zapamtite da kod aktivnosti počinje u **`onCreate`** metodi.
**Obilaženje autorizacije**
Kada je Aktivnost eksportovana, možete pozvati njen ekran iz spoljne aplikacije. Stoga, ako je aktivnost sa **osetljivim informacijama** **eksportovana**, mogli biste **obići** **mehanizme autentifikacije** **da biste joj pristupili.**
Kada je Aktivnost eksportovana, možete pozvati njen ekran iz spoljne aplikacije. Stoga, ako je aktivnost sa **osetljivim informacijama** **eksportovana**, mogli biste **obići** mehanizme **autentifikacije** **da biste joj pristupili.**
[**Naučite kako da eksploatišete eksportovane aktivnosti sa Drozer-om.**](drozer-tutorial/index.html#activities)
@ -318,43 +319,43 @@ Takođe možete pokrenuti eksportovanu aktivnost iz adb:
```bash
adb shell am start -n com.example.demo/com.example.test.MainActivity
```
**NAPOMENA**: MobSF će detektovati kao malicioznu upotrebu _**singleTask/singleInstance**_ kao `android:launchMode` u aktivnosti, ali zbog [ovoga](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), očigledno je da je to opasno samo na starim verzijama (API verzije < 21).
**NAPOMENA**: MobSF će detektovati kao zlonamerno korišćenje _**singleTask/singleInstance**_ kao `android:launchMode` u aktivnosti, ali zbog [ovoga](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), očigledno je da je to opasno samo na starim verzijama (API verzije < 21).
> [!NAPOMENA]
> [!TIP]
> Imajte na umu da zaobilaženje autorizacije nije uvek ranjivost, to zavisi od načina na koji zaobilaženje funkcioniše i koje informacije su izložene.
**Curjenje osetljivih informacija**
**Aktivnosti takođe mogu vraćati rezultate**. Ako uspete da pronađete izvezenu i nezaštićenu aktivnost koja poziva metodu **`setResult`** i **vraća osetljive informacije**, dolazi do curenja osetljivih informacija.
**Aktivnosti takođe mogu vraćati rezultate**. Ako uspete da pronađete izvezenu i nezaštićenu aktivnost koja poziva **`setResult`** metodu i **vraća osetljive informacije**, dolazi do curenja osetljivih informacija.
#### Tapjacking
Ako tapjacking nije sprečen, mogli biste zloupotrebiti izvezenu aktivnost da naterate **korisnika da izvrši neočekivane radnje**. Za više informacija o [**šta je Tapjacking pratite link**](#tapjacking).
### Iskorišćavanje Content Providers - Pristup i manipulacija osetljivim informacijama
### Eksploatacija Content Providers - Pristup i manipulacija osetljivim informacijama
[**Pročitajte ovo ako želite da osvežite šta je Content Provider.**](android-applications-basics.md#content-provider)\
Content providers se osnovno koriste za **deljenje podataka**. Ako aplikacija ima dostupne content providers, možda ćete moći da **izvučete osetljive** podatke iz njih. Takođe je zanimljivo testirati moguće **SQL injekcije** i **Path Traversals** jer bi mogli biti ranjivi.
[**Saznajte kako da iskoristite Content Providers sa Drozer-om.**](drozer-tutorial/index.html#content-providers)
[**Saznajte kako da eksploatišete Content Providers sa Drozer-om.**](drozer-tutorial/index.html#content-providers)
### **Iskorišćavanje Servisa**
### **Eksploatacija Servisa**
[**Pročitajte ovo ako želite da osvežite šta je Servis.**](android-applications-basics.md#services)\
Zapamtite da akcije Servisa počinju u metodi `onStartCommand`.
Servis je osnovno nešto što **može primati podatke**, **obrađivati** ih i **vraćati** (ili ne) odgovor. Dakle, ako aplikacija izveze neke servise, trebali biste **proveriti** **kod** da biste razumeli šta radi i **testirati** ga **dinamički** za izvlačenje poverljivih informacija, zaobilaženje mera autentifikacije...\
[**Saznajte kako da iskoristite Servise sa Drozer-om.**](drozer-tutorial/index.html#services)
[**Saznajte kako da eksploatišete Servise sa Drozer-om.**](drozer-tutorial/index.html#services)
### **Iskorišćavanje Broadcast Receivers**
### **Eksploatacija Broadcast Receivers**
[**Pročitajte ovo ako želite da osvežite šta je Broadcast Receiver.**](android-applications-basics.md#broadcast-receivers)\
Zapamtite da akcije Broadcast Receiver-a počinju u metodi `onReceive`.
Broadcast receiver će čekati na određenu vrstu poruke. U zavisnosti od toga kako receiver obrađuje poruku, mogao bi biti ranjiv.\
[**Saznajte kako da iskoristite Broadcast Receivers sa Drozer-om.**](#exploiting-broadcast-receivers)
[**Saznajte kako da eksploatišete Broadcast Receivers sa Drozer-om.**](#exploiting-broadcast-receivers)
### **Iskorišćavanje Schemes / Deep links**
### **Eksploatacija Schemes / Deep links**
Možete ručno tražiti deep links, koristeći alate kao što je MobSF ili skripte poput [ove](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\
Možete **otvoriti** deklarisani **scheme** koristeći **adb** ili **pregledač**:
@ -380,14 +381,14 @@ Svaki put kada pronađete deep link, proverite da **ne prima osetljive podatke (
**Parametri u putanji**
Trebalo bi da **proverite i da li neki deep link koristi parametar unutar putanje** URL-a kao što je: `https://api.example.com/v1/users/{username}`, u tom slučaju možete primorati prelazak putanje pristupajući nečemu poput: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
Trebalo bi da **proverite i da li neki deep link koristi parametar unutar putanje** URL-a kao što je: `https://api.example.com/v1/users/{username}`, u tom slučaju možete primorati putanju da pređe na nešto poput: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
Imajte na umu da ako pronađete ispravne krajnje tačke unutar aplikacije, možda ćete moći da izazovete **Open Redirect** (ako je deo putanje korišćen kao naziv domena), **preuzimanje naloga** (ako možete da modifikujete korisničke podatke bez CSRF tokena i ranjiva krajnja tačka koristi ispravnu metodu) i bilo koju drugu ranjivost. Više [informacija o ovome ovde](http://dphoeniixx.com/2020/12/13-2/).
**Još primera**
Jedan [zanimljiv izveštaj o bug bounty](https://hackerone.com/reports/855618) o linkovima (_/.well-known/assetlinks.json_).
### Neuspešne inspekcije i verifikacije transportnog sloja
### Neuspeh inspekcije i verifikacije transportnog sloja
- **Sertifikati se ne proveravaju uvek pravilno** od strane Android aplikacija. Uobičajeno je da ove aplikacije zanemaruju upozorenja i prihvataju samopotpisane sertifikate ili, u nekim slučajevima, vraćaju se na korišćenje HTTP veza.
- **Pregovori tokom SSL/TLS rukovanja su ponekad slabi**, koristeći nesigurne kriptografske suite. Ova ranjivost čini vezu podložnom napadima "čovek u sredini" (MITM), omogućavajući napadačima da dešifruju podatke.
@ -403,18 +404,20 @@ SSL Pinning je mera sigurnosti gde aplikacija proverava sertifikat servera u odn
#### Inspekcija saobraćaja
Da biste inspektovali HTTP saobraćaj, potrebno je **instalirati sertifikat alata za proxy** (npr. Burp). Bez instalacije ovog sertifikata, šifrovani saobraćaj možda neće biti vidljiv kroz proxy. Za vodič o instalaciji prilagođenog CA sertifikata, [**kliknite ovde**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Da biste inspekciju HTTP saobraćaja, potrebno je **instalirati sertifikat alata za proxy** (npr. Burp). Bez instalacije ovog sertifikata, šifrovani saobraćaj možda neće biti vidljiv kroz proxy. Za vodič o instalaciji prilagođenog CA sertifikata, [**kliknite ovde**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Aplikacije koje ciljaju **API Level 24 i više** zahtevaju izmene u Network Security Config kako bi prihvatile CA sertifikat proksija. Ovaj korak je ključan za inspekciju šifrovanog saobraćaja. Za uputstva o izmeni Network Security Config, [**pogledajte ovaj tutorijal**](make-apk-accept-ca-certificate.md).
Aplikacije koje ciljaju **API nivo 24 i više** zahtevaju izmene u Network Security Config kako bi prihvatile CA sertifikat proksija. Ovaj korak je ključan za inspekciju šifrovanog saobraćaja. Za uputstva o izmeni Network Security Config, [**pogledajte ovaj tutorijal**](make-apk-accept-ca-certificate.md).
#### Obilaženje SSL Pinninga
Ako se koristi **Flutter**, potrebno je da pratite uputstva na [**ovoj stranici**](flutter.md). To je zato što, samo dodavanje sertifikata u skladište neće raditi jer Flutter ima svoju listu važećih CA.
Kada je SSL Pinning implementiran, obilaženje postaje neophodno za inspekciju HTTPS saobraćaja. Različite metode su dostupne za ovu svrhu:
#### Zaobilaženje SSL Pinninga
- Automatski **modifikujte** **apk** da **obidjete** SSLPinning sa [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Najveća prednost ove opcije je to što vam neće biti potrebna root privilegija da obidjete SSL Pinning, ali ćete morati da obrišete aplikaciju i ponovo instalirate novu, a to ne mora uvek da funkcioniše.
- Možete koristiti **Frida** (o kojoj se govori u nastavku) da obidjete ovu zaštitu. Ovde imate vodič za korišćenje Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
- Takođe možete pokušati da **automatski obidjete SSL Pinning** koristeći [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
- Takođe možete pokušati da **automatski obidjete SSL Pinning** koristeći **MobSF dinamičku analizu** (objašnjeno u nastavku)
Kada je SSL Pinning implementiran, zaobilaženje postaje neophodno za inspekciju HTTPS saobraćaja. Različite metode su dostupne za ovu svrhu:
- Automatski **modifikujte** **apk** da **zaobiđe** SSLPinning sa [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Najveća prednost ove opcije je što vam neće biti potrebna root privilegija da zaobiđete SSL Pinning, ali ćete morati da obrišete aplikaciju i ponovo instalirate novu, a to ne mora uvek da funkcioniše.
- Možete koristiti **Frida** (o kojoj se govori u nastavku) da zaobiđete ovu zaštitu. Ovde imate vodič za korišćenje Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
- Takođe možete pokušati da **automatski zaobiđete SSL Pinning** koristeći [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
- Takođe možete pokušati da **automatski zaobiđete SSL Pinning** koristeći **MobSF dinamičku analizu** (objašnjeno u nastavku)
- Ako i dalje mislite da postoji neki saobraćaj koji ne hvata, možete pokušati da **prosledite saobraćaj do burp-a koristeći iptables**. Pročitajte ovaj blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### Traženje uobičajenih web ranjivosti
@ -431,7 +434,7 @@ Ako želite da testirate Android aplikacije, morate znati kako koristiti Frida.
- Neki "GUI" za akcije sa Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
- Ojection je odličan za automatizaciju korišćenja Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
- Možete pronaći neke sjajne Frida skripte ovde: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
- Pokušajte da obidjete mehanizme protiv debagovanja / anti-frida učitavanjem Frida kao što je naznačeno u [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (alat [linjector](https://github.com/erfur/linjector-rs))
- Pokušajte da zaobiđete anti-debugging / anti-frida mehanizme učitavanjem Frida kao što je naznačeno u [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (alat [linjector](https://github.com/erfur/linjector-rs))
### **Dump Memorije - Fridump**
@ -446,7 +449,7 @@ python3 fridump3.py -u <PID>
frida-ps -Uai
python3 fridump3.py -u "<Name>"
```
Ovo će isprazniti memoriju u ./dump folder, a tamo možete pretraživati sa nečim poput:
Ovo će isprazniti memoriju u ./dump folder, i tamo možete koristiti grep sa nečim poput:
```bash
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"
```
@ -468,7 +471,7 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
```
### **Pozadine slika**
Kada stavite aplikaciju u pozadinu, Android čuva **snimak aplikacije** tako da kada se vrati u fokus, počinje da učitava sliku pre aplikacije, pa izgleda kao da je aplikacija učitana brže.
Kada stavite aplikaciju u pozadinu, Android čuva **snimak aplikacije** tako da kada se vrati u fokus, počinje da učitava sliku pre aplikacije, tako da izgleda kao da je aplikacija učitana brže.
Međutim, ako ovaj snimak sadrži **osetljive informacije**, neko ko ima pristup snimku može **ukrasti te informacije** (napomena: potrebno je imati root pristup da biste mu pristupili).
@ -520,7 +523,7 @@ Verovatno znate o ovim vrstama ranjivosti sa weba. Morate biti posebno oprezni s
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
```
Napomena da MobSF može analizirati **Android**(apk)**, IOS**(ipa) **i Windows**(apx) aplikacije (_Windows aplikacije moraju biti analizirane sa MobSF instaliranim na Windows hostu_).\
Obratite pažnju da MobSF može analizirati **Android**(apk)**, IOS**(ipa) **i Windows**(apx) aplikacije (_Windows aplikacije moraju biti analizirane sa MobSF instaliranim na Windows hostu_).\
Takođe, ako kreirate **ZIP** datoteku sa izvorni kodom **Android** ili **IOS** aplikacije (idite u korenski folder aplikacije, izaberite sve i kreirajte ZIP datoteku), moći će da je analizira.
MobSF takođe omogućava **diff/Compare** analizu i integraciju sa **VirusTotal** (biće potrebno da postavite svoj API ključ u _MobSF/settings.py_ i omogućite ga: `VT_ENABLED = TRUE` `VT_API_KEY = <Vaš API ključ>` `VT_UPLOAD = TRUE`). Takođe možete postaviti `VT_UPLOAD` na `False`, tada će **hash** biti **upload** umesto datoteke.
@ -530,7 +533,7 @@ MobSF takođe omogućava **diff/Compare** analizu i integraciju sa **VirusTotal*
**MobSF** može biti veoma koristan za **dinamičku analizu** u **Android**, ali u tom slučaju ćete morati da instalirate MobSF i **genymotion** na vašem hostu (VM ili Docker neće raditi). _Napomena: Prvo treba da **pokrenete VM u genymotion** a **zatim MobSF.**_\
**MobSF dinamički analizer** može:
- **Dump podataka aplikacije** (URL-ovi, logovi, clipboard, screenshot-ovi koje ste napravili, screenshot-ovi napravljeni od strane "**Exported Activity Tester**", emailovi, SQLite baze podataka, XML datoteke i druge kreirane datoteke). Sve ovo se radi automatski osim za screenshot-ove, morate pritisnuti kada želite screenshot ili morate pritisnuti "**Exported Activity Tester**" da biste dobili screenshot-ove svih eksportovanih aktivnosti.
- **Dump podataka aplikacije** (URL-ovi, logovi, clipboard, screenshot-ovi koje ste napravili, screenshot-ovi koje je napravio "**Exported Activity Tester**", emailovi, SQLite baze podataka, XML datoteke i druge kreirane datoteke). Sve ovo se radi automatski osim za screenshot-ove, morate pritisnuti kada želite screenshot ili morate pritisnuti "**Exported Activity Tester**" da biste dobili screenshot-ove svih izvezenih aktivnosti.
- Zabeležiti **HTTPS saobraćaj**
- Koristiti **Frida** za dobijanje **runtime** **informacija**
@ -538,11 +541,11 @@ Od android **verzija > 5**, automatski će **pokrenuti Frida** i postaviće glob
**Frida**
Po defaultu, takođe će koristiti neke Frida skripte za **obići SSL pinning**, **detekciju root-a** i **detekciju debagera** i za **monitorisanje interesantnih API-a**.\
MobSF takođe može **pozvati eksportovane aktivnosti**, uhvatiti **screenshot-ove** njih i **sačuvati** ih za izveštaj.
Po defaultu, takođe će koristiti neke Frida skripte za **obići SSL pinning**, **detekciju root-a** i **detekciju debagera** i za **monitorisanje zanimljivih API-ja**.\
MobSF takođe može **pozvati izvezene aktivnosti**, uhvatiti **screenshot-ove** njih i **sačuvati** ih za izveštaj.
Da biste **počeli** dinamičko testiranje pritisnite zeleni dugme: "**Start Instrumentation**". Pritisnite "**Frida Live Logs**" da biste videli logove generisane Frida skriptama i "**Live API Monitor**" da biste videli sve pozive ka uhvaćenim metodama, prosleđene argumente i vraćene vrednosti (ovo će se pojaviti nakon pritiska na "Start Instrumentation").\
MobSF takođe omogućava da učitate svoje **Frida skripte** (da biste poslali rezultate vaših Frida skripti u MobSF koristite funkciju `send()`). Takođe ima **several pre-written scripts** koje možete učitati (možete dodati više u `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), samo **izaberite ih**, pritisnite "**Load**" i pritisnite "**Start Instrumentation**" (moći ćete da vidite logove tih skripti unutar "**Frida Live Logs**").
Da **počnete** dinamičko testiranje pritisnite zeleni dugme: "**Start Instrumentation**". Pritisnite "**Frida Live Logs**" da biste videli logove generisane Frida skriptama i "**Live API Monitor**" da biste videli sve pozive ka uhvaćenim metodama, prosleđene argumente i vraćene vrednosti (ovo će se pojaviti nakon pritiska na "Start Instrumentation").\
MobSF takođe omogućava da učitate svoje **Frida skripte** (da biste poslali rezultate svojih Frida skripti u MobSF koristite funkciju `send()`). Takođe ima **several pre-written scripts** koje možete učitati (možete dodati više u `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), samo **izaberite ih**, pritisnite "**Load**" i pritisnite "**Start Instrumentation**" (moći ćete da vidite logove tih skripti unutar "**Frida Live Logs**").
![](<../../images/image (419).png>)
@ -553,9 +556,9 @@ Pored toga, imate neke pomoćne Frida funkcionalnosti:
- **Capture String Comparisons**: Može biti veoma korisno. **Prikazaće 2 stringa koja se upoređuju** i da li je rezultat bio True ili False.
- **Enumerate Class Methods**: Unesite ime klase (kao "java.io.File") i ispisuje sve metode klase.
- **Search Class Pattern**: Pretražuje klase po obrascu
- **Trace Class Methods**: **Prati** celu **klasu** (vidi ulaze i izlaze svih metoda klase). Zapamtite da po defaultu MobSF prati nekoliko interesantnih Android API metoda.
- **Trace Class Methods**: **Prati** celu **klasu** (vidi ulaze i izlaze svih metoda klase). Zapamtite da po defaultu MobSF prati nekoliko zanimljivih Android API metoda.
Kada izaberete pomoćni modul koji želite da koristite, potrebno je da pritisnete "**Start Intrumentation**" i videćete sve izlaze u "**Frida Live Logs**".
Kada izaberete pomoćni modul koji želite da koristite, potrebno je da pritisnete "**Start Instrumentation**" i videćete sve izlaze u "**Frida Live Logs**".
**Shell**
@ -575,7 +578,7 @@ Da biste to uradili, _uključite Burp -->_ _isključite Intercept --> u MobSB HT
Kada završite dinamičku analizu sa MobSF, možete pritisnuti na "**Start Web API Fuzzer**" da **fuzz-ujete http zahteve** i tražite ranjivosti.
> [!NOTE]
> [!TIP]
> Nakon izvođenja dinamičke analize sa MobSF, podešavanja proksija mogu biti pogrešno konfigurisana i nećete moći da ih popravite iz GUI-a. Možete popraviti podešavanja proksija tako što ćete uraditi:
>
> ```
@ -595,7 +598,7 @@ Ovo je **sjajan alat za izvođenje statičke analize sa GUI-jem**
### [Qark](https://github.com/linkedin/qark)
Ovaj alat je dizajniran da traži nekoliko **ranjivosti vezanih za bezbednost Android aplikacija**, bilo u **izvor kodu** ili **pakovanim APK-ima**. Alat je takođe **sposoban da kreira "Proof-of-Concept" deployable APK** i **ADB komande**, da bi iskoristio neke od pronađenih ranjivosti (Izložene aktivnosti, intencije, tapjacking...). Kao i sa Drozer-om, nije potrebno root-ovati test uređaj.
Ovaj alat je dizajniran da traži nekoliko **ranjivosti vezanih za sigurnost Android aplikacija**, bilo u **izvor kodu** ili **pakovanim APK-ima**. Alat je takođe **sposoban da kreira "Proof-of-Concept" deployable APK** i **ADB komande**, da bi iskoristio neke od pronađenih ranjivosti (Izložene aktivnosti, intencije, tapjacking...). Kao i sa Drozer-om, nije potrebno root-ovati test uređaj.
```bash
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
@ -604,7 +607,7 @@ qark --java path/to/specific/java/file.java
```
### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git)
- Prikazuje sve ekstrahovane datoteke radi lakšeg referenciranja
- Prikazuje sve ekstrahovane datoteke za laku referencu
- Automatski dekompajlira APK datoteke u Java i Smali format
- Analizira AndroidManifest.xml za uobičajene ranjivosti i ponašanje
- Staticka analiza izvornog koda za uobičajene ranjivosti i ponašanje
@ -617,7 +620,7 @@ reverse-apk relative/path/to/APP.apk
SUPER je aplikacija za komandnu liniju koja se može koristiti na Windows, MacOS X i Linux, koja analizira _.apk_ datoteke u potrazi za ranjivostima. To radi dekompresovanjem APK-ova i primenom niza pravila za otkrivanje tih ranjivosti.
Sva pravila su centrirana u `rules.json` datoteci, a svaka kompanija ili tester može kreirati svoja pravila za analizu onoga što im je potrebno.
Sva pravila su fokusirana u `rules.json` datoteci, a svaka kompanija ili tester može kreirati svoja pravila za analizu onoga što im je potrebno.
Preuzmite najnovije binarne datoteke sa [strane za preuzimanje](https://superanalyzer.rocks/download.html)
```
@ -649,7 +652,7 @@ androbugs.exe -f [APK file]
Detekcija se vrši **statčkom analizom** Dalvik bytecode-a aplikacije, predstavljenog kao **Smali**, uz pomoć biblioteke [`androguard`](https://github.com/androguard/androguard).
Ovaj alat traži **uobičajeno ponašanje "loših" aplikacija** kao što su: Ekstrakcija telekomunikacionih identifikatora, presretanje audio/video toka, modifikacija PIM podataka, izvršavanje proizvoljnog koda...
Ovaj alat traži **uobičajeno ponašanje "loših" aplikacija** kao što su: eksfiltracija telekomunikacionih identifikatora, presretanje audio/video toka, modifikacija PIM podataka, izvršavanje proizvoljnog koda...
```
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
```
@ -657,7 +660,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
![](<../../images/image (595).png>)
**MARA** je **M**obilna **A**plikacija **R**everzno inženjerstvo i **A**naliza okvir. To je alat koji okuplja često korišćene alate za reverzno inženjerstvo i analizu mobilnih aplikacija, kako bi pomogao u testiranju mobilnih aplikacija protiv OWASP mobilnih bezbednosnih pretnji. Njegov cilj je da ovu zadatak učini lakšim i prijatnijim za programere mobilnih aplikacija i stručnjake za bezbednost.
**MARA** je **M**obilna **A**plikacija **R**everzno inženjerstvo i **A**naliza Framework. To je alat koji okuplja često korišćene alate za reverzno inženjerstvo i analizu mobilnih aplikacija, kako bi pomogao u testiranju mobilnih aplikacija protiv OWASP mobilnih bezbednosnih pretnji. Njegov cilj je da olakša ovaj zadatak i učini ga prijatnijim za programere mobilnih aplikacija i stručnjake za bezbednost.
Može da:
@ -674,11 +677,11 @@ Koristan za otkrivanje malvera: [https://koodous.com/](https://koodous.com)
## Obfuscating/Deobfuscating code
Napomena da zavisno od usluge i konfiguracije koju koristite za obfuskaciju koda. Tajne mogu ili ne moraju biti obfuskirane.
Imajte na umu da zavisno od usluge i konfiguracije koju koristite za obfuskaciju koda. Tajne mogu ili ne moraju biti obfuskirane.
### [ProGuard](<https://en.wikipedia.org/wiki/ProGuard_(software)>)
Sa [Vikipedije](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** je open source alat za komandnu liniju koji smanjuje, optimizuje i obfuskira Java kod. U stanju je da optimizuje bajtkod kao i da otkrije i ukloni neiskorišćene instrukcije. ProGuard je besplatan softver i distribuira se pod GNU General Public License, verzija 2.
Sa [Vikipedije](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** je open source alat za komandnu liniju koji smanjuje, optimizuje i obfuskira Java kod. U stanju je da optimizuje bajtkod kao i da detektuje i ukloni neiskorišćene instrukcije. ProGuard je besplatan softver i distribuira se pod GNU General Public License, verzija 2.
ProGuard se distribuira kao deo Android SDK-a i pokreće se prilikom izgradnje aplikacije u režimu objavljivanja.
@ -696,7 +699,7 @@ Pronađite vodič korak po korak za deobfuskaciju apk-a na [https://blog.lexfo.f
### [DeGuard](http://apk-deguard.com)
**DeGuard preokreće proces obfuskacije koji izvode Android alati za obfuskaciju. Ovo omogućava brojne analize bezbednosti, uključujući inspekciju koda i predikciju biblioteka.**
**DeGuard obrnuto izvršava proces obfuskacije koji su izvršili alati za obfuskaciju Android-a. Ovo omogućava brojne analize bezbednosti, uključujući inspekciju koda i predikciju biblioteka.**
Možete da otpremite obfuskovani APK na njihovu platformu.
@ -710,7 +713,7 @@ To je **generički android deobfuskator.** Simplify **virtuelno izvršava aplika
### [APKiD](https://github.com/rednaga/APKiD)
APKiD vam daje informacije o **kako je APK napravljen**. Identifikuje mnoge **kompilatore**, **pakere**, **obfuskatore**, i druge čudne stvari. To je [_PEiD_](https://www.aldeid.com/wiki/PEiD) za Android.
APKiD vam daje informacije o **kako je APK napravljen**. Identifikuje mnoge **kompilatore**, **pakere**, **obfuskatore** i druge čudne stvari. To je [_PEiD_](https://www.aldeid.com/wiki/PEiD) za Android.
### Manual
@ -720,13 +723,13 @@ APKiD vam daje informacije o **kako je APK napravljen**. Identifikuje mnoge **ko
### [Androl4b](https://github.com/sh4hin/Androl4b)
AndroL4b je Android bezbednosna virtuelna mašina zasnovana na ubuntu-mate koja uključuje kolekciju najnovijih okvira, tutorijala i laboratorija od različitih bezbednosnih entuzijasta i istraživača za reverzno inženjerstvo i analizu malvera.
AndroL4b je Android bezbednosna virtuelna mašina zasnovana na ubuntu-mate koja uključuje kolekciju najnovijih framework-a, tutorijala i laboratorija od različitih bezbednosnih entuzijasta i istraživača za reverzno inženjerstvo i analizu malvera.
## References
- [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/)
- [https://appsecwiki.com/#/](https://appsecwiki.com/#/) To je odlična lista resursa
- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Brzi kurs o Androidu
- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Brzi kurs o Android-u
- [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/)
- [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh)
- [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec)

View File

@ -0,0 +1,123 @@
# Shizuku Privileged API
{{#include ../../banners/hacktricks-training.md}}
Shizuku je open-source servis koji **pokreće privilegovani Java proces koristeći `app_process`** i izlaže odabrane **Android sistemske API-je preko Bindera**. Pošto se proces pokreće sa istim **`shell` UID sposobnostima koje koristi ADB**, svaka aplikacija (ili terminal) koja se povezuje na izvezeni AIDL interfejs može izvesti mnoge radnje koje obično zahtevaju **`WRITE_SECURE_SETTINGS`, `INSTALL_PACKAGES`, ulaz/izlaz fajlova unutar `/data`,** itd. **bez root-ovanja uređaja**.
Tipični slučajevi korišćenja:
* Bezbednosno audiranje sa uređaja koji nije root-ovan
* Uklanjanje bloatware-a / debloating sistemskih aplikacija
* Prikupljanje logova, Wi-Fi ključeva, informacija o procesima i soketima za plavi tim/DFIR
* Automatizacija konfiguracije uređaja iz prilagođenih aplikacija ili shell skripti
---
## 1. Pokretanje privilegovanog servisa
`moe.shizuku.privileged.api` može se pokrenuti na tri različita načina rezultantni Binder servis se ponaša isto u svim njima.
### 1.1 Bežični ADB (Android 11+)
1. Omogućite **Opcije za programere ➜ Bežično debagovanje** i uparite uređaj.
2. Unutar Shizuku aplikacije izaberite **“Start via Wireless debugging”** i kopirajte kod za uparivanje.
3. Servis opstaje do sledećeg ponovnog pokretanja (sesije bežičnog debagovanja se brišu pri pokretanju).
### 1.2 USB / lokalni ADB one-liner
```bash
adb push start.sh \
/storage/emulated/0/Android/data/moe.shizuku.privileged.api/
# spawn the privileged process
adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh
```
Isti skript se može izvršiti preko **network ADB** veze (`adb connect <IP>:5555`).
### 1.3 Rootovani uređaji
Ako je uređaj već rootovan, pokrenite:
```bash
su -c sh /data/adb/shizuku/start.sh
```
### 1.4 Proveravanje da li radi
```bash
adb shell dumpsys activity service moe.shizuku.privileged.api | head
```
Uspešan početak vraća `Running services (1)` zajedno sa PID-om privilegovanog procesa.
---
## 2. Povezivanje iz aplikacije
Aplikacije trećih strana samo trebaju sledeće unutar svog `AndroidManifest.xml`:
```xml
<uses-permission android:name="moe.shizuku.manager.permission.API"/>
```
U vreme izvršavanja dobijaju binder:
```java
IBinder binder = ShizukuProvider.getBinder();
IPackageManager pm = IPackageManager.Stub.asInterface(binder);
```
Od ovog trenutka aplikacija može pozvati bilo koju metodu koju **`shell` korisnik** može pozvati na primer :
```java
pm.installPackage(new Uri("file:///sdcard/app.apk"), null, 0, null);
Settings.Global.putInt(resolver, Settings.Global.ADB_ENABLED, 1);
```
Kustoska lista od više od **170 aplikacija koje podržavaju Shizuku** se održava na [awesome-shizuku](https://github.com/timschneeb/awesome-shizuku).
---
## 3. Rish povišeni shell unutar Termux-a
Ekran podešavanja Shizuku otkriva **“Koristi Shizuku u terminalnim aplikacijama”**. Aktiviranje ove opcije preuzima *rish* (`/data/local/tmp/rish`).
```bash
pkg install wget
wget https://rikka.app/rish/latest -O rish && chmod +x rish
# start elevated shell (inherits the binder connection)
./rish
whoami # ➜ shell
id # uid=2000(shell) gid=2000(shell) groups=... context=u:r:shell:s0
```
### 3.1 Korisne komande iz rish shell-a
* Prikazivanje aktivnih procesa datog paketa:
```bash
ps -A | grep com.facebook.katana
```
* Nabrajanje slušajućih soketa i mapiranje na pakete (npr. **CVE-2019-6447 ES File Explorer**):
```bash
netstat -tuln
for pid in $(lsof -nP -iTCP -sTCP:LISTEN -t); do
printf "%s -> %s\n" "$pid" "$(cat /proc/$pid/cmdline)";
done
```
* Ispisivanje logova svake aplikacije:
```bash
logcat -d | grep -iE "(error|exception)"
```
* Čitanje sačuvanih Wi-Fi kredencijala (Android 11 +):
```bash
cat /data/misc/wifi/WifiConfigStore.xml | grep -i "<ConfigKey>"
```
* Masovno uklanjanje (primer):
```bash
pm uninstall --user 0 com.miui.weather2
```
---
## 4. Bezbednosna razmatranja / detekcija
1. Shizuku zahteva **ADB debugging** privilegije, stoga _Developer Options → USB/Wireless debugging_ mora biti **omogućeno**.
Organizacije mogu blokirati ovo putem MDM-a ili putem `settings put global development_settings_enabled 0`.
2. Usluga se registruje pod imenom `moe.shizuku.privileged.api`.
Jednostavna `adb shell service list | grep shizuku` (ili pravilo Endpoint Security) detektuje njeno prisustvo.
3. Mogućnosti su ograničene na ono što korisnik `shell` već može da uradi **nije root**.
Osetljivi API-ji koji zahtevaju korisnika `system` ili `root` su i dalje nedostupni.
4. Sesije **ne preživljavaju restart** osim ako uređaj nije root-ovan i Shizuku je konfigurisan kao daemon pri pokretanju.
---
## 5. Ublažavanje
* Onemogućiti USB/Wireless debugging na proizvodnim uređajima.
* Pratiti Binder usluge koje izlažu `moe.shizuku.privileged.api`.
* Koristiti SELinux politike (Android enterprise) za blokiranje AIDL interfejsa iz neuredjenih aplikacija.
---
## Reference
- [Blog Shizuku: Otključavanje naprednih Android mogućnosti bez root-a](https://www.mobile-hacker.com/2025/07/14/shizuku-unlocking-advanced-android-capabilities-without-root/)
- [Shizuku zvanična dokumentacija](https://shizuku.rikka.app/)
- [awesome-shizuku lista podržanih aplikacija](https://github.com/timschneeb/awesome-shizuku)
- [rish shell (privilegovan reverse-adb shell)](https://github.com/RikkaApps/Shizuku/blob/master/RISH.md)
{{#include ../../banners/hacktricks-training.md}}