Translated ['src/mobile-pentesting/android-app-pentesting/android-task-h

This commit is contained in:
Translator 2025-07-30 08:12:58 +00:00
parent ba0ba9069a
commit b48daaa7d5

View File

@ -4,9 +4,9 @@
## Taak, Terug Stapel en Voorgrond Aktiwiteite
In Android is 'n **taak** basies 'n stel aktiwiteite waarmee gebruikers interaksie het om 'n spesifieke werk te voltooi, georganiseer binne 'n **terug stapel**. Hierdie stapel orden aktiwiteite op grond van wanneer hulle geopen is, met die mees onlangse aktiwiteit wat boaan vertoon word as die **voorgrond aktiwiteit**. Op enige oomblik is slegs hierdie aktiwiteit sigbaar op die skerm, wat dit deel van die **voorgrond taak** maak.
In Android is 'n **taak** basies 'n stel aktiwiteite waarmee gebruikers interaksie het om 'n spesifieke werk te voltooi, georganiseer binne 'n **terug stapel**. Hierdie stapel orden aktiwiteite op grond van wanneer hulle geopen is, met die mees onlangse aktiwiteit wat bo-aan vertoon word as die **voorgrond aktiwiteit**. Op enige oomblik is slegs hierdie aktiwiteit sigbaar op die skerm, wat dit deel van die **voorgrond taak** maak.
Hier is 'n vinnige uiteensetting van aktiwiteit oorgange:
Hier is 'n vinnige opsomming van aktiwiteit oorgange:
- **Aktiwiteit 1** begin as die enigste aktiwiteit in die voorgrond.
- Die bekendstelling van **Aktiwiteit 2** druk **Aktiwiteit 1** na die terug stapel, wat **Aktiwiteit 2** na die voorgrond bring.
@ -23,7 +23,7 @@ Hier is 'n vinnige uiteensetting van aktiwiteit oorgange:
As 'n aanvaller 'n kwaadwillige aktiwiteit aan die **wortel** van daardie stapel kan plaas, sal elke keer wanneer die slagoffer die wettige toepassing oopmaak, die kwaadwillige UI die eerste ding wees wat die gebruiker sien perfek vir phishing of misbruik van toestemmingsversoeke.
Die aanvaloppervlak is breër as wat baie ontwikkelaars dink omdat **elke aktiwiteit outomaties 'n affiniteit erf gelyk aan die toepassingspakketnaam** (tenzij die ontwikkelaar `android:taskAffinity=""` stel). Daarom *doen niks* reeds die app oop vir taak hijacking op Android weergawes voor 11.
Die aanval oppervlak is wyer as wat baie ontwikkelaars dink omdat **elke aktiwiteit outomaties 'n affiniteit erf gelyk aan die toepassingspakketnaam** (tenzij die ontwikkelaar `android:taskAffinity=""` stel). Daarom *doen niks* reeds die app oop vir taak hijacking op Android weergawes voor 11.
### Klassieke "singleTask / StrandHogg" scenario
@ -40,7 +40,7 @@ android:launchMode="singleTask" >
</activity>
```
2. Die kwaadwillige app word een keer begin sodat die taak (met die vervalste affiniteit) in onlangse take bestaan.
3. Wanneer die gebruiker later die werklike toepassing oopmaak, vind Android daar is reeds 'n taak waarvan die **wortel affiniteit ooreenstem met die pakket** en bring net daardie taak na die voorgrond.
3. Wanneer die gebruiker later die werklike toepassing oopmaak, vind Android daar is reeds 'n taak waarvan die **wortel affiniteit die pakket** ooreenstem en bring net daardie taak na die voorgrond.
4. Die aanvaller se UI word eerste vertoon.
### StandaardAffiniteit (geen `singleTask`) variasie Caller ID gevalstudie
@ -67,29 +67,68 @@ android:taskAffinity="com.caller.id.phone.number.block" >
</intent-filter>
</activity>
```
3. Sodra die gebruiker die kwaadwillige app **een keer** installeer en oopmaak, bestaan 'n taak waarvan die affiniteit gelyk is aan die slagoffer pakket (maar sit in die agtergrond).
3. Sodra die gebruiker die kwaadwillige app **een keer** installeer en oopmaak, bestaan 'n taak waarvan die affiniteit gelyk is aan die slagoffer pakket (maar in die agtergrond sit).
4. Wanneer die werklike Caller ID toepassing bekendgestel word, hergebruik Android daardie taak en bring `HackActivity` na die voorgrond → phishing venster/toestemming misbruik.
> LET WEL: Begin met **Android 11 (API 30)** plaas die stelsel *nie* twee pakkette wat nie deel is van dieselfde UID nie in dieselfde taak nie, wat hierdie spesifieke variasie verminder. Ouers weergawes bly kwesbaar.
> LET WEL: Begin met **Android 11 (API 30)** plaas die stelsel *nie* twee pakkette wat nie deel is van dieselfde UID in dieselfde taak nie, wat hierdie spesifieke variasie verminder. Ou weergawes bly kwesbaar.
---
## Opsporing & Exploitatie kontrolelys
### StrandHogg 2.0 (CVE-2020-0096) Refleksie-gebaseerde taak hijack
1. Trek `AndroidManifest.xml` van die teiken APK en kontroleer dat elke `<activity>` (of die globale `<application>` element) `android:taskAffinity=""` (leeg) **of** 'n aangepaste waarde bevat.
2. As nie, maak 'n kwaadwillige app:
- `android:taskAffinity` = slagoffer pakketnaam.
- Verskaf 'n `MAIN/LAUNCHER` intent sodat die gebruiker dit een keer kan oopmaak.
- Opsioneel roep `moveTaskToBack(true)` aan om onmiddellik te verberg.
3. Laat die slagoffer hul wettige toepassing oopmaak → hijack.
Google se Mei-2020 sekuriteitsbulletin het 'n meer gevorderde variasie genaamd **StrandHogg 2.0** reggestel. Die uitbuiting **hang glad nie van `taskAffinity` af**; eerder gebruik dit *refleksie* om dinamies die aanvaller se aktiwiteit aan die bokant van *elke* lopende taak in te voeg, wat die “gedeelde-UID” beperking wat deur Android 11 bekendgestel is, heeltemal omseil.
## Versagting
Belangrike punte:
* 'n Kwaadwillige app met nul toestemming kan, sodra dit oopgemaak is, oor lopende take iterere en verborge API's aanroep om sy eie aktiwiteit in enige taak te **her-ouer**.
* Omdat die aktiwiteit na tyd van uitvoering ingevoeg word, kan geen `launchMode` of statiese manifestanalise die aanval vooraf opspoor nie.
* Gepatch deur 'n kontrole in **Android 8.0/8.1/9** (Mei 2020 SPL) terug te port. **Android 10 en later is nie geraak nie.**
Opsporing op voor-gepatchte toestelle kan gedoen word met `adb shell dumpsys activity activities` en kyk vir verdagte aktiwiteite waarvan die pakketnaam verskil van die taak se *affiniteit*.
Mitigering vir erfenistoestelle is dieselfde as klassieke Taak Hijacking **plus** tyd van uitvoering verifikasie (bv. om [`ActivityManager#getRunningTasks`](https://developer.android.com/reference/android/app/ActivityManager#getRunningTasks(int)) aan te roep en jou eie pakketnaam te valideer).
---
## Opsporing & Uitbuiting kontrolelys
1. **Statische hersiening** Trek `AndroidManifest.xml` uit die teiken APK en kyk dat elke `<activity>` (of die globale `<application>` element) `android:taskAffinity=""` (leeg) **of** 'n aangepaste waarde bevat. Gereedskap soos:
```bash
# Gebruik apkanalyzer (Android SDK)
apkanalyzer manifest print app.apk | grep -i taskaffinity
# Gebruik AXMLPrinter2
java -jar AXMLPrinter2.jar AndroidManifest.xml | grep taskAffinity
```
2. **Dinamiese hersiening** Op die toestel, open die teiken app en lys take:
```bash
adb shell dumpsys activity activities | grep -A3 "TASK" | grep -E "Root|affinity"
```
'n Taak waarvan die wortel affiniteit gelyk is aan die slagoffer pakket, maar waarvan die boonste aktiwiteit aan 'n *ander* pakket behoort, is 'n rooi vlag.
3. Skep 'n kwaadwillige app soos hierbo beskryf, of gebruik **[Drozer](https://github.com/WithSecureLabs/drozer)**:
```bash
drozer console connect
run app.activity.start --component com.victim/.MainActivity --action android.intent.action.MAIN
run app.activity.info com.victim
```
---
## Mitigering
Ontwikkelaars moet:
* Duidelik `android:taskAffinity=""` op die `<application>` vlak stel (aanbeveel) **of** elke aktiwiteit 'n unieke, private affiniteit gee.
* Vir hoogs sensitiewe skerms, kombineer die bogenoemde met `android:launchMode="singleInstance"` of moderne [`setLaunchMode`](https://developer.android.com/reference/android/content/pm/ActivityInfo#launchMode) beskermings.
* Opgradeer die app se `targetSdkVersion` en handhaaf **Android 11** gedragsveranderinge waar take nie standaard oor pakkette gedeel word nie.
* Teiken **Android 12 (API 31) of hoër** sodat die verpligte `android:exported` attribuut ontwikkelaars dwing om elke eksterne bereikbare komponent te oudit.
* Oorweeg tyd van uitvoering self-verdediging: periodiek `ActivityTaskManager` vra om te verseker dat jou boonste aktiwiteit se pakket jou eie ooreenstem.
---
## Verwante UI-Hijacking tegnieke
Taak hijacking word dikwels gekombineer met of vervang deur **tapjacking** (overlay-gebaseerde UI misleiding). Die 2025 **TapTrap** navorsing het getoon dat heeltemal deursigtige *animasie-gedrewe* aktiwiteite die overlay-aanraak beperkings wat in Android 1214 bekendgestel is, kan omseil en steeds gebruikers kan mislei om gevaarlike toestemmings te verleen. Terwyl TapTrap nie streng *taak* hijacking is nie, is die einddoel (phishing klik) identies so moderne assesserings moet vir beide aanval oppervlaktes kyk.
---
@ -99,5 +138,7 @@ Ontwikkelaars moet:
- [https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html](https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html)
- [Android Manifest Misconfiguration Leading to Task Hijacking in Caller ID app](https://github.com/KMov-g/androidapps/blob/main/caller.id.phone.number.block.md)
- [https://medium.com/mobile-app-development-publication/the-risk-of-android-strandhogg-security-issue-and-how-it-can-be-mitigated-80d2ddb4af06](https://medium.com/mobile-app-development-publication/the-risk-of-android-strandhogg-security-issue-and-how-it-can-be-mitigated-80d2ddb4af06)
- [Promon StrandHogg 2.0 (CVE-2020-0096) technical write-up](https://promon.io/resources/downloads/strandhogg-2-0-new-serious-android-vulnerability)
- [USENIX 2025 TapTrap: Animation-Driven Tapjacking on Android](https://www.usenix.org/conference/usenixsecurity25/presentation/beer)
{{#include ../../banners/hacktricks-training.md}}