hacktricks/mobile-pentesting/android-app-pentesting/README.md

825 lines
54 KiB
Markdown

# Ukadiriaji wa Maombi ya Android
<details>
<summary><strong>Jifunze AWS hacking kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa zawadi za mdudu!
**Machapisho ya Udukuzi**\
Shiriki na yaliyomo yanayochimba kina katika msisimko na changamoto za udukuzi
**Habari za Udukuzi za Wakati Halisi**\
Kaa hadi sasa na ulimwengu wa udukuzi wenye kasi kupitia habari za wakati halisi na ufahamu
**Matangazo ya Karibuni**\
Baki mwelekezi na zawadi mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wadukuzi bora leo!
## Msingi wa Maombi ya Android
Inapendekezwa sana kuanza kusoma ukurasa huu ili kujua kuhusu **sehemu muhimu zaidi zinazohusiana na usalama wa Android na sehemu hatari zaidi katika maombi ya Android**:
{% content-ref url="android-applications-basics.md" %}
[android-applications-basics.md](android-applications-basics.md)
{% endcontent-ref %}
## ADB (Daraja la Udukuzi la Android)
Hii ni zana kuu unayohitaji kuunganisha kifaa cha Android (kielekezwa au halisi).\
**ADB** inaruhusu kudhibiti vifaa kupitia **USB** au **Mtandao** kutoka kwenye kompyuta. Zana hii inawezesha **nakala** ya faili kwa pande zote, **ufungaji** na **ufutaji** wa programu, **utekelezaji** wa amri za shell, **kuhifadhi** data, **kusoma** magogo, miongoni mwa kazi nyingine.
Angalia orodha ifuatayo ya [**Amri za ADB**](adb-commands.md) kujifunza jinsi ya kutumia adb.
## Smali
Marafiki ni muhimu **kurekebisha msimbo wa maombi** ili kupata **habari iliyofichwa** (labda nywila zilizofichwa vizuri au bendera). Kisha, inaweza kuwa muhimu kudecompile apk, kurekebisha msimbo na kuirekebisha.\
[**Katika mafunzo haya** unaweza **kujifunza jinsi ya kudecompile na APK, kurekebisha msimbo wa Smali na kuirekebisha APK** na kazi mpya](smali-changes.md). Hii inaweza kuwa muhimu sana kama **mbadala kwa vipimo kadhaa wakati wa uchambuzi wa kudumu** ambao utawasilishwa. Kisha, **kuwa na fikira hii daima akilini**.
## Mbinu zingine za kuvutia
* [Kughushi eneo lako kwenye Duka la Kucheza](spoofing-your-location-in-play-store.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)
* Chambua APK kutoka kifaa:
```bash
adb shell pm list packages
com.android.insecurebankv2
adb shell pm path com.android.insecurebankv2
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 vilivyogawanyika na apk za msingi na [APKEditor](https://github.com/REAndroid/APKEditor):
```bash
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 1 | xargs -n1 -i adb pull {} splits
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
```
## Uchambuzi wa Stati
Kwanza kabisa, kwa kuchambua APK unapaswa **kutazama msimbo wa Java** kwa kutumia decompiler.\
Tafadhali, [**soma hapa kupata habari kuhusu decompilers tofauti zilizopo**](apk-decompilers.md).
### Kutafuta Habari Muhimu
Kwa kuchunguza **maneno** ya APK unaweza kutafuta **manenosiri**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **funguo za api**, **encryption**, **bluetooth uuids**, **tokens** na chochote kingine cha kuvutia... tafuta hata **backdoors** za utekelezaji wa msimbo au backdoors za uthibitishaji (vitambulisho vya msimamizi vilivyowekwa kwa nguvu kwenye programu).
**Firebase**
Tilia maanani **URLs za firebase** na hakikisha kama imeconfigurewa vibaya. [Maelezo zaidi kuhusu ni nini Firebase na jinsi ya kuitumia vibaya hapa.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
### Kuelewa Msingi wa Programu - Manifest.xml, strings.xml
**Uchunguzi wa faili za \_Manifest.xml** na **strings.xml** wa programu unaweza kufichua mapungufu ya usalama yanayowezekana. Faili hizi zinaweza kupatikana kwa kutumia decompilers au kwa kubadilisha kificho cha faili ya APK kuwa .zip na kisha kufungua.
**Mapungufu** yaliyotambuliwa kutoka kwa **Manifest.xml** ni pamoja na:
* **Programu za Debuggable**: Programu zilizowekwa kama debuggable (`debuggable="true"`) kwenye faili ya _Manifest.xml_ zinaweza kuwa hatari kwani zinaruhusu uhusiano ambao unaweza kusababisha unyanyasaji. Kwa uelewa zaidi kuhusu jinsi ya kutumia vibaya programu za debuggable, rejea kwa mafunzo kuhusu kutafuta na kutumia vibaya programu za debuggable kwenye kifaa.
* **Mipangilio ya Backup**: Sifa ya `android:allowBackup="false"` inapaswa kuwekwa wazi kwa programu zinazoshughulikia habari nyeti ili kuzuia nakala za data zisizoidhinishwa kupitia adb, hasa wakati uwezeshaji wa usb debugging unaruhusiwa.
* **Usalama wa Mtandao**: Mipangilio ya usalama wa mtandao ya kawaida (`android:networkSecurityConfig="@xml/network_security_config"`) katika _res/xml/_ inaweza kufafanua maelezo ya usalama kama vile pins za vyeti na mipangilio ya trafiki ya HTTP. Mfano ni kuruhusu trafiki ya HTTP kwa udomen fulani.
* **Shughuli na Huduma Zilizowekwa Wazi**: Kutambua shughuli na huduma zilizowekwa wazi katika manifest kunaweza kufichua vipengele vinavyoweza kutumiwa vibaya. Uchambuzi zaidi wakati wa majaribio ya moja kwa moja unaweza kufunua jinsi ya kutumia vibaya vipengele hivi.
* **Watoa Huduma wa Yaliyomo na Watoa Faili**: Watoa huduma wa yaliyomo waliowekwa wazi wanaweza kuruhusu ufikiaji usiohalali au ubadilishaji wa data. Usanidi wa Watoa Faili pia unapaswa kuchunguzwa kwa makini.
* **Wapokeaji wa Matangazo na Mipango ya URL**: Vipengele hivi vinaweza kutumika kwa unyanyasaji, kwa umakini maalum kwa jinsi mipango ya URL inavyosimamiwa kwa mapungufu ya kuingiza.
* **Toleo za SDK**: Sifa za `minSdkVersion`, `targetSDKVersion`, na `maxSdkVersion` zinaonyesha toleo za Android zinazoungwa mkono, ikisisitiza umuhimu wa kutokuunga mkono toleo za Android zilizopitwa na wakati kwa sababu za usalama.
Kutoka kwa faili ya **strings.xml**, habari nyeti kama vile funguo za API, mipangilio ya desturi, na maelezo mengine ya watengenezaji yanaweza kugunduliwa, ikisisitiza umuhimu wa kupitia upya kwa uangalifu rasilimali hizi.
### Tapjacking
**Tapjacking** ni shambulio ambapo **programu** **mbovu** inazinduliwa na **kujipanga juu ya programu ya mwathiriwa**. Mara tu inapofunika programu ya mwathiriwa, kiolesura chake cha mtumiaji kimeundwa kwa njia ambayo inadanganya mtumiaji kuingiliana nacho, wakati inapitisha uingiliano kwa programu ya mwathiriwa.\
Kimsingi, inamfanya **mtumiaji ashindwe kujua kwamba kimsingi anatekeleza vitendo kwenye programu ya mwathiriwa**.
Pata habari zaidi hapa:
{% content-ref url="tapjacking.md" %}
[tapjacking.md](tapjacking.md)
{% endcontent-ref %}
### Task Hijacking
**Shughuli** yenye **`launchMode`** iliyowekwa kama **`singleTask` bila `taskAffinity`** iliyofafanuliwa inaweza kushambuliwa na Task Hijacking. Hii inamaanisha, kwamba programu inaweza kusakinishwa na ikizinduliwa kabla ya programu halisi inaweza **kuteka kazi ya programu halisi** (hivyo mtumiaji atakuwa anaingiliana na **programu mbovu akidhani anatumia ile halisi**).
Maelezo zaidi katika:
{% content-ref url="android-task-hijacking.md" %}
[android-task-hijacking.md](android-task-hijacking.md)
{% endcontent-ref %}
### Uhifadhi wa Data usio Salama
**Uhifadhi wa Ndani**
Katika Android, faili zilizohifadhiwa kwenye **uhifadhi wa ndani** zimedhamiriwa kuwa **inapatikana** kipekee na **programu** iliyo **iumba**. Hatua hii ya usalama inatekelezwa na mfumo wa uendeshaji wa Android na kwa ujumla ni ya kutosha kwa mahitaji ya usalama ya programu nyingi. Hata hivyo, watengenezaji mara nyingi hutumia njia kama `MODE_WORLD_READABLE` na `MODE_WORLD_WRITABLE` kuwaruhusu faili kushirikiwa kati ya programu tofauti. Hata hivyo, njia hizi **hazizuili upatikanaji** wa faili hizi na programu nyingine, ikiwa ni pamoja na zile zenye nia mbaya.
1. **Uchambuzi wa Stati:**
* **Hakikisha** matumizi ya `MODE_WORLD_READABLE` na `MODE_WORLD_WRITABLE` yanachunguzwa **kwa umakini**. Njia hizi **zinaweza kufichua** faili kwa **upatikanaji usiokusudiwa au usiohalali**.
2. **Uchambuzi wa Moja kwa Moja:**
* **Thibitisha** ruhusa zilizowekwa kwenye faili zilizoundwa na programu. Hasa, **angalia** kama kuna faili zilizowekwa kuwa za kusomwa au kuandikwa na kila mtu. Hii inaweza kuwa hatari kubwa ya usalama, kwani itaruhusu **programu yoyote** iliyosakinishwa kwenye kifaa, bila kujali asili au nia yake, kusoma au kuhariri faili hizo.
**Uhifadhi wa Nje**
Wakati unashughulika na faili kwenye **uhifadhi wa nje**, kama vile Kadi za SD, tahadhari fulani inapaswa kuchukuliwa:
1. **Upatikanaji**:
* Faili kwenye uhifadhi wa nje ni **zinazosomwa na kuandikwa kimataifa**. Hii inamaanisha programu au mtumiaji yeyote anaweza kupata faili hizi.
2. **Masuala ya Usalama**:
* Kwa kuwa ni rahisi kupata, inashauriwa **kutokuhifadhi habari nyeti** kwenye uhifadhi wa nje.
* Uhifadhi wa nje unaweza kuondolewa au kufikiwa na programu yoyote, ikifanya kuwa si salama.
3. **Kushughulikia Data kutoka kwa Uhifadhi wa Nje**:
* Daima **fanya uthibitishaji wa kuingiza** kwenye data inayopatikana kutoka kwa uhifadhi wa nje. Hii ni muhimu kwa sababu data inatoka kwenye chanzo kisichoweza kudhibitishwa.
* Kuhifadhi faili za kutekelezeka au faili za darasa kwenye uhifadhi wa nje kwa kupakia kwa kudai ni jambo lisilopendekezwa.
* Ikiwa programu yako lazima ipate faili za kutekelezeka kutoka kwa uhifadhi wa nje, hakikisha faili hizi zinasainiwa na kuthibitishwa kwa njia ya kriptografia kabla ya kupakiwa kwa kudai. Hatua hii ni muhimu kwa kudumisha usalama wa programu yako.
Uhifadhi wa nje unaweza **kufikiwa** katika `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
{% hint style="info" %}
Kuanzia Android 4.4 (**API 17**), kadi ya SD ina muundo wa saraka ambao **unazuia upatikanaji kutoka kwa programu kwenda kwenye saraka maalum kwa ajili ya programu hiyo**. Hii inazuia programu mbovu kupata upatikanaji wa kusoma au kuandika faili za programu nyingine.
{% endhint %}
**Data nyeti iliyohifadhiwa kwa maandishi wazi**
* **Mapendeleo ya Kushirikiana**: Android inaruhusu kila programu kuokoa faili za xml kwa njia rahisi katika njia `/data/data/<jina la pakiti>/shared_prefs/` na mara nyingine inawezekana kupata habari nyeti kwa maandishi wazi kwenye saraka hiyo.
* **Maktaba za Data**: Android inaruhusu kila programu kuokoa maktaba za sqlite katika njia `/data/data/<jina la pakiti>/databases/` na mara nyingine inawezekana kupata habari nyeti kwa maandishi wazi kwenye saraka hiyo.
### TLS iliyovunjika
**Kukubali Vyeti Vyote**
Kwa sababu fulani mara nyingine watengenezaji wanakubali vyeti vyote hata kama kwa mfano jina la mwenyeji halilingani na mistari ya msimbo kama ifuatavyo:
```java
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
```
### Ufumbuzi wa Kuvunja
**Mchakato Mbaya wa Usimamizi wa Funguo**
Baadhi ya watengenezaji hufadhi data nyeti kwenye hifadhi ya ndani na kuiweka kwenye fichezo/predictable katika nambari. Hii haipaswi kufanywa kwani baadhi ya kugeuza inaweza kuruhusu wachomaji kutoa habari za siri.
**Matumizi ya Alama za Usalama na/au Alama za Zamani**
Watengenezaji hawapaswi kutumia **alama za zamani** kufanya **uchunguzi wa idhini**, **kuhifadhi** au **kupeleka** data. Baadhi ya alama hizi ni: RC4, MD4, MD5, SHA1... Ikiwa **hashes** hutumiwa kuhifadhi nywila kwa mfano, hashes zenye upinzani wa nguvu wa brute-force zinapaswa kutumika na chumvi.
### Uchunguzi Mwingine
* Inapendekezwa kufanya **APK kuwa ngumu** ili kufanya kazi ya kugeuza nyuma kuwa ngumu kwa wachomaji.
* Ikiwa programu ni nyeti (kama programu za benki), inapaswa kufanya **uchunguzi wake mwenyewe kuona ikiwa simu ya mkononi imepata mizizi** na kuchukua hatua kulingana na hilo.
* Ikiwa programu ni nyeti (kama programu za benki), inapaswa kuangalia ikiwa **emulator** inatumika.
* Ikiwa programu ni nyeti (kama programu za benki), inapaswa **kuangalia uadilifu wake mwenyewe kabla ya kutekeleza** ili kuona ikiwa imebadilishwa.
* Tumia [**APKiD**](https://github.com/rednaga/APKiD) kuangalia ni kipi kimepakwa/kufichwa/kufanywa ngumu kujenga APK
### Programu ya React Native
Soma ukurasa ufuatao kujifunza jinsi ya kupata kwa urahisi nambari ya javascript ya programu za React:
{% content-ref url="react-native-application.md" %}
[react-native-application.md](react-native-application.md)
{% endcontent-ref %}
### Programu za Xamarin
Soma ukurasa ufuatao kujifunza jinsi ya kupata kwa urahisi nambari ya C# ya programu za xamarin:
{% content-ref url="../xamarin-apps.md" %}
[xamarin-apps.md](../xamarin-apps.md)
{% endcontent-ref %}
### Programu za Superpacked
Kulingana na hii [**machapisho ya blogi**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked ni algorithm ya Meta ambayo inapunguza maudhui ya programu kuwa faili moja. Blogi inazungumzia uwezekano wa kuunda programu ambayo inafungua programu za aina hizi... na njia ya haraka ambayo inahusisha **kutekeleza programu na kukusanya faili zilizofunguliwa kutoka kwa mfumo wa faili.**
### Uchambuzi wa Kanuni wa Stati wa Kiotomatiki
Zana [**mariana-trench**](https://github.com/facebook/mariana-trench) inaweza kupata **mapungufu** kwa **kuchanganua** kanuni ya programu. Zana hii ina safu ya **vyanzo vilivyofahamika** (ambavyo vinaonyesha zana mahali **ambapo kuingia** kunadhibitiwa na mtumiaji), **mabwawa** (ambayo inaonyesha zana **mahali hatari** ambapo kuingia cha mtumiaji kinaweza kusababisha uharibifu) na **kanuni**. Kanuni hizi zinaonyesha **muungano** wa **vyanzo-mabwawa** ambao unaonyesha mapungufu.
Kwa maarifa haya, **mariana-trench itapitia kanuni na kupata mapungufu yanayowezekana**.
### Siri Zilizovuja
Programu inaweza kuwa na siri (funguo za API, nywila, viungo vilivyofichwa, subdomains...) ndani yake ambazo unaweza kugundua. Unaweza kutumia zana kama [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks)
### Kuvuka Uthibitishaji wa Kibaiometriki
{% content-ref url="bypass-biometric-authentication-android.md" %}
[bypass-biometric-authentication-android.md](bypass-biometric-authentication-android.md)
{% endcontent-ref %}
### Kazi Nyingine za Kuvutia
* **Utekelezaji wa Kanuni**: `Runtime.exec(), ProcessBuilder(), kanuni ya asili:system()`
* **Tuma SMS**: `tuma ujumbe wa maandishi, tuma ujumbe wa maandishi wa sehemu`
* **Kazi za asili** zilizotangazwa kama `asili`: `umma asili, System.loadLibrary, System.load`
* [Soma hii ili kujifunza **jinsi ya kugeuza nyuma kazi za asili**](reversing-native-libraries.md)
### **Mbinu Nyingine**
{% content-ref url="content-protocol.md" %}
[content-protocol.md](content-protocol.md)
{% endcontent-ref %}
***
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wachomaji wenye uzoefu na wawindaji wa tuzo za mdudu!
**Machapisho ya Kuvamia**\
Shiriki na yaliyomo yanayochimba ndani ya msisimko na changamoto za kuvamia
**Habari za Kuvamia za Wakati Halisi**\
Kaa sawa na ulimwengu wa kuvamia kwa kasi kupitia habari za wakati halisi na ufahamu
**Matangazo ya Hivi Karibuni**\
Baki mwelekezi na tuzo mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wachomaji bora leo!
***
## Uchambuzi wa Kiotomatiki
> Kwanza kabisa, unahitaji mazingira ambapo unaweza kusakinisha programu na mazingira yote (cheti cha Burp CA, Drozer na Frida hasa). Kwa hivyo, kifaa kilichopandwa (kimeigizwa au la) kinapendekezwa sana.
### Uchambuzi wa Kiotomatiki Mtandaoni
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 inavyotenda.
Unaweza hata **kuona magogo ya programu yako** kwenye wavuti na kuunganisha kupitia **adb**.
![](<../../.gitbook/assets/image (831).png>)
Kutokana na uhusiano wa ADB unaweza kutumia **Drozer** na **Frida** ndani ya wachomaji.
### Uchambuzi wa Kiotomatiki wa Ndani
#### Kutumia kigeuzi
* [**Android Studio**](https://developer.android.com/studio) (Unaweza kuunda vifaa vya **x86** na **arm**, na kulingana na [**hii** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**x86 ya hivi karibuni** inasaidia maktaba za ARM bila haja ya kigeuzi cha polepole cha arm).
* Jifunze kuweka katika ukurasa huu:
{% content-ref url="avd-android-virtual-device.md" %}
[avd-android-virtual-device.md](avd-android-virtual-device.md)
{% endcontent-ref %}
* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Toleo la Bure:** Toleo la Kibinafsi, unahitaji kuunda akaunti. _Inapendekezwa **kupakua** toleo **NA**_ _**VirtualBox** ili kuepuka makosa yanayowezekana._)
* [**Nox**](https://es.bignox.com) (Bure, lakini haisaidii Frida au Drozer).
{% hint style="info" %}
Unapounda kigeuzi kipya kwenye jukwaa lolote, kumbuka kwamba kadri skrini inavyokuwa kubwa, ndivyo kigeuzi kitakavyokuwa polepole. Chagua skrini ndogo ikiwezekana.
{% endhint %}
Kuweka **huduma za google** (kama Duka la Programu) kwenye Genymotion unahitaji bonyeza kitufe kilichopigwa nyekundu kwenye picha ifuatayo:
![](<../../.gitbook/assets/image (277).png>)
Pia, kumbuka kwamba katika **usakinishaji wa VM ya Android katika Genymotion** unaweza kuchagua **mode ya Mtandao wa Daraja** (hii itakuwa muhimu ikiwa utakuwa unajiunga na VM ya Android kutoka kwa VM tofauti na zana).
#### Tumia kifaa halisi
Unahitaji kuamsha chaguo za **kudebugi** na itakuwa nzuri ikiwa unaweza kuipata:
1. **Vipimo**.
2. (Kutoka Android 8.0) Chagua **Mfumo**.
3. Chagua **Kuhusu simu**.
4. Bonyeza **Nambari ya Kujenga** mara 7.
5. Rudi nyuma na utapata **Chaguzi za Msanidi programu**.
> Mara baada ya kusakinisha programu, jambo la kwanza unapaswa kufanya ni kujaribu na kuchunguza inafanya nini, inafanyaje kazi na kupata faraja nayo.\
> Nitapendekeza **kufanya uchambuzi wa kiotomatiki wa awali kwa kutumia uchambuzi wa kiotomatiki wa MobSF + pidcat**, hivyo tutaweza **kujifunza jinsi programu inavyofanya kazi** wakati MobSF **inakamata** data nyingi **ya kuvutia** unaweza kuchunguza baadaye.
### Kutokwa na Data Isiyopangwa
**Kuingiza Kumbukumbu**
Wabunifu wanapaswa kuwa makini kuhusu kuweka wazi **taarifa za kurekebisha hitilafu** kwa umma, kwani inaweza kusababisha kutokwa na data nyeti. Zana [**pidcat**](https://github.com/JakeWharton/pidcat) na `adb logcat` zinapendekezwa kwa kufuatilia kumbukumbu za programu ili kutambua na kulinda taarifa nyeti. **Pidcat** inapendelewa kwa urahisi wake wa matumizi na uwekaji wazi.
{% hint style="warning" %}
Tambua kwamba kuanzia **baada ya Android 4.0**, **programu zinaweza tu kupata kumbukumbu zao wenyewe**. Hivyo, programu haziwezi kupata kumbukumbu za programu nyingine.\
Hata hivyo, bado inapendekezwa **kutoingiza taarifa nyeti**.
{% endhint %}
**Kuhifadhi Nakala/Kubandika Kwenye Akiba**
Mfumo wa **ubandikaji** wa Android unawezesha utendaji wa kunakili/kubandika kwenye programu, lakini unaweka hatari kwa kuwa **programu nyingine** zinaweza **kupata** ubandikaji, hivyo kufichua data nyeti. Ni muhimu **kulemaza utendaji wa kunakili/kubandika** kwa sehemu nyeti za programu, kama vile maelezo ya kadi ya mkopo, ili kuzuia kutokwa na data.
**Kumbukumbu za Kusitisha**
Ikiwa programu **inasitisha** na **kupata kumbukumbu**, kumbukumbu hizi zinaweza kusaidia wachomozaji, hasa wakati programu haiwezi kugeuzwa nyuma. Ili kupunguza hatari hii, epuka kuingiza kumbukumbu wakati wa kusitisha, na ikiwa kumbukumbu lazima itumwe kupitia mtandao, hakikisha zinatumwa kupitia kituo cha SSL kwa usalama.
Kama mchomozaji, **jaribu kutazama kumbukumbu hizi**.
**Data ya Takwimu Inayotumwa kwa Watu wa Tatu**
Programu mara nyingi huingiza huduma kama Google Adsense, ambayo inaweza kwa bahati mbaya **kutokwa na data nyeti** kutokana na utekelezaji usio sahihi wa wabunifu. Ili kutambua kutokwa kwa data, ni vyema **kukamata trafiki ya programu** na kuangalia kama kuna taarifa nyeti inayotumwa kwa huduma za watu wa tatu.
### SQLite DBs
Programu nyingi zitatumia **databases za ndani za SQLite** kuhifadhi taarifa. Wakati wa pentest, angalia **databases** zilizoundwa, majina ya **meza** na **vitengo** vyote vya **data** vilivyohifadhiwa kwani unaweza kupata **taarifa nyeti** (ambayo itakuwa hitilafu).\
Databases zinapaswa kuwa katika `/data/data/jina.la.pakiti/databases` kama `/data/data/com.mwr.example.sieve/databases`
Ikiwa database inahifadhi taarifa za siri na ime **fichwa** lakini unaweza **kupata** **nenosiri** ndani ya programu bado ni **hitilafu**.
Panga meza kwa kutumia `.tables` na panga vitengo vya meza kwa kufanya `.schema <jina_la_meza>`
### Drozer (Shughuli za Kudukua, Watoa Huduma wa Yaliyomo na Huduma)
Kutoka kwa [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 vile kutumia Mawasiliano ya Mchakato wa Android (IPC) na kuingiliana na mfumo wa uendeshaji wa msingi. .\
Drozer ni zana muhimu kudukua shughuli zilizodukuliwa, huduma zilizodukuliwa na Watoa Huduma wa Yaliyomo kama utakavyojifunza katika sehemu zifuatazo.
### Kudukua Shughuli Zilizodukuliwa
[Soma hii ikiwa unataka kufahamu upya ni nini Shughuli ya Android.](android-applications-basics.md#launcher-activity-and-other-activities)\
Pia kumbuka kuwa msimbo wa shughuli huanza katika mbinu ya **`onCreate`**.
**Kupuuza Uthibitishaji**
Wakati Shughuli inapodukuliwa unaweza kuita skrini yake kutoka kwa programu ya nje. Hivyo, ikiwa shughuli yenye **taarifa nyeti** ime **duduliwa** unaweza **kupuuza** mifumo ya **uthibitishaji** **kupata** hiyo.
```bash
adb shell am start -n com.example.demo/com.example.test.MainActivity
```
**TAARIFA**: MobSF itagundua kama hatari matumizi ya _**singleTask/singleInstance**_ kama `android:launchMode` katika activity, lakini kutokana na [hii](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), inaonekana hii ni hatari kwa toleo za zamani (toleo la API < 21).
{% hint style="info" %}
Tafadhali kumbuka kwamba kukiuka idhini sio lazima iwe tishio, itategemea jinsi kukiuka hufanya kazi na ni habari gani inafichuliwa.
{% endhint %}
**Kuvuja kwa Taarifa Zenye Hisia**
**Activities pia zinaweza kurudisha matokeo**. Ikiwa unafanikiwa kupata activity iliyotolewa na isiyolindwa ikitoa mbinu ya **`setResult`** na **kurudisha taarifa zenye hisia**, hii ni kuvuja kwa taarifa zenye hisia.
#### Tapjacking
Ikiwa tapjacking haijazuiliwa, unaweza kutumia activity iliyotolewa kufanya **mtumiaji afanye vitendo visivyotarajiwa**. Kwa habari zaidi kuhusu [**ni nini Tapjacking fuata kiungo**](./#tapjacking).
### Kutumia Watoa Huduma - Kupata na kubadilisha taarifa zenye hisia
[**Soma hii ikiwa unataka kufahamu upya ni nini Mtoa Huduma.**](android-applications-basics.md#content-provider)\
Watoa huduma kimsingi hutumiwa kwa ajili ya **kushiriki data**. Ikiwa programu ina watoa huduma inayopatikana unaweza **kutolea taarifa zenye hisia** kutoka kwao. Pia ni muhimu kufanya majaribio ya **SQL injections** na **Path Traversals** kwani wanaweza kuwa na mapungufu.
[**Jifunze jinsi ya kutumia Watoa Huduma na Drozer.**](drozer-tutorial/#content-providers)
### **Kutumia Huduma**
[**Soma hii ikiwa unataka kufahamu upya ni nini Huduma.**](android-applications-basics.md#services)\
Kumbuka kuwa hatua za Huduma huanza katika mbinu `onStartCommand`.
Huduma ni kitu ambacho kimsingi **inaweza kupokea data**, **kuiprocess** na **kurudisha** (au la) majibu. Kwa hiyo, ikiwa programu inatoa huduma fulani unapaswa **kuangalia** **mimbo** ili kuelewa inafanya nini na kuifanyia majaribio **kwa njia ya kudumu** ili kutoa taarifa za siri, kukiuka hatua za uthibitishaji...
[**Jifunze jinsi ya kutumia Huduma na Drozer.**](drozer-tutorial/#services)
### **Kutumia Wapokeaji wa Matangazo**
[**Soma hii ikiwa unataka kufahamu upya ni nini Mpokeaji wa Matangazo.**](android-applications-basics.md#broadcast-receivers)\
Kumbuka kuwa hatua za Mpokeaji wa Matangazo huanza katika mbinu `onReceive`.
Mpokeaji wa matangazo atakuwa anasubiri aina fulani ya ujumbe. Kulingana na jinsi mpokeaji anavyoshughulikia ujumbe huo inaweza kuwa na mapungufu.\
[**Jifunze jinsi ya kutumia Wapokeaji wa Matangazo na Drozer.**](./#exploiting-broadcast-receivers)
### **Kutumia Mipango / Viungo vya Kina**
Unaweza kutafuta viungo vya kina kwa mkono, ukitumia zana kama MobSF au hati kama [hii](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\
Unaweza **kufungua** mpango uliotangazwa kwa kutumia **adb** au **kivinjari**:
{% code overflow="wrap" %}
```bash
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
```
{% endcode %}
_Tafadhali kumbuka unaweza **kuacha jina la pakiti** na simu itaita moja kwa moja programu inayopaswa kufungua kiungo hicho._
{% code overflow="wrap" %}
```markup
<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>
```
{% endcode %}
**Msimbo ulioendeshwa**
Ili kupata **msimbo utakaotekelezwa kwenye Programu**, nenda kwenye shughuli iliyoitwa na kiungo cha kina na tafuta kazi ya **`onNewIntent`**.
![](<../../.gitbook/assets/image (436) (1) (1) (1).png>)
**Taarifa nyeti**
Kila wakati unapopata kiungo kirefu hakikisha **haipokei data nyeti (kama nywila) kupitia vigezo vya URL**, kwa sababu programu nyingine yoyote inaweza **kujifanya kuwa kiungo kirefu na kuiba data hiyo!**
**Vigezo katika njia**
Unapaswa pia **kuangalia ikiwa kiungo kirefu kinatumia kigezo ndani ya njia** ya URL kama: `https://api.example.com/v1/users/{username}`, katika kesi hiyo unaweza kulazimisha upitishaji wa njia kwa kupata kitu kama: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
Tambua kwamba ukigundua vituo sahihi ndani ya programu unaweza kusababisha **Ukurasa wa Kuelekeza** (ikiwa sehemu ya njia inatumika kama jina la kikoa), **uchukuzi wa akaunti** (ikiwa unaweza kurekebisha maelezo ya watumiaji bila ishara ya CSRF na kituo cha udhaifu kilichotumika njia sahihi) na udhaifu mwingine wowote. Zaidi [habari kuhusu hili hapa](http://dphoeniixx.com/2020/12/13-2/).
**Mifano zaidi**
Ripoti ya tuzo ya mdudu [yenye kuvutia](https://hackerone.com/reports/855618) kuhusu viungo (_/.well-known/assetlinks.json_).
### Ukaguzi wa Tabaka la Usafirishaji na Kukosekana kwa Uthibitisho
* **Vyeti mara nyingi havikaguliwi ipasavyo** na programu za Android. Ni kawaida kwa programu hizi kupuuza onyo na kukubali vyeti vilivyosainiwa na wenyewe au, kwa baadhi ya hali, kurudi kutumia mawasiliano ya HTTP.
* **Majadiliano wakati wa mkono wa SSL/TLS mara nyingi ni dhaifu**, kutumia seti za herufi zisizo salama. Udhaifu huu hufanya mawasiliano kuwa rahisi kwa mashambulizi ya mtu katikati (MITM), kuruhusu wadukuzi kufichua data.
* **Kuvuja kwa taarifa za kibinafsi** ni hatari wakati programu zinafanya uthibitisho kwa kutumia njia salama lakini kisha kufanya mawasiliano kupitia njia zisizo salama kwa shughuli nyingine. Hatua hii haikulindi data nyeti, kama vile vidakuzi vya kikao au maelezo ya mtumiaji, kutokana na kutekwa na vyombo vya uovu.
#### Uthibitisho wa Cheti
Tutazingatia **uthibitisho wa cheti**. Uadilifu wa cheti cha seva lazima uthibitishwe ili kuimarisha usalama. Hii ni muhimu kwa sababu miundombinu dhaifu ya TLS na usafirishaji wa data nyeti kupitia njia zisizo na kifaa zinaweza kuleta hatari kubwa. Kwa hatua za kina kuhusu kuthibitisha vyeti vya seva na kushughulikia udhaifu, [**rasilimali hii**](https://manifestsecurity.com/android-application-security-part-10/) hutoa mwongozo kamili.
#### Kufunga SSL
Kufunga SSL ni hatua ya usalama ambapo programu inathibitisha cheti cha seva dhidi ya nakala inayojulikana iliyohifadhiwa ndani ya programu yenyewe. Mbinu hii ni muhimu kuzuia mashambulizi ya mtu katikati. Kutekeleza Kufunga SSL kunapendekezwa sana kwa programu zinazoshughulikia taarifa nyeti.
#### Ukaguzi wa Trafiki
Ili kukagua trafiki ya HTTP, ni lazima **kusakinisha cheti cha zana ya wakala** (k.m., Burp). Bila kusakinisha cheti hiki, trafiki iliyosimbwa huenda isionekane kupitia wakala. Kwa mwongozo wa kusakinisha cheti cha CA cha desturi, [**bonyeza hapa**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
Programu zinazolenga **Kiwango cha API 24 na zaidi** zinahitaji marekebisho kwenye Mipangilio ya Usalama wa Mtandao ili kukubali cheti cha CA cha wakala. Hatua hii ni muhimu kwa kukagua trafiki iliyosimbwa. Kwa maelekezo ya kurekebisha Mipangilio ya Usalama wa Mtandao, [**rejea kwa mafunzo haya**](make-apk-accept-ca-certificate.md).
#### Kupitisha Kufunga SSL
Wakati Kufunga SSL imefanywa, kupitisha ni muhimu ili kukagua trafiki ya HTTPS. Mbinu mbalimbali zinapatikana kwa kusudi hili:
* **Kurekebisha** **apk** kiotomatiki ili **kipitishe** Kufunga SSL na [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Faida kuu ya chaguo hili ni kwamba hautahitaji mizizi kwa kupitisha Kufunga SSL, lakini utahitaji kufuta programu na kusakinisha mpya, na hii haitafanya kazi kila wakati.
* Unaweza kutumia **Frida** (kujadiliwa hapa chini) kupitisha 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 **kupitisha Kufunga SSL kiotomatiki** kwa kutumia [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
* Unaweza pia kujaribu **kupitisha Kufunga SSL kiotomatiki** kwa kutumia **uchambuzi wa kisasa wa MobSF** (kuelezea hapa chini)
* Ikiwa bado unadhani kuna trafiki ambayo hauichukui unaweza kujaribu **kupeleka trafiki kwa burp kwa kutumia iptables**. Soma blogi hii: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
#### Kutafuta Udhaifu wa Kawaida wa Wavuti
Ni muhimu pia kutafuta udhaifu wa kawaida wa wavuti ndani ya programu. Maelezo kamili kuhusu kutambua na kupunguza udhaifu huu yanazidi upeo wa muhtasari huu lakini yanashughulikiwa kwa kina mahali pengine.
### Frida
[Frida](https://www.frida.re) ni seti ya zana ya uwekaji wa kudumu kwa waendelezaji, wanaorudisha, na watafiti wa usalama.\
**Unaweza kupata programu inayoendeshwa na kufunga njia za wakati wa kukimbia kubadilisha tabia, kubadilisha thamani, kutoa thamani, kukimbia msimbo tofauti...**\
Ikiwa unataka kufanya ukaguzi wa kina wa programu za Android unahitaji kujua jinsi ya kutumia Frida.
* Jifunze jinsi ya kutumia Frida: [**Mafunzo ya Frida**](frida-tutorial/)
* 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 kiotomatiki 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 skripti za Frida hapa: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
* Jaribu kupitisha mbinu za kuzuia uchunguzi wa kosa / mbinu za kuzuia Frida kwa kupakia Frida kama ilivyoelezwa katika [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (zana [linjector](https://github.com/erfur/linjector-rs))
### **Dump Memory - Fridump**
Angalia ikiwa programu inahifadhi taarifa nyeti ndani ya kumbukumbu ambayo haipaswi kuhifadhi kama nywila au mnemoniki.
Kwa kutumia [**Fridump3**](https://github.com/rootbsd/fridump3) unaweza kudondosha kumbukumbu ya programu na:
```bash
# With PID
python3 fridump3.py -u <PID>
# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"
```
Hii itadondosha kumbukumbu katika folda ya ./dump, na hapo unaweza kutumia grep na 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]+$"
```
{% endcode %}
### **Data nyeti katika Keystore**
Katika Android Keystore ni mahali bora pa kuhifadhi data nyeti, hata hivyo, kwa idhini za kutosha bado **inawezekana kufikia**. Kwa kuwa programu mara nyingi huhifadhi hapa **data nyeti kwa maandishi wazi** vipimo vya pentest vinapaswa kuangalia hili kwani mtumiaji wa mizizi au mtu mwenye ufikivu wa kimwili kwenye kifaa anaweza kuiba data hii.
Hata kama programu ilihifadhi tarehe kwenye keystore, data inapaswa kuwa imefichwa.
Ili kupata 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)
```bash
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
```
### **Kupita Kielelezo/Biometrics**
Kwa kutumia script ya Frida ifuatayo inaweza kuwazekana **kupita kielelezo cha kidole** ambacho programu za Android zinaweza kuwa zinafanya ili **kulinda maeneo fulani yenye hisia:**
```bash
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
```
{% endcode %}
### **Picha za Mandharinyuma**
Unapoweka programu katika mandharinyuma, Android huchukua **picha ya programu** ili wakati inarudishwa mbele ianze kupakia picha kabla ya programu ili ionekane kana kwamba programu imepakia haraka.
Hata hivyo, ikiwa picha hii ina **habari nyeti**, mtu mwenye ufikivu wa picha hiyo anaweza **kuiba habari hizo** (kumbuka unahitaji ruhusa ya msingi kuifikia).
Picha za programu kawaida hufutwa karibu na: **`/data/system_ce/0/snapshots`**
Android hutoa njia ya **kuzuia upigaji picha wa skrini kwa kuweka FLAG\_SECURE** kama parameter ya mpangilio. Kwa kutumia bendera hii, maudhui ya dirisha hutibiwa kama salama, ikizuia kuonekana kwenye picha za skrini au kutazamwa kwenye maonyesho yasiyo salama.
```bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
```
### **Mchambuzi wa Maombi ya Android**
Zana hii inaweza kukusaidia kusimamia zana tofauti wakati wa uchambuzi wa kudumu: [https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer)
### Kuingiza Kusudi
Watengenezaji mara nyingi hujenga sehemu za mbadala kama shughuli, huduma, na wapokeaji wa matangazo ambao hushughulikia hizi Kusudi na kuzipitisha kwa njia kama `startActivity(...)` au `sendBroadcast(...)`, ambayo inaweza kuwa hatari.
Hatari iko katika kuruhusu wachomaji kuanzisha sehemu za programu ambazo hazijatolewa au kupata watoaji wa yaliyomo nyeti kwa kuelekeza vibaya hizi Kusudi. Mfano muhimu ni sehemu ya `WebView` kubadilisha URL kuwa vitu vya `Intent` kupitia `Intent.parseUri(...)` na kisha kuzitekeleza, ikisababisha kuingizwa kwa Kusudi zenye nia mbaya.
### Mambo Muhimu
* **Kuingiza Kusudi** ni sawa na shida ya Uelekezaji wa Wazi kwenye wavuti.
* Uvamizi unahusisha kupitisha vitu vya `Intent` kama ziada, ambazo zinaweza kuelekezwa kutekeleza shughuli zisizo salama.
* Inaweza kufunua sehemu zisizotolewa na watoaji wa yaliyomo kwa wachomaji.
* Ubadilishaji wa URL wa `WebView` kuwa vitu vya `Intent` unaweza kurahisisha hatua zisizokusudiwa.
### Kuingiza Kusudi kwa Upande wa Mteja wa Android na vinginevyo
Labda unajua kuhusu aina hii ya udhaifu kutoka kwenye Wavuti. Lazima uwe makini hasa na udhaifu huu katika programu ya Android:
* **Kuingiza SQL:** Unaposhughulika na maswali ya kudumu au Watoaji wa Yaliyomo hakikisha unatumia maswali yaliyoparameta.
* **Kuingiza JavaScript (XSS):** Hakikisha kwamba JavaScript na msaada wa Programu-jalizi umefungwa kwa WebViews yoyote (imefungwa kwa chaguo-msingi). [Maelezo zaidi hapa](webview-attacks.md#javascript-enabled).
* **Kuingiza Faili ya Ndani:** WebViews inapaswa kuwa na ufikiaji wa mfumo wa faili uliozimwa (umewezeshwa kwa chaguo-msingi) - `(webview.getSettings().setAllowFileAccess(false);)`. [Maelezo zaidi hapa](webview-attacks.md#javascript-enabled).
* **Vidakuzi vya Milele**: Katika visa kadhaa wakati programu ya Android inamaliza kipindi, kuki haijafutwa au inaweza hata kuokolewa kwenye diski
* [**Bendera Salama** kwenye vidakuzi](../../pentesting-web/hacking-with-cookies/#cookies-flags)
***
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) ili kuwasiliana na wachomaji wenye uzoefu na wawindaji wa zawadi za mdudu!
**Machapisho ya Kuchomwa**\
Shiriki na maudhui yanayochimba katika msisimko na changamoto za kuchomwa
**Habari za Kuchomwa kwa Wakati Halisi**\
Kaa sawa na ulimwengu wa kuchomwa kwa kasi kupitia habari za wakati halisi na ufahamu
**Matangazo Mapya Zaidi**\
Baki mwelekezwa na zawadi mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wachomaji bora leo!
## Uchambuzi wa Kiotomatiki
### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF)
**Uchambuzi wa Starehe**
![](<../../.gitbook/assets/image (866).png>)
**Tathmini ya udhaifu wa programu** kwa kutumia kiolesura cha wavuti kizuri. Unaweza pia kufanya uchambuzi wa kudumu (lakini unahitaji kuandaa mazingira).
```bash
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
```
Tambua kwamba MobSF inaweza kuchambua **Android**(apk)**, IOS**(ipa) **na Windows**(apx) maombi (_Maombi ya Windows yanapaswa kuchambuliwa kutoka kwa MobSF iliyosakinishwa kwenye mwenyeji wa Windows_).\
Pia, ikiwa utaunda faili ya **ZIP** na msimbo wa chanzo wa programu ya **Android** au **IOS** (enda kwenye folda kuu ya programu, chagua kila kitu na uunde faili ya ZIP), MobSF itaweza kuijumuisha pia.
MobSF pia inakuruhusu kufanya **diff/Compare** uchambuzi na kuunganisha **VirusTotal** (utahitaji kuweka ufunguo wako wa API katika _MobSF/settings.py_ na kuwezesha: `VT_ENABLED = TRUE` `VT_API_KEY = <Ufunguo wako wa API>` `VT_UPLOAD = TRUE`). Unaweza pia kuweka `VT_UPLOAD` kuwa `False`, kisha **hash** ita **pelekwa** badala ya faili.
### Uchambuzi wa Kisasa ulioongozwa na MobSF
**MobSF** inaweza pia kuwa na manufaa sana kwa **uchambuzi wa kisasa** kwenye **Android**, lakini katika kesi hiyo utahitaji kusakinisha MobSF na **genymotion** kwenye mwenyeji wako (VM au Docker haitafanya kazi). _Maelezo: Unahitaji **kuanza kwanza VM katika genymotion** na **kisha MobSF.**_\
Mchambuzi wa kisasa wa **MobSF** unaweza:
* **Dump data ya programu** (URLs, logs, clipboard, viwambo vilivyofanywa na wewe, viwambo vilivyofanywa na "**Mteja wa Shughuli iliyosafirishwa**", barua pepe, databases za SQLite, faili za XML, na faili zingine zilizoundwa). Hii yote hufanywa kiotomatiki isipokuwa viwambo, unahitaji kubonyeza unapotaka viwambo au unahitaji kubonyeza "**Mteja wa Shughuli iliyosafirishwa**" ili upate viwambo vya shughuli zote zilizosafirishwa.
* Kukamata **trafiki ya HTTPS**
* Kutumia **Frida** kupata **maelezo ya wakati wa uendeshaji**
Kuanzia toleo la **Android > 5**, ita **anzisha Frida kiotomatiki** na itaweka mipangilio ya **proxy** ya kimataifa kwa ajili ya **kukamata** trafiki. Itakamata trafiki kutoka kwenye programu iliyopimwa tu.
**Frida**
Kwa chaguo-msingi, pia itatumia Skripti za Frida kwa **kupuuza SSL pinning**, **ugunduzi wa root** na **ugunduzi wa debugger** na kwa **kuangalia APIs za kuvutia**.\
MobSF pia inaweza **kuamsha shughuli zilizosafirishwa**, kunasa **viwambo** vyao na **kuhifadhi** kwa ripoti.
Kuanza **jaribio la kisasa** bonyeza kitufe cha kijani: "**Anza Upelelezi**". Bonyeza "**Frida Live Logs**" kuona logs zilizozalishwa na skripti za Frida na "**Mfuatiliaji wa API Moja kwa Moja**" kuona mwaliko wote kwa njia ya mbinu zilizounganishwa, hoja zilizopitishwa na thamani zilizorudishwa (hii itaonekana baada ya kubonyeza "Anza Upelelezi").\
MobSF pia inakuruhusu kupakia skripti zako za **Frida** (kutuma matokeo ya skripti zako za Ijumaa kwa MobSF tumia kazi `send()`). Pia ina **skripti zilizopewa maandishi tayari** unaweza kupakia (unaweza kuongeza zaidi katika `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), tu **zichague**, bonyeza "**Pakia**" na bonyeza "**Anza Upelelezi**" (utaweza kuona logs za skripti hizo ndani ya "**Frida Live Logs**").
![](<../../.gitbook/assets/image (419).png>)
Zaidi ya hayo, una baadhi ya vifaa vya ziada vya Frida:
* **Panga Darasa Zilizopakiwa**: Itachapisha darasa zote zilizopakiwa
* **Kamata Maneno**: Itachapisha maneno yote yaliyokamatwa wakati wa kutumia programu (kelele nyingi sana)
* **Kamata Linganishi la Maneno**: Inaweza kuwa na manufaa sana. Ita **onyesha maneno 2 yanayolinganishwa** na ikiwa matokeo yalikuwa ya Kweli au ya Uongo.
* **Panga Njia za Darasa**: Weka jina la darasa (kama "java.io.File") na itachapisha njia zote za darasa.
* **Tafuta Kielelezo cha Darasa**: Tafuta darasa kwa kielelezo
* **Fuata Njia za Darasa**: **Fuata** darasa **zima** (ona matokeo na matokeo ya mbinu zote za darasa). Kumbuka kwamba kwa chaguo-msingi MobSF inafuatilia mbinu kadhaa za Android Api za kuvutia.
Baada ya kuchagua moduli ya ziada unayotaka kutumia unahitaji kubonyeza "**Anza Upelelezi**" na utaona matokeo yote katika "**Frida Live Logs**".
**Shell**
Mobsf pia inakuletea shell na baadhi ya amri za **adb**, **amri za MobSF**, na amri za **shell** za kawaida chini ya ukurasa wa uchambuzi wa kisasa. Baadhi ya amri za kuvutia:
```bash
help
shell ls
activities
exported_activities
services
receivers
```
**Vyombo vya HTTP**
Wakati trafiki ya http inachukuliwa unaweza kuona maoni mabaya ya trafiki iliyochukuliwa chini ya "**HTTP(S) Traffic**" au maoni mazuri zaidi katika chini ya "**Anza Vyombo vya HTTP**" kijani. Kutoka chaguo la pili, unaweza **kutuma** maombi yaliyochukuliwa kwa **proxies** kama Burp au Owasp ZAP.\
Ili kufanya hivyo, _washa Burp -->_ _zima Intercept --> katika MobSB Vyombo vya HTTP chagua ombi_ --> bonyeza "**Tuma kwa Fuzzer**" --> _chagua anwani ya proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
Baada ya kumaliza uchambuzi wa kudumu na MobSF unaweza bonyeza "**Anza Web API Fuzzer**" kufanya **fuzz maombi ya http** na kutafuta mapungufu.
{% hint style="info" %}
Baada ya kufanya uchambuzi wa kudumu na MobSF mipangilio ya proxy inaweza kuwa imeharibika na huenda usiweze kuzirekebisha kutoka kwenye GUI. Unaweza kuzirekebisha mipangilio ya proxy kwa kufanya:
```
adb shell settings put global http_proxy :0
```
{% endhint %}
### Uchambuzi wa Kisasa ulioongozwa na Inspeckage
Unaweza kupata zana kutoka [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\
Zana hii itatumia **Hooks** kadhaa kukujulisha **kinachoendelea katika programu** wakati unafanya **uchambuzi wa kisasa**.
### [Yaazhini](https://www.vegabird.com/yaazhini/)
Hii ni **zana nzuri kufanya uchambuzi wa kistatiki na GUI**
![](<../../.gitbook/assets/image (741).png>)
### [Qark](https://github.com/linkedin/qark)
Zana hii imeundwa kutafuta **mapungufu kadhaa ya usalama wa programu za Android**, iwe katika **msimbo wa chanzo** au **APK zilizopakwa**. Zana hii pia **inaweza kuunda APK inayoweza kutekelezwa kama "uthibitisho wa dhana"** na **amri za ADB**, kwa kufaidika na baadhi ya mapungufu yaliyopatikana (shughuli zilizofichuliwa, nia, tapjacking...). Kama ilivyo na Drozer, hakuna haja ya kuroot kifaa cha majaribio.
```bash
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java
```
### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git)
* Inaonyesha faili zote zilizochimbuliwa kwa urahisi
* Kudecompile moja kwa moja faili za APK hadi muundo wa Java na Smali
* Chambua AndroidManifest.xml kwa mapungufu na tabia za kawaida
* Uchambuzi wa msimbo wa chanzo wa tuli kwa mapungufu na tabia za kawaida
* Taarifa za kifaa
* na zaidi
```bash
reverse-apk relative/path/to/APP.apk
```
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
SUPER ni programu ya mstari wa amri inayoweza kutumika kwenye Windows, MacOS X na Linux, ambayo inachambua faili za _.apk_ kutafuta mapungufu. Inafanya hivi kwa kufungua APK na kutumia seti ya sheria kugundua mapungufu hayo.
Sheria zote zinazingatia faili ya `rules.json`, na kila kampuni au mtihani anaweza kuunda sheria zao za kuchambua wanachohitaji.
Pakua toleo jipya la binaries kutoka kwenye [ukurasa wa kupakua](https://superanalyzer.rocks/download.html)
```
super-analyzer {apk_file}
```
### [StaCoAn](https://github.com/vincentcox/StaCoAn)
![](<../../.gitbook/assets/image (297).png>)
StaCoAn ni chombo **cha msalaba-jukwaa** ambacho husaidia wabunifu, wawindaji wa tuzo za mdudu na wadukuzi wa maadili kufanya [uchambuzi wa msimbo wa tuli](https://en.wikipedia.org/wiki/Static\_program\_analysis) kwenye programu za simu.
Wazo ni kwamba unaburuta na kuachia faili yako ya programu ya simu (faili ya .apk au .ipa) kwenye programu ya StaCoAn na itazalisha ripoti ya kuona na inayoweza kubebeka kwako. Unaweza kubadilisha mipangilio na orodha za maneno ili upate uzoefu ulioboreshwa.
Pakua [toleo jipya zaidi](https://github.com/vincentcox/StaCoAn/releases):
```
./stacoan
```
### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework)
AndroBugs Framework ni mfumo wa uchambuzi wa udhaifu wa Android ambao husaidia wabunifu au wadukuzi kupata udhaifu wa usalama katika programu za Android.\
[Matokeo ya Windows](https://github.com/AndroBugs/AndroBugs\_Framework/releases)
```
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
```
### [Androwarn](https://github.com/maaaaz/androwarn)
**Androwarn** ni chombo ambacho lengo kuu ni kugundua na kumwonya mtumiaji kuhusu tabia za uovu zilizotengenezwa na programu ya Android.
Ugunduzi hufanywa na **uchambuzi wa tuli** wa bytecode ya Dalvik ya programu, inayowakilishwa kama **Smali**, kwa kutumia maktaba ya [`androguard`](https://github.com/androguard/androguard).
Chombo hiki hutafuta **tabia za kawaida za programu "mbaya"** kama vile: utekaji wa vitambulisho vya simu, udukuzi wa miamala ya sauti/video, mabadiliko ya data ya PIM, utekelezaji wa nambari isiyo na kikomo...
```
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
```
### [Mfumo wa MARA](https://github.com/xtiankisutsa/MARA_Framework)
![](<../../.gitbook/assets/image (595).png>)
**MARA** ni **M**fumo wa **A**nalisi na **R**everse engineering wa **A**pplikesheni za Simu. Ni chombo kinachoweka pamoja zana za kawaida zinazotumiwa katika reverse engineering na uchambuzi wa applikesheni za simu, kusaidia katika kupima applikesheni za simu dhidi ya vitisho vya usalama vya simu vya OWASP. Lengo lake ni kufanya kazi hii iwe rahisi na rafiki kwa watengenezaji wa applikesheni za simu na wataalamu wa usalama.
Inaweza:
* Kutoa 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)
* Kutoa taarifa za kibinafsi kutoka kwa APK kwa kutumia regexps.
* Kuchambua Manifest.
* Kuchambua vikoa vilivyopatikana kwa kutumia: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) na [whatweb](https://github.com/urbanadventurer/WhatWeb)
* Kufuta Obfuscate APK kupitia [apk-deguard.com](http://www.apk-deguard.com)
### Koodous
Inatumika kugundua programu hasidi: [https://koodous.com/](https://koodous.com)
## Kuficha/Kufunua msimbo
Tafadhali kumbuka kuwa kutegemea huduma na usanidi unaoitumia kuficha msimbo. Siri inaweza au isimalize kufichwa.
### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
Kutoka [Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\)): **ProGuard** ni zana ya amri ya wazi inayopunguza, inaboresha na kuficha msimbo wa Java. Inaweza kuboresha bytecode pamoja na kugundua na kuondoa maagizo yasiyotumiwa. ProGuard ni programu huru na inasambazwa chini ya Leseni ya Umma ya GNU, toleo la 2.
ProGuard inasambazwa kama sehemu ya Android SDK na inaendeshwa wakati wa kujenga applikesheni katika hali ya kutolewa.
### [DexGuard](https://www.guardsquare.com/dexguard)
Pata mwongozo wa hatua kwa hatua wa kufunua apk katika [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html)
(Kutoka kwa mwongozo huo) Wakati wa mwisho tulipoangalia, mode ya Dexguard ya uendeshaji ilikuwa:
* pakia rasilimali kama InputStream;
* peleka matokeo kwa darasa linaloiga kutoka kwa FilterInputStream ili kuidukua;
* fanya ufunuo wa kuficha usio na maana kutumia muda wa dakika chache kutoka kwa mtu anayegeuza;
* peleka matokeo yaliyodukuliwa kwa ZipInputStream kupata faili ya DEX;
* hatimaye pakia DEX iliyopatikana kama Rasilimali kwa kutumia njia ya `loadDex`.
### [DeGuard](http://apk-deguard.com)
**DeGuard inarejesha mchakato wa ufunuo uliofanywa na zana za ufunuo wa Android. Hii inawezesha uchambuzi wa usalama mwingi, ikiwa ni pamoja na ukaguzi wa msimbo na kutabiri maktaba.**
Unaweza kupakia APK iliyofichwa kwenye jukwaa lao.
### [Simplify](https://github.com/CalebFenton/simplify)
Ni **zana ya kufunua Android ya jumla.** Simplify **inatekeleza kimsingi applikesheni** ili kuelewa tabia yake na kisha **jaribu kuboresha msimbo** ili uwe sawa lakini uwe rahisi kwa binadamu kuelewa. Kila aina ya uboreshaji ni rahisi na ya jumla, kwa hivyo haifai ni aina gani maalum ya ufunuo inayotumiwa.
### [APKiD](https://github.com/rednaga/APKiD)
APKiD inakupa taarifa kuhusu **jinsi APK ilivyoundwa**. Inatambua **compilers** nyingi, **packers**, **obfuscators**, na vitu vingine vya ajabu. Ni [_PEiD_](https://www.aldeid.com/wiki/PEiD) kwa Android.
### Manual
[Soma mafunzo haya kujifunza mbinu kadhaa za **jinsi ya kufunua ufunuo wa kawaida**](manual-deobfuscation.md)
## Maabara
### [Androl4b](https://github.com/sh4hin/Androl4b)
AndroL4b ni mashine halisi ya usalama ya Android inayotegemea ubuntu-mate inajumuisha mkusanyiko wa hivi karibuni wa fremu, mafunzo na maabara kutoka kwa mabingwa tofauti wa usalama na watafiti kwa ajili ya reverse engineering na uchambuzi wa programu hasidi.
## Marejeo
* [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/)
* [https://appsecwiki.com/#/](https://appsecwiki.com/#/) Ni orodha kubwa ya rasilimali
* [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Kozi fupi ya Android
* [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)
## Bado kujaribu
* [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/)
* [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu!
**Machapisho ya Udukuzi**\
Shiriki na maudhui yanayochimba ndani ya msisimko na changamoto za udukuzi
**Habari za Udukuzi za Muda halisi**\
Kaa up-to-date na ulimwengu wa udukuzi wenye kasi kupitia habari za muda halisi na ufahamu
**Matangazo ya Karibuni**\
Baki mwelekezwa na tuzo mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa
**Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wadukuzi bora leo!
<details>
<summary><strong>Jifunze udukuzi wa AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **fuata** sisi kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>