diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index c56d9d105..c1092725e 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -1,10 +1,11 @@ -# Android Applications Pentesting +# Programu za Android Pentesting {{#include ../../banners/hacktricks-training.md}} -## Msingi wa Maombi ya Android +## Misingi ya Programu za Android + +Inashauriwa sana kuanza kusoma ukurasa huu ili kujue kuhusu **sehemu muhimu zaidi zinazohusiana na usalama wa Android na vipengele hatari zaidi katika programu ya Android**: -Inapendekezwa sana kuanza kusoma ukurasa huu ili kujua kuhusu **sehemu muhimu zaidi zinazohusiana na usalama wa Android na vipengele hatari zaidi katika programu ya Android**: {{#ref}} android-applications-basics.md @@ -12,24 +13,24 @@ android-applications-basics.md ## ADB (Android Debug Bridge) -Hii ni zana kuu unayohitaji kuungana na kifaa cha android (kilichosimuliwa au halisi).\ -**ADB** inaruhusu kudhibiti vifaa ama kupitia **USB** au **Mtandao** kutoka kwa kompyuta. Hii huduma inaruhusu **kuhamasisha** faili katika mwelekeo wote, **kusakinisha** na **kuondoa** programu, **kutekeleza** amri za shell, **kufanya nakala** ya data, **kusoma** kumbukumbu, kati ya kazi nyingine. +Hii ni zana kuu unayohitaji kuunganisha na kifaa cha Android (kilichoiga au cha kimwili).\ +**ADB** inaruhusu kudhibiti vifaa kupitia **USB** au **mtandao** kutoka kwa kompyuta. Huduma hii inafanya iwezekane **kunakili** faili kwa pande zote mbili, **kusakinisha** na **kuondoa** apps, **kutekeleza** amri za shell, **kutengeneza nakala (backup)** za data, **kusoma** logi, pamoja na kazi nyingine. -Angalia orodha ifuatayo ya [**ADB Commands**](adb-commands.md) kujifunza jinsi ya kutumia adb. +Tazama orodha ifuatayo ya [**ADB Commands**](adb-commands.md) ili kujifunza jinsi ya kutumia adb. ## Smali -Wakati mwingine ni muhimu **kubadilisha msimbo wa programu** ili kufikia **habari zilizofichwa** (labda nywila au bendera zilizofichwa vizuri). Hivyo, inaweza kuwa ya kuvutia decompile apk, kubadilisha msimbo na kuirekebisha.\ -[**Katika mafunzo haya** unaweza **kujifunza jinsi ya decompile APK, kubadilisha msimbo wa Smali na kuirekebisha APK** na kazi mpya](smali-changes.md). Hii inaweza kuwa ya manufaa kama **mbadala wa majaribio kadhaa wakati wa uchambuzi wa dinamik** ambao utawasilishwa. Hivyo, **weka daima katika akili uwezekano huu**. +Wakati mwingine ni vyema **kubadilisha msimbo wa programu** ili kupata **taarifa zilizofichwa** (labda nywila zilizofichwa vizuri au flagi). Kisha, inaweza kuwa muhimu ku-decompile apk, kubadilisha msimbo na ku-recompile tena.\ +[**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). Hii inaweza kuwa muhimu kama **mbadala kwa vipimo kadhaa wakati wa uchambuzi wa dynamic** utakaowasilishwa. Basi, **kumbuka kila wakati uwezekano huu**. -## Njia nyingine za kuvutia +## Mbinu nyingine za kuvutia - [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) -- **Pakua APKs**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) -- Extract APK from device: +- **Download APKs**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) +- Toa APK kutoka kifaa: ```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 ``` -- Unganisha vipande vyote na apks za msingi kwa kutumia [APKEditor](https://github.com/REAndroid/APKEditor): +- Unganisha splits zote na base apks kwa kutumia [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 @@ -48,7 +49,7 @@ java -jar ../APKEditor.jar m -i splits/ -o merged.apk # after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed ``` -## Case Studies & Vulnerabilities +## Mifano ya Kesi na Udhaifu {{#ref}} @@ -60,41 +61,41 @@ 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}} -## Static Analysis +## Uchambuzi wa Statiki -Kwanza kabisa, kwa kuchambua APK unapaswa **kuangalia msimbo wa Java** kwa kutumia decompiler.\ -Tafadhali, [**soma hapa kupata taarifa kuhusu decompilers mbalimbali zinazopatikana**](apk-decompilers.md). +Kwanza kabisa, kwa kuchambua APK unapaswa **kutazama msimbo wa Java** kwa kutumia decompiler.\ +Please, [**read here to find information about different available decompilers**](apk-decompilers.md). -### Kuangalia Taarifa za Kuvutia +### Kutafuta Taarifa Zinazovutia -Kwa kuangalia **nyuzi** za APK unaweza kutafuta **nywila**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** funguo, **sifuri**, **bluetooth uuids**, **tokens** na chochote kinachovutia... angalia hata kwa utekelezaji wa msimbo **backdoors** au backdoors za uthibitishaji (akili za admin zilizowekwa ndani ya programu). +Kwa kuangalia tu **strings** za APK unaweza kutafuta **passwords**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** keys, **encryption**, **bluetooth uuids**, **tokens** na chochote kinachovutia... angalia hata kwa code execution **backdoors** au authentication backdoors (hardcoded admin credentials kwa app). **Firebase** -Lipa kipaumbele maalum kwa **firebase URLs** na angalia kama imewekwa vibaya. [Taarifa zaidi kuhusu nini FIrebase na jinsi ya kuikandamiza hapa.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) +Lipa kipaumbele maalum kwa **firebase URLs** na angalia ikiwa imekonfiguriwa vibaya. [More information about whats is FIrebase and how to exploit it here.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) -### Uelewa wa Msingi wa Programu - Manifest.xml, strings.xml +### Uelewa wa Msingi wa programu - Manifest.xml, strings.xml -**Uchambuzi wa faili za _Manifest.xml_ za programu na **_strings.xml_** unaweza kufichua udhaifu wa usalama**. Faili hizi zinaweza kufikiwa kwa kutumia decompilers au kwa kubadilisha kiendelezi cha faili cha APK kuwa .zip na kisha kuzipa. +Ukaguzi wa faili za programu _Manifest.xml_ na _strings.xml_ unaweza kubaini udhaifu wa usalama. Faili hizi zinaweza kupatikana kwa kutumia decompilers au kwa kubadilisha extension ya faili ya APK kuwa .zip kisha kuizipisha. -**Udhaifu** ulioainishwa kutoka kwa **Manifest.xml** ni pamoja na: +Udhaifu unaobainika kutoka Manifest.xml ni pamoja na: -- **Programu Zinazoweza Kuwekwa Debug**: Programu zilizowekwa kama debuggable (`debuggable="true"`) katika faili ya _Manifest.xml_ zinatoa hatari kwani zinaruhusu muunganisho ambao unaweza kusababisha unyakuzi. Kwa uelewa zaidi kuhusu jinsi ya kuikandamiza programu zinazoweza kuwekwa debug, rejelea mafunzo kuhusu kutafuta na kuikandamiza programu zinazoweza kuwekwa debug kwenye kifaa. -- **Mipangilio ya Nakala**: Sifa ya `android:allowBackup="false"` inapaswa kuwekwa wazi kwa programu zinazoshughulika na taarifa nyeti ili kuzuia nakala zisizoidhinishwa kupitia adb, hasa wakati urekebishaji wa usb umewezeshwa. -- **Usalama wa Mtandao**: Mipangilio ya usalama wa mtandao ya kawaida (`android:networkSecurityConfig="@xml/network_security_config"`) katika _res/xml/_ inaweza kubainisha maelezo ya usalama kama vile pini za cheti na mipangilio ya trafiki ya HTTP. Mfano ni kuruhusu trafiki ya HTTP kwa maeneo maalum. -- **Shughuli na Huduma Zilizotolewa**: Kutambua shughuli na huduma zilizotolewa katika manifest kunaweza kuonyesha vipengele ambavyo vinaweza kutumika vibaya. Uchambuzi zaidi wakati wa upimaji wa dynamic unaweza kufichua jinsi ya kuikandamiza vipengele hivi. -- **Watoa Maudhui na Watoa Faili**: Watoa maudhui walio wazi wanaweza kuruhusu ufikiaji usioidhinishwa au mabadiliko ya data. Mipangilio ya Watoa Faili pia inapaswa kuchunguzwa. -- **Vikumbusho vya Matangazo na Mipango ya URL**: Vipengele hivi vinaweza kutumika kwa unyakuzi, huku kukiwa na umakini maalum kuhusu jinsi mipango ya URL inavyoshughulikiwa kwa udhaifu wa ingizo. -- **Toleo la SDK**: Sifa za `minSdkVersion`, `targetSDKVersion`, na `maxSdkVersion` zinaonyesha toleo la Android linaloungwa mkono, zikisisitiza umuhimu wa kutosaidia toleo la zamani la Android lililo na udhaifu kwa sababu za usalama. +- **Maombi yanayoweza ku-debug (Debuggable Applications)**: Maombi yaliyowekwa kama `debuggable="true"` katika _Manifest.xml_ yanaweza kuwapo kwa hatari kwa sababu yanaruhusu muunganisho ambao unaweza kusababisha exploitation. Kwa uelewa zaidi kuhusu jinsi ya ku-exploit applications zilizo set kama debuggable, angalia tutorial za kutafuta na ku-exploit applications debuggable kwenye kifaa. +- **Mipangilio ya Backup**: Attribute `android:allowBackup="false"` inapaswa kuwekwa wazi kwa applications zinazoendesha habari nyeti ili kuzuia backups zisizoidhinishwa za data kupitia adb, hasa wakati usb debugging imewezeshwa. +- **Network Security**: Custom network security configurations (`android:networkSecurityConfig="@xml/network_security_config"`) katika _res/xml/_ zinaweza kubainisha maelezo ya usalama kama certificate pins na mipangilio ya HTTP traffic. Mfano ni kuruhusu HTTP traffic kwa domain maalum. +- **Exported Activities and Services**: Kutambua exported activities na services katika manifest kunaweza kuonyesha components ambazo zinaweza kutumika vibaya. Uchambuzi zaidi wakati wa dynamic testing unaweza kubaini jinsi ya ku-exploit components hizi. +- **Content Providers and FileProviders**: Content providers zilizo wazi zinaweza kuruhusu upatikanaji usioidhinishwa au marekebisho ya data. Muundo wa FileProviders pia unapaswa kuchunguzwa. +- **Broadcast Receivers and URL Schemes**: Components hizi zinaweza kutumika kwa exploitation, hasa kwa kuzingatia jinsi URL schemes zinavyosimamiwa kwa ajili ya udhaifu wa input. +- **SDK Versions**: `minSdkVersion`, `targetSDKVersion`, na `maxSdkVersion` zinaonyesha matoleo ya Android yanayotumika, zikibainisha umuhimu wa kutojisikia kwa matoleo ya Android yasiyokuwa salama kwa sababu za usalama. -Kutoka kwa faili ya **strings.xml**, taarifa nyeti kama funguo za API, mipango ya kawaida, na maelezo mengine ya waendelezaji yanaweza kugundulika, yakisisitiza hitaji la ukaguzi wa makini wa rasilimali hizi. +Kutoka kwa faili ya **strings.xml**, habari nyeti kama API keys, custom schemas, na maelezo mengine ya developer zinaweza kugunduliwa, ikisisitiza haja ya kupitia rasilimali hizi kwa uangalifu. ### Tapjacking -**Tapjacking** ni shambulio ambapo **programu** **mbaya** inazinduliwa na **kujiweka juu ya programu ya mwathirika**. Mara tu inapoificha wazi programu ya mwathirika, kiolesura chake cha mtumiaji kimeundwa kwa njia ya kudanganya mtumiaji kuingiliana nayo, wakati inapitisha mwingiliano huo kwa programu ya mwathirika.\ -Kwa hivyo, inafanya **mtumiaji kuwa kipofu kwa kujua kwamba kwa kweli wanatekeleza vitendo kwenye programu ya mwathirika**. +Tapjacking ni attack ambapo malicious application inazinduliwa na kujipanga juu ya victim application. Mara inapofunika kwa muonekano victim app, user interface yake imeundwa kwa njia ya kumdanganya mtumiaji kuingiliana nayo, wakati inapipitisha interaction hiyo kwa victim app.\ +Kwa vitendo, inamficha mtumiaji kutoka kujua kwamba kwa kweli anatekeleza vitendo kwenye victim app. -Pata taarifa zaidi katika: +Find more information in: {{#ref}} @@ -103,126 +104,126 @@ tapjacking.md ### Task Hijacking -**shughuli** yenye **`launchMode`** iliyowekwa kuwa **`singleTask` bila `taskAffinity`** iliyofafanuliwa inakabiliwa na hatari ya task Hijacking. Hii inamaanisha kwamba, **programu** inaweza kusakinishwa na ikiwa itazinduliwa kabla ya programu halisi inaweza **kuhijack kazi ya programu halisi** (hivyo mtumiaji atakuwa akifanya kazi na **programu mbaya akidhani anatumia halisi**). +Activity yenye `launchMode` iliyowekwa kwa `singleTask` bila `taskAffinity` yoyote iliyotajwa ni nyeti kwa task Hijacking. Hii inamaanisha kwamba application inaweza kusanikishwa na ikiwa itazinduliwa kabla ya application halisi inaweza hijack task ya application halisi (hivyo mtumiaji atakuwa akishirikiana na malicious application akidhani anatumia ile halisi). -Taarifa zaidi katika: +More info in: {{#ref}} android-task-hijacking.md {{#endref}} -### Hifadhi ya data isiyo salama +### Insecure data storage -**Hifadhi ya Ndani** +**Internal Storage** -Katika Android, faili **zilizohifadhiwa** katika **hifadhi ya ndani** zimeundwa kuwa **zinapatikana** pekee na **programu** iliyozitengeneza. Kipimo hiki cha usalama kinatekelezwa na mfumo wa uendeshaji wa Android na kwa ujumla kinatosha kwa mahitaji ya usalama ya programu nyingi. Hata hivyo, waendelezaji wakati mwingine hutumia njia kama `MODE_WORLD_READABLE` na `MODE_WORLD_WRITABLE` ili **kuruhusu** faili kushirikiwa kati ya programu tofauti. Hata hivyo, njia hizi **hazizuii ufikiaji** wa faili hizi na programu nyingine, ikiwa ni pamoja na zile zenye nia mbaya. +Katika Android, faili zilizohifadhiwa katika internal storage zimeundwa zilipwe kupatikana kikamilifu na app iliyozizalisha. Hatua hii ya usalama inatekelezwa na mfumo wa uendeshaji wa Android na kwa kawaida ni ya kutosha kwa mahitaji ya usalama ya applications nyingi. Hata hivyo, developers wakati mwingine hutumia mode kama `MODE_WORLD_READABLE` na `MODE_WORLD_WRITABLE` kuruhusu faili kushirikiwa kati ya applications tofauti. Mode hizi hazizuizi upatikanaji wa faili hizi na applications nyingine, pamoja na zile ambazo zinaweza kuwa malicious. -1. **Uchambuzi wa Kimuundo:** -- **Hakikisha** kwamba matumizi ya `MODE_WORLD_READABLE` na `MODE_WORLD_WRITABLE` yanachunguzwa kwa makini. Njia hizi **zinaweza kufichua** faili kwa **ufikiaji usioidhinishwa au usio kusudiwa**. -2. **Uchambuzi wa Kijamii:** -- **Thibitisha** **idhini** zilizowekwa kwenye faili zilizoundwa na programu. Kwa haswa, **angalia** kama faili yoyote imewekwa kuwa inasomeka au kuandikwa duniani kote. Hii inaweza kuwa hatari kubwa ya usalama, kwani itaruhusu **programu yoyote** iliyosakinishwa kwenye kifaa, bila kujali asili yake au nia, **kusoma au kubadilisha** faili hizi. +1. **Uchambuzi wa Statiki:** +- **Hakikisha** kwamba matumizi ya `MODE_WORLD_READABLE` na `MODE_WORLD_WRITABLE` yamechunguzwa kwa uangalifu. Mode hizi **zinaweza kuonyesha** faili kwa **upatikanaji usiotarajiwa au usioidhinishwa**. +2. **Uchambuzi wa Dinamiki:** +- **Thibitisha** **permissions** zilizowekwa kwenye faili zilizoundwa na app. Hasa, **kagua** kama kuna faili zilizowekwa kuwa **zinazosomwa au zinaandikwa na kila mtu**. Hii inaweza kuleta hatari kubwa ya usalama, kwani itamruhusu **application yoyote** iliyowekwa kwenye kifaa, bila kujali chanzo au nia yake, **kusoma au kubadilisha** faili hizi. -**Hifadhi ya Nje** +**External Storage** -Wakati wa kushughulikia faili kwenye **hifadhi ya nje**, kama vile Kadi za SD, tahadhari fulani zinapaswa kuchukuliwa: +Unaposhughulika na faili kwenye external storage, kama SD Cards, tahadhari zifuatazo zinapaswa kuchukuliwa: -1. **Ufikivu**: -- Faili kwenye hifadhi ya nje ni **zinazosomeka na kuandikwa duniani kote**. Hii inamaanisha programu au mtumiaji yeyote anaweza kufikia faili hizi. +1. **Upatikanaji**: +- Faili kwenye external storage ni **zinazosomwa na kuandikwa kwa ulimwengu mzima**. Hii inamaanisha application yoyote au mtumiaji anaweza kufikia faili hizi. 2. **Masuala ya Usalama**: -- Kwa sababu ya urahisi wa ufikiaji, inashauriwa **kutohifadhi taarifa nyeti** kwenye hifadhi ya nje. -- Hifadhi ya nje inaweza kuondolewa au kufikiwa na programu yoyote, na kuifanya kuwa isiyo salama. -3. **Kushughulikia Data kutoka Hifadhi ya Nje**: -- Daima **fanya uthibitisho wa ingizo** kwenye data iliyopatikana kutoka hifadhi ya nje. Hii ni muhimu kwa sababu data hiyo inatoka kwenye chanzo kisichoaminika. -- Kuhifadhi executable au faili za darasa kwenye hifadhi ya nje kwa ajili ya upakiaji wa dynamic kunashauriwa kutozwa. -- Ikiwa programu yako inapaswa kupata faili za executable kutoka hifadhi ya nje, hakikisha faili hizi **zimepangwa na kuthibitishwa kwa njia ya kisasa** kabla ya kupakiwa kwa dynamic. Hatua hii ni muhimu kwa kudumisha uaminifu wa usalama wa programu yako. +- Kwa kuzingatia urahisi wa upatikanaji, inashauriwa **kutoihifadhi habari nyeti** kwenye external storage. +- External storage inaweza kuondolewa au kufikiwa na application yoyote, ikifanya isiwe salama. +3. **Kushughulikia Data kutoka External Storage**: +- Daima **fanya validation ya input** kwa data inayopelekwa kutoka external storage. Hii ni muhimu kwa sababu data hiyo inatokana na chanzo kisichoaminika. +- Kuhifadhi executable au class files kwenye external storage kwa ajili ya dynamic loading inaachwa kwa hatari kubwa. +- Ikiwa application yako lazima ipate faili za executable kutoka external storage, hakikisha faili hizi zimesainiwa na kuthibitishwa kihasabu kabla ya kuzichukua kwa dynamic. Hatua hii ni muhimu kwa kudumisha uadilifu wa usalama wa application yako. -Hifadhi ya nje inaweza **kupatikana** katika `/storage/emulated/0` , `/sdcard` , `/mnt/sdcard` +External storage inaweza kufikika katika `/storage/emulated/0` , `/sdcard` , `/mnt/sdcard` > [!TIP] -> Kuanzia Android 4.4 (**API 17**), kadi ya SD ina muundo wa saraka ambao **unapunguza ufikiaji kutoka kwa programu hadi saraka ambayo ni maalum kwa programu hiyo**. Hii inazuia programu mbaya kupata ufikiaji wa kusoma au kuandika kwenye faili za programu nyingine. +> Kuanzia Android 4.4 (**API 17**), SD card ina muundo wa directories ambao unapunguza upatikanaji kutoka kwa app hadi directory iliyobuniwa kwa ajili ya app hiyo pekee. Hii inazuia malicious application kupata upatikanaji wa kusoma au kuandika faili za app nyingine. -**Taarifa nyeti zilizohifadhiwa kwa maandiko wazi** +**Sensitive data stored in clear-text** -- **Mipangilio ya pamoja**: Android inaruhusu kila programu kuhifadhi kwa urahisi faili za xml katika njia `/data/data//shared_prefs/` na wakati mwingine inawezekana kupata taarifa nyeti kwa maandiko wazi katika folda hiyo. -- **Maktaba**: Android inaruhusu kila programu kuhifadhi kwa urahisi maktaba za sqlite katika njia `/data/data//databases/` na wakati mwingine inawezekana kupata taarifa nyeti kwa maandiko wazi katika folda hiyo. +- **Shared preferences**: Android inaruhusu kila application kuhifadhi kwa urahisi faili za xml katika njia `/data/data//shared_prefs/` na wakati mwingine inawezekana kupata taarifa nyeti kwa clear-text katika folda hiyo. +- **Databases**: Android inaruhusu kila application kuhifadhi kwa urahisi sqlite databases katika njia `/data/data//databases/` na wakati mwingine inawezekana kupata taarifa nyeti kwa clear-text katika folda hiyo. -### TLS Iliyovunjika +### Broken TLS -**Kubali Vyeti Vyote** +**Accept All Certificates** -Kwa sababu fulani wakati mwingine waendelezaji wanakubali vyeti vyote hata kama kwa mfano jina la mwenyeji halifanani na mistari ya msimbo kama ifuatavyo: +Kwa sababu fulani, wakati mwingine developers wanakubali certificates zote hata kama kwa mfano hostname haifanani, kwa mistari ya code kama ifuatayo: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ``` -Njia nzuri ya kujaribu hii ni kujaribu kukamata trafiki kwa kutumia proxy kama Burp bila kuidhinisha Burp CA ndani ya kifaa. Pia, unaweza kuunda na Burp cheti kwa jina la mwenyeji tofauti na kulitumika. +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. -### Uthibitishaji wa Kificho +### Kriptografia Imevunjika -**Mchakato Mbaya wa Usimamizi wa Funguo** +**Mchakato Duni wa Usimamizi wa Vifunguo** -Wakandarasi wengine huhifadhi data nyeti katika hifadhi ya ndani na kuificha kwa funguo zilizowekwa kwa nguvu/kutabirika katika msimbo. Hii haipaswi kufanywa kwani baadhi ya kurudi nyuma kunaweza kuruhusu washambuliaji kutoa taarifa za siri. +Baadhi ya watengenezaji huhifadhi data nyeti kwenye storage ya ndani na kuiweka kwa encrypto na key iliyowekwa ndani/kutabirika ndani ya code. Hii haipaswi kufanywa kwa sababu reversing inaweza kumruhusu mshambuliaji kutoa taarifa za siri. -**Matumizi ya Algorithimu zisizo Salama na/au Zilizopitwa na Wakati** +**Matumizi ya Algorithms Yasiyo Salama na/au Yaliyopitwa na Wakati** -Wakandarasi hawapaswi kutumia **algorithimu zilizopitwa na wakati** kufanya **ukaguzi**, **hifadhi** au **tuma** data. Baadhi ya algorithimu hizi ni: RC4, MD4, MD5, SHA1... Ikiwa **hashes** zinatumika kuhifadhi nywila kwa mfano, hashes zinazopinga **brute-force** zinapaswa kutumika na chumvi. +Watengenezaji hawapaswi kutumia **deprecated algorithms** kufanya **checks** za uthibitishaji, **store** au **kutuma** data. Baadhi ya algorithms hizi ni: RC4, MD4, MD5, SHA1... Ikiwa **hashes** zinatumiwa kuhifadhi nywila kwa mfano, inapaswa kutumika hashes zenye uwezo wa kupinga brute-force pamoja na salt. -### Ukaguzi Mwingine +### Mambo mengine ya kukagua -- Inapendekezwa **kuhifadhi APK** ili kufanya kazi ya mhandisi wa kurudi kuwa ngumu kwa washambuliaji. -- Ikiwa programu ni nyeti (kama programu za benki), inapaswa kufanya **ukaguzi wake mwenyewe kuona kama simu imejikita** na kuchukua hatua. -- Ikiwa programu ni nyeti (kama programu za benki), inapaswa kuangalia kama **emulator** inatumika. -- Ikiwa programu ni nyeti (kama programu za benki), inapaswa **kuangalia uadilifu wake kabla ya kutekeleza** ili kuona kama imebadilishwa. -- Tumia [**APKiD**](https://github.com/rednaga/APKiD) kuangalia ni compiler/packer/obfuscator gani ilitumika kujenga APK +- Inashauriwa **kupotosha APK** ili kuleta ugumu kwa reverse engineer. +- Ikiwa app ni nyeti (kama apps za benki), inapaswa kufanya **mithili zake ya kukagua kama simu ime-root** na kuchukua hatua zinazofaa. +- Ikiwa app ni nyeti (kama apps za benki), inapaswa kukagua kama **emulator** inatumika. +- Ikiwa app ni nyeti (kama apps za benki), inapaswa **kukagua uadilifu wake kabla ya kuitekeleza** ili kuona ikiwa imebadilishwa. +- Tumia [**APKiD**](https://github.com/rednaga/APKiD) ili kukagua compiler/packer/obfuscator iliyotumika kujenga APK -### Programu ya React Native +### React Native Application -Soma ukurasa ufuatao kujifunza jinsi ya kufikia kwa urahisi msimbo wa javascript wa programu za React: +Soma ukurasa ufuatao kujifunza jinsi ya kupata kwa urahisi javascript code ya React applications: {{#ref}} react-native-application.md {{#endref}} -### Programu za Xamarin +### Xamarin Applications -Soma ukurasa ufuatao kujifunza jinsi ya kufikia kwa urahisi msimbo wa C# wa programu za xamarin: +Soma ukurasa ufuatao kujifunza jinsi ya kupata kwa urahisi C# code ya xamarin applications: {{#ref}} ../xamarin-apps.md {{#endref}} -### Programu za Superpacked +### Superpacked Applications -Kulingana na [**blogu hii**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked ni algorithimu ya Meta inayoshinikiza maudhui ya programu kuwa faili moja. Blogu inazungumzia uwezekano wa kuunda programu inayoshinikiza aina hizi za programu... na njia ya haraka ambayo inahusisha **kutekeleza programu na kukusanya faili zilizoshinikizwa kutoka kwa mfumo wa faili.** +Kulingana na hii [**blog post**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked ni algorithm ya Meta inayoshinikiza yaliyomo ya application ndani ya faili moja. Blogu inazungumzia kuhusu uwezekano wa kuunda app inayo-decompress aina hizi za apps... na njia ya haraka ambayo inahusisha **kufanya execute application na kukusanya files zilizodecompressed kutoka kwenye filesystem.** -### Uchambuzi wa Msimbo wa Kawaida wa Kiotomatiki +### Automated Static Code Analysis -Chombo [**mariana-trench**](https://github.com/facebook/mariana-trench) kina uwezo wa kupata **vulnerabilities** kwa **kuchanganua** **msimbo** wa programu. Chombo hiki kina mfululizo wa **vyanzo vilivyofahamika** (ambavyo vinaonyesha kwa chombo **mahali** ambapo **ingizo** linadhibitiwa na mtumiaji), **sinks** (ambazo zinaonyesha kwa chombo **mahali hatari** ambapo ingizo la mtumiaji mbaya linaweza kusababisha madhara) na **sheria**. Sheria hizi zinaonyesha **mchanganyiko** wa **vyanzo-sinks** unaoashiria udhaifu. +Tool [**mariana-trench**](https://github.com/facebook/mariana-trench) inaweza kupata **vulnerabilities** kwa **kuscan** **code** ya application. Tool hii ina orodha ya **known sources** (zinazoelezea kwa tool **maeneo** ambapo **input** inadhibitiwa na mtumiaji), **sinks** (zinazoelezea kwa tool **maeneo hatari** ambapo input ya mtumiaji mbaya inaweza kusababisha uharibifu) na **rules**. Rules hizi zinaelezea **mchanganyiko** wa **sources-sinks** unaoashiria vulnerability. -Kwa maarifa haya, **mariana-trench itakagua msimbo na kupata udhaifu unaowezekana ndani yake**. +Kwa uelewa huu, **mariana-trench itapitia code na kupata uwezekano wa vulnerabilities ndani yake**. -### Siri zilizovuja +### Secrets leaked -Programu inaweza kuwa na siri (funguo za API, nywila, URLs zilizofichwa, subdomains...) ndani yake ambazo unaweza kuweza kugundua. Unaweza kutumia chombo kama [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) +Application inaweza kuwa na secrets (API keys, passwords, hidden urls, subdomains...) ndani yake ambazo unaweza kugundua. Unaweza kutumia tool kama [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) -### Kupita Uthibitishaji wa Kijeni +### Bypass Biometric Authentication {{#ref}} bypass-biometric-authentication-android.md {{#endref}} -### Kazi Mwingine za Kuvutia +### Other interesting functions -- **Utekelezaji wa msimbo**: `Runtime.exec(), ProcessBuilder(), native code:system()` -- **Tuma SMS**: `sendTextMessage, sendMultipartTestMessage` -- **Kazi za asili** zilizotangazwa kama `native`: `public native, System.loadLibrary, System.load` -- [Soma hii kujifunza **jinsi ya kurudi nyuma kazi za asili**](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) -### **Hila Nyingine** +### **Other tricks** {{#ref}} @@ -233,229 +234,279 @@ content-protocol.md --- -## Uchambuzi wa Kijadi +## Dynamic Analysis -> Kwanza kabisa, unahitaji mazingira ambapo unaweza kufunga programu na mazingira yote (cheti cha Burp CA, Drozer na Frida hasa). Kwa hivyo, kifaa kilichojikita (kilichotengenezwa au la) kinapendekezwa sana. +> Kwanza kabisa, unahitaji mazingira ambapo unaweza kusanidi application na mazingira yote (Burp CA cert, Drozer na Frida hasa). Kwa hivyo, kifaa kilichoroot-ikiwa (emulated au sio) kinapendekezwa sana. -### Uchambuzi wa Kijadi Mtandaoni +### Online Dynamic analysis -Unaweza kuunda **akaunti ya bure** katika: [https://appetize.io/](https://appetize.io). Jukwaa hili linakuruhusu **kupakia** na **kutekeleza** APKs, hivyo ni muhimu kuona jinsi apk inavyofanya kazi. +Unaweza kuunda **akaunti ya bure** katika: [https://appetize.io/](https://appetize.io). Jukwaa hili linakuwezesha **kupakia** na **kufanya execute** APKs, hivyo ni muhimu kuona jinsi apk inavyotenda. -Unaweza hata **kuona kumbukumbu za programu yako** kwenye wavuti na kuungana kupitia **adb**. +Unaweza hata **kuona logs za application yako** kwenye wavuti na kuunganishwa kupitia **adb**. ![](<../../images/image (831).png>) Shukrani kwa muunganisho wa ADB unaweza kutumia **Drozer** na **Frida** ndani ya emulators. -### Uchambuzi wa Kijadi wa Mitaa +### Local Dynamic Analysis -#### Kutumia emulator +#### Using an emulator -- [**Android Studio**](https://developer.android.com/studio) (Unaweza kuunda **x86** na **arm** vifaa, na kulingana na [**hii**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**toleo la hivi karibuni la x86** lina **unga mkono maktaba za ARM** bila kuhitaji emulator ya arm yenye kasi polepole). -- Jifunze jinsi ya kuiseti kwenye ukurasa huu: +- [**Android Studio**](https://developer.android.com/studio) (Unaweza kuunda vifaa **x86** na **arm**, na kulingana na [**hii** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**matoleo ya hivi karibuni ya x86** yanaunga mkono **ARM libraries** bila hitaji la emulator ya arm iliyokuwa polepole). +- Jifunze kuiseti kupitia ukurasa huu: {{#ref}} avd-android-virtual-device.md {{#endref}} -- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Toleo la Bure:** Toleo la Kibinafsi, unahitaji kuunda akaunti. _Inapendekezwa **kupakua** toleo **PAMOJA NA**_ _**VirtualBox** ili kuepuka makosa ya uwezekano._) -- [**Nox**](https://es.bignox.com) (Bure, lakini haunga mkono Frida au Drozer). +- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(toleo la bure:** Personal Edition, unahitaji kuunda akaunti. _Inapendekezwa **kushusha** toleo **LENYE**_ _**VirtualBox** ili kuepuka makosa ya uwezekano._) +- [**Nox**](https://es.bignox.com) (Bure, lakini haiku-support Frida au Drozer). > [!TIP] -> Unapounda emulator mpya kwenye jukwaa lolote kumbuka kwamba kadri skrini inavyokuwa kubwa, ndivyo emulator itakavyokuwa polepole. Hivyo chagua skrini ndogo ikiwa inawezekana. +> Unapounda emulator mpya kwenye jukwaa lolote kumbuka kuwa skrini kubwa inafanya emulator kuwa polepole zaidi. Hivyo chagua skrini ndogo inapowezekana. -Ili **kufunga huduma za google** (kama AppStore) katika Genymotion unahitaji kubofya kwenye kitufe kilichoshindwa kwa rangi nyekundu katika picha ifuatayo: +Ili **kusakinisha google services** (kama AppStore) kwenye Genymotion unahitaji kubofya kitufe kilicho alama nyekundu kwenye picha ifuatayo: ![](<../../images/image (277).png>) -Pia, zingatia kwamba katika **mipangilio ya Android VM katika Genymotion** unaweza kuchagua **Bridge Network mode** (hii itakuwa muhimu ikiwa utaungana na Android VM kutoka VM tofauti na zana). +Pia, kumbuka kwamba kwenye **mipangilio ya Android VM katika Genymotion** unaweza kuchagua **Bridge Network mode** (hii itakuwa muhimu ikiwa utakuwa unajiunganisha na Android VM kutoka VM tofauti yenye tools). -#### Tumia kifaa halisi +#### Use a physical device -Unahitaji kuwasha **chaguzi za ufuatiliaji** na itakuwa vizuri ikiwa unaweza **ku-root**: +Unahitaji kuamilisha chaguo za **debugging** na itakuwa vizuri kama unaweza kui-**root**: -1. **Mipangilio**. -2. (Kuanzia Android 8.0) Chagua **Mfumo**. -3. Chagua **Kuhusu simu**. -4. Bonyeza **Nambari ya Ujenzi** mara 7. -5. Rudi nyuma na utaona **Chaguzi za Wataalamu**. +1. **Settings**. +2. (FromAndroid 8.0) Chagua **System**. +3. Chagua **About phone**. +4. Bonyeza **Build number** mara 7. +5. Rudi nyuma na utapata **Developer options**. -> Mara tu umepofunga programu, jambo la kwanza unapaswa kufanya ni kujaribu na kuchunguza inafanya nini, inafanya kazi vipi na kuzoea nayo.\ -> Nitapendekeza **kufanya uchambuzi huu wa awali wa kijadi kwa kutumia MobSF uchambuzi wa kijadi + pidcat**, ili tuweze **kujifunza jinsi programu inavyofanya kazi** wakati MobSF **inakamata** data nyingi **za kuvutia** ambazo unaweza kupitia baadaye. +> Mara baada ya kusakinisha application, jambo la kwanza unalopaswa kufanya ni kuijaribu na kuchunguza inafanya nini, jinsi inavyofanya kazi na kujisikia mwenyewe nayo.\ +> Ninapendekeza **kutekeleza uchambuzi huu wa awali wa dynamic kwa kutumia MobSF dynamic analysis + pidcat**, ili tuweze **kujifunza jinsi application inavyofanya kazi** wakati MobSF inavyokamata data nyingi **zinazovutia** utakazoweza kuzipitia baadaye. -### Kuvuja kwa Data zisizokusudiwa +### Unintended Data Leakage -**Kumbukumbu** +**Logging** -Wakandarasi wanapaswa kuwa waangalifu kuhusu kufichua **taarifa za ufuatiliaji** hadharani, kwani inaweza kusababisha kuvuja kwa data nyeti. Zana [**pidcat**](https://github.com/JakeWharton/pidcat) na `adb logcat` zinapendekezwa kwa kufuatilia kumbukumbu za programu ili kubaini na kulinda taarifa nyeti. **Pidcat** inapendekezwa kwa urahisi wa matumizi na usomaji. +Watengenezaji wanapaswa kuwa waangalifu kuhusu kufichua **maelezo ya debugging** hadharani, kwani inaweza kusababisha sensitive data leak. Tools [**pidcat**](https://github.com/JakeWharton/pidcat) na `adb logcat` zinapendekezwa kwa kufuatilia application logs ili kubaini na kulinda taarifa nyeti. **Pidcat** inapendelewa kwa urahisi wake wa matumizi na uwazi wa kusoma. > [!WARNING] -> Kumbuka kwamba kuanzia **baada ya Android 4.0**, **programu zinaweza kufikia kumbukumbu zao tu**. Hivyo programu haziwezi kufikia kumbukumbu za programu nyingine.\ -> Hata hivyo, bado inapendekezwa **kutokuficha taarifa nyeti**. +> Kumbuka kwamba tangu **toleo lililozidi Android 4.0**, **applications zinaweza kufikia tu logs zao wenyewe**. Hivyo applications hawawezi kufikia logs za apps nyingine.\ +> Hata hivyo, bado inashauriwa **kuto-log maelezo nyeti**. -**Kuhifadhi Kumbukumbu za Nakala/Pasta** +**Copy/Paste Buffer Caching** -Mfumo wa **clipboard-based** wa Android unaruhusu kazi za nakala-na-pasta katika programu, lakini unatoa hatari kwani **programu nyingine** zinaweza **kufikia** clipboard, na hivyo kufichua data nyeti. Ni muhimu **kuondoa kazi za nakala/pasta** kwa sehemu nyeti za programu, kama vile maelezo ya kadi ya mkopo, ili kuzuia kuvuja kwa data. +Mfumo wa **clipboard-based** wa Android unawezesha kazi ya copy-paste katika apps, lakini una hatari kwa sababu **applications nyingine** zinaweza **kupata** clipboard, ambayo inaweza kufichua data nyeti. Ni muhimu **kuzima kazi za copy/paste** kwa sehemu nyeti za application, kama taarifa za kadi za mkopo, ili kuzuia data leak. -**Kumbukumbu za Kuanguka** +**Crash Logs** -Ikiwa programu **inaanguka** na **kuhifadhi kumbukumbu**, kumbukumbu hizi zinaweza kusaidia washambuliaji, hasa wakati programu haiwezi kurudi nyuma. Ili kupunguza hatari hii, epuka kuficha kwenye kuanguka, na ikiwa kumbukumbu lazima zitumwe kupitia mtandao, hakikisha zinatumwa kupitia njia ya SSL kwa usalama. +Ikiwa application **inaanguka** na **kuhifadhi logs**, logs hizi zinaweza kumsaidia mshambuliaji, hasa wakati application haiwezi ku-reverse-engineer. Ili kupunguza hatari hii, epuka ku-log kwenye crashes, na kama logs lazima zitumwe kupitia mtandao, hakikisha zinatumwa kupitia channel ya SSL kwa usalama. -Kama pentester, **jaribu kuangalia kumbukumbu hizi**. +Kama pentester, **jaribu kuangalia logs hizi**. -**Data za Uchambuzi Zinatumwa kwa Vyama vya Tatu** +**Analytics Data Sent To 3rd Parties** -Programu mara nyingi hujumuisha huduma kama Google Adsense, ambazo zinaweza bila kukusudia **kuvuja data nyeti** kutokana na utekelezaji usio sahihi na wakandarasi. Ili kubaini kuvuja kwa data zinazoweza kutokea, inapendekezwa **kukamata trafiki ya programu** na kuangalia kama kuna taarifa nyeti zinazotumwa kwa huduma za vyama vya tatu. +Applications mara nyingi hujumuisha huduma kama Google Adsense, ambazo zinaweza kwa bahati mbaya kusababisha data nyeti leak kutokana na utekelezaji mbaya wa watengenezaji. Ili kubaini leak za data, inashauriwa **kuchukua traffic ya application** na kuangalia kama kuna taarifa nyeti zinazotumwa kwa huduma za third-party. ### SQLite DBs -Programu nyingi zitatumia **maktaba za ndani za SQLite** kuhifadhi taarifa. Wakati wa pentest angalia **maktaba** zilizoundwa, majina ya **meza** na **safu** na data yote **iliyohifadhiwa** kwa sababu unaweza kupata **taarifa nyeti** (ambayo itakuwa udhaifu).\ -Maktaba zinapaswa kuwa katika `/data/data/the.package.name/databases` kama `/data/data/com.mwr.example.sieve/databases` +Wengi wa applications watatumia **internal SQLite databases** kuhifadhi taarifa. Wakati wa pentest angalia **databases** zilizoundwa, majina ya **tables** na **columns** na data zote zilizo hifadhiwa kwa sababu unaweza kupata **taarifa nyeti** (ambayo itakuwa vulnerability).\ +Databases zinapaswa kuwa ziko katika `/data/data/the.package.name/databases` kama `/data/data/com.mwr.example.sieve/databases` -Ikiwa maktaba inahifadhi taarifa za siri na ime **fichwa** lakini unaweza **kupata** **nywila** ndani ya programu bado ni **udhaifu**. +Ikiwa database inahifadhi taarifa za siri na ime-**encrypted** lakini unaweza **kupata** **password** ndani ya application, bado ni **vulnerability**. -Taja meza kwa kutumia `.tables` na taja safu za meza kwa kufanya `.schema ` +Orodhesha tables kwa kutumia `.tables` na orodhesha columns za tables kwa kufanya `.schema ` -### Drozer (Shughuli za Kutekeleza, Watoa Maudhui na Huduma) +### Drozer (Exploit Activities, Content Providers and Services) -Kutoka [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** inakuruhusu **kuchukua jukumu la programu ya Android** na kuingiliana na programu nyingine. Inaweza kufanya **chochote ambacho programu iliyosakinishwa inaweza kufanya**, kama kutumia mfumo wa Mawasiliano ya Mchakato wa Android (IPC) na kuingiliana na mfumo wa uendeshaji wa chini. .\ -Drozer ni chombo muhimu kwa **kufanya kazi za kutekeleza zilizotolewa, huduma zilizotolewa na Watoa Maudhui** kama utakavyofundishwa katika sehemu zifuatazo. +From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** inakuwezesha **kuchukua nafasi ya Android app** na kuingiliana na apps nyingine. Inaweza kufanya **kila kitu ambacho application iliyosakinishwa inaweza kufanya**, kama kutumia mekanisma ya Inter-Process Communication (IPC) ya Android na kuingiliana na operating system ya msingi. .\ +Drozer ni tool muhimu ya **kufanya exploit kwa exported activities, exported services na Content Providers** kama utakavyojifunza katika sehemu zifuatazo. -### Kutilia Mkazo Shughuli za Kutekeleza +### Exploiting exported Activities -[**Soma hii ikiwa unataka kufreshi kile ni Activity ya Android.**](android-applications-basics.md#launcher-activity-and-other-activities)\ -Pia kumbuka kwamba msimbo wa shughuli huanza katika **`onCreate`** njia. +[**Read this if you want to refresh what is an Android Activity.**](android-applications-basics.md#launcher-activity-and-other-activities)\ +Kumbuka pia kwamba code ya activity huanza katika method ya **`onCreate`**. -**Kupita Uthibitishaji** +**Authorisation bypass** -Wakati shughuli inapotolewa unaweza kuita skrini yake kutoka programu ya nje. Hivyo, ikiwa shughuli yenye **taarifa nyeti** ime **tolewa** unaweza **kupita** mitambo ya **uthibitishaji** **ili kuipata.** +Wakati Activity ime-exported unaweza kuitangaza screen yake kutoka kwa app ya nje. Hivyo, ikiwa activity yenye **taarifa nyeti** ime-**exported** unaweza **kupitia** **mechanisms za authentication** ili kuifikia. -[**Jifunze jinsi ya kutumia Drozer kutekeleza shughuli zilizotolewa.**](drozer-tutorial/index.html#activities) +[**Learn how to exploit exported activities with Drozer.**](drozer-tutorial/index.html#activities) -Unaweza pia kuanzisha shughuli iliyotolewa kutoka adb: +Unaweza pia kuanza exported activity kutoka adb: -- Jina la Kifurushi ni com.example.demo -- Jina la Shughuli iliyotolewa ni 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 ``` -**NOTE**: MobSF itagundua kama ni hatari matumizi ya _**singleTask/singleInstance**_ kama `android:launchMode` katika shughuli, lakini kutokana na [hii](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), inaonekana hii ni hatari tu katika toleo za zamani (API versions < 21). +**NOTE**: MobSF itagundua kama hatari matumizi ya _**singleTask/singleInstance**_ kama `android:launchMode` katika activity, lakini kutokana na [this](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), inaonekana hii ni hatari tu kwenye toleo za zamani (API versions < 21). > [!TIP] -> Kumbuka kwamba kupita kwa idhini si kila wakati udhaifu, itategemea jinsi kupita kunavyofanya kazi na ni taarifa gani zinazoonyeshwa. +> Kumbuka kwamba an authorisation bypass si kila mara ni udhaifu; itategemea jinsi bypass inavyofanya kazi na taarifa gani zinaonyeshwa. -**Kuvuja kwa taarifa nyeti** +**Sensitive information leakage** -**Shughuli zinaweza pia kurudisha matokeo**. Ikiwa unafanikiwa kupata shughuli iliyosambazwa na isiyo na ulinzi inayoita **`setResult`** na **kurudisha taarifa nyeti**, kuna uvujaji wa taarifa nyeti. +**Activities pia zinaweza kurudisha matokeo**. Ikiwa utaweza kupata exported na unprotected activity inayoitisha method ya **`setResult`** na **kurudisha taarifa nyeti**, kuna sensitive information leakage. #### Tapjacking -Ikiwa tapjacking haizuiwi, unaweza kutumia shughuli iliyosambazwa kufanya **mtumiaji afanye vitendo visivyotarajiwa**. Kwa maelezo zaidi kuhusu [**nini Tapjacking fuata kiungo**](#tapjacking). +Ikiwa Tapjacking haizuiziwi, unaweza kutumia exported activity vibaya ili kufanya **mtumiaji afanye vitendo visivyotarajiwa**. Kwa habari zaidi kuhusu [**what is Tapjacking follow the link**](#tapjacking). -### Kutumia Watoa Maudhui - Kufikia na kubadilisha taarifa nyeti +### Exploiting Content Providers - Accessing and manipulating sensitive information -[**Soma hii ikiwa unataka kukumbusha nini ni Mtoa Maudhui.**](android-applications-basics.md#content-provider)\ -Watoa maudhui kimsingi hutumiwa **kushiriki data**. Ikiwa programu ina watoa maudhui wanaopatikana unaweza kuwa na uwezo wa **kuchota taarifa nyeti** kutoka kwao. Pia ni ya kuvutia kujaribu **SQL injections** na **Path Traversals** kwani zinaweza kuwa na udhaifu. +[**Read this if you want to refresh what is a Content Provider.**](android-applications-basics.md#content-provider)\ +Content providers kwa msingi hutumiwa kwa ajili ya **share data**. Ikiwa app ina content providers zinazopatikana unaweza kuwa na uwezo wa **extract sensitive** data kutoka kwao. Pia ni muhimu kujaribu uwezekano wa **SQL injections** na **Path Traversals** kwani zinaweza kuwa vulnerable. -[**Jifunze jinsi ya kutumia Watoa Maudhui na Drozer.**](drozer-tutorial/index.html#content-providers) +[**Learn how to exploit Content Providers with Drozer.**](drozer-tutorial/index.html#content-providers) -### **Kutumia Huduma** +### **Exploiting Services** -[**Soma hii ikiwa unataka kukumbusha nini ni Huduma.**](android-applications-basics.md#services)\ -Kumbuka kwamba vitendo vya Huduma huanza katika njia `onStartCommand`. +[**Read this if you want to refresh what is a Service.**](android-applications-basics.md#services)\ +Kumbuka kwamba vitendo vya Service huanza katika method `onStartCommand`. -Huduma kimsingi ni kitu ambacho **kinaweza kupokea data**, **kuchakata** na **kurudisha** (au la) jibu. Hivyo, ikiwa programu inasambaza huduma fulani unapaswa **kuangalia** **msimbo** ili kuelewa inafanya nini na **kujaribu** kwa **dynamically** ili kuchota taarifa za siri, kupita hatua za uthibitishaji...\ -[**Jifunze jinsi ya kutumia Huduma na Drozer.**](drozer-tutorial/index.html#services) +Service kwa kawaida ni kitu ambacho **kinaweza kupokea data**, **kuita process** na **kurudisha** (au la) response. Hivyo, ikiwa application inatokeza baadhi ya services unapaswa **kuangalia** **code** ili kuelewa inafanya nini na **kujaribu** kwa njia **dynamically** ili kutoa taarifa za siri, kupita hatua za uthibitishaji... -### **Kutumia Vastika za Matangazo** +[**Learn how to exploit Services with Drozer.**](drozer-tutorial/index.html#services) -[**Soma hii ikiwa unataka kukumbusha nini ni Vastika za Matangazo.**](android-applications-basics.md#broadcast-receivers)\ -Kumbuka kwamba vitendo vya Vastika za Matangazo huanza katika njia `onReceive`. +### **Exploiting Broadcast Receivers** -Vastika ya matangazo itakuwa ikisubiri aina fulani ya ujumbe. Kulingana na jinsi vastika inavyoshughulikia ujumbe inaweza kuwa na udhaifu.\ -[**Jifunze jinsi ya kutumia Vastika za Matangazo na Drozer.**](#exploiting-broadcast-receivers) +[**Read this if you want to refresh what is a Broadcast Receiver.**](android-applications-basics.md#broadcast-receivers)\ +Kumbuka kwamba vitendo vya Broadcast Receiver huanza katika method `onReceive`. -### **Kutumia Mipango / Viungo vya Kina** +Broadcast receiver itakuwa ikisubiri aina fulani ya message. Kulingana na jinsi receiver inavyoshughulikia message inaweza kuwa vulnerable.\ +[**Learn how to exploit Broadcast Receivers with Drozer.**](#exploiting-broadcast-receivers) -Unaweza kutafuta viungo vya kina kwa mikono, ukitumia zana kama MobSF au scripts kama [hii](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ -Unaweza **kufungua** **mpango** ulioelezwa kwa kutumia **adb** au **brower**: +### **Exploiting Schemes / Deep links** + +Unaweza kutafuta deep links kwa mkono, kwa kutumia zana kama MobSF au scripts kama [this one](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ +Unaweza **open** declared **scheme** kwa kutumia **adb** au **browser**: ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` -_Kumbuka kwamba unaweza **kuacha jina la kifurushi** na simu itaita kiotomatiki programu ambayo inapaswa kufungua kiungo hicho._ +_Kumbuka kwamba unaweza **kuacha jina la package** na simu itaitisha app itakayofungua link hiyo._ ```html Click me with alternative ``` -**Code executed** +**Msimbo unaotekelezwa** -Ili kupata **code itakayotekelezwa katika App**, nenda kwenye shughuli inayoitwa na deeplink na tafuta kazi **`onNewIntent`**. +Ili kupata **msimbo utakaoendeshwa katika App**, nenda kwenye activity inayoitwa na deeplink na tafuta function **`onNewIntent`**. ![](<../../images/image (436) (1) (1) (1).png>) -**Sensitive info** +**Taarifa nyeti** -Kila wakati unapotafuta deeplink hakikisha kuwa **haipokei data nyeti (kama nywila) kupitia vigezo vya URL**, kwa sababu programu nyingine yoyote inaweza **kujifanya kuwa deeplink na kuiba data hiyo!** +Kila unapopata deep link hakikisha kuwa **haipokei data nyeti (kama nywila) kupitia vigezo vya URL**, kwa sababu programu nyingine yoyote inaweza **kuiga deep link na kuiba data hiyo!** **Parameters in path** -Unapaswa **kuangalia pia kama deeplink yoyote inatumia parameter ndani ya njia** ya URL kama: `https://api.example.com/v1/users/{username}` , katika kesi hiyo unaweza kulazimisha usafiri wa njia kwa kufikia kitu kama: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\ -Kumbuka kwamba ikiwa utapata mwisho sahihi ndani ya programu unaweza kuwa na uwezo wa kusababisha **Open Redirect** (ikiwa sehemu ya njia inatumika kama jina la kikoa), **account takeover** (ikiwa unaweza kubadilisha maelezo ya watumiaji bila CSRF token na mwisho ulio hatarini unatumia njia sahihi) na hatari nyingine yoyote. Maelezo zaidi [hapa](http://dphoeniixx.com/2020/12/13-2/). +Unapaswa pia kukagua kama deep link yoyote inatumia parameter ndani ya path ya URL kama: `https://api.example.com/v1/users/{username}` , katika kesi hiyo unaweza kulazimisha path traversal kwa kufikia kitu kama: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\ +Kumbuka kwamba ukigundua endpoints sahihi ndani ya application unaweza kusababisha **Open Redirect** (ikiwa sehemu ya path inatumiwa kama domain name), **account takeover** (ikiwa unaweza kubadilisha maelezo ya users bila CSRF token na endpoint iliyo na udhaifu ilitumia method sahihi) na udhaifu mwingine wowote. Taarifa zaidi kuhusu hili [hapa](http://dphoeniixx.com/2020/12/13-2/). -**More examples** +Mrejeleo wa [ripoti ya bug bounty ya kuvutia](https://hackerone.com/reports/855618) kuhusu links (_/.well-known/assetlinks.json_). -Ripoti ya [bug bounty](https://hackerone.com/reports/855618) kuhusu viungo (_/.well-known/assetlinks.json_). +### Uchunguzi wa Tabaka la Usafirishaji na Makosa ya Uthibitishaji -### Transport Layer Inspection and Verification Failures - -- **Vyeti havikaguliwi kila wakati ipasavyo** na programu za Android. Ni kawaida kwa programu hizi kupuuza onyo na kukubali vyeti vilivyojitegemea au, katika baadhi ya matukio, kurudi kutumia muunganisho wa HTTP. -- **Majadiliano wakati wa handshake ya SSL/TLS wakati mwingine ni dhaifu**, yakitumia cipher suites zisizo salama. Uthibitisho huu unafanya muunganisho uwe hatarini kwa mashambulizi ya mtu katikati (MITM), kuruhusu washambuliaji kufungua data. -- **Kuvuja kwa taarifa za kibinafsi** ni hatari wakati programu zinathibitisha kwa kutumia njia salama lakini kisha kuwasiliana kupitia njia zisizo salama kwa shughuli nyingine. Njia hii inashindwa kulinda data nyeti, kama vile vidakuzi vya kikao au maelezo ya mtumiaji, kutokana na kukamatwa na wahalifu. +- **Certificates hazikaguliwi kila wakati ipasavyo** na applications za Android. Ni kawaida kwa applications hizi kupuuzia onyo na kukubali self-signed certificates au, katika matukio mengine, kurudi kutumia HTTP connections. +- **Mazungumzo wakati wa SSL/TLS handshake wakati mwingine ni dhaifu**, yakitumia insecure cipher suites. Udhaifu huu unafanya connection kuwa nyeti kwa man-in-the-middle (MITM) attacks, kuruhusu washambuliaji kuvunja usimbaji na kufikia data. +- **Leakage of private information** ni hatari wakati applications zinathibitisha kwa kutumia secure channels kisha kuwasiliana kwa non-secure channels kwa shughuli nyingine. Mbinu hii inashindwa kulinda data nyeti, kama session cookies au user details, dhidi ya interception na entities zenye nia mbaya. #### Certificate Verification -Tutazingatia **uthibitishaji wa cheti**. Uadilifu wa cheti cha seva lazima uhakikishwe ili kuongeza usalama. Hii ni muhimu kwa sababu usanidi usio salama wa TLS na uhamasishaji wa data nyeti kupitia njia zisizo na usalama unaweza kuleta hatari kubwa. Kwa hatua za kina za kuthibitisha vyeti vya seva na kushughulikia hatari, [**rasilimali hii**](https://manifestsecurity.com/android-application-security-part-10/) inatoa mwongozo wa kina. +Tutazingatia **certificate verification**. Uadilifu wa server's certificate ni lazima uthibitishwe ili kuongeza usalama. Hii ni muhimu kwa sababu misanidi isiyo salama ya TLS na uhamishaji wa data nyeti kupitia channels zisizosimbwa vinaweza kusababisha hatari kubwa. Kwa hatua za kina za kuthibitisha server certificates na kushughulikia udhaifu, [**this resource**](https://manifestsecurity.com/android-application-security-part-10/) inatoa mwongozo kamili. #### SSL Pinning -SSL Pinning ni hatua ya usalama ambapo programu inathibitisha cheti cha seva dhidi ya nakala inayojulikana iliyohifadhiwa ndani ya programu yenyewe. Njia hii ni muhimu kwa kuzuia mashambulizi ya MITM. Kutekeleza SSL Pinning kunashauriwa kwa nguvu kwa programu zinazoshughulikia taarifa nyeti. +SSL Pinning ni kifaa cha usalama ambapo application inathibitisha server's certificate dhidi ya nakala inayojulikana iliyohifadhiwa ndani ya application yenyewe. Njia hii ni muhimu kuzuia MITM attacks. Kutekeleza SSL Pinning kunashauriwa kwa nguvu kwa applications zinazoshughulikia taarifa nyeti. #### Traffic Inspection -Ili kukagua trafiki ya HTTP, ni lazima **kusakinisha cheti cha zana ya proxy** (mfano, Burp). Bila kusakinisha cheti hii, trafiki iliyosimbwa inaweza isionekane kupitia proxy. Kwa mwongozo wa kusakinisha cheti ya CA ya kawaida, [**bonyeza hapa**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). +Ili kuchunguza HTTP traffic, ni muhimu **kusakinisha certificate ya proxy tool** (mfano, Burp). Bila kusakinisha certificate hii, traffic iliyosimbwa inaweza isionekane kupitia proxy. Kwa mwongozo wa kusakinisha custom CA certificate, [**bonyeza hapa**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). -Programu zinazolenga **API Level 24 na zaidi** zinahitaji marekebisho kwenye Usanidi wa Usalama wa Mtandao ili kukubali cheti cha CA cha proxy. Hatua hii ni muhimu kwa kukagua trafiki iliyosimbwa. Kwa maelekezo ya kubadilisha Usanidi wa Usalama wa Mtandao, [**rejelea tutorial hii**](make-apk-accept-ca-certificate.md). +Applications zinazolenga **API Level 24 and above** zinahitaji marekebisho ya Network Security Config ili kukubali proxy's CA certificate. Hatua hii ni muhimu kwa kuchunguza traffic iliyosimbwa. Kwa maelekezo ya kubadilisha Network Security Config, [**refer to this tutorial**](make-apk-accept-ca-certificate.md). -Ikiwa **Flutter** inatumika unahitaji kufuata maelekezo katika [**ukurasa huu**](flutter.md). Hii ni kwa sababu, kuongeza cheti kwenye duka hakutafanya kazi kwani Flutter ina orodha yake ya CAs halali. +Ikiwa **Flutter** inatumika lazima ufuate maelekezo kwenye [**this page**](flutter.md). Hii ni kwa sababu, kuingiza certificate tu kwenye store haitafanya kazi kwani Flutter ina orodha yake ya CA halali. -#### Bypassing SSL Pinning +#### Static detection of SSL/TLS pinning -Wakati SSL Pinning inatekelezwa, kuipita inakuwa muhimu ili kukagua trafiki ya HTTPS. Njia mbalimbali zinapatikana kwa kusudi hili: +Kabla ya kujaribu runtime bypasses, chora haraka mahali pinning inatekelezwa ndani ya APK. Ugunduzi wa static utakusaidia kupanga hooks/patches na kuzingatia njia sahihi za msimbo. -- Kiotomatiki **badilisha** **apk** ili **kuipita** SSLPinning na [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Faida bora ya chaguo hili, ni kwamba hutahitaji root ili kuipita SSL Pinning, lakini utahitaji kufuta programu na kusakinisha mpya, na hii haitafanya kazi kila wakati. -- Unaweza kutumia **Frida** (iliyozungumziwa hapa chini) kuipita ulinzi huu. Hapa kuna mwongozo wa kutumia 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/) -- Unaweza pia kujaribu **kuipita SSL Pinning kiotomatiki** kwa kutumia [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` -- Unaweza pia kujaribu **kuipita SSL Pinning kiotomatiki** kwa kutumia **MobSF dynamic analysis** (iliyofafanuliwa hapa chini) -- Ikiwa bado unafikiri kuna trafiki ambayo hujapata unaweza kujaribu **kupeleka trafiki kwa burp kwa kutumia iptables**. Soma blog hii: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) +Tool: SSLPinDetect +- Open-source static-analysis utility ambayo inadecompile APK hadi Smali (kwa apktool) na inascan kwa curated regex patterns za implementations za SSL/TLS pinning. +- Inaripoti path kamili ya faili, nambari ya mstari, na kipande cha msimbo kwa kila match. +- Inashughulikia frameworks zinazotumika na code paths maalum: OkHttp CertificatePinner, custom javax.net.ssl.X509TrustManager.checkServerTrusted, SSLContext.init with custom TrustManagers/KeyManagers, and 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 +``` +Matumizi +```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 +``` +Mfano wa kanuni za pattern (JSON) +Tumia au ongeza signatures ili kugundua proprietary/custom pinning styles. Unaweza kupakia JSON yako mwenyewe na scan at scale. +```json +{ +"OkHttp Certificate Pinning": [ +"Lcom/squareup/okhttp/CertificatePinner;", +"Lokhttp3/CertificatePinner;", +"setCertificatePinner" +], +"TrustManager Override": [ +"Ljavax/net/ssl/X509TrustManager;", +"checkServerTrusted" +] +} +``` +Notes and tips +- Fast scanning on large apps via multi-threading and memory-mapped I/O; pre-compiled regex reduces overhead/false positives. +- Pattern collection: https://github.com/aancw/smali-sslpin-patterns +- Typical detection targets to triage next: +- OkHttp: matumizi ya CertificatePinner, setCertificatePinner, marejeo ya package okhttp3/okhttp +- TrustManagers maalum: javax.net.ssl.X509TrustManager, overrides za checkServerTrusted +- SSL contexts maalum: SSLContext.getInstance + SSLContext.init na managers maalum +- Declarative pins katika res/xml network security config na marejeo kwenye manifest +- Tumia maeneo yaliyoendana kupanga Frida hooks, static patches, au mapitio ya config kabla ya dynamic testing. + + + +#### Kuvuka SSL Pinning + +When SSL Pinning is implemented, bypassing it becomes necessary to inspect HTTPS traffic. Various methods are available for this purpose: + +- Automatically **modify** the **apk** to **bypass** SSLPinning with [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). The best pro of this option, is that you won't need root to bypass the SSL Pinning, but you will need to delete the application and reinstall the new one, and this won't always work. +- You could use **Frida** (discussed below) to bypass this protection. Here you have a guide to use 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/) +- You can also try to **automatically bypass SSL Pinning** using [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` +- You can also try to **automatically bypass SSL Pinning** using **MobSF dynamic analysis** (explained below) +- If you still think that there is some traffic that you aren't capturing you can try to **forward the traffic to burp using iptables**. Read this blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) #### Looking for Common Web Vulnerabilities -Ni muhimu pia kutafuta hatari za kawaida za wavuti ndani ya programu. Maelezo ya kina juu ya kutambua na kupunguza hatari hizi yapo nje ya upeo wa muhtasari huu lakini yanashughulikiwa kwa kina mahali pengine. +Ni muhimu pia kutafuta udhaifu wa kawaida wa wavuti ndani ya application. Maelezo ya kina juu ya utambuzi na kupunguza udhaifu huu yapo nje ya muhtasari huu lakini yameelezewa kwa kina mahali pengine. ### Frida -[Frida](https://www.frida.re) ni zana ya uhandisi wa dynamic kwa waendelezaji, wahandisi wa kurudi, na watafiti wa usalama.\ -**Unaweza kufikia programu inayotembea na kuunganisha mbinu wakati wa wakati wa kukarabati tabia, kubadilisha thamani, kutoa thamani, kuendesha code tofauti...**\ -Ikiwa unataka kufanya pentest kwenye programu za Android unahitaji kujua jinsi ya kutumia Frida. +[Frida](https://www.frida.re) is a dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers.\ +**You can access running application and hook methods on run time to change the behaviour, change values, extract values, run different code...**\ +If you want to pentest Android applications you need to know how to use Frida. -- Jifunze jinsi ya kutumia Frida: [**Frida tutorial**](frida-tutorial/index.html) -- Baadhi ya "GUI" kwa vitendo na Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) -- Ojection ni nzuri kwa kuharakisha matumizi ya Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) -- Unaweza kupata baadhi ya scripts za Frida hapa: [**https://codeshare.frida.re/**](https://codeshare.frida.re) -- Jaribu kuipita mitambo ya anti-debugging / anti-frida kwa kupakia Frida kama ilivyoonyeshwa katika [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (chombo [linjector](https://github.com/erfur/linjector-rs)) +- Learn how to use Frida: [**Frida tutorial**](frida-tutorial/index.html) +- Some "GUI" for actions with Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) +- Ojection is great to automate the use of Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) +- You can find some Awesome Frida scripts here: [**https://codeshare.frida.re/**](https://codeshare.frida.re) +- Try to bypass anti-debugging / anti-frida mechanisms loading Frida as in indicated in [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (tool [linjector](https://github.com/erfur/linjector-rs)) #### Anti-instrumentation & SSL pinning bypass workflow @@ -465,9 +516,9 @@ android-anti-instrumentation-and-ssl-pinning-bypass.md ### **Dump Memory - Fridump** -Angalia ikiwa programu inahifadhi taarifa nyeti ndani ya kumbukumbu ambayo haipaswi kuhifadhiwa kama nywila au maneno ya kukumbuka. +Angalia kama application inahifadhi taarifa nyeti ndani ya memory ambazo haipaswi kuhifadhi kama passwords au mnemonics. -Kwa kutumia [**Fridump3**](https://github.com/rootbsd/fridump3) unaweza kutupa kumbukumbu ya programu kwa: +Using [**Fridump3**](https://github.com/rootbsd/fridump3) you can dump the memory of the app with: ```bash # With PID python3 fridump3.py -u @@ -476,120 +527,120 @@ python3 fridump3.py -u frida-ps -Uai python3 fridump3.py -u "" ``` -Hii itatoa kumbukumbu katika folda ya ./dump, na humo unaweza kutumia grep na kitu kama: +Hii itadump kumbukumbu katika folda ./dump, na huko unaweza kutumia grep kwa kitu kama: ```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]+$" ``` ### **Data nyeti katika Keystore** -Katika Android, Keystore ni mahali bora pa kuhifadhi data nyeti, hata hivyo, kwa ruhusa ya kutosha bado **inawezekana kuipata**. Kadri programu zinavyotenda kuhifadhi hapa **data nyeti katika maandiko wazi**, pentests zinapaswa kuangalia kwa mtumiaji wa root au mtu mwenye ufikiaji wa kimwili kwenye kifaa anaweza kuwa na uwezo wa kuiba data hii. +Katika Android Keystore ni mahali bora pa kuhifadhi data nyeti, hata hivyo, kwa idhini za kutosha bado ni **inawezekana kuifikia**. Kwa kuwa programu zinaelekea kuhifadhi hapa **data nyeti kwa maandishi wazi**, pentests zinapaswa kuikagua kwa root user au mtu mwenye ufikiaji wa kimwili wa kifaa ambaye anaweza kuiba data hii. -Hata kama programu imehifadhi data katika keystore, data inapaswa kuwa imefungwa. +Hata kama app ilihifadhi data katika keystore, data inapaswa kusimbwa. -Ili kufikia data ndani ya keystore unaweza kutumia script hii ya Frida: [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) +Ili kufikia data ndani ya keystore unaweza kutumia Frida script hii: 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 ``` ### **Fingerprint/Biometrics Bypass** -Kwa kutumia script ifuatayo ya Frida inaweza kuwa inawezekana **kuzidi uthibitisho wa alama za vidole** ambayo programu za Android zinaweza kuwa zinafanya ili **kulinda maeneo fulani nyeti:** +Kutumia Frida script ifuatayo, inaweza kuwa inawezekana **bypass fingerprint authentication** ambayo programu za Android zinaweza kufanya ili **kulinda maeneo fulani nyeti:** ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` -### **Picha za Muktadha** +### **Picha za Mandharinyuma** -Unapoweka programu katika muktadha, Android huhifadhi **picha ya programu** ili wakati inaporejeshwa kwenye mbele inaanza kupakia picha kabla ya programu ili ionekane kama programu imepakiwa haraka. +Unapoweka programu kwenye mandharinyuma, Android huhifadhi **snapshot ya programu**, hivyo inaporejeshwa kwenye foreground inaanza kupakia picha kabla ya programu ili ionekane kama ilipakuliwa haraka. -Hata hivyo, ikiwa picha hii ina **taarifa nyeti**, mtu mwenye ufikiaji wa picha hiyo anaweza **kuchukua taarifa hiyo** (kumbuka kuwa unahitaji root ili kuweza kuifikia). +Hata hivyo, ikiwa snapshot hii ina **taarifa nyeti**, mtu mwenye ufikiaji wa snapshot anaweza **kuiba hizo taarifa** (kumbuka kwamba unahitaji root ili kuzifikia). -Picha hizo kwa kawaida huhifadhiwa katika: **`/data/system_ce/0/snapshots`** +Snapshots kawaida huhifadhiwa karibu: **`/data/system_ce/0/snapshots`** -Android inatoa njia ya **kuzuia upigaji picha wa skrini kwa kuweka kipimo cha FLAG_SECURE**. Kwa kutumia bendera hii, maudhui ya dirisha yanachukuliwa kama salama, na kuzuia kuonekana katika picha za skrini au kuonekana kwenye onyesho lisilo salama. +Android inatoa njia ya **kuzuia kuchukuliwa kwa screenshot kwa kuweka parameter ya layout FLAG_SECURE**. Kwa kutumia flag hii, yaliyomo kwenye dirisha yanachukuliwa kuwa salama, na hivyo kuzuia kuonekana kwenye screenshots au kutazamwa kwenye displays zisizo-salama. ```bash getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ``` -### **Mchambuzi wa Programu za Android** +### **Android Application Analyzer** -Chombo hiki kinaweza kukusaidia kusimamia zana mbalimbali wakati wa uchambuzi wa dynamic: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer) +Zana hii inaweza kukusaidia kusimamia zana tofauti wakati wa uchambuzi wa kimitambo (dynamic analysis): [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer) -### Kuingilia kwa Intent +### Intent Injection -Wakuu wa programu mara nyingi huunda vipengele vya proxy kama shughuli, huduma, na wapokeaji wa matangazo ambao hushughulikia hizi Intents na kuzipitisha kwa mbinu kama `startActivity(...)` au `sendBroadcast(...)`, ambayo inaweza kuwa hatari. +Waundaji mara nyingi huunda komponenti za proxy kama activities, services, na broadcast receivers ambazo hushughulikia Intent hizi na kuzipitisha kwa njia kama `startActivity(...)` au `sendBroadcast(...)`, jambo ambalo linaweza kuwa hatari. -Hatari iko katika kuruhusu washambuliaji kuanzisha vipengele vya programu visivyoweza kusambazwa au kufikia watoa maudhui nyeti kwa kuhamasisha hizi Intents. Mfano maarufu ni kipengele cha `WebView` kinachobadilisha URLs kuwa vitu vya `Intent` kupitia `Intent.parseUri(...)` na kisha kuvitenda, ambayo inaweza kusababisha kuingilia kwa Intents zenye uharibifu. +Hatari iko katika kuruhusu wadukuzi kuchochea non-exported app components au kupata sensitive content providers kwa kuelekeza vibaya Intent hizi. Mfano wa kuzingatia ni `WebView` kubadilisha URLs kuwa vitu vya `Intent` kupitia `Intent.parseUri(...)` na kisha kuvitekeleza, jambo ambalo linaweza kusababisha malicious Intent injections. -### Mambo Muhimu ya Kujifunza +### Hitimisho Muhimu -- **Kuingilia kwa Intent** ni sawa na tatizo la Open Redirect la wavuti. -- Uhalifu unahusisha kupitisha vitu vya `Intent` kama ziada, ambavyo vinaweza kuhamasishwa kutekeleza operesheni zisizo salama. -- Inaweza kufichua vipengele visivyoweza kusambazwa na watoa maudhui kwa washambuliaji. -- Kubadilisha URL ya `WebView` kuwa `Intent` kunaweza kuwezesha vitendo visivyokusudiwa. +- **Intent Injection** ni sawa na tatizo la Open Redirect kwenye web. +- Udanganyifu unaohusisha kupitisha vitu vya `Intent` kama extras, ambavyo vinaweza kuelekezwa tena ili kutekeleza operesheni zisizo salama. +- Inaweza kufunua non-exported components na content providers kwa wadukuzi. +- U-badilishaji wa URL kuwa `Intent` katika `WebView` unaweza kuwezesha vitendo visivyokusudiwa. -### Kuingilia kwa Wateja wa Android na mengineyo +### Android Client Side Injections and others -Labda unajua kuhusu aina hii ya udhaifu kutoka kwa Wavuti. Lazima uwe makini sana na udhaifu huu katika programu ya Android: +Huenda tayari unafahamu aina hizi za udhaifu kutoka kwenye Web. Lazima kuwa mwangalifu sana na udhaifu hivi katika programu ya Android: -- **SQL Injection:** Unaposhughulikia maswali ya dynamic au Watoa-Maudhui hakikisha unatumia maswali yaliyowekwa. -- **JavaScript Injection (XSS):** Hakikisha kuwa msaada wa JavaScript na Plugin umezimwa kwa WebViews yoyote (umezimwa kwa default). [Maelezo zaidi hapa](webview-attacks.md#javascript-enabled). -- **Inclusion ya Faili za Mitaa:** WebViews zinapaswa kuwa na ufikiaji wa mfumo wa faili umezimwa (umewezeshwa kwa default) - `(webview.getSettings().setAllowFileAccess(false);)`. [Maelezo zaidi hapa](webview-attacks.md#javascript-enabled). -- **Cookies za Milele**: Katika kesi kadhaa wakati programu ya android inamaliza kikao, cookie haifutwi au inaweza hata kuhifadhiwa kwenye diski. -- [**Bendera Salama** katika cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags) +- **SQL Injection:** Wakati wa kushughulikia queries zinazobadilika au Content-Providers, hakikisha unatumia parameterized queries. +- **JavaScript Injection (XSS):** Hakikisha JavaScript na Plugin support imezimwa kwa WebViews yoyote (imezimwa kwa default). [More info here](webview-attacks.md#javascript-enabled). +- **Local File Inclusion:** WebViews zinafaa kuzuia access to the file system (imewezeshwa kwa default) - `(webview.getSettings().setAllowFileAccess(false);)`. [More info here](webview-attacks.md#javascript-enabled). +- **Eternal cookies**: Katika kesi kadhaa programu ya android inapomaliza session cookie haifutwi au inaweza hata kuhifadhiwa kwenye disk +- [**Secure Flag** in cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags) --- -## Uchambuzi wa Kiotomatiki +## Automatic Analysis ### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) -**Uchambuzi wa statiki** +**Static analysis** ![](<../../images/image (866).png>) -**Tathmini ya udhaifu wa programu** kwa kutumia interface nzuri ya wavuti. Unaweza pia kufanya uchambuzi wa dynamic (lakini unahitaji kuandaa mazingira). +**Vulnerability assessment of the application** using a nice web-based frontend. You can also perform dynamic analysis (but you need to prepare the environment). ```bash docker pull opensecurity/mobile-security-framework-mobsf docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest ``` -Kumbuka kwamba MobSF inaweza kuchambua **Android**(apk)**, IOS**(ipa) **na Windows**(apx) programu (_Programu za Windows lazima zichambuliwe kutoka kwa MobSF iliyosakinishwa kwenye mwenyeji wa Windows_).\ -Pia, ikiwa unaunda **ZIP** faili yenye msimbo wa chanzo wa programu ya **Android** au **IOS** (nenda kwenye folda ya mzizi ya programu, chagua kila kitu na uunde faili la ZIP), itakuwa na uwezo wa kuichambua pia. +Notice that MobSF can analyse **Android**(apk)**, IOS**(ipa) **and Windows**(apx) applications (_Windows applications must be analyzed from a MobSF installed in a Windows host_).\ +Also, if you create a **ZIP** file with the source code if an **Android** or an **IOS** app (go to the root folder of the application, select everything and create a ZIPfile), it will be able to analyse it also. -MobSF pia inakuwezesha kufanya **diff/Compare** uchambuzi na kuunganisha **VirusTotal** (utahitaji kuweka funguo yako ya API katika _MobSF/settings.py_ na kuifanya iweze: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Unaweza pia kuweka `VT_UPLOAD` kuwa `False`, kisha **hash** itapakiwa badala ya faili. +MobSF pia inakuwezesha kufanya **diff/Compare** analysis na kuunganishwa na **VirusTotal** (utahitaji kuweka API key yako katika _MobSF/settings.py_ na kuifungua: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Unaweza pia kuweka `VT_UPLOAD` kuwa `False`, basi **hash** itakuwa **upload** badala ya faili. -### Uchambuzi wa Kisaidizi wa Dynamic na MobSF +### Assisted Dynamic analysis with MobSF -**MobSF** pia inaweza kuwa na msaada mkubwa kwa **uchambuzi wa dynamic** katika **Android**, lakini katika kesi hiyo utahitaji kusakinisha MobSF na **genymotion** kwenye mwenyeji wako (VM au Docker haitafanya kazi). _Kumbuka: Unahitaji **kuanzisha kwanza VM katika genymotion** na **kisha MobSF.**_\ -**MobSF dynamic analyser** inaweza: +**MobSF** pia inaweza kuwa msaada mkubwa kwa ajili ya **dynamic analysis** kwenye **Android**, lakini katika kesi hiyo utahitaji kusanidi MobSF na **genymotion** kwenye host yako (VM au Docker hazitafanyi kazi). _Note: You need to **start first a VM in genymotion** and **then MobSF.**_\ +The **MobSF dynamic analyser** inaweza: -- **Dump data za programu** (URLs, logs, clipboard, picha za skrini ulizofanya, picha za skrini zilizofanywa na "**Exported Activity Tester**", barua pepe, hifadhidata za SQLite, faili za XML, na faili nyingine zilizoundwa). Hii yote inafanywa kiotomatiki isipokuwa kwa picha za skrini, unahitaji kubonyeza unapohitaji picha ya skrini au unahitaji kubonyeza "**Exported Activity Tester**" ili kupata picha za skrini za shughuli zote zilizofanywa. -- Kukamata **trafiki ya HTTPS** -- Kutumia **Frida** kupata **maelezo ya wakati wa utekelezaji** +- **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). Yote haya hufanyika kiotomatiki isipokuwa kwa screenshots; unahitaji ku-bonyeza unapohitaji screenshot au unahitaji ku-bonyeza "**Exported Activity Tester**" ili kupata screenshots za activities zote zilizoexportiwa. +- Capture **HTTPS traffic** +- Use **Frida** to obtain **runtime** **information** -Kuanzia toleo la **android > 5**, itaanza **Frida** kiotomatiki na kuweka mipangilio ya **proxy** ya kimataifa ili **kukamata** trafiki. Itakamata tu trafiki kutoka kwa programu iliyojaribiwa. +Kuanzia android **versions > 5**, itaanzisha **Frida** kiotomatiki na itaweka mipangilio ya **proxy** ya global ili **capture** traffic. Itachukua tu traffic kutoka kwa application inayochambuliwa. **Frida** -Kwa kawaida, itatumia baadhi ya Scripts za Frida ili **kupita SSL pinning**, **ugunduzi wa root** na **ugunduzi wa debugger** na **kufuatilia APIs za kuvutia**.\ -MobSF pia inaweza **kuita shughuli zilizofanywa**, kuchukua **picha za skrini** za hizo na **kuhifadhi** kwa ripoti. +By default, it will also use some Frida Scripts to **bypass SSL pinning**, **root detection** and **debugger detection** and to **monitor interesting APIs**.\ +MobSF pia inaweza **invoke exported activities**, grab **screenshots** of them and **save** them for the report. -Ili **kuanza** upimaji wa dynamic bonyeza kitufe kibichi: "**Start Instrumentation**". Bonyeza "**Frida Live Logs**" kuona logs zinazozalishwa na scripts za Frida na "**Live API Monitor**" kuona kila mwito kwa mbinu zilizoshikiliwa, hoja zilizopitishwa na thamani zilizorejeshwa (hii itaonekana baada ya kubonyeza "Start Instrumentation").\ -MobSF pia inakuwezesha kupakia **scripts za Frida** zako mwenyewe (ili kutuma matokeo ya scripts zako za Ijumaa kwa MobSF tumia kazi `send()`). Pia ina **scripts kadhaa zilizotayarishwa awali** ambazo unaweza kupakia (unaweza kuongeza zaidi katika `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), chagua tu **zinazo**, bonyeza "**Load**" na bonyeza "**Start Instrumentation**" (utaweza kuona logs za hizo scripts ndani ya "**Frida Live Logs**"). +To **start** the dynamic testing press the green bottom: "**Start Instrumentation**". Press the "**Frida Live Logs**" to see the logs generated by the Frida scripts and "**Live API Monitor**" to see all the invocation to hooked methods, arguments passed and returned values (this will appear after pressing "Start Instrumentation").\ +MobSF pia inakuwezesha kupakia **Frida scripts** zako mwenyewe (kama utatumia function `send()` kutuma matokeo ya Frida scripts zako kwa MobSF). Pia ina **several pre-written scripts** unaweza kupakia (unaweza kuongeza zaidi katika `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), chagua tu, bonyeza "**Load**" na bonyeza "**Start Instrumentation**" (utaweza kuona logs za script hizo ndani ya "**Frida Live Logs**"). ![](<../../images/image (419).png>) -Zaidi ya hayo, una baadhi ya kazi za ziada za Frida: +Zaidi ya hayo, una baadhi ya Auxiliary Frida functionalities: -- **Enumerate Loaded Classes**: Itachapisha kila darasa lililopakiwa -- **Capture Strings**: Itachapisha kila nyuzi zilizokamatwa wakati wa kutumia programu (sauti nyingi) -- **Capture String Comparisons**: Inaweza kuwa ya manufaa sana. It **onyesha nyuzi 2 zinazolinganishwa** na ikiwa matokeo yalikuwa Kweli au Uongo. -- **Enumerate Class Methods**: Weka jina la darasa (kama "java.io.File") na itachapisha mbinu zote za darasa hilo. -- **Search Class Pattern**: Tafuta madarasa kwa mfano -- **Trace Class Methods**: **Trace** **darasa zima** (ona ingizo na matokeo ya mbinu zote za darasa hilo). Kumbuka kwamba kwa kawaida MobSF inafuatilia mbinu kadhaa za kuvutia za Android Api. +- **Enumerate Loaded Classes**: It will print all the loaded classes +- **Capture Strings**: It will print all the capture strings while using the application (super noisy) +- **Capture String Comparisons**: Could be very useful. It will **show the 2 strings being compared** and if the result was True or False. +- **Enumerate Class Methods**: Put the class name (like "java.io.File") and it will print all the methods of the class. +- **Search Class Pattern**: Search classes by pattern +- **Trace Class Methods**: **Trace** a **whole class** (see inputs and outputs of all methods of th class). Remember that by default MobSF traces several interesting Android Api methods. -Mara tu unapochagua moduli ya ziada unayotaka kutumia unahitaji kubonyeza "**Start Intrumentation**" na utaona matokeo yote katika "**Frida Live Logs**". +Mara utakapochagua module ya ziada unayotaka kutumia unahitaji kubonyeza "**Start Intrumentation**" na utaona matokeo yote katika "**Frida Live Logs**". **Shell** -Mobsf pia inakuletea shell yenye baadhi ya **adb** amri, **MobSF commands**, na amri za kawaida za **shell** chini ya ukurasa wa uchambuzi wa dynamic. Baadhi ya amri za kuvutia: +Mobsf pia inakuleta shell yenye baadhi ya amri za **adb**, **MobSF commands**, na amri za kawaida za **shell** kwenye sehemu ya chini ya ukurasa wa dynamic analysis. Baadhi ya amri za kuvutia: ```bash help shell ls @@ -598,15 +649,15 @@ exported_activities services receivers ``` -**HTTP tools** +**Zana za HTTP** -Wakati trafiki ya http inakamatwa unaweza kuona mtazamo mbaya wa trafiki iliyokamatwa kwenye "**HTTP(S) Traffic**" chini au mtazamo mzuri kwenye "**Start HTTPTools**" kitufe kibichi. Kutoka kwenye chaguo la pili, unaweza **kutuma** **maombi yaliyokamatwa** kwa **proxies** kama Burp au Owasp ZAP.\ -Ili kufanya hivyo, _washa Burp -->_ _zimisha Intercept --> katika MobSB HTTPTools chagua ombi_ --> bonyeza "**Send to Fuzzer**" --> _chagua anwani ya proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). +Wakati traffic ya http inapokamatwa unaweza kuona mtazamo mbaya wa traffic iliyokamatwa kwenye kitufe cha "**HTTP(S) Traffic**" au mtazamo mzuri kwenye kitufe cha kijani "**Start HTTPTools**". Kutoka chaguo la pili, unaweza **kutuma** **maombi yaliyokamatwa** kwa **proxies** kama Burp au Owasp ZAP.\ +Ili kufanya hivyo, _washa Burp -->_ _zima Intercept --> katika MobSB HTTPTools chagua request_ --> bonyeza "**Send to Fuzzer**" --> _chagua anwani ya proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). -Mara tu unapo maliza uchambuzi wa dynamic na MobSF unaweza kubonyeza "**Start Web API Fuzzer**" ili **fuzz maombi ya http** na kutafuta udhaifu. +Mara tu umemaliza dynamic analysis na MobSF unaweza kubonyeza "**Start Web API Fuzzer**" ili **fuzz http requests** na kutafuta udhaifu. > [!TIP] -> Baada ya kufanya uchambuzi wa dynamic na MobSF mipangilio ya proxy inaweza kuwa na makosa na huwezi kuziweka sawa kutoka kwenye GUI. Unaweza kurekebisha mipangilio ya proxy kwa kufanya: +> Baada ya kufanya dynamic analysis na MobSF mipangilio ya proxy inaweza kuwa imepangwa vibaya na huwezi kuirekebisha kutoka GUI. Unaweza kurekebisha mipangilio ya proxy kwa kufanya: > > ``` > adb shell settings put global http_proxy :0 @@ -614,18 +665,18 @@ Mara tu unapo maliza uchambuzi wa dynamic na MobSF unaweza kubonyeza "**Start We ### Assisted Dynamic Analysis with Inspeckage -Unaweza kupata chombo kutoka [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ -Chombo hiki kitatumia **Hooks** kukujulisha **kila kinachotokea katika programu** wakati unafanya **uchambuzi wa dynamic**. +Unaweza kupata zana kutoka [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ +Zana hii itatumia baadhi ya **Hooks** kukufahamisha **nini kinaendelea ndani ya application** wakati unafanya **dynamic analysis**. ### [Yaazhini](https://www.vegabird.com/yaazhini/) -Hii ni **zana nzuri ya kufanya uchambuzi wa static na GUI** +Hii ni **zana nzuri ya kufanya static analysis kwa GUI** ![](<../../images/image (741).png>) ### [Qark](https://github.com/linkedin/qark) -Chombo hiki kimeundwa kutafuta udhaifu kadhaa **yanayohusiana na usalama wa programu za Android**, iwe katika **kanuni ya chanzo** au **APKs zilizopakiwa**. Chombo hiki pia **kina uwezo wa kuunda "Proof-of-Concept" APK inayoweza kutekelezwa** na **amri za ADB**, ili kutumia baadhi ya udhaifu uliofindika (Shughuli zilizo wazi, nia, tapjacking...). Kama ilivyo kwa Drozer, hakuna haja ya ku-root kifaa kinachojaribiwa. +Zana hii imeundwa kutafuta maeneo mbalimbali ya **security related Android application vulnerabilities**, iwe katika **source code** au **packaged APKs**. Zana pia ina uwezo wa **kuunda a "Proof-of-Concept" deployable APK** na **ADB commands**, ili kutekeleza baadhi ya vulnerabilities zilizopatikana (Exposed activities, intents, tapjacking...). Kama ilivyo kwa Drozer, hakuna haja ya ku-root kifaa cha mtihani. ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk @@ -634,22 +685,22 @@ qark --java path/to/specific/java/file.java ``` ### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git) -- Inaonyesha faili zote zilizotolewa kwa ajili ya rejeleo rahisi -- Inachambua faili za APK kiotomatiki hadi Java na Smali format -- Changanua AndroidManifest.xml kwa ajili ya udhaifu na tabia za kawaida -- Uchambuzi wa msimbo wa chanzo wa statiki kwa ajili ya udhaifu na tabia za kawaida +- Inaonyesha faili zote zilizochimbuliwa kwa rejea rahisi +- Inafanya decompile moja kwa moja ya APK files hadi Java na Smali format +- Huchambua AndroidManifest.xml kwa vulnerabilities za kawaida na tabia +- Static source code analysis kwa vulnerabilities za kawaida na tabia - Taarifa za kifaa -- na zaidi +- na mengine mengi ```bash reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) -SUPER ni programu ya amri inayoweza kutumika katika Windows, MacOS X na Linux, inayochambua faili za _.apk_ kutafuta udhaifu. Hufanya hivyo kwa kubonyeza APKs na kutumia mfululizo wa sheria kugundua udhaifu hizo. +SUPER ni programu ya mstari wa amri inayoweza kutumika kwenye Windows, MacOS X na Linux, ambayo inachambua faili za _.apk_ kwa kutafuta udhaifu. Inafanya hivyo kwa kufungua APKs na kutumia mfululizo wa sheria kugundua udhaifu hizo. -Sheria zote zinazingatia faili ya `rules.json`, na kila kampuni au mtathmini anaweza kuunda sheria zake mwenyewe kuchambua kile wanachohitaji. +Sheria zote ziko kwenye faili la `rules.json`, na kila kampuni au mtapimaji anaweza kuunda sheria zake ili kuchambua wanachohitaji. -Pakua binaries za hivi punde kutoka kwenye [download page](https://superanalyzer.rocks/download.html) +Pakua binaries za hivi karibuni kutoka kwenye [download page](https://superanalyzer.rocks/download.html) ``` super-analyzer {apk_file} ``` @@ -657,17 +708,17 @@ super-analyzer {apk_file} ![](<../../images/image (297).png>) -StaCoAn ni chombo **crossplatform** ambacho kinawasaidia waendelezaji, wawindaji wa makosa na hackers wa kimaadili kufanya [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) kwenye programu za simu. +StaCoAn ni zana ya **crossplatform** inayowasaidia waendelezaji, bugbounty hunters na ethical hackers wanaofanya [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) kwenye programu za rununu. -Wazo ni kwamba unavuta na kuacha faili yako ya programu ya simu (faili .apk au .ipa) kwenye programu ya StaCoAn na itaunda ripoti ya kuona na kubebeka kwako. Unaweza kubadilisha mipangilio na orodha za maneno ili kupata uzoefu wa kibinafsi. +Dhana ni kwamba unaburuta na kuachia (drag and drop) faili ya programu yako ya rununu (faili ya .apk au .ipa) kwenye programu ya StaCoAn na itatengeneza ripoti ya kuona na inayobebeka kwa ajili yako. Unaweza kurekebisha settings na wordlists kupata uzoefu uliobinafsishwa. -Pakua [latest release](https://github.com/vincentcox/StaCoAn/releases): +Pakua[ latest release](https://github.com/vincentcox/StaCoAn/releases): ``` ./stacoan ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs_Framework) -AndroBugs Framework ni mfumo wa uchambuzi wa udhaifu wa Android unaosaidia waendelezaji au hackers kupata udhaifu wa usalama unaoweza kutokea katika programu za Android.\ +AndroBugs Framework ni mfumo wa uchambuzi wa udhaifu wa Android unaosaidia waendelezaji au hackers kutafuta udhaifu za usalama zinazowezekana katika programu za Android.\ [Windows releases](https://github.com/AndroBugs/AndroBugs_Framework/releases) ``` python androbugs.py -f [APK file] @@ -675,11 +726,11 @@ androbugs.exe -f [APK file] ``` ### [Androwarn](https://github.com/maaaaz/androwarn) -**Androwarn** ni chombo chenye lengo kuu la kugundua na kumwonya mtumiaji kuhusu tabia mbaya zinazoweza kutokea zinazotengenezwa na programu ya Android. +**Androwarn** ni zana yenye lengo kuu la kugundua na kuwaonya watumiaji kuhusu tabia hatari zinazoweza kutendeka katika programu ya Android. -Ugunduzi unafanywa kwa **uchambuzi wa statiki** wa bytecode ya Dalvik ya programu, inayowakilishwa kama **Smali**, kwa kutumia maktaba ya [`androguard`](https://github.com/androguard/androguard). +Ugunduzi unafanywa kwa kutumia **static analysis** ya Dalvik bytecode ya programu, iliyoonyeshwa kama **Smali**, kwa kutumia maktaba ya [`androguard`](https://github.com/androguard/androguard). -Chombo hiki kinatafuta **tabia za kawaida za programu "mbaya"** kama: Uhamasishaji wa vitambulisho vya Simu, Ukatishaji wa mtiririko wa Sauti/video, Marekebisho ya data za PIM, Utekelezaji wa msimbo wa kiholela... +Zana hii inatafuta **tabia za kawaida za programu "mbaya"** kama: 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 ``` @@ -687,60 +738,60 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ![](<../../images/image (595).png>) -**MARA** ni **M**obile **A**pplication **R**everse engineering na **A**nalysis Framework. Ni chombo kinachokusanya zana zinazotumika mara kwa mara za uhandisi wa nyuma na uchambuzi wa programu za simu, kusaidia katika kupima programu za simu dhidi ya vitisho vya usalama wa simu vya OWASP. Lengo lake ni kufanya kazi hii iwe rahisi na rafiki kwa watengenezaji wa programu za simu na wataalamu wa usalama. +**MARA** is a **M**obile **A**pplication **R**everse engineering and **A**nalysis Framework. Ni zana inayoweka pamoja zana zinazotumika sana za reverse engineering na analysis za mobile application, kusaidia katika kujaribu programu za rununu dhidi ya tishio za usalama za OWASP. Lengo lake ni kufanya kazi hii iwe rahisi na rafiki kwa waendelezaji wa programu za rununu na wataalamu wa usalama. -Inauwezo wa: +Ina uwezo wa: -- Kutolewa kwa msimbo wa Java na Smali kwa kutumia zana tofauti -- Kuchambua APKs kwa kutumia: [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) -- Kutolewa kwa taarifa za kibinafsi kutoka kwa APK kwa kutumia regexps. -- Kuchambua Manifest. -- Kuchambua maeneo yaliyopatikana kwa kutumia: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) na [whatweb](https://github.com/urbanadventurer/WhatWeb) -- Kuondoa obfuscation ya APK kupitia [apk-deguard.com](http://www.apk-deguard.com) +- Extract Java and Smali code using different tools +- Analyze APKs using: [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) +- Toka private information kutoka APK kwa kutumia regexps. +- Chambua Manifest. +- Chambua domains zilizopatikana kwa kutumia: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) and [whatweb](https://github.com/urbanadventurer/WhatWeb) +- Deobfuscate APK via [apk-deguard.com](http://www.apk-deguard.com) ### Koodous -Inatumika kugundua malware: [https://koodous.com/](https://koodous.com) +Useful to detect malware: [https://koodous.com/](https://koodous.com) ## Obfuscating/Deobfuscating code -Kumbuka kwamba kulingana na huduma na usanidi unayotumia kuondoa obfuscation ya msimbo. Siri zinaweza kuwa zimeondolewa obfuscated au la. +Kumbuka kwamba, kutegemea huduma na usanidi utakao tumia kuficha msimbo, secrets zinaweza kuwa zimefichwa au zisifichwe. ### [ProGuard]() -Kutoka [Wikipedia](): **ProGuard** ni chombo cha amri cha chanzo wazi kinachopunguza, kuboresha na kuondoa obfuscation ya msimbo wa Java. Inaweza kuboresha bytecode pamoja na kugundua na kuondoa maagizo yasiyotumika. ProGuard ni programu ya bure na inasambazwa chini ya GNU General Public License, toleo la 2. +From [Wikipedia](): **ProGuard** is an open source command-line tool that shrinks, optimizes and obfuscates Java code. Inaweza kuboresha bytecode pamoja na kugundua na kuondoa maagizo yasiyotumika. ProGuard ni programu ya bure na inasambazwa chini ya GNU General Public License, version 2. -ProGuard inasambazwa kama sehemu ya Android SDK na inafanya kazi wakati wa kujenga programu katika hali ya kutolewa. +ProGuard inasambazwa kama sehemu ya Android SDK na inaendesha wakati wa kujenga application katika release mode. ### [DexGuard](https://www.guardsquare.com/dexguard) -Pata mwongozo wa hatua kwa hatua wa kuondoa obfuscation ya apk katika [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) +Pata mwongozo hatua kwa hatua wa ku-deobfuscate apk katika [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) -(Kutoka mwongozo huo) Mara ya mwisho tulipoangalia, hali ya uendeshaji ya Dexguard ilikuwa: +(From that guide) Last time we checked, the Dexguard mode of operation was: -- kupakia rasilimali kama InputStream; -- kutoa matokeo kwa darasa linalorithi kutoka FilterInputStream ili kuyafungua; -- kufanya obfuscation isiyo na maana ili kupoteza dakika chache za muda kutoka kwa mhandisi wa nyuma; -- kutoa matokeo yaliyofunguliwa kwa ZipInputStream ili kupata faili ya DEX; -- hatimaye kupakia DEX inayotokana kama Rasilimali kwa kutumia njia ya `loadDex`. +- pakia resource kama InputStream; +- pitisha matokeo kwa class inayoirithi kutoka FilterInputStream ili ku-decrypt; +- fanya obfuscation isiyo na maana ili kumwudhiwa reverser kwa muda; +- pitisha result iliyodecrypted kwa ZipInputStream ili kupata faili la DEX; +- hatimaye pokea DEX iliyopatikana kama Resource kwa kutumia method ya `loadDex`. ### [DeGuard](http://apk-deguard.com) -**DeGuard inarudisha mchakato wa obfuscation uliofanywa na zana za obfuscation za Android. Hii inaruhusu uchambuzi mwingi wa usalama, ikiwa ni pamoja na ukaguzi wa msimbo na kutabiri maktaba.** +**DeGuard reverses the process of obfuscation performed by Android obfuscation tools. This enables numerous security analyses, including code inspection and predicting libraries.** -Unaweza kupakia APK iliyokuwa obfuscated kwenye jukwaa lao. +Unaweza kupakia APK iliyofichwa kwenye jukwaa lao. ### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app -Hii ni zana ya LLM kutafuta udhaifu wowote wa usalama katika programu za android na kuondoa obfuscation ya msimbo wa programu za android. Inatumia API ya umma ya Gemini ya Google. +Hii ni zana ya LLM ya kutafuta potential security vulnerabilities katika android apps na ku-deobfuscate code ya android app. Inatumia Google's Gemini public API. ### [Simplify](https://github.com/CalebFenton/simplify) -Ni **deobfuscator ya android ya jumla.** Simplify **inatekeleza programu kwa karibu** ili kuelewa tabia yake na kisha **jaribu kuboresha msimbo** ili iwe na tabia sawa lakini iwe rahisi kwa binadamu kuelewa. Kila aina ya kuboresha ni rahisi na ya jumla, hivyo haijalishi ni aina gani maalum ya obfuscation inayotumika. +Ni **generic android deobfuscator.** Simplify **virtually executes an app** ili kuelewa tabia yake kisha **hujaribu kuboresha msimbo** ili ufanye kazi sawasawa lakini uwe rahisi kwa mwanadamu kuufahamu. Kila aina ya optimization ni rahisi na generic, kwa hivyo haijalishi ni aina gani ya obfuscation ilitumika. ### [APKiD](https://github.com/rednaga/APKiD) -APKiD inakupa taarifa kuhusu **jinsi APK ilivyotengenezwa**. Inatambua waandishi wengi wa **kompyuta**, **pakka**, **obfuscators**, na vitu vingine vya ajabu. Ni [_PEiD_](https://www.aldeid.com/wiki/PEiD) kwa Android. +APKiD inakupa taarifa kuhusu **jinsi APK ilivyotengenezwa**. Inatambua compilers nyingi, packers, obfuscators, na mambo mengine ya ajabu. Ni [_PEiD_](https://www.aldeid.com/wiki/PEiD) kwa Android. ### Manual @@ -750,16 +801,19 @@ APKiD inakupa taarifa kuhusu **jinsi APK ilivyotengenezwa**. Inatambua waandishi ### [Androl4b](https://github.com/sh4hin/Androl4b) -AndroL4b ni mashine ya virtual ya usalama ya Android inayotegemea ubuntu-mate inajumuisha mkusanyiko wa mfumo wa hivi karibuni, mafunzo na maabara kutoka kwa wahandisi wa usalama na watafiti mbalimbali kwa ajili ya uhandisi wa nyuma na uchambuzi wa malware. +AndroL4b ni mashine halisi ya usalama ya Android inayotegemea ubuntu-mate inayojumuisha mkusanyiko wa frameworks za hivi punde, tutorials na maabara kutoka kwa wanageek wa usalama na watafiti kwa ajili ya reverse engineering na malware analysis. ## References - [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/) - [https://appsecwiki.com/#/](https://appsecwiki.com/#/) Ni orodha nzuri ya rasilimali -- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Kozi ya haraka ya Android +- [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