Translated ['mobile-pentesting/android-app-pentesting/README.md'] to rs

This commit is contained in:
Translator 2024-09-06 12:55:55 +00:00
parent 6eeea9629e
commit 69db783457

View file

@ -1,38 +1,38 @@
# Android Applications Pentesting
{% hint style="success" %}
Učite i vežbajte AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Učite i vežbajte GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Podržite HackTricks</summary>
<summary>Support HackTricks</summary>
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na greške!
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**Hakerski Uvidi**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
**Hacking Insights**\
Engage with content that delves into the thrill and challenges of hacking
**Vesti o Haku u Realnom Vremenu**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
**Real-Time Hack News**\
Keep up-to-date with fast-paced hacking world through real-time news and insights
**Najnovija Obaveštenja**\
Budite informisani o najnovijim nagradama za greške i važnim ažuriranjima platforme
**Latest Announcements**\
Stay informed with the newest bug bounties launching and crucial platform updates
**Pridružite nam se na** [**Discordu**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
## Osnovi Android Aplikacija
## Android Applications Basics
Preporučuje se da započnete čitanje ove stranice kako biste saznali o **najvažnijim delovima vezanim za sigurnost Android-a i najopasnijim komponentama u Android aplikaciji**:
Preporučuje se da započnete čitanje ove stranice kako biste saznali o **najvažnijim delovima vezanim za Android bezbednost i najopasnijim komponentama u Android aplikaciji**:
{% content-ref url="android-applications-basics.md" %}
[android-applications-basics.md](android-applications-basics.md)
@ -43,18 +43,18 @@ Preporučuje se da započnete čitanje ove stranice kako biste saznali o **najva
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, između ostalih funkcija.
Pogledajte sledeću listu [**ADB Komandi**](adb-commands.md) da biste naučili kako koristiti adb.
Pogledajte sledeću listu [**ADB Commands**](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 obfuskovane lozinke ili zastavice). 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**.
Ponekad je zanimljivo **modifikovati kod aplikacije** kako biste pristupili **skrivenim informacijama** (možda dobro obfuskovanim lozinkama ili zastavicama). 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**.
## Drugi zanimljivi trikovi
## Other interesting tricks
* [Lažiranje vaše lokacije u Play Store-u](spoofing-your-location-in-play-store.md)
* **Preuzmite APK-ove**: [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)
* Ekstrakt APK sa uređaja:
* [Spoofing your location in Play Store](spoofing-your-location-in-play-store.md)
* **Download APKs**: [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)
* Extract APK from device:
```bash
adb shell pm list packages
com.android.insecurebankv2
@ -67,7 +67,7 @@ adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
* Spojite sve delove i osnovne apk-ove sa [APKEditor](https://github.com/REAndroid/APKEditor):
```bash
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 1 | xargs -n1 -i adb pull {} splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits
java -jar ../APKEditor.jar m -i splits/ -o merged.apk
# after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner
@ -92,11 +92,11 @@ 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 dalju 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.
* **Content Providers i FileProviders**: Izloženi content providers mogli bi omogućiti neovlašćen pristup ili modifikaciju podataka. Konfiguracija FileProviders takođe treba biti pažljivo ispitana.
* **Content Providers i FileProviders**: Izloženi content provider-i mogli bi omogućiti neovlašćen pristup ili modifikaciju podataka. Konfiguracija FileProvider-a takođe treba biti pažljivo ispitana.
* **Broadcast Receivers i URL sheme**: Ove komponente se mogu iskoristiti za eksploataciju, sa posebnim naglaskom na to kako se URL sheme upravljaju za ranjivosti unosa.
* **SDK verzije**: Atributi `minSdkVersion`, `targetSDKVersion` i `maxSdkVersion` ukazuju na podržane Android verzije, ističući važnost ne podržavanja zastarelih, ranjivih Android verzija iz sigurnosnih razloga.
@ -105,7 +105,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 **oslepljuje korisnika da ne zna da zapravo izvršava radnje na aplikaciji žrtve**.
U suštini, to je **oslepljivanje korisnika da ne zna da zapravo izvršava radnje na aplikaciji žrtve**.
Pronađite više informacija u:
@ -113,9 +113,9 @@ Pronađite više informacija u:
[tapjacking.md](tapjacking.md)
{% endcontent-ref %}
### Otimanje zadatka
### Preuzimanje zadataka
**aktivnost** sa **`launchMode`** postavljenim na **`singleTask` bez definisanog `taskAffinity`** je ranjiva na otimanje zadatka. To znači da se **aplikacija** može instalirati i ako se pokrene pre prave aplikacije, mogla bi **oteti zadatak prave aplikacije** (tako da će korisnik interagovati sa **malicioznom aplikacijom 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 stvarne aplikacije, mogla bi **preuzeti zadatak stvarne aplikacije** (tako da će korisnik interagovati sa **malicioznom aplikacijom misleći da koristi pravu**).
Više informacija u:
@ -127,7 +127,7 @@ Više informacija u:
**Interno skladište**
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 **propisana** 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.
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 ispita**. Ovi režimi **mogu potencijalno izložiti** datoteke **neprikladnom ili neovlašćenom pristupu**.
@ -139,14 +139,14 @@ U Androidu, datoteke **smeštene** u **interno** skladište su **dizajnirane** d
Kada se radi o datotekama na **eksternom skladištu**, kao što su SD kartice, treba preduzeti određene mere opreza:
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.
* Datoteke na eksternom skladištu su **globalno čitljive i zapisive**. To znači da bilo koja aplikacija ili korisnik može pristupiti ovim datotekama.
2. **Sigurnosne brige**:
* S obzirom na lakoću pristupa, savetuje se **da se ne čuvaju osetljive informacije** na eksternom skladištu.
* Eksterno skladište može biti uklonjeno ili dostupno bilo kojoj aplikaciji, š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.
* 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.
* Ako vaša aplikacija mora preuzeti izvršne datoteke iz eksternog skladišta, osigurajte da su ove datoteke **potpisane i kriptografski verifikovane** pre nego što se dinamički učitaju. Ovaj korak je vitalan za održavanje sigurnosne integriteta vaše aplikacije.
Eksterno skladište može biti **pristupačno** u `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
@ -163,7 +163,7 @@ Počevši od Android 4.4 (**API 17**), SD kartica ima strukturu direktorijuma ko
**Prihvati sve sertifikate**
Iz nekog razloga, ponekad programeri prihvataju sve sertifikate čak i ako, na primer, ime hosta ne odgovara linijama koda poput sledeće:
Iz nekog razloga, ponekad programeri prihvataju sve sertifikate čak i ako, na primer, ime hosta ne odgovara sa linijama koda kao što je sledeća:
```java
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
@ -183,9 +183,9 @@ Programeri ne bi trebali koristiti **zastarele algoritme** za obavljanje **prove
### 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), 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** kako bi proverila da li je modifikovana.
* 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 se uverila da nije modifikovana.
* Koristite [**APKiD**](https://github.com/rednaga/APKiD) da proverite koji je kompajler/paker/obfuskator korišćen za izradu APK-a.
### React Native Application
@ -258,7 +258,7 @@ Stay informed with the newest bug bounties launching and crucial platform update
## Dinamička analiza
> Prvo, potrebna vam je okruženje gde možete instalirati aplikaciju i sve potrebne alate (Burp CA cert, Drozer i Frida pretežno). Stoga, preporučuje se korišćenje root-ovanog uređaja (emuliranog ili ne).
> Prvo, potrebna vam je okruženje gde možete instalirati aplikaciju i sve potrebne alate (Burp CA cert, Drozer i Frida uglavnom). Stoga, uređaj koji je root-ovan (emuliran ili ne) je izuzetno preporučen.
### Online dinamička analiza
@ -281,7 +281,7 @@ Thanks to the ADB connection you can use **Drozer** and **Frida** inside the emu
[avd-android-virtual-device.md](avd-android-virtual-device.md)
{% endcontent-ref %}
* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Besplatna verzija:** Personal Edition, potrebno je da napravite nalog. _Preporučuje se da **preuzmete** verziju **SA** _**VirtualBox** kako biste izbegli potencijalne greške._)
* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Besplatna verzija:** Personal Edition, potrebno je da napravite nalog. _Preporučuje se da **preuzmete** verziju **SA**_ _**VirtualBox** kako biste izbegli potencijalne greške._)
* [**Nox**](https://es.bignox.com) (Besplatno, ali ne podržava Frida ili Drozer).
{% hint style="info" %}
@ -296,7 +296,7 @@ Also, notice that in the **configuration of the Android VM in Genymotion** you c
#### Koristite fizički uređaj
You need to activate the **debugging** options and it will be cool if you can **root** it:
Potrebno je aktivirati **debugging** opcije i bilo bi dobro ako možete **root**-ovati uređaj:
1. **Podešavanja**.
2. (Od Android 8.0) Izaberite **Sistem**.
@ -304,8 +304,8 @@ You need to activate the **debugging** options and it will be cool if you can **
4. Pritisnite **Broj izrade** 7 puta.
5. Vratite se i naći ćete **Opcije za programere**.
> Once you have installed the application, the first thing you should do is to try it and investigate what does it do, how does it work and get comfortable with it.\
> I will suggest to **perform this initial dynamic analysis using MobSF dynamic analysis + pidcat**, so we will be able to **learn how the application works** while MobSF **captures** a lot of **interesting** **data** you can review later on.
> Kada instalirate aplikaciju, prva stvar koju treba da uradite je da je isprobate i istražite šta radi, kako funkcioniše i da se upoznate sa njom.\
> Preporučujem da **izvršite ovu inicijalnu dinamičku analizu koristeći MobSF dinamičku analizu + pidcat**, tako da ćemo moći da **naučimo kako aplikacija funkcioniše** dok MobSF **prikuplja** mnogo **zanimljivih** **podataka** koje možete kasnije pregledati.
### Neprikazano curenje podataka
@ -318,15 +318,15 @@ Note that from **later newer than Android 4.0**, **applications are only able to
Anyway, it's still recommended to **not log sensitive information**.
{% endhint %}
**Keširanje kopiranja/lepka**
**Keširanje Copy/Paste Bufe**
Androidov **okvir zasnovan na međuspremniku** omogućava funkcionalnost kopiranja i lepljenja u aplikacijama, ali predstavlja rizik jer **druge aplikacije** mogu **pristupiti** međuspremniku, potencijalno izlažući osetljive podatke. Ključno je **onemogućiti funkcije kopiranja/lepka** za osetljive delove aplikacije, poput podataka o kreditnim karticama, kako bi se sprečilo curenje 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čilo curenje podataka.
**Logovi grešaka**
Ako aplikacija **pukne** i **sačuva logove**, ovi logovi mogu pomoći napadačima, posebno kada se aplikacija ne može obrnuto inženjerirati. Da biste umanjili ovaj rizik, izbegavajte logovanje prilikom grešaka, a ako logovi moraju biti preneseni preko mreže, osigurajte da se šalju putem SSL kanala radi sigurnosti.
Ako aplikacija **pukne** i **sač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 grešaka, a ako logovi moraju biti poslati preko mreže, osigurajte da se šalju putem SSL kanala radi sigurnosti.
As pentester, **try to take a look to these logs**.
Kao pentester, **pokušajte da pogledate ove logove**.
**Podaci o analitici poslati trećim stranama**
@ -334,12 +334,12 @@ Aplikacije često integrišu usluge poput Google Adsense, što može nenamerno *
### SQLite DBs
Većina aplikacija će koristiti **internu SQLite bazu podataka** za čuvanje informacija. Tokom pentest-a 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).\
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** koji su sačuvani 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`.
If the database is saving confidential information and is **encrypted b**ut you can **find** the **password** inside the application it's still a **vulnerability**.
Ako baza podataka čuva poverljive informacije i je **šifrovana**, ali možete **pronaći** **lozinku** unutar aplikacije, to je i dalje **ranjivost**.
Enumerate the tables using `.tables` and enumerate the columns of the tables doing `.schema <table_name>`.
Enumerišite tabele koristeći `.tables` i enumerišite kolone tabela koristeći `.schema <table_name>`.
### Drozer (Eksploatacija aktivnosti, provajdera sadržaja i usluga)
@ -353,7 +353,7 @@ Also remember that the code of an activity starts in the **`onCreate`** method.
**Zaobilaženje autorizacije**
Kada je aktivnost eksportovana, možete pozvati njen ekran iz spoljne aplikacije. Stoga, ako je aktivnost sa **osetljivim informacijama** **eksportovana**, mogli biste **zaobić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 **zaobići** **mehanizme** **autentifikacije** **da biste joj pristupili.**
[**Learn how to exploit exported activities with Drozer.**](drozer-tutorial/#activities)
@ -364,7 +364,7 @@ You can also start an exported activity from 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 ovo 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 ovo opasno samo na starim verzijama (API verzije < 21).
{% hint style="info" %}
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.
@ -390,7 +390,7 @@ Content providers se osnovno koriste za **deljenje podataka**. Ako aplikacija im
[**Pročitajte ovo ako želite da osvežite šta je Service.**](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...\
Servis je osnovno nešto što **može primati podatke**, **obrađivati** ih i **vraćati** (ili ne) odgovor. Dakle, ako aplikacija izlaže 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 eksploatišete Servise sa Drozer-om.**](drozer-tutorial/#services)
### **Eksploatacija Broadcast Receivers**
@ -436,17 +436,17 @@ 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 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/).
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 podatke o korisnicima 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_).
### Inspekcija i verifikacija 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 "čoveka 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.
* **Pregovori tokom SSL/TLS rukovanja su ponekad slabi**, koristeći nesigurne kriptografske suite. Ova ranjivost čini vezu podložnom napadima čoveka 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 sesijski kolačići ili podaci o korisnicima, od presretanja od strane zlonamernih entiteta.
#### Verifikacija sertifikata
@ -458,15 +458,15 @@ SSL Pinning je mera sigurnosti gde aplikacija proverava sertifikat servera u odn
#### Inspekcija saobraćaja
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).
Da biste inspekciju HTTP saobraćaja, potrebno je **instalirati sertifikat alata za proxy** (npr. Burp). Bez instalacije ovog sertifikata, kriptovani 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 nivo 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).
Aplikacije koje ciljaju **API nivo 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 kriptovanog saobraćaja. Za uputstva o izmeni Network Security Config-a, [**pogledajte ovaj tutorijal**](make-apk-accept-ca-certificate.md).
#### Obilaženje SSL Pinning-a
Kada je SSL Pinning implementiran, obilaženje postaje neophodno za inspekciju HTTPS saobraćaja. Različite metode su dostupne za ovu svrhu:
* Automatski **modifikujte** **apk** da **obidjete** SSLPinning koristeći [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Najveća prednost ove opcije je š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.
* Automatski **modifikujte** **apk** da **obidjete** SSLPinning koristeći [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Najveća prednost ove opcije je što vam neće biti potreban root da obidjete SSL Pinning, ali ćete morati da obrišete aplikaciju i ponovo instalirate novu, a to neće uvek funkcionisati.
* 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)
@ -478,7 +478,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 sigurnosti.\
[Frida](https://www.frida.re) je alat za dinamičku instrumentaciju za programere, inženjere obrnutog inženjeringa i istraživače bezbednosti.\
**Možete pristupiti pokrenutim aplikacijama i povezati metode u vreme izvođenja da promenite ponašanje, promenite vrednosti, izvučete vrednosti, pokrenete različit kod...**\
Ako želite da radite pentesting Android aplikacija, morate znati kako koristiti Frida.
@ -488,7 +488,7 @@ Ako želite da radite pentesting Android aplikacija, morate znati kako koristiti
* 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))
### **Dump Memorije - Fridump**
### **Dump Memorija - Fridump**
Proverite da li aplikacija čuva osetljive informacije unutar memorije koje ne bi trebala da čuva, kao što su lozinke ili mnemoničke fraze.
@ -501,7 +501,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 pretraživati sa nečim poput:
{% code overflow="wrap" %}
```bash
@ -511,7 +511,7 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
### **Osetljivi podaci u Keystore-u**
U Androidu, Keystore je najbolje mesto za čuvanje osetljivih podataka, međutim, uz dovoljno privilegija, još uvek je **moguće pristupiti mu**. Kako aplikacije obično čuvaju **osetljive podatke u čistom tekstu**, pentestovi bi trebali proveriti to kao root korisnik ili neko sa fizičkim pristupom uređaju mogao bi biti u mogućnosti da ukrade ove podatke.
U Androidu, Keystore je najbolje mesto za čuvanje osetljivih podataka, međutim, uz dovoljno privilegija, još uvek je **moguće pristupiti mu**. Kako aplikacije obično čuvaju **osetljive podatke u čistom tekstu**, pentestovi bi trebali proveriti to kao root korisnik ili neko ko ima fizički pristup uređaju mogao bi biti u mogućnosti da ukrade ove podatke.
Čak i ako aplikacija čuva podatke u keystore-u, podaci bi trebali biti enkriptovani.
@ -537,7 +537,7 @@ Međutim, ako ovaj snimak sadrži **osetljive informacije**, neko ko ima pristup
Snimci se obično čuvaju na: **`/data/system_ce/0/snapshots`**
Android pruža način da se **spreči hvatanje ekrana postavljanjem FLAG\_SECURE** parametra rasporeda. Korišćenjem ove oznake, sadržaj prozora se tretira kao siguran, sprečavajući da se pojavi na snimcima ekrana ili da se vidi na nesigurnim ekranima.
Android pruža način da se **spreči snimanje ekrana postavljanjem FLAG\_SECURE** parametra rasporeda. Korišćenjem ove oznake, sadržaj prozora se tretira kao siguran, sprečavajući da se pojavi na snimcima ekrana ili da se vidi na nesigurnim ekranima.
```bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
```
@ -547,16 +547,16 @@ Ovaj alat može pomoći u upravljanju različitim alatima tokom dinamičke anali
### Intent Injection
Programeri često kreiraju proxy komponente kao što su aktivnosti, servisi i emitovani prijemnici koji obrađuju ove Intente i prosleđuju ih metodama kao što su `startActivity(...)` ili `sendBroadcast(...)`, što može biti rizično.
Programeri često kreiraju proxy komponente kao što su aktivnosti, servisi i prijemnici emitovanja koji obrađuju ove Intente i prosleđuju ih metodama kao što su `startActivity(...)` ili `sendBroadcast(...)`, što može biti rizično.
Opasnost leži u omogućavanju napadačima da aktiviraju neizvezene komponente aplikacije ili pristupe osetljivim provajderima sadržaja preusmeravanjem ovih Intenta. Značajan primer je `WebView` komponenta koja konvertuje URL-ove u `Intent` objekte putem `Intent.parseUri(...)` i zatim ih izvršava, što može dovesti do zlonamernih Intent injekcija.
### Essential Takeaways
* **Intent Injection** je sličan problemu Open Redirect na webu.
* Eksploati uključuju prosleđivanje `Intent` objekata kao dodataka, koji se mogu preusmeriti da izvrše nesigurne operacije.
* Eksploati uključuju prosleđivanje `Intent` objekata kao dodataka, koji mogu biti preusmereni da izvrše nesigurne operacije.
* Može izložiti neizvezene komponente i provajdere sadržaja napadačima.
* Konverzija URL-a u `Intent` od strane `WebView` može olakšati nepredviđene radnje.
* Konverzija URL-a u `Intent` u `WebView` može olakšati nepredviđene radnje.
### Android Client Side Injections and others
@ -648,7 +648,7 @@ receivers
```
**HTTP alati**
Kada se http saobraćaj uhvati, možete videti ružan prikaz uhvaćenog saobraćaja na "**HTTP(S) Traffic**" dnu ili lepši prikaz na "**Start HTTPTools**" zelenom dnu. Iz druge opcije, možete **poslati** **uhvaćene zahteve** na **proksije** kao što su Burp ili Owasp ZAP.\
Kada se http saobraćaj uhvati, možete videti ružan prikaz uhvaćenog saobraćaja na "**HTTP(S) Saobraćaj**" donjem delu ili lepši prikaz u "**Start HTTPTools**" zelenom dugmetu. Iz druge opcije, možete **poslati** **uhvaćene zahteve** na **proksije** kao što su Burp ili Owasp ZAP.\
Da biste to uradili, _uključite Burp -->_ _isključite Intercept --> u MobSB HTTPTools izaberite zahtev_ --> pritisnite "**Send to Fuzzer**" --> _izaberite adresu proksija_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
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.
@ -685,7 +685,7 @@ qark --java path/to/specific/java/file.java
* Prikazuje sve ekstrahovane datoteke radi lakšeg referenciranja
* Automatski dekompajlira APK datoteke u Java i Smali format
* Analizira AndroidManifest.xml za uobičajene ranjivosti i ponašanje
* Statistička analiza izvornog koda za uobičajene ranjivosti i ponašanje
* Staticka analiza izvornog koda za uobičajene ranjivosti i ponašanje
* Informacije o uređaju
* i još mnogo toga
```bash
@ -707,9 +707,9 @@ super-analyzer {apk_file}
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.
Koncept je da prevučete i ispustite svoj mobilni aplikacioni fajl (fajl .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.
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.
Preuzmite [latest release](https://github.com/vincentcox/StaCoAn/releases):
Preuzmite [najnovije izdanje](https://github.com/vincentcox/StaCoAn/releases):
```
./stacoan
```
@ -725,9 +725,9 @@ androbugs.exe -f [APK file]
**Androwarn** je alat čija je glavna svrha da detektuje i upozori korisnika na potencijalno zloćudno ponašanje koje razvija Android aplikacija.
Detekcija se vrši **statčkom analizom** Dalvik bytecode-a aplikacije, predstavljenog kao **Smali**, uz pomoć biblioteke [`androguard`](https://github.com/androguard/androguard).
Detekcija se vrši **statistič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: Ekstrakcija 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
```
@ -735,7 +735,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
![](<../../.gitbook/assets/image (595).png>)
**MARA** je **M**obila **A**plikacija **R**everzno inženjerstvo i **A**naliza Framework. To je alat koji okuplja uobičajene 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**obila **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:
@ -750,13 +750,13 @@ Može da:
Koristan za otkrivanje malvera: [https://koodous.com/](https://koodous.com)
## Obfuscating/Deobfuscating code
## Obfuskacija/Deobfuskacija koda
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 detektuje i ukloni neiskorišćene instrukcije. ProGuard je besplatan softver i distribuira se pod GNU General Public License, verzija 2.
Sa [Wikipedia](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.
@ -764,17 +764,17 @@ ProGuard se distribuira kao deo Android SDK-a i pokreće se prilikom izgradnje a
Pronađite vodič korak po korak za deobfuskaciju apk-a na [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html)
(Prema tom vodiču) Poslednji put kada smo proveravali, način rada Dexguard-a bio je:
(Prema tom vodiču) Poslednji put kada smo proveravali, Dexguard način rada je bio:
* učitati resurs kao InputStream;
* proslediti rezultat klasi koja nasleđuje FilterInputStream da bi ga dekriptovali;
* uraditi neku beskorisnu obfuskaciju da bismo potrošili nekoliko minuta vremena od reverzera;
* proslediti dekriptovani rezultat ZipInputStream-u da bismo dobili DEX datoteku;
* konačno učitati dobijeni DEX kao resurs koristeći metodu `loadDex`.
* uraditi neku beskorisnu obfuskaciju da bi se izgubilo nekoliko minuta vremena od reverzera;
* 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 koju izvode Android alati za obfuskaciju. Ovo omogućava brojne analize bezbednosti, uključujući inspekciju koda i predikciju biblioteka.**
**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.**
Možete da otpremite obfuskovani APK na njihovu platformu.
@ -794,7 +794,7 @@ 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 framework-a, 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 labova od različitih bezbednosnih entuzijasta i istraživača za reverzno inženjerstvo i analizu malvera.
## References