8 KiB
Android Task Hijacking
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
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!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do HackTricks e HackTricks Cloud.
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 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.
Multitarefa no Android - Uma Tarefa
Uma tarefa é composta por várias atividades
Multitarefa no Android - Várias Tarefas
O Android geralmente gerencia várias tarefas
Controles de Tarefa
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.
<activity android:taskAffinity=""/>
Modos de lançamento permitem definir como uma nova instância de uma atividade é associada à tarefa atual. O atributo launchMode
especifica uma instrução sobre como a atividade deve ser lançada em uma tarefa.
Existem quatro diferentes Modos de Lançamento:
- standard (Padrão)
- singleTop
- singleTask
- 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
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.takemyhand.xyz/2021/02/android-task-hijacking-with.html
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 hoje.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
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!
- Adquira o merchandising oficial do PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo do telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas dicas de hacking enviando PRs para os repositórios do GitHub HackTricks e HackTricks Cloud.