From f3f1b5b00630f0bfd1e3a28c9867896b200e7cd7 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 3 Sep 2025 12:21:49 +0000 Subject: [PATCH] Translated ['', 'src/mobile-pentesting/android-app-pentesting/README.md' --- .../android-app-pentesting/README.md | 658 ++++++++++-------- 1 file changed, 359 insertions(+), 299 deletions(-) diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index 32e86bfa8..2b6f99dbc 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -1,10 +1,11 @@ -# Pentesting Android Aplikacija +# Android Applications Pentesting {{#include ../../banners/hacktricks-training.md}} -## Osnovi Android Aplikacija +## Osnove Android aplikacija + +Preporučuje se da najpre pročitate ovu stranicu kako biste saznali o **najvažnijim delovima vezanim za bezbednost Androida i najopasnijim komponentama u Android aplikaciji**: -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**: {{#ref}} android-applications-basics.md @@ -12,24 +13,24 @@ 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, između ostalih funkcija. +Ovo je glavni alat koji vam treba za povezivanje sa Android uređajem (emuliranim ili fizičkim).\ +**ADB** omogućava kontrolu uređaja ili preko **USB** ili preko **mreže** sa računara. Ovaj alat omogućava **kopiranje** fajlova u oba smera, **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 naučite kako da koristite adb. ## Smali -Ponekad je zanimljivo **modifikovati kod aplikacije** kako 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 korisno **izmeniti kod aplikacije** da biste pristupili **skrivenim informacijama** (npr. dobro obfuskovanim lozinkama ili flagovima). U tom slučaju može biti korisno dekompajlirati apk, izmeniti kod i ponovo ga kompajlirati.\ +[**In this tutorial** you can **learn how to decompile and APK, modify Smali code and recompile the APK** with the new functionality](smali-changes.md). Ovo može biti veoma korisno kao **alternativa za nekoliko testova tokom dinamičke analize** koji će biti predstavljeni. Dakle, **uvek imajte ovu mogućnost na umu**. -## Drugi zanimljivi trikovi +## Ostali 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) -- [Iskorišćavanje nesigurnih mehanizama ažuriranja unutar aplikacije](insecure-in-app-update-rce.md) -- [Zloupotreba usluga pristupačnosti (Android RAT)](accessibility-services-abuse.md) +- [Spoofing your location in Play Store](spoofing-your-location-in-play-store.md) +- [Shizuku Privileged API (ADB-based non-root privileged access)](shizuku-privileged-api.md) +- [Exploiting Insecure In-App Update Mechanisms](insecure-in-app-update-rce.md) +- [Abusing Accessibility Services (Android RAT)](accessibility-services-abuse.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) -- Ekstrakt APK sa uređaja: +- Izvlačenje APK-a sa uređaja: ```bash adb shell pm list packages com.android.insecurebankv2 @@ -39,7 +40,7 @@ package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk 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): +- Spojite sve splits i base apks pomoću [APKEditor](https://github.com/REAndroid/APKEditor): ```bash mkdir splits adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits @@ -60,166 +61,169 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed ../../linux-hardening/privilege-escalation/android-rooting-frameworks-manager-auth-bypass-syscall-hook.md {{#endref}} -## Staticka analiza +## Statička analiza -Prvo, za analizu APK-a trebate **pogledati Java kod** koristeći dekompajler.\ -Molimo vas, [**pročitajte ovde da biste pronašli informacije o različitim dostupnim dekompajlerima**](apk-decompilers.md). +Pre svega, pri analizi APK-a treba **pogledati Java kod** koristeći decompiler.\ +Molimo, [**pročitajte ovde da biste našli informacije o različitim dostupnim decompilerima**](apk-decompilers.md). -### Traženje zanimljivih informacija +### Traženje korisnih informacija -Samo gledajući **stringove** APK-a možete tražiti **lozinke**, **URL-ove** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** ključeve, **enkripciju**, **bluetooth uuids**, **tokene** i sve što je zanimljivo... potražite čak i **backdoor-e** za izvršavanje koda ili backdoor-e za autentifikaciju (hardkodirane admin kredencijale za aplikaciju). +Samo pregledom **strings** iz APK-a možete pronaći **lozinke**, **URL-ove** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **API** ključeve, **enkripciju**, **bluetooth uuids**, **tokene** i sve što je interesantno... tražite čak i code execution **backdoors** ili authentication backdoors (hardkodovani admin kredencijali u aplikaciji). **Firebase** -Obratite posebnu pažnju na **firebase URL-ove** i proverite da li je loše konfigurisano. [Više informacija o tome šta je Firebase i kako ga iskoristiti ovde.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) +Obratite posebnu pažnju na **Firebase URL-ove** i proverite da li je loše konfigurisan. [Više informacija o tome šta je Firebase i kako ga eksploatisati ovde.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### Osnovno razumevanje aplikacije - Manifest.xml, strings.xml -**Istraživanje _Manifest.xml_ i _strings.xml_ datoteka aplikacije može otkriti potencijalne sigurnosne ranjivosti**. Ove datoteke se mogu pristupiti koristeći dekompajlere ili preimenovanjem ekstenzije APK datoteke u .zip i zatim raspakivanjem. +Pregled fajlova aplikacije _Manifest.xml_ i _strings.xml_ može otkriti potencijalne bezbednosne ranjivosti. Ovi fajlovi se mogu dobiti pomoću decompilera ili preimenovanjem APK fajla u .zip i zatim raspakivanjem. -**Ranjivosti** identifikovane iz **Manifest.xml** uključuju: +Ranjivosti identifikovane u **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. -- **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. -- **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. +- **Debuggable Applications**: Aplikacije označene kao debuggable (`debuggable="true"`) u _Manifest.xml_ predstavljaju rizik jer dozvoljavaju konekcije koje mogu dovesti do eksploatacije. Za detaljnije razumevanje kako iskoristiti debuggable aplikacije pogledajte tutorijal o pronalaženju i eksploataciji debuggable aplikacija na uređaju. +- **Backup Settings**: Atribut `android:allowBackup="false"` treba eksplicitno postaviti za aplikacije koje rade sa osetljivim informacijama kako bi se sprečilo neovlašćeno pravljenje backup-a putem adb, naročito kada je usb debugging omogućen. +- **Network Security**: Prilagođene network security konfiguracije (`android:networkSecurityConfig="@xml/network_security_config"`) u _res/xml/_ mogu definisati detalje bezbednosti poput certificate pinova i podešavanja HTTP saobraćaja. Primer je dozvoljavanje HTTP saobraćaja za određene domene. +- **Exported Activities and Services**: Identifikacija exported activities i servisa u manifestu može ukazati na komponente koje bi mogle biti zloupotrebljene. Dalja analiza tokom dinamičkog testiranja može otkriti kako iskoristiti te komponente. +- **Content Providers and FileProviders**: Izloženi content provider-i mogu dozvoliti neovlašćen pristup ili modifikaciju podataka. Konfiguracija FileProvider-a takođe treba biti pažljivo proverena. +- **Broadcast Receivers and URL Schemes**: Ove komponente mogu biti iskorišćene za eksploataciju, s posebnim osvrtom na to kako se URL schemes upravljaju u kontekstu input ranjivosti. +- **SDK Versions**: Atributi `minSdkVersion`, `targetSDKVersion`, i `maxSdkVersion` ukazuju na podržane Android verzije, naglašavajući važnost da se iz bezbednosnih razloga ne podržavaju zastarele, ranjive Android verzije. -Iz **strings.xml** datoteke, osetljive informacije kao što su API ključevi, prilagođene sheme i druge beleške programera mogu se otkriti, naglašavajući potrebu za pažljivim pregledom ovih resursa. +Iz fajla **strings.xml** mogu se otkriti osetljive informacije kao što su API ključevi, custom schemas i druge developerske beleške, što naglašava potrebu za pažljivim pregledom ovih resursa. ### 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 vrši radnje na aplikaciji žrtve**. +**Tapjacking** je napad gde se pokreće maliciozna aplikacija koja se postavi iznad aplikacije žrtve. Kada vizuelno zaseni žrtvinu aplikaciju, njen korisnički interfejs je dizajniran tako da prevari korisnika da interaguje sa njim, dok zapravo prosleđuje interakciju žrtvinoj aplikaciji. U suštini, to zaslepljuje korisnika tako da ne zna da zapravo izvršava akcije na aplikaciji žrtve. -Pronađite više informacija u: +Find more information in: {{#ref}} tapjacking.md {{#endref}} -### Preuzimanje zadataka +### Task Hijacking -**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 će korisnik interagovati sa **malicioznom aplikacijom misleći da koristi pravu**). +Activity sa `launchMode` postavljenim na `singleTask` bez definisanog `taskAffinity` je ranjiva na Task Hijacking. To znači da aplikacija može biti instalirana i, ako se pokrene pre prave aplikacije, može preuzeti task prave aplikacije (tako da će korisnik interagovati sa malicioznom aplikacijom misleći da koristi pravu). -Više informacija u: +More info in: {{#ref}} android-task-hijacking.md {{#endref}} -### Nesigurno skladištenje podataka +### Nesigurno čuvanje podataka -**Interno skladište** +**Interna memorija** -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 bi **omogućili** 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. +Na Androidu, fajlovi smešteni u internu memoriju su dizajnirani da budu dostupni isključivo aplikaciji koja ih je kreirala. Ova bezbednosna mera sprovodi se od strane Android operativnog sistema i uglavnom je dovoljna za potrebe bezbednosti većine aplikacija. Međutim, developeri ponekad koriste mode-ove kao `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` da bi dozvolili deljenje fajlova među različitim aplikacijama. Ipak, ovi modovi ne ograničavaju pristup tim fajlovima 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**. +1. **Statička analiza:** +- Proverite upotrebu `MODE_WORLD_READABLE` i `MODE_WORLD_WRITABLE` pažljivo. Ovi modovi mogu potencijalno izložiti fajlove neželjenom 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**. To 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. +- Verifikujte permisije postavljene na fajlovima koje aplikacija kreira. Konkretno, proverite da li su neki fajlovi podešeni da budu readable ili writable worldwide. Ovo može predstavljati značajan bezbednosni rizik, jer bi omogućilo bilo kojoj aplikaciji instaliranoj na uređaju, bez obzira na poreklo ili nameru, da čita ili menja te fajlove. -**Eksterno skladište** +**Eksterna memorija** -Kada se radi o datotekama na **eksternom skladištu**, kao što su SD kartice, treba preduzeti određene mere opreza: +Kada se radi o fajlovima na eksternoj memoriji, 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. -2. **Sigurnosne brige**: -- 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. -- 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. +- Fajlovi na eksternoj memoriji su globalno čitljivi i zapisivi. To znači da bilo koja aplikacija ili korisnik može pristupiti tim fajlovima. +2. **Bezbednosni problemi**: +- S obzirom na lakoću pristupa, savetuje se da se osetljive informacije ne čuvaju na eksternoj memoriji. +- Eksterna memorija može biti uklonjena ili joj može pristupiti bilo koja aplikacija, čime postaje manje sigurna. +3. **Rukovanje podacima sa eksterne memorije**: +- Uvek vršite validaciju inputa nad podacima preuzetim sa eksterne memorije. Ovo je ključno jer su ti podaci iz nepouzdanog izvora. +- Ne preporučuje se skladištenje izvršnih fajlova ili class fajlova na eksternoj memoriji radi dinamičkog učitavanja. +- Ako vaša aplikacija mora da učitava izvršne fajlove sa eksterne memorije, osigurajte da su ti fajlovi potpisani i kriptografski verifikovani pre nego što budu dinamički učitani. Ovaj korak je vitalan za održavanje bezbednosnog integriteta aplikacije. -Eksterno skladište može biti **pristupano** u `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` +Eksternu memoriju je moguće pristupiti u `/storage/emulated/0` , `/sdcard` , `/mnt/sdcard` > [!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. +> Počev od Android 4.4 (**API 17**), SD kartica ima strukturu direktorijuma koja ograničava pristup aplikacije samo na direktorijum koji je specifično za tu aplikaciju. Ovo sprečava maliciozne aplikacije da dobiju pristup za čitanje ili pisanje fajlovima druge aplikacije. -**Osetljivi podaci pohranjeni u čistom tekstu** +**Osetljivi podaci sačuvani u običnom tekstu** -- **Deljene postavke**: Android omogućava svakoj aplikaciji da lako sačuva xml datoteke na putanji `/data/data//shared_prefs/` i ponekad je moguće pronaći osetljive informacije u čistom tekstu u toj fascikli. -- **Baze podataka**: Android omogućava svakoj aplikaciji da lako sačuva sqlite baze podataka na putanji `/data/data//databases/` i ponekad je moguće pronaći osetljive informacije u čistom tekstu u toj fascikli. +- **Shared preferences**: Android omogućava svakoj aplikaciji da lako sačuva xml fajlove u putanji `/data/data//shared_prefs/` i ponekad je moguće naći osetljive informacije u običnom tekstu u tom folderu. +- **Databases**: Android omogućava svakoj aplikaciji da lako sačuva sqlite baze podataka u putanji `/data/data//databases/` i ponekad je moguće naći osetljive informacije u običnom tekstu u tom folderu. -### Slomljeni TLS +### Neispravan TLS -**Prihvati sve sertifikate** +**Accept All Certificates** -Iz nekog razloga, ponekad programeri prihvataju sve sertifikate čak i ako, na primer, ime hosta ne odgovara sa linijama koda poput sledeće: +Iz nekog razloga, ponekad developeri prihvataju sve sertifikate čak i ako, na primer, hostname ne odgovara, sa linijama koda kao što su sledeće: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ``` -Dobar način da se ovo testira je da pokušate da uhvatite saobraćaj koristeći neki proxy kao što je Burp bez autorizacije Burp CA unutar uređaja. Takođe, možete generisati sa Burp-om sertifikat za drugačije ime hosta i koristiti ga. +A good way to test this is to try to capture the traffic using some proxy like Burp without authorising Burp CA inside the device. Also, you can generate with Burp a certificate for a different hostname and use it. -### Slomljena Kriptografija +### Broken Cryptography -**Loši Procesi Upravljanja Ključevima** +**Poor Key Management Processes** -Neki programeri čuvaju osetljive podatke u lokalnoj memoriji i šifruju ih ključem koji je hardkodiran/predvidljiv u kodu. Ovo ne bi trebalo da se radi jer bi neki proces obrnute inženjeringa mogao omogućiti napadačima da izvuku poverljive informacije. +Neki developeri čuvaju osetljive podatke u lokalnoj memoriji i encrypt-uju ih sa ključem hardkodiranim/predvidivim u kodu. Ovo ne bi trebalo raditi jer neki reversing može omogućiti napadačima da izvuku poverljive informacije. -**Korišćenje Nesigurnih i/ili Zastarelih Algoritama** +**Use of Insecure and/or Deprecated Algorithms** -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. +Developeri ne bi trebalo da koriste **deprecated algorithms** za izvršavanje autorizacionih **checks**, **store** ili **send** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **hashes** koriste za čuvanje lozinki na primer, treba koristiti hashove otporne na **brute-force** sa **salt**. -### Ostale provere +### Other checks -- 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), 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 izmenjena. -- Koristite [**APKiD**](https://github.com/rednaga/APKiD) da proverite koji je kompajler/paker/obfuskator korišćen za izgradnju APK-a. +- It's recommended to **obfuscate the APK** to difficult the reverse engineer labour to attackers. +- Ako je app osetljiv (kao bankarske aplikacije), treba da izvrši svoje **own checks to see if the mobile is rooted** i postupiti u skladu sa tim. +- Ako je app osetljiv (kao bankarske aplikacije), treba da proveri da li se koristi **emulator**. +- Ako je app osetljiv (kao bankarske aplikacije), treba da **check it's own integrity before executing** kako bi se proverilo da li je modifikovan. +- Koristite [**APKiD**](https://github.com/rednaga/APKiD) da proverite koji compiler/packer/obfuscator je korišćen za izgradnju APK -### React Native Aplikacija +### React Native Application + +Read the following page to learn how to easily access javascript code of React applications: -Pročitajte sledeću stranicu da biste saznali kako lako pristupiti javascript kodu React aplikacija: {{#ref}} react-native-application.md {{#endref}} -### Xamarin Aplikacije +### Xamarin Applications + +Read the following page to learn how to easily access C# code of a xamarin applications: -Pročitajte sledeću stranicu da biste saznali kako lako pristupiti C# kodu xamarin aplikacija: {{#ref}} ../xamarin-apps.md {{#endref}} -### Superpakovane Aplikacije +### Superpacked Applications -Prema ovom [**blog postu**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/), superpakovani je Meta algoritam koji kompresuje sadržaj aplikacije u jedan fajl. Blog govori o mogućnosti kreiranja aplikacije koja dekompresuje ovakve aplikacije... i bržem načinu koji uključuje **izvršavanje aplikacije i prikupljanje dekompresovanih fajlova iz datotečnog sistema.** +According to this [**blog post**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked is a Meta algorithm that compress the content of an application into a single file. The blog talks about the possibility of creating an app that decompress these kind of apps... and a faster way which involves to **execute the application and gather the decompressed files from the filesystem.** -### Automatizovana Staticka Analiza Koda +### Automated Static Code Analysis -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. +The tool [**mariana-trench**](https://github.com/facebook/mariana-trench) is capable of finding **vulnerabilities** by **scanning** the **code** of the application. This tool contains a series of **known sources** (that indicates to the tool the **places** where the **input** is **controlled by the user**), **sinks** (which indicates to the tool **dangerous** **places** where malicious user input could cause damages) and **rules**. These rules indicates the **combination** of **sources-sinks** that indicates a vulnerability. -Sa ovim znanjem, **mariana-trench će pregledati kod i pronaći moguće ranjivosti u njemu**. +With this knowledge, **mariana-trench will review the code and find possible vulnerabilities on it**. -### Otkriće Tajni +### Secrets leaked -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). +An application may contain secrets (API keys, passwords, hidden urls, subdomains...) inside of it that you might be able to discover. You could us a tool such as [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) + +### Bypass Biometric Authentication -### Obilaženje Biometrijske Autentifikacije {{#ref}} bypass-biometric-authentication-android.md {{#endref}} -### Druge zanimljive funkcije +### Other interesting functions -- **Izvršavanje koda**: `Runtime.exec(), ProcessBuilder(), native code:system()` -- **Slanje SMS-ova**: `sendTextMessage, sendMultipartTestMessage` -- **Nativne funkcije** deklarisane kao `native`: `public native, System.loadLibrary, System.load` -- [Pročitajte ovo da biste saznali **kako da obrnute nativne funkcije**](reversing-native-libraries.md) +- **Code execution**: `Runtime.exec(), ProcessBuilder(), native code:system()` +- **Send SMSs**: `sendTextMessage, sendMultipartTestMessage` +- **Native functions** declared as `native`: `public native, System.loadLibrary, System.load` +- [Read this to learn **how to reverse native functions**](reversing-native-libraries.md) + +### **Other tricks** -### **Ostali trikovi** {{#ref}} content-protocol.md @@ -229,240 +233,293 @@ content-protocol.md --- -## Dinamička Analiza +## Dynamic Analysis -> Prvo, potrebna vam je okruženje gde možete instalirati aplikaciju i sve okruženje (Burp CA cert, Drozer i Frida uglavnom). Stoga, uređaj sa root-om (emuliran ili ne) je izuzetno preporučen. +> Prvo, potrebno vam je okruženje gde možete instalirati aplikaciju i celu okolinu (Burp CA cert, Drozer and Frida mainly). Stoga se toplo preporučuje rooted uređaj (emulirani ili ne). -### Online Dinamička analiza +### Online Dynamic analysis -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 **free account** na: [https://appetize.io/](https://appetize.io). Ova platforma vam omogućava da **upload** i **execute** APK-ove, pa je korisna da vidite kako se apk ponaša. -Možete čak i **videti logove vaše aplikacije** na vebu i povezati se putem **adb**. +Možete čak **see the logs of your application** na webu i povezati se preko **adb**. ![](<../../images/image (831).png>) Zahvaljujući ADB konekciji možete koristiti **Drozer** i **Frida** unutar emulatora. -### Lokalna Dinamička Analiza +### Local Dynamic Analysis -#### Korišćenje emulatora +#### Using an emulator + +- [**Android Studio**](https://developer.android.com/studio) (Možete kreirati **x86** i **arm** uređaje, i prema [**this** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**latest x86** verzije **support ARM libraries** bez potrebe za sporim arm emulatorom). +- Naučite kako da ga podesite na ovoj strani: -- [**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). -- 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 kreirati 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). +- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Free version:** Personal Edition, potrebno je kreirati nalog. _Preporučuje se da **download** verziju **WITH**_ _**VirtualBox** da bi se izbegle potencijalne greške._) +- [**Nox**](https://es.bignox.com) (Free, 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 to će emulator sporije raditi. Zato, po mogućstvu, odaberite manje ekrane. -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: +Da biste **install google services** (kao AppStore) u Genymotion 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 **configuration of the Android VM in Genymotion** možete izabrati **Bridge Network mode** (ovo će biti korisno ako ćete se povezivati na Android VM iz drugog VM-a sa alatkama). -#### Koristite fizički uređaj +#### Use a physical device -Morate aktivirati **debugging** opcije i bilo bi dobro ako možete **root-ovati** ga: +Potrebno je aktivirati **debugging** opcije i poželjno je ako ga možete **root**-ovati: -1. **Podešavanja**. -2. (Od Android 8.0) Izaberite **Sistem**. -3. Izaberite **O telefonu**. -4. Pritisnite **Broj izrade** 7 puta. -5. Vratite se i naći ćete **Opcije za programere**. +1. **Settings**. +2. (FromAndroid 8.0) Select **System**. +3. Select **About phone**. +4. Press **Build number** 7 times. +5. Go back and you will find the **Developer options**. -> 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 s 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 pregledati kasnije. +> Kada instalirate aplikaciju, prvo što treba da uradite je da je probate i istražite šta radi, kako radi i da se udobno upoznate sa njom.\ +> Predlažem da **perform this initial dynamic analysis using MobSF dynamic analysis + pidcat**, tako ćemo moći da **learn how the application works** dok MobSF **captures** puno **interesting** **data** koje možete kasnije pregledati. -### Neprintentionalno Otkriće Podataka +### Unintended Data Leakage -**Logovanje** +**Logging** -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. +Developeri treba da budu oprezni da ne izlažu **debugging information** 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 poželjan zbog 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.\ -> U svakom slučaju, i dalje se preporučuje da **ne logujete osetljive informacije**. +> Imajte na umu da od **later newer than Android 4.0**, **applications are only able to access their own logs**. Dakle aplikacije ne mogu pristupiti logovima drugih aplikacija.\ +> U svakom slučaju, i dalje se preporučuje da **not log sensitive information**. -**Keširanje Copy/Paste Bafera** +**Copy/Paste Buffer Caching** -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. +Androidov **clipboard-based** framework omogućava copy-paste funkcionalnost u aplikacijama, ali predstavlja rizik jer **other applications** mogu **access** clipboard i potencijalno izložiti osetljive podatke. Važno je **disable copy/paste** funkcije za osetljive delove aplikacije, poput podataka o kreditnim karticama, da bi se sprečilo curenje podataka. -**Logovi Rušenja** +**Crash Logs** -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. +Ako aplikacija **crashes** i **saves logs**, ti logovi mogu pomoći napadačima, posebno kada aplikacija ne može biti reverse-engineer-ovana. Da biste umanjili ovaj rizik, izbegavajte logovanje pri padovima, i ako logovi moraju biti poslati preko mreže, osigurajte da se šalju putem SSL kanala. -Kao pentester, **pokušajte da pogledate ove logove**. +Kao pentester, **try to take a look to these logs**. -**Podaci o Analitici Poslati Trećim Stranama** +**Analytics Data Sent To 3rd Parties** -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. +Aplikacije često integrišu servise poput Google Adsense, koji mogu nenamerno **leak** osetljive podatke zbog nepravilne implementacije od strane developera. Da biste identifikovali potencijalna curenja podataka, preporučljivo je **intercept the application's traffic** i proveriti da li se osetljive informacije šalju trećim stranama. ### SQLite DBs -Većina aplikacija će koristiti **internu SQLite baze 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`. +Većina aplikacija koristi **internal SQLite databases** za čuvanje informacija. Tokom pentest-a pogledajte **databases** koje su kreirane, imena **tables** i **columns** i sve **data** koja je sačuvana jer možete pronaći **sensitive information** (što bi bila ranjivost).\ +Databases bi trebalo da budu locirane u `/data/data/the.package.name/databases` kao `/data/data/com.mwr.example.sieve/databases` -Ako baza podataka čuva poverljive informacije i je **šifrovana**, ali možete **pronaći** **lozinku** unutar aplikacije, to je i dalje **ranjivost**. +Ako baza podataka čuva poverljive informacije i ona je **encrypted b**ut možete **find** lozinku unutar aplikacije, to je i dalje **vulnerability**. -Enumerišite tabele koristeći `.tables` i enumerišite kolone tabela koristeći `.schema `. +Enumerišite tabele koristeći `.tables` i enumerišite kolone tabela koristeći `.schema ` -### Drozer (Eksploatacija Aktivnosti, Pružatelja Sadržaja i Usluga) +### Drozer (Exploit Activities, Content Providers and Services) -Iz [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** vam omogućava da **preuzmete ulogu Android aplikacije** i interagujete sa drugim aplikacijama. Može učiniti **sve što instalirana aplikacija može učiniti**, kao što je korišćenje Android-ovog mehanizma međuprocesne komunikacije (IPC) i interakcija sa osnovnim operativnim sistemom.\ -Drozer je koristan alat za **eksploataciju eksportovanih aktivnosti, eksportovanih usluga i Pružatelja Sadržaja** kao što ćete naučiti u sledećim sekcijama. +From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** allows you to **assume the role of an Android app** and interact with other apps. It can do **anything that an installed application can do**, such as make use of Android’s Inter-Process Communication (IPC) mechanism and interact with the underlying operating system. .\ +Drozer is s useful tool to **exploit exported activities, exported services and Content Providers** as you will learn in the following sections. -### Eksploatacija eksportovanih Aktivnosti +### Exploiting exported Activities -[**Pročitajte ovo ako želite da osvežite šta je Android Aktivnost.**](android-applications-basics.md#launcher-activity-and-other-activities)\ -Takođe zapamtite da kod aktivnosti počinje u **`onCreate`** metodi. +[**Read this if you want to refresh what is an Android Activity.**](android-applications-basics.md#launcher-activity-and-other-activities)\ +Takođe zapamtite da kod jedne activity počinje u **`onCreate`** metodi. -**Obilaženje autorizacije** +**Authorisation bypass** -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 Activity exported, možete pozvati njen ekran iz eksternе aplikacije. Dakle, ako je activity sa **sensitive information** **exported**, mogli biste **bypass** **authentication** mehanizme **to access it.** -[**Naučite kako da eksploatišete eksportovane aktivnosti sa Drozer-om.**](drozer-tutorial/index.html#activities) +[**Learn how to exploit exported activities with Drozer.**](drozer-tutorial/index.html#activities) -Takođe možete pokrenuti eksportovanu aktivnost iz adb: +Možete takođe pokrenuti exported activity iz adb: -- PackageName je com.example.demo -- Exported ActivityName je com.example.test.MainActivity +- PackageName is com.example.demo +- Exported ActivityName is com.example.test.MainActivity ```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 will detect as malicious the use of _**singleTask/singleInstance**_ as `android:launchMode` in an activity, but due to [this](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), apparently this is only dangerous on old versions (API versions < 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. +> Imajte na umu da authorisation bypass nije uvek ranjivost; to zavisi od načina na koji bypass radi i koje informacije su exposed. -**Curjenje osetljivih informacija** +**Sensitive information leakage** -**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. +**Activities can also return results**. Ako uspete da pronađete exported i nezaštićenu activity koja poziva **`setResult`** metodu i **vraća osetljive informacije**, postoji sensitive information leakage. #### 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). +Ako Tapjacking nije sprečen, možete zloupotrebiti exported activity da naterate **korisnika da izvrši neočekivane radnje**. For more info about [**what is Tapjacking follow the link**](#tapjacking). -### Eksploatacija Content Providers - Pristup i manipulacija osetljivim informacijama +### Exploiting Content Providers - Accessing and manipulating sensitive information -[**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. +[**Read this if you want to refresh what is a Content Provider.**](android-applications-basics.md#content-provider)\ +Content providers se uglavnom koriste za **share data**. Ako aplikacija ima dostupne content providers možda ćete moći da **extract sensitive** podatke iz njih. Takođe je interesantno testirati moguće **SQL injections** i **Path Traversals** jer bi mogli biti ranjivi. -[**Saznajte kako da eksploatišete Content Providers sa Drozer-om.**](drozer-tutorial/index.html#content-providers) +[**Learn how to exploit Content Providers with Drozer.**](drozer-tutorial/index.html#content-providers) -### **Eksploatacija Servisa** +### **Exploiting Services** -[**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`. +[**Read this if you want to refresh what is a Service.**](android-applications-basics.md#services)\ +Zapamtite da akcije Service-a 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 eksploatišete Servise sa Drozer-om.**](drozer-tutorial/index.html#services) +Service je u suštini nešto što **može primiti podatke**, **obraditi** ih i **vratiti** (ili ne) odgovor. Dakle, ako aplikacija exportuje neke servise treba da **proverite** **kod** da biste razumeli šta radi i **testirate** ga **dinamički** radi izvlačenja poverljivih informacija, zaobilaženja mera autentifikacije...\ +[**Learn how to exploit Services with Drozer.**](drozer-tutorial/index.html#services) -### **Eksploatacija Broadcast Receivers** +### **Exploiting Broadcast Receivers** -[**Pročitajte ovo ako želite da osvežite šta je Broadcast Receiver.**](android-applications-basics.md#broadcast-receivers)\ +[**Read this if you want to refresh what is a 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 eksploatišete Broadcast Receivers sa Drozer-om.**](#exploiting-broadcast-receivers) +Broadcast receiver će čekati određeni tip poruke. U zavisnosti od načina na koji receiver obrađuje poruku, može biti ranjiv.\ +[**Learn how to exploit Broadcast Receivers with Drozer.**](#exploiting-broadcast-receivers) -### **Eksploatacija Schemes / Deep links** +### **Exploiting 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č**: +Možete tražiti deep links ručno, koristeći alate kao MobSF ili skripte kao [this one](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ +Možete **open** deklarisani **scheme** koristeći **adb** ili **browser**: ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` -_Napomena da možete **izostaviti ime paketa** i mobilni uređaj će automatski pozvati aplikaciju koja treba da otvori tu vezu._ +_Imajte na umu da možete **izostaviti naziv paketa** i mobilni uređaj će automatski pozvati aplikaciju koja treba da otvori tu vezu._ ```html Click me with alternative ``` -**Izvršeni kod** +**Kod koji se izvršava** -Da biste pronašli **kod koji će biti izvršen u aplikaciji**, idite na aktivnost koju poziva deeplink i potražite funkciju **`onNewIntent`**. +Da biste pronašli **kod koji će biti izvršen u aplikaciji**, idite na activity koju poziva deep link i potražite funkciju **`onNewIntent`**. ![](<../../images/image (436) (1) (1) (1).png>) **Osetljive informacije** -Svaki put kada pronađete deep link, proverite da **ne prima osetljive podatke (kao što su lozinke) putem URL parametara**, jer bi svaka druga aplikacija mogla **imitirati deep link i ukrasti te podatke!** +Svaki put kada nađete deep link, proverite da li **ne prima osetljive podatke (kao što su lozinke) putem URL parametara**, jer bilo koja druga aplikacija može **impersonate the deep link i ukrasti te 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/). +Morate takođe proveriti da li neki deep link koristi parametar unutar putanje URL-a, kao na primer: `https://api.example.com/v1/users/{username}` , u tom slučaju možete prouzrokovati path traversal pristupom nečemu poput: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\ +Imajte na umu da ako pronađete ispravne endpoint-e unutar aplikacije, možete izazvati **Open Redirect** (ako je deo putanje korišćen kao domain name), **account takeover** (ako možete izmeniti podatke korisnika bez CSRF tokena i ranjivi endpoint koristi ispravan metod) i bilo koju drugu ranjivost. Više [info about this here](http://dphoeniixx.com/2020/12/13-2/). -**Još primera** +**Više primera** -Jedan [zanimljiv izveštaj o bug bounty](https://hackerone.com/reports/855618) o linkovima (_/.well-known/assetlinks.json_). +An [interesting bug bounty report](https://hackerone.com/reports/855618) about links (_/.well-known/assetlinks.json_). -### Inspekcija i verifikacija transportnog sloja +### Transport Layer Inspection and Verification Failures -- **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. -- **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. +- **Certificates are not always inspected properly** od strane Android aplikacija. Uobičajeno je da ove aplikacije ignorišu upozorenja i prihvate self-signed sertifikate ili, u nekim slučajevima, pređu na korišćenje HTTP konekcija. +- **Negotiations during the SSL/TLS handshake are sometimes weak**, koristeći nesigurne cipher suite-ove. Ova ranjivost čini konekciju podložnom man-in-the-middle (MITM) napadima, omogućavajući napadačima da dekriptuju podatke. +- **Leakage of private information** predstavlja rizik kada se aplikacije autentifikuju koristeći sigurne kanale, ali potom za druge transakcije komuniciraju preko nesigurnih kanala. Ovakav pristup ne štiti osetljive podatke, kao što su session cookies ili podaci o korisniku, od presretanja od strane zlonamernih entiteta. -#### Verifikacija sertifikata +#### Certificate Verification -Fokusiraćemo se na **verifikaciju sertifikata**. Integritet sertifikata servera mora biti verifikovan kako bi se poboljšala sigurnost. Ovo je ključno jer nesigurne TLS konfiguracije i prenos osetljivih podataka preko nekriptovanih kanala mogu predstavljati značajne rizike. Za detaljne korake o verifikaciji sertifikata servera i rešavanju ranjivosti, [**ovaj resurs**](https://manifestsecurity.com/android-application-security-part-10/) pruža sveobuhvatne smernice. +Fokusiraćemo se na **certificate verification**. Integritet serverovog sertifikata mora biti verifikovan kako bi se povećala bezbednost. Ovo je ključno zato što nesigurne TLS konfiguracije i slanje osetljivih podataka preko nekriptovanih kanala mogu predstavljati značajne rizike. Za detaljne korake o verifikaciji server sertifikata i otklanjanju ranjivosti, [**this resource**](https://manifestsecurity.com/android-application-security-part-10/) pruža sveobuhvatne smernice. #### SSL Pinning -SSL Pinning je mera sigurnosti gde aplikacija proverava sertifikat servera u odnosu na poznatu kopiju smeštenu unutar same aplikacije. Ova metoda je ključna za sprečavanje MITM napada. Implementacija SSL Pinninga se snažno preporučuje za aplikacije koje obrađuju osetljive informacije. +SSL Pinning je mera bezbednosti gde aplikacija verifikuje serverov sertifikat u odnosu na poznatu kopiju smeštenu unutar same aplikacije. Ova metoda je ključna za sprečavanje MITM napada. Preporučuje se implementacija SSL Pinning-a za aplikacije koje obrađuju osetljive informacije. -#### Inspekcija saobraćaja +#### Traffic Inspection -Da biste inspekciju HTTP saobraćaja, potrebno je **instalirati sertifikat alata za proxy** (npr. Burp). Bez instaliranja 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 pregledali HTTP saobraćaj, potrebno je **instalirati sertifikat proxy alata** (npr. Burp). Bez instalacije tog sertifikata, enkriptovani saobraćaj možda neće biti vidljiv kroz proxy. Za vodič o instalaciji custom CA sertifikata, [**click here**](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 da 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 targetiraju **API Level 24 and above** zahtevaju izmene u Network Security Config da bi prihvatile CA sertifikat proxy-a. Ovaj korak je ključan za inspekciju enkriptovanog saobraćaja. Za instrukcije o modifikaciji Network Security Config, [**refer to this tutorial**](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. +Ako se koristi **Flutter**, treba pratiti instrukcije na [**this page**](flutter.md). Razlog je što samo dodavanje sertifikata u store neće raditi pošto Flutter ima sopstvenu listu validnih CA. -#### Zaobilaženje SSL Pinninga +#### Static detection of SSL/TLS pinning -Kada je SSL Pinning implementiran, zaobilaženje postaje neophodno za inspekciju HTTPS saobraćaja. Različite metode su dostupne za ovu svrhu: +Pre nego što pokušate runtime bypass-e, brzo mapirajte gde je pinning primenjen u APK-u. Statičko otkrivanje pomaže da isplanirate hooks/patches i fokusirate se na prave code path-ove. -- 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/) +Tool: SSLPinDetect +- Open-source static-analysis utility koji dekompajlira APK u Smali (preko apktool) i skenira kurirane regex pattern-e implementacija SSL/TLS pinning-a. +- Prijavljuje tačnu file path, line number i code snippet za svaki match. +- Pokriva uobičajene framework-e i custom code path-ove: OkHttp CertificatePinner, custom javax.net.ssl.X509TrustManager.checkServerTrusted, SSLContext.init sa custom TrustManagers/KeyManagers, i Network Security Config XML pins. + +Install +- Prereqs: Python >= 3.8, Java on PATH, apktool +```bash +git clone https://github.com/aancw/SSLPinDetect +cd SSLPinDetect +pip install -r requirements.txt +``` +Korišćenje +```bash +# Basic +python sslpindetect.py -f app.apk -a apktool.jar + +# Verbose (timings + per-match path:line + snippet) +python sslpindetect.py -a apktool_2.11.0.jar -f sample/app-release.apk -v +``` +Primer pravila obrazaca (JSON) + +Koristite ili proširite signatures da detektujete proprietarne/prilagođene pinning stilove. Možete učitati sopstveni JSON i scan at scale. +```json +{ +"OkHttp Certificate Pinning": [ +"Lcom/squareup/okhttp/CertificatePinner;", +"Lokhttp3/CertificatePinner;", +"setCertificatePinner" +], +"TrustManager Override": [ +"Ljavax/net/ssl/X509TrustManager;", +"checkServerTrusted" +] +} +``` +Napomene i saveti +- Brzo skeniranje velikih aplikacija putem multi-threading i memory-mapped I/O; pre-compiled regex smanjuje overhead/lažne pozitivne rezultate. +- Kolekcija patterna: https://github.com/aancw/smali-sslpin-patterns +- Tipični ciljevi za dalju trijažu: +- OkHttp: korišćenje CertificatePinner, setCertificatePinner, okhttp3/okhttp reference paketa +- Prilagođeni TrustManagers: javax.net.ssl.X509TrustManager, override checkServerTrusted +- Prilagođeni SSL contexti: SSLContext.getInstance + SSLContext.init sa prilagođenim managerima +- Deklarativni pins u res/xml network security config i reference u manifestu +- Iskoristite pronađene lokacije da planirate Frida hooks, statičke patch-eve ili reviziju konfiguracije pre dinamičkog testiranja. + + + +#### Bypassing SSL Pinning + +Kada je SSL Pinning implementiran, potrebno ga je zaobići da biste mogli da pregledate HTTPS saobraćaj. Za to postoje različite metode: + +- Automatski **izmenite** **apk** da **zaobiđete** SSLPinning koristeći [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Najveća prednost ove opcije je što nećete trebati root da zaobiđete SSL Pinning, ali ćete morati da obrišete aplikaciju i ponovo instalirate izmenjenu verziju, i ovo neće uvek raditi. +- Možete koristiti **Frida** (opisana dalje) da zaobiđete ovu zaštitu. 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 presrećete, 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) +- Takođe možete pokušati da **automatski zaobiđete SSL Pinning** koristeći **MobSF dynamic analysis** (objašnjeno niže) +- Ako i dalje mislite da postoji saobraćaj koji ne presrećete, možete pokušati da **prosledite saobraćaj u Burp 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 +#### Looking for Common Web Vulnerabilities -Važno je takođe tražiti uobičajene web ranjivosti unutar aplikacije. Detaljne informacije o identifikaciji i ublažavanju ovih ranjivosti su van okvira ovog sažetka, ali su opširno pokrivene drugde. +Važno je takođe tražiti uobičajene web ranjivosti unutar aplikacije. Detaljne informacije o identifikaciji i mitigaciji ovih ranjivosti su izvan opsega ovog sažetka, ali su široko pokrivene drugde. ### Frida -[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. +[Frida](https://www.frida.re) je toolkit za dinamičku instrumentaciju za developere, reverse-engineere i istraživače bezbednosti.\ +**Možete pristupiti pokrenutoj aplikaciji i hook-ovati metode u runtime-u da promenite ponašanje, menjate vrednosti, izvlačite vrednosti, izvršavate drugačiji kod...**\ +Ako želite da pentest Android aplikacije morate znati kako da koristite Frida. -- Naučite kako koristiti Frida: [**Frida tutorijal**](frida-tutorial/index.html) -- Neki "GUI" za akcije sa Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) +- Naučite kako da koristite Frida: [**Frida tutorial**](frida-tutorial/index.html) +- Neki "GUI" za rad 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)) +- Možete naći neke odlične Frida skripte ovde: [**https://codeshare.frida.re/**](https://codeshare.frida.re) +- Pokušajte zaobići anti-debugging / anti-frida mehanizme učitavanjem Frida kako je navedeno 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)) -#### Anti-instrumentacija & radni tok za zaobilaženje SSL pinninga +#### Anti-instrumentation & SSL pinning bypass workflow {{#ref}} android-anti-instrumentation-and-ssl-pinning-bypass.md {{#endref}} -### **Dump Memorije - Fridump** +### **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. +Proverite da li aplikacija skladišti osetljive informacije u memoriji koje ne bi trebalo da skladišti, kao što su lozinke ili mnemonici. -Korišćenjem [**Fridump3**](https://github.com/rootbsd/fridump3) možete dumpovati memoriju aplikacije sa: +Koristeći [**Fridump3**](https://github.com/rootbsd/fridump3) možete dump-ovati memoriju aplikacije sa: ```bash # With PID python3 fridump3.py -u @@ -471,63 +528,63 @@ python3 fridump3.py -u frida-ps -Uai python3 fridump3.py -u "" ``` -Ovo će isprazniti memoriju u ./dump folder, i tamo možete pretraživati sa nečim poput: +Ovo će dump the memory u ./dump direktorijumu, i tamo možete pokrenuti 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]+$" ``` -### **Osetljivi podaci u Keystore-u** +### **Osetljivi podaci u Keystore** -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. +U Androidu je Keystore najbolje mesto za čuvanje osetljivih podataka, međutim, uz dovoljne privilegije i dalje je **moguće mu pristupiti**. Pošto aplikacije često ovde skladište **osetljive podatke u nešifrovanom obliku**, pentests bi trebalo da to provere, jer root user ili neko sa fizičkim pristupom uređaju može da ukrade te podatke. -Čak i ako aplikacija čuva podatke u keystore-u, podaci bi trebali biti enkriptovani. +Čak i ako aplikacija skladišti podatke u Keystore-u, podaci bi trebalo da budu šifrovani. -Da biste pristupili podacima unutar keystore-a, možete koristiti ovaj Frida skript: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) +Za pristup podacima unutar Keystore-a možete koristiti ovaj Frida script: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) ```bash frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` -### **Zaobilaženje otiska prsta/bio-metrike** +### **Fingerprint/Biometrics Bypass** -Korišćenjem sledećeg Frida skripta može biti moguće **zaobići autentifikaciju otiskom prsta** koju Android aplikacije mogu sprovoditi kako bi **zaštitile određena osetljiva područja:** +Korišćenjem sledeće Frida skripte moguće je **bypass fingerprint authentication** koje Android aplikacije mogu koristiti da bi **zaštitile određene osetljive oblasti:** ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` -### **Pozadine Slike** +### **Pozadinske slike** -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 **snapshot of the application** tako da kada se vrati u prednji plan, prvo učitava tu sliku pre same aplikacije pa izgleda da se aplikacija brže učitava. -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). +Međutim, ako ovaj snapshot sadrži **osetljive informacije**, neko sa pristupom snapshotu može **ukrasti te informacije** (napomena: potreban je root da biste mu pristupili). -Snimci se obično čuvaju na: **`/data/system_ce/0/snapshots`** +Snapshots se obično čuvaju na: **`/data/system_ce/0/snapshots`** -Android pruža način da **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. +Android pruža način da **prevent the screenshot capture by setting the FLAG_SECURE** layout parameter. Korišćenjem ovog FLAG_SECURE flag-a, sadržaj prozora se tretira kao siguran, sprečavajući njegovo pojavljivanje u screenshots ili pregled na nesigurnim prikazima. ```bash getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ``` ### **Android Application Analyzer** -Ovaj alat može pomoći u upravljanju različitim alatima tokom dinamičke analize: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer) +Ovaj alat može pomoći pri upravljanju različitim alatima tokom dynamic analysis: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer) ### Intent Injection -Programeri često kreiraju proxy komponente kao što su aktivnosti, servisi i prijemnici koji obrađuju ove Intente i prosleđuju ih metodama kao što su `startActivity(...)` ili `sendBroadcast(...)`, što može biti rizično. +Developeri često prave proxy komponente kao što su activities, services, i broadcast receivers koje obrađuju ove Intents 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 injekcija Intenta. +Opasnost leži u tome što se napadačima može dozvoliti da pokrenu non-exported app components ili pristupe osetljivim content providers tako što će pogrešno usmeriti ove Intents. Značajan primer je `WebView` komponenta koja konvertuje URL-ove u `Intent` objekte preko `Intent.parseUri(...)` i potom ih izvršava, što može dovesti do malicious Intent injections. ### 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. -- Može izložiti neizvezene komponente i provajdere sadržaja napadačima. -- Konverzija URL-a u `Intent` u `WebView` može olakšati nepredviđene radnje. +- **Intent Injection** is similar to web's Open Redirect issue. +- Exploits involve passing `Intent` objects as extras, which can be redirected to execute unsafe operations. +- It can expose non-exported components and content providers to attackers. +- `WebView`’s URL to `Intent` conversion can facilitate unintended actions. ### Android Client Side Injections and others -Verovatno znate o ovim vrstama ranjivosti sa weba. Morate biti posebno oprezni sa ovim ranjivostima u Android aplikaciji: +Verovatno poznajete ovaj tip ranjivosti sa Web-a. Posebno morate biti oprezni sa ovim ranjivostima u Android aplikaciji: -- **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 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. +- **SQL Injection:** When dealing with dynamic queries or Content-Providers ensure you are using parameterized queries. +- **JavaScript Injection (XSS):** Verify that JavaScript and Plugin support is disabled for any WebViews (disabled by default). [More info here](webview-attacks.md#javascript-enabled). +- **Local File Inclusion:** WebViews should have access to the file system disabled (enabled by default) - `(webview.getSettings().setAllowFileAccess(false);)`. [More info here](webview-attacks.md#javascript-enabled). +- **Eternal cookies**: U više slučajeva, kada android aplikacija završi sesiju, cookie nije opozvan ili čak može biti sačuvan na disk - [**Secure Flag** in cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags) --- @@ -540,51 +597,51 @@ Verovatno znate o ovim vrstama ranjivosti sa weba. Morate biti posebno oprezni s ![](<../../images/image (866).png>) -**Procena ranjivosti aplikacije** koristeći lep web-baziran frontend. Takođe možete izvršiti dinamičku analizu (ali morate pripremiti okruženje). +**Vulnerability assessment of the application** koristeći lepo web-based frontend. Takođe možete izvršiti dynamic analysis (ali morate pripremiti environment). ```bash docker pull opensecurity/mobile-security-framework-mobsf docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest ``` -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. +Primetite da MobSF može da analizira **Android**(apk)**, IOS**(ipa) **i Windows**(apx) aplikacije (_Windows applications must be analyzed from a MobSF installed in a Windows host_).\ +Takođe, ako napravite **ZIP** fajl sa source code-om ako je u pitanju **Android** ili **IOS** app (idi u root folder aplikacije, izaberi sve i napravi ZIPfile), moći će da ga analizira takođe. -MobSF takođe omogućava **diff/Compare** analizu i integraciju **VirusTotal** (biće potrebno da postavite svoj API ključ u _MobSF/settings.py_ i omogućite ga: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Takođe možete postaviti `VT_UPLOAD` na `False`, tada će **hash** biti **upload** umesto datoteke. +MobSF takođe dozvoljava da uradite **diff/Compare** analiza i da integrišete **VirusTotal** (neophodno je da podesiš svoj API ključ u _MobSF/settings.py_ i omogućiš ga: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Možete takođe postaviti `VT_UPLOAD` na `False`, tada će se umesto fajla upload-ovati **hash**. -### Pomoćna dinamička analiza sa MobSF +### Assisted Dynamic analysis with MobSF -**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: +**MobSF** može biti vrlo koristan i za **dynamic analysis** na **Android**, ali u tom slučaju treba da instaliraš MobSF i **genymotion** na svom hostu (VM ili Docker neće raditi). _Note: You need to **start first a VM in genymotion** and **then MobSF.**_\ +**MobSF dynamic analyser** 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 application data** (URLs, logs, clipboard, screenshots made by you, screenshots made by "**Exported Activity Tester**", emails, SQLite databases, XML files, and other created files). Sve ovo se radi automatski osim screenshot-ova — za njih moraš pritisnuti kad želiš screenshot ili pritisnuti "**Exported Activity Tester**" da bi dobio screenshot-ove svih exported activities. +- Capture **HTTPS traffic** +- Use **Frida** to obtain **runtime** **information** -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. +Od android **verzija > 5**, automatski će pokrenuti Frida i postaviti globalna **proxy** podešavanja da bi **capture**-ovao saobraćaj. Uhvaćen će biti 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 interesantnih API-a**.\ -MobSF takođe može **pozvati eksportovane aktivnosti**, uhvatiti **screenshot-ove** njih i **sačuvati** ih za izveštaj. +Po default-u, koristiće i neke Frida Scripts da **bypass SSL pinning**, **root detection** i **debugger detection** i da **monitor**-uje zanimljive API-je.\ +MobSF takođe može da **invoke exported activities**, napravi **screenshots** i **sačuva** 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 bi **pokrenuo** dynamic testing pritisni zeleno dugme: "**Start Instrumentation**". Pritisni "**Frida Live Logs**" da vidiš logove koje generišu Frida skripte i "**Live API Monitor**" da vidiš sve pozive na hooked metode, prosleđene argumente i vraćene vrednosti (ovo će se pojaviti nakon pritiskanja "Start Instrumentation").\ +MobSF takođe dozvoljava da učitaš svoje **Frida scripts** (da bi poslao rezultate svojih Frida skripti u MobSF koristi funkciju `send()`). Ima i **nekoliko prethodno napisanih skripti** koje možeš učitati (možeš dodati još u `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), samo ih **selektuj**, pritisni "**Load**" i pritisni "**Start Instrumentation**" (moći ćeš da vidiš logove tih skripti unutar "**Frida Live Logs**"). ![](<../../images/image (419).png>) -Pored toga, imate neke pomoćne Frida funkcionalnosti: +Pored toga, imaš 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 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. +- **Capture Strings**: Ispisaće sve capture strings dok koristiš aplikaciju (veoma noisy) +- **Capture String Comparisons**: Može biti vrlo korisno. Prikazaće **dve string vrednosti koje se upoređuju** i da li je rezultat True ili False. +- **Enumerate Class Methods**: Unesi ime klase (npr. "java.io.File") i ispišaće sve metode klase. +- **Search Class Pattern**: Pretražuj klase po pattern-u +- **Trace Class Methods**: **Trace** celu **klasu** (vidi input-e i output-e svih metoda klase). Zapamti da po default-u MobSF trace-uje nekoliko interesantnih 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 izabereš pomoćni modul koji želiš da koristiš, potrebno je da pritisneš "**Start Intrumentation**" i sve izlaze ćeš videti u "**Frida Live Logs**". **Shell** -Mobsf takođe donosi shell sa nekim **adb** komandama, **MobSF komandama**, i uobičajenim **shell** **komandama** na dnu stranice dinamičke analize. Neke zanimljive komande: +Mobsf ti takođe daje shell sa nekim **adb** komandama, **MobSF commands**, i uobičajenim **shell** **commands** na dnu stranice za dynamic analysis. Neke interesantne komande: ```bash help shell ls @@ -595,32 +652,32 @@ 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.\ -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 je HTTP saobraćaj uhvaćen možete videti ružan prikaz uhvaćenog saobraćaja na "**HTTP(S) Traffic**" dugmetu ili lepši prikaz na zelenom dugmetu "**Start HTTPTools**". Iz druge opcije možete **poslati** **uhvaćene zahteve** na **proxies** kao Burp ili Owasp ZAP.\ +Da biste to uradili, _power on Burp -->_ _turn off Intercept --> in MobSB HTTPTools select the request_ --> pritisnite "**Send to Fuzzer**" --> _select the proxy address_ ([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. +Kada završite dinamičku analizu sa MobSF možete pritisnuti "**Start Web API Fuzzer**" da **fuzz** HTTP zahteve i tražite ranjivosti. > [!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: +> Nakon izvršene dinamičke analize sa MobSF, proxy podešavanja mogu biti pogrešno konfigurisana i možda ih nećete moći popraviti iz GUI-ja. Možete popraviti proxy podešavanja ovako: > > ``` > adb shell settings put global http_proxy :0 > ``` -### Pomoćna dinamička analiza sa Inspeckage +### Pomoćena dinamička analiza sa Inspeckage -Možete preuzeti alat sa [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ +Alat možete preuzeti sa [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ Ovaj alat koristi neke **Hooks** da vam pokaže **šta se dešava u aplikaciji** dok vršite **dinamičku analizu**. ### [Yaazhini](https://www.vegabird.com/yaazhini/) -Ovo je **sjajan alat za izvođenje statičke analize sa GUI-jem** +Ovo je **odličan alat za izvođenje statičke analize sa GUI-jem** ![](<../../images/image (741).png>) ### [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 **bezbednosno povezanih ranjivosti Android aplikacija**, bilo u **izvornom kodu** ili u **pakovanim APK-ovima**. Alat je takođe sposoban da kreira "Proof-of-Concept" deployable APK i ADB komande, kako bi iskoristio neke od pronađenih ranjivosti (Exposed activities, intents, tapjacking...). Kao i sa Drozer, nema potrebe da root-ujete test uređaj. ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk @@ -629,22 +686,22 @@ qark --java path/to/specific/java/file.java ``` ### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git) -- 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 +- Prikazuje sve izvučene fajlove radi lakšeg pregleda +- Automatski dekompajlira APK fajlove u Java i Smali format +- Analizira AndroidManifest.xml u potrazi za uobičajenim ranjivostima i ponašanjem +- Statička analiza izvornog koda radi otkrivanja uobičajenih ranjivosti i ponašanja - Informacije o uređaju -- i još mnogo toga +- i još ```bash 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, i koja analizira _.apk_ fajlove u potrazi za ranjivostima. To radi dekompresovanjem APKs 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 smeštena u fajlu `rules.json`, i svaka kompanija ili tester može kreirati sopstvena pravila za analizu onoga što im je potrebno. -Preuzmite najnovije binarne datoteke sa [strane za preuzimanje](https://superanalyzer.rocks/download.html) +Preuzmite najnovije binarne fajlove sa [download page](https://superanalyzer.rocks/download.html) ``` super-analyzer {apk_file} ``` @@ -652,17 +709,17 @@ super-analyzer {apk_file} ![](<../../images/image (297).png>) -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. +StaCoAn je **crossplatform** alat koji pomaže razvijačima, bugbounty hunters i ethical hackers pri izvođenju [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. +Koncept je da prevučete i ispustite datoteku vaše mobilne aplikacije (fajl .apk ili .ipa) na StaCoAn aplikaciju i ona će za vas generisati vizuelni i prenosivi izveštaj. Možete prilagoditi podešavanja i wordlists kako biste dobili prilagođeno iskustvo. -Preuzmite [latest release](https://github.com/vincentcox/StaCoAn/releases): +Preuzmite[ latest release](https://github.com/vincentcox/StaCoAn/releases): ``` ./stacoan ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs_Framework) -AndroBugs Framework je sistem za analizu ranjivosti na Androidu koji pomaže programerima ili hakerima da pronađu potencijalne sigurnosne ranjivosti u Android aplikacijama.\ +AndroBugs Framework je sistem za analizu ranjivosti za Android koji pomaže developerima ili hackersima da pronađu potencijalne sigurnosne ranjivosti u Android aplikacijama.\ [Windows releases](https://github.com/AndroBugs/AndroBugs_Framework/releases) ``` python androbugs.py -f [APK file] @@ -670,11 +727,11 @@ androbugs.exe -f [APK file] ``` ### [Androwarn](https://github.com/maaaaz/androwarn) -**Androwarn** je alat čija je glavna svrha da detektuje i upozori korisnika na potencijalno zloćudno ponašanje koje razvija Android aplikacija. +**Androwarn** je alat čiji je glavni cilj da detektuje i upozori korisnika na potencijalna maliciozna ponašanja razvijena od strane Android aplikacije. -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 pomoću **static analysis** Dalvik bytecode-a aplikacije, prikazanog kao **Smali**, koristeći biblioteku [`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čajena ponašanja "loših" aplikacija** kao što su: Telephony identifiers exfiltration, Audio/video flow interception, PIM data modification, Arbitrary code execution... ``` python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ``` @@ -682,79 +739,82 @@ 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 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. +**MARA** je okvir za reverzni inženjering i analizu mobilnih aplikacija. To je alat koji okuplja često korišćene alate za reverzni inženjering i analizu mobilnih aplikacija, kako bi pomogao pri testiranju mobilnih aplikacija protiv OWASP mobile security pretnji. Njegov cilj je da ovaj zadatak učini lakšim i pristupačnijim za developere mobilnih aplikacija i bezbednosne profesionalce. -Može da: +Može: -- Izvlači Java i Smali kod koristeći različite alate -- Analizira APK-ove koristeći: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) -- Izvlači privatne informacije iz APK-a koristeći regex. -- Analizira Manifest. -- Analizira pronađene domene koristeći: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) i [whatweb](https://github.com/urbanadventurer/WhatWeb) -- Deobfuskira APK putem [apk-deguard.com](http://www.apk-deguard.com) +- Ekstrahovati Java i Smali kod koristeći različite alate +- Analizirati APK-ove koristeći: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) +- Ekstrahovati privatne informacije iz APK-a korišćenjem regexp-ova. +- Analizirati Manifest. +- Analizirati pronađene domene koristeći: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) i [whatweb](https://github.com/urbanadventurer/WhatWeb) +- Deobfuskovati APK preko [apk-deguard.com](http://www.apk-deguard.com) ### Koodous -Koristan za otkrivanje malvera: [https://koodous.com/](https://koodous.com) +Koristan za detekciju malvera: [https://koodous.com/](https://koodous.com) ## Obfuscating/Deobfuscating code -Napomena da u zavisnosti od usluge i konfiguracije koju koristite za obfuskaciju koda. Tajne mogu ili ne moraju biti obfuskirane. +Imajte na umu da, u zavisnosti od servisa i konfiguracije koju koristite za obfuskaciju koda, tajne mogu biti ili ne moraju biti obfuskirane. ### [ProGuard]() -Sa [Vikipedije](): **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. +From [Wikipedia](): **ProGuard** je open source alat komandne linije koji smanjuje, optimizuje i obfuskira Java kod. Sposoban je da optimizuje bajtkod kao i da detektuje i ukloni neiskorišćene instrukcije. ProGuard je slobodan 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-a i radi prilikom buildovanja aplikacije u release modu. ### [DexGuard](https://www.guardsquare.com/dexguard) -Pronađite vodič korak po korak za deobfuskaciju apk-a na [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) +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 je bio: +(Prema ovom vodiču) Poslednji put kada smo proverili, način rada DexGuard-a je bio: -- učitati resurs kao InputStream; -- 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 dobili DEX datoteku; -- konačno učitati dobijeni DEX kao Resurs koristeći metodu `loadDex`. +- učitaj resurs kao InputStream; +- prosledi rezultat klasi koja nasleđuje FilterInputStream da bi ga dekriptovala; +- uradi neku beskorisnu obfuskaciju da bi potrošio nekoliko minuta reverzera; +- prosledi dekriptovani rezultat ZipInputStream-u da bi dobio DEX fajl; +- konačno učitaj rezultujući DEX kao Resource koristeći `loadDex` metodu. ### [DeGuard](http://apk-deguard.com) -**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.** +**DeGuard vraća proces obfuskacije koji izvode Android alati za obfuskaciju. Ovo omogućava brojne bezbednosne analize, uključujući inspekciju koda i predviđanje biblioteka.** -Možete da otpremite obfuskovani APK na njihovu platformu. +Možete otpremiti obfuskirani APK na njihovu platformu. -### [Deobfuscate android App](https://github.com/In3tinct/deobfuscate-android-app) +### [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's Gemini public API. ### [Simplify](https://github.com/CalebFenton/simplify) -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ši 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 deobfuskator za Android. 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 bude lakši za razumevanje ljudima. Svaki tip optimizacije je jednostavan i generički, tako da nije važno koji specifični tip obfuskacije je korišćen. ### [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 tome kako je APK napravljen. Identifikuje mnoge kompajlere, packere, obfuskatore i druge neobične stvari. To je [_PEiD_](https://www.aldeid.com/wiki/PEiD) za Android. ### Manual -[Pročitajte ovaj tutorijal da naučite neke trikove o **kako da reverzujete prilagođenu obfuskaciju**](manual-deobfuscation.md) +[Read this tutorial to learn some tricks on **how to reverse custom obfuscation**](manual-deobfuscation.md) ## Labs ### [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 sigurnosna virtuelna mašina zasnovana na ubuntu-mate koja uključuje kolekciju najnovijih framework-ova, tutorijala i laboratorija od različitih security geeka i istraživača za reverse engineering 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 Android-u +- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Android quick course - [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) +- [SSLPinDetect: Advanced SSL Pinning Detection for Android Security Analysis](https://petruknisme.medium.com/sslpindetect-advanced-ssl-pinning-detection-for-android-security-analysis-1390e9eca097) +- [SSLPinDetect GitHub](https://github.com/aancw/SSLPinDetect) +- [smali-sslpin-patterns](https://github.com/aancw/smali-sslpin-patterns) ## Yet to try