mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-24 03:53:29 +00:00
117 lines
8 KiB
Markdown
117 lines
8 KiB
Markdown
# Android Task Hijacking
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Encontre vulnerabilidades que importam mais para que você possa corrigi-las mais rápido. Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
|
|
|
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
|
|
|
***
|
|
|
|
## Tarefa, Pilha de Retorno e Atividades em Primeiro Plano
|
|
|
|
Uma tarefa é uma coleção de atividades com as quais os usuários interagem ao realizar um determinado trabalho. As atividades são organizadas em uma pilha—_**pilha de retorno**_—na ordem em que cada atividade é aberta.
|
|
|
|
A atividade que está **exibida** na tela é chamada de **atividade em primeiro plano** e sua **tarefa** é chamada de **tarefa em primeiro plano**. A qualquer momento, apenas **uma tarefa em primeiro plano é visível na tela**.
|
|
|
|
Este é um fluxo de atividade simples:
|
|
|
|
* Há apenas a Atividade 1 em primeiro plano.
|
|
* A Atividade 2 é iniciada, o que empurra a Atividade 1 para a Pilha de Retorno. Agora a Atividade 2 está em primeiro plano.
|
|
* A Atividade 3 é iniciada, o que empurra as Atividades 1 e 2 para a Pilha de Retorno.
|
|
* Agora, quando a Atividade 3 é fechada, a atividade anterior, ou seja, 2, é automaticamente trazida para o primeiro plano. É assim que a navegação de tarefas funciona no Android.
|
|
|
|
![](<../../.gitbook/assets/image (548).png>)
|
|
|
|
### Multitarefa no Android - Uma Tarefa
|
|
|
|
Uma tarefa é composta por várias atividades
|
|
|
|
![](<../../.gitbook/assets/image (549).png>)
|
|
|
|
### Multitarefa no Android - Várias Tarefas
|
|
|
|
O Android geralmente gerencia várias tarefas
|
|
|
|
![](<../../.gitbook/assets/image (550).png>)
|
|
|
|
## Controles de Tarefa
|
|
|
|
![](<../../.gitbook/assets/image (551).png>)
|
|
|
|
## Ataque de afinidade de tarefa
|
|
|
|
### Afinidade de tarefa e Modos de Lançamento
|
|
|
|
**Afinidade de tarefa** é um atributo definido em cada tag `<activity>` no arquivo `AndroidManifest.xml`. Descreve qual Tarefa uma Atividade prefere se juntar.
|
|
Por padrão, toda atividade tem a mesma afinidade que o nome do **pacote**.
|
|
|
|
Usaremos isso ao criar nosso aplicativo PoC.
|
|
```markup
|
|
<activity android:taskAffinity=""/>
|
|
```
|
|
**Modos de lançamento** permitem definir como uma nova instância de uma atividade é associada à tarefa atual. O atributo [`launchMode`](https://developer.android.com/guide/topics/manifest/activity-element#lmode) especifica uma instrução sobre como a atividade deve ser lançada em uma tarefa.
|
|
Existem quatro diferentes **Modos de Lançamento**:
|
|
|
|
1. standard (Padrão)
|
|
2. singleTop
|
|
3. **singleTask**
|
|
4. singleInstance
|
|
|
|
Quando o launchMode está definido como `singleTask`, o sistema Android avalia três possibilidades e uma delas é a razão pela qual nosso ataque é possível. Aqui estão elas -
|
|
|
|
* **Se a instância da Atividade já existe**:\
|
|
O Android retoma a instância existente em vez de criar uma nova. Isso significa que há no máximo uma instância de atividade no sistema sob este modo.
|
|
* **Se for necessário criar uma nova instância de atividade**:\
|
|
O Activity Manager Service (AMS) seleciona uma tarefa para hospedar a instância recém-criada, encontrando uma correspondente em todas as tarefas existentes. **Uma atividade "corresponde" a uma tarefa se elas têm a mesma afinidade de tarefa**. Esta é a razão pela qual podemos **especificar a mesma afinidade de tarefa que o aplicativo vulnerável em nosso malware/aplicativo do atacante para que ele seja lançado em sua tarefa em vez de criar a sua própria**.
|
|
* **Sem encontrar uma tarefa "correspondente"**:\
|
|
O AMS cria uma nova tarefa e torna a nova instância de atividade a atividade raiz da tarefa recém-criada.
|
|
|
|
### Ataque
|
|
|
|
A vítima precisa ter o **aplicativo malicioso** **instalado** em seu dispositivo. Em seguida, ela precisa **abri-lo** **antes** de abrir o **aplicativo vulnerável**. Então, quando o **aplicativo vulnerável** é **aberto**, o **aplicativo malicioso** será **aberto** **em vez disso**. Se este aplicativo malicioso apresentar o **mesmo** **login** que o aplicativo vulnerável, o **usuário não terá como saber que está inserindo suas credenciais em um aplicativo malicioso**.
|
|
|
|
**Você pode encontrar um ataque implementado aqui:** [**https://github.com/az0mb13/Task\_Hijacking\_Strandhogg**](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg)
|
|
|
|
## Prevenindo o sequestro de tarefas
|
|
|
|
Definir **`taskAffinity=""`** pode ser uma correção rápida para este problema. O modo de lançamento também pode ser definido para **singleInstance** se o aplicativo não quiser que outras atividades se juntem às tarefas pertencentes a ele. Uma função **onBackPressed()** personalizada também pode ser adicionada, para substituir o comportamento padrão.
|
|
|
|
## **Referências**
|
|
|
|
* [**https://blog.dixitaditya.com/android-task-hijacking/**](https://blog.dixitaditya.com/android-task-hijacking/)
|
|
* [**https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html**](https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html)
|
|
|
|
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Encontre vulnerabilidades que importam mais para que você possa corrigi-las mais rapidamente. Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha de tecnologia, de APIs a aplicativos web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
|
|
|
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|