mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/android-task-h
This commit is contained in:
parent
86013314c7
commit
9eb0a1ce2e
@ -11,7 +11,7 @@ Aqui está um resumo rápido das transições de atividades:
|
||||
- **Atividade 1** começa como a única atividade em primeiro plano.
|
||||
- Lançar **Atividade 2** empurra **Atividade 1** para a pilha de atividades, trazendo **Atividade 2** para o primeiro plano.
|
||||
- Iniciar **Atividade 3** move **Atividade 1** e **Atividade 2** mais para trás na pilha, com **Atividade 3** agora na frente.
|
||||
- Fechar **Atividade 3** traz **Atividade 2** de volta ao primeiro plano, demonstrando o mecanismo de navegação de tarefas simplificado do Android.
|
||||
- Fechar **Atividade 3** traz **Atividade 2** de volta ao primeiro plano, mostrando o mecanismo de navegação de tarefas simplificado do Android.
|
||||
|
||||
.png>)
|
||||
|
||||
@ -40,7 +40,7 @@ android:launchMode="singleTask" >
|
||||
</activity>
|
||||
```
|
||||
2. O aplicativo malicioso é iniciado uma vez para que a tarefa (com a afinidade falsificada) exista nas tarefas recentes.
|
||||
3. Quando o usuário abre o aplicativo real mais tarde, o Android encontra que já existe uma tarefa cuja **afinidade raiz corresponde ao pacote** e simplesmente traz essa tarefa para o primeiro plano.
|
||||
3. Quando o usuário abre o aplicativo real mais tarde, o Android encontra uma tarefa cuja **afinidade raiz corresponde ao pacote** e simplesmente traz essa tarefa para o primeiro plano.
|
||||
4. A interface do atacante é exibida primeiro.
|
||||
|
||||
### Variante Default–Affinity (sem `singleTask`) – Estudo de caso de Caller ID
|
||||
@ -68,20 +68,51 @@ android:taskAffinity="com.caller.id.phone.number.block" >
|
||||
</activity>
|
||||
```
|
||||
3. Assim que o usuário instala e abre o aplicativo malicioso **uma vez**, uma tarefa cuja afinidade é igual ao pacote da vítima existe (mas fica em segundo plano).
|
||||
4. Quando o aplicativo real de Caller ID é lançado, o Android reutiliza essa tarefa e traz `HackActivity` para o primeiro plano → janela de phishing/abuso de permissões.
|
||||
4. Quando o aplicativo real de Caller ID é lançado, o Android reutiliza essa tarefa e traz `HackActivity` para o primeiro plano → janela de phishing/abuso de permissão.
|
||||
|
||||
> NOTA: A partir do **Android 11 (API 30)**, o sistema *não* coloca dois pacotes que não fazem parte do mesmo UID na mesma tarefa por padrão, mitigando essa variante específica. Versões mais antigas permanecem vulneráveis.
|
||||
|
||||
---
|
||||
|
||||
### StrandHogg 2.0 (CVE-2020-0096) – Sequestro de tarefa baseado em reflexão
|
||||
|
||||
O boletim de segurança de maio de 2020 do Google corrigiu uma variante mais avançada chamada **StrandHogg 2.0**. O exploit **não depende de `taskAffinity` de forma alguma**; em vez disso, usa *reflexão* para inserir dinamicamente a atividade do atacante no topo de *todas* as tarefas em execução, contornando completamente a restrição de “UID compartilhado” introduzida pelo Android 11.
|
||||
|
||||
Pontos-chave:
|
||||
|
||||
* Um aplicativo malicioso sem permissões pode, uma vez aberto, iterar sobre tarefas em execução e chamar APIs ocultas para **reparentar** sua própria atividade em qualquer tarefa.
|
||||
* Como a atividade é inserida após o tempo de execução, nem `launchMode` nem análise estática do manifesto podem detectar o ataque com antecedência.
|
||||
* Corrigido por meio de um back-port de uma verificação no **Android 8.0/8.1/9** (SPL de maio de 2020). **Android 10 e versões posteriores não são afetados.**
|
||||
|
||||
A detecção em dispositivos pré-corrigidos pode ser realizada com `adb shell dumpsys activity activities` e observando atividades suspeitas cujo nome de pacote difere da *afinidade* da tarefa.
|
||||
|
||||
A mitigação para dispositivos legados é a mesma do sequestro de tarefas clássico **mais** verificação em tempo de execução (por exemplo, chamando [`ActivityManager#getRunningTasks`](https://developer.android.com/reference/android/app/ActivityManager#getRunningTasks(int)) e validando seu próprio nome de pacote).
|
||||
|
||||
---
|
||||
|
||||
## Lista de verificação de Detecção & Exploração
|
||||
|
||||
1. Extraia `AndroidManifest.xml` do APK alvo e verifique se cada `<activity>` (ou o elemento global `<application>`) contém `android:taskAffinity=""` (vazio) **ou** um valor personalizado.
|
||||
2. Se não, crie um aplicativo malicioso:
|
||||
- `android:taskAffinity` = nome do pacote da vítima.
|
||||
- Forneça um intento `MAIN/LAUNCHER` para que o usuário possa abri-lo uma vez.
|
||||
- Opcionalmente, chame `moveTaskToBack(true)` para ocultar imediatamente.
|
||||
3. Deixe a vítima abrir seu aplicativo legítimo → sequestro.
|
||||
1. **Revisão estática** – Extraia `AndroidManifest.xml` do APK alvo e verifique se cada `<activity>` (ou o elemento global `<application>`) contém `android:taskAffinity=""` (vazio) **ou** um valor personalizado. Ferramentas como:
|
||||
```bash
|
||||
# Usando apkanalyzer (Android SDK)
|
||||
apkanalyzer manifest print app.apk | grep -i taskaffinity
|
||||
|
||||
# Usando AXMLPrinter2
|
||||
java -jar AXMLPrinter2.jar AndroidManifest.xml | grep taskAffinity
|
||||
```
|
||||
2. **Revisão dinâmica** – No dispositivo, abra o aplicativo alvo e liste as tarefas:
|
||||
```bash
|
||||
adb shell dumpsys activity activities | grep -A3 "TASK" | grep -E "Root|affinity"
|
||||
```
|
||||
Uma tarefa cuja afinidade raiz é igual ao pacote da vítima, mas cuja atividade superior pertence a um *pacote diferente* é um sinal de alerta.
|
||||
3. Crie um aplicativo malicioso conforme descrito acima, ou use **[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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Mitigação
|
||||
|
||||
@ -90,6 +121,14 @@ Os desenvolvedores devem:
|
||||
* Definir explicitamente `android:taskAffinity=""` no nível `<application>` (recomendado) **ou** dar a cada atividade uma afinidade única e privada.
|
||||
* Para telas altamente sensíveis, combine o acima com `android:launchMode="singleInstance"` ou proteções modernas [`setLaunchMode`](https://developer.android.com/reference/android/content/pm/ActivityInfo#launchMode).
|
||||
* Atualizar a `targetSdkVersion` do aplicativo e impor mudanças comportamentais do **Android 11** onde as tarefas não são compartilhadas entre pacotes por padrão.
|
||||
* Almejar **Android 12 (API 31) ou superior** para que o atributo obrigatório `android:exported` force os desenvolvedores a auditar cada componente acessível externamente.
|
||||
* Considerar autodefesa em tempo de execução: consultar periodicamente `ActivityTaskManager` para garantir que o pacote da sua atividade superior corresponda ao seu próprio.
|
||||
|
||||
---
|
||||
|
||||
## Técnicas relacionadas de UI-Hijacking
|
||||
|
||||
O sequestro de tarefas é frequentemente combinado ou substituído por **tapjacking** (decepção de UI baseada em sobreposição). A pesquisa de 2025 **TapTrap** mostrou que atividades *transparentes e impulsionadas por animação* podem contornar as restrições de toque de sobreposição introduzidas no Android 12–14 e ainda enganar os usuários para conceder permissões perigosas. Embora TapTrap não seja estritamente *sequestro* de tarefas, o objetivo final (cliques de phishing) é idêntico – portanto, avaliações modernas devem verificar ambas as superfícies de ataque.
|
||||
|
||||
---
|
||||
|
||||
@ -99,5 +138,7 @@ Os desenvolvedores devem:
|
||||
- [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}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user