hacktricks/mobile-pentesting/android-app-pentesting/android-task-hijacking.md

6.1 KiB

Android Task Hijacking

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}


Tarefa, Pilha de Atividades e Atividades em Primeiro Plano

No Android, uma tarefa é essencialmente um conjunto de atividades com as quais os usuários interagem para completar um trabalho específico, organizadas dentro de uma pilha de atividades. Esta pilha ordena as atividades com base em quando foram abertas, com a atividade mais recente exibida no topo como a atividade em primeiro plano. A qualquer momento, apenas esta atividade é visível na tela, tornando-se parte da tarefa em primeiro plano.

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 à frente.
  • Fechar Atividade 3 traz Atividade 2 de volta ao primeiro plano, mostrando o mecanismo de navegação de tarefas simplificado do Android.

https://developer.android.com/images/fundamentals/diagram_backstack.png

Ataque de afinidade de tarefa

Visão Geral da Afinidade de Tarefa e Modos de Lançamento

Em aplicativos Android, a afinidade de tarefa especifica a tarefa preferida de uma atividade, geralmente alinhando-se com o nome do pacote do aplicativo. Esta configuração é instrumental na criação de um aplicativo de prova de conceito (PoC) para demonstrar o ataque.

Modos de Lançamento

O atributo launchMode direciona o manuseio das instâncias de atividade dentro das tarefas. O modo singleTask é fundamental para este ataque, ditando três cenários com base nas instâncias de atividade existentes e nas correspondências de afinidade de tarefa. A exploração depende da capacidade do aplicativo do atacante de imitar a afinidade de tarefa do aplicativo alvo, enganando o sistema Android para lançar o aplicativo do atacante em vez do alvo pretendido.

Etapas Detalhadas do Ataque

  1. Instalação do Aplicativo Malicioso: A vítima instala o aplicativo do atacante em seu dispositivo.
  2. Ativação Inicial: A vítima abre primeiro o aplicativo malicioso, preparando o dispositivo para o ataque.
  3. Tentativa de Lançamento do Aplicativo Alvo: A vítima tenta abrir o aplicativo alvo.
  4. Execução do Sequestro: Devido à afinidade de tarefa correspondente, o aplicativo malicioso é lançado no lugar do aplicativo alvo.
  5. Engano: O aplicativo malicioso apresenta uma tela de login falsa semelhante ao aplicativo alvo, enganando o usuário para inserir informações sensíveis.

Para uma implementação prática deste ataque, consulte o repositório Task Hijacking Strandhogg no GitHub: Task Hijacking Strandhogg.

Medidas de Prevenção

Para prevenir tais ataques, os desenvolvedores podem definir taskAffinity como uma string vazia e optar pelo modo de lançamento singleInstance, garantindo o isolamento de seu aplicativo em relação a outros. Personalizar a função onBackPressed() oferece proteção adicional contra sequestro de tarefas.

Referências

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}