hacktricks/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md

86 lines
5.5 KiB
Markdown
Raw Normal View History

2024-02-11 02:13:58 +00:00
# Kudukua programu inayoweza kudebugiwa
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:13:58 +00:00
<summary><strong>Jifunze kuhusu kudukua AWS 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>
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
Njia nyingine za kusaidia HackTricks:
2024-01-03 10:43:38 +00:00
2024-02-11 02:13:58 +00:00
* Ikiwa unataka kuona **kampuni yako inatangazwa katika HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
# **Kudukua ukaguzi wa root na uwezo wa kudebugiwa**
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
Sehemu hii ya chapisho ni muhtasari kutoka chapisho [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
## Hatua za Kufanya Programu ya Android Iweze Kudebugiwa na Kudukua Ukaguzi
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
### **Kufanya Programu Iweze Kudebugiwa**
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
Yaliyomo yamechukuliwa kutoka https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
2024-02-11 02:13:58 +00:00
1. **Kudondoa APK:**
- Tumia zana ya APK-GUI kudondoa APK.
- Katika faili ya _android-manifest_, ingiza `android:debuggable=true` kuwezesha hali ya kudebugiwa.
- Dondoa tena, saini, na zipalign programu iliyobadilishwa.
2024-02-11 02:13:58 +00:00
2. **Sakinisha Programu Iliyobadilishwa:**
- Tumia amri: `adb install <jina_la_programu>`.
2024-02-11 02:13:58 +00:00
3. **Pata Jina la Pakiti:**
- Tekeleza `adb shell pm list packages 3` kuorodhesha programu za watu wengine na kupata jina la pakiti.
2024-02-11 02:13:58 +00:00
4. **Weka Programu Iwe Ngoja Uunganisho wa Kudebugiwa:**
- Amri: `adb shell am setup-debug-app w <jina_la_pakiti>`.
- **Kumbuka:** Amri hii lazima itekelezwe kila wakati kabla ya kuanza programu ili kuhakikisha inangoja kudebugiwa.
- Kwa uthabiti, tumia `adb shell am setup-debug-app w -persistent <jina_la_pakiti>`.
- Ili kuondoa alama zote, tumia `adb shell am clear-debug-app <jina_la_pakiti>`.
2024-02-11 02:13:58 +00:00
5. **Jitayarisha kwa Kudebugiwa kwenye Android Studio:**
- Nenda kwenye Android Studio kwa kubonyeza _File -> Open Profile or APK_.
- Fungua APK iliyobadilishwa.
2024-02-11 02:13:58 +00:00
6. **Weka Alama za Kusimamisha katika Faili za Java muhimu:**
- Weka alama za kusimamisha katika `MainActivity.java` (hasa katika njia ya `onCreate`), `b.java`, na `ContextWrapper.java`.
2024-02-11 02:13:58 +00:00
### **Kudukua Ukaguzi**
2024-02-11 02:13:58 +00:00
Programu, katika maeneo fulani, itathibitisha ikiwa inaweza kudebugiwa na pia itafanya ukaguzi wa faili za binary zinazoonyesha kifaa kilichorootiwa. Kudebugiwa kunaweza kutumika kubadilisha habari za programu, kufuta biti ya kudebugiwa, na kubadilisha majina ya faili za binary zinazotafutwa ili kudukua ukaguzi huu.
2024-02-11 02:13:58 +00:00
Kwa ukaguzi wa kudebugiwa:
2024-02-11 02:13:58 +00:00
1. **Badilisha Mipangilio ya Alama:**
- Katika sehemu ya mchanganyiko wa konsoli ya kudebugi, nenda kwenye: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
- **Kumbuka:** Uwakilishi wa binary wa `flags = 814267974` ni `11000011100111011110`, ikionyesha kuwa "Flag_debuggable" iko hai.
2024-02-11 02:13:58 +00:00
![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png)
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
Hatua hizi zinahakikisha kuwa programu inaweza kudebugiwa na ukaguzi fulani wa usalama unaweza kudukuliwa kwa kutumia kudebugi, kurahisisha uchambuzi au ubadilishaji wa kina wa tabia ya programu.
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
Hatua ya 2 inahusisha kubadilisha thamani ya alama kuwa 814267972, ambayo inawakilishwa kwa binary kama 110000101101000000100010100.
2024-02-11 02:13:58 +00:00
# **Kudukua Udhaifu**
2024-02-11 02:13:58 +00:00
Onyesho lilifanywa kwa kutumia programu yenye udhaifu ambayo ina kifungo na maandishi. Awali, programu inaonyesha "Crack Me". Lengo ni kubadilisha ujumbe kutoka "Try Again" hadi "Hacked" wakati wa muda wa uendeshaji, bila kubadilisha msimbo wa chanzo.
2024-02-11 02:13:58 +00:00
## **Kuangalia Udhaifu**
- Programu ilidondolewa kwa kutumia `apktool` ili kupata faili ya `AndroidManifest.xml`.
- Kuwepo kwa `android_debuggable="true"` katika AndroidManifest.xml kunamaanisha programu inaweza kudebugiwa na inaweza kudukuliwa.
- Ni muhimu kutambua kuwa `apktool` inatumika tu kuangalia hali ya kudebugiwa bila kubadilisha msimbo wowote.
2024-02-11 02:13:58 +00:00
## **Kujiandaa kwa Usanidi**
- Mchakato ulihusisha kuanzisha emulator, kusakinisha programu yenye udhaifu, na kutumia `adb jdwp` kutambua bandari za Dalvik VM zinazosikiliza.
- JDWP (Java Debug Wire Protocol) inaruhusu kudebugiwa kwa programu inayotumika kwenye VM kwa kufunua bandari ya kipekee.
- Uhamishaji wa bandari ulikuwa muhimu kwa kudebugiwa kwa mbali, ikifuatiwa na kuunganisha JDB kwenye programu lengwa.
2024-02-11 02:13:58 +00:00
## **Kuingiza Kanuni Wakati wa Muda wa Uendeshaji**
- Udanganyifu ulifanywa kwa kuweka alama za kusimamisha na kudhibiti mtiririko wa programu.
- Amri kama `classes` na `methods <jina_la_darasa>` zilitumika kufunua muundo wa programu.
- Alama ya kusimamisha ilowekwa kwenye njia ya `onClick`, na utekelezaji wake ulidhibitiwa.
- Am