# T1416 - Active Application Window > [!warning] Monitoramento de App em Primeiro Plano > Malware Android monitora continuamente qual aplicativo está em foco para disparar ataques contextuais - como sobreposição de tela falsa quando o usuário abre um app bancário - tornando esta técnica o gatilho central dos trojans bancários brasileiros **BRata** e **Ghimob**. ## Visão Geral A técnica T1416 descreve como adversários em plataformas Android monitoram o aplicativo atualmente em primeiro plano (foreground) para adaptar o comportamento do malware ao contexto de uso da vítima. Esta é uma técnica de Discovery com impacto direto na execução de ataques de alto valor: ao saber exatamente quando o usuário abriu um aplicativo bancário, de criptomoedas ou corporativo, o malware pode sobrepor uma tela falsa idêntica à interface legítima e capturar credenciais sem que a vítima perceba a fraude. No ecossistema de malware bancário Android, T1416 é o elemento que transforma um trojan genérico em uma ameaça direcionada. Sem o monitoramento de app ativo, o malware teria que exibir overlays de forma aleatória ou constante - o que seria facilmente detectado pelo usuário. Com T1416, o ataque ocorre apenas no momento exato em que o alvo abre o app bancário, maximizando a taxa de sucesso e minimizando a visibilidade da infecção. Para o Brasil e LATAM, a relevância é crítica. Famílias como [[brata]], [[ghimob]], [[anubis]] e [[cerberus]] utilizam T1416 como trigger central de seus módulos de overlay. O ecossistema bancário brasileiro - com alto uso de aplicativos de instituições como Banco do Brasil, Bradesco, Itaú, Nubank e Inter - representa um alvo de alto valor para ataques baseados nessa técnica. A FEBRABAN reporta perdas bilionárias anuais relacionadas a fraudes em aplicativos móveis no Brasil, sendo overlays bancários uma parcela significativa desse vetor. ## Attack Flow ```mermaid graph TB A["📱 Instalação do Malware<br/>App malicioso / dropper"] --> B["🔍 Monitoramento Contínuo<br/>T1416 - Discovery"] B --> C["UsageStatsManager<br/>Foreground App Query"] B --> D["AccessibilityService<br/>Window State Changed"] C --> E{"App Bancário<br/>em Foco?"} D --> E E -- "Sim" --> F["🎭 Overlay Attack<br/>Tela falsa sobreposta"] E -- "Não" --> B F --> G["🔑 Credential Harvesting<br/>Login/senha capturados"] G --> H["📤 Exfiltração C2<br/>Dados enviados"] classDef discovery fill:#3498db,color:#ecf0f1,stroke:#2980b9 classDef trigger fill:#9b59b6,color:#ecf0f1,stroke:#8e44ad classDef attack fill:#e74c3c,color:#ecf0f1,stroke:#c0392b classDef infra fill:#2c3e50,color:#ecf0f1,stroke:#34495e class B,C,D discovery class E trigger class F,G attack class A,H infra ``` *Legenda: Azul = Discovery (T1416). Roxo = Trigger condicional. Vermelho = Ação ofensiva. Cinza = Infraestrutura.* ## Como Funciona ### Método 1: UsageStatsManager (Primário) O método mais comum no Android moderno (API 21+) utiliza o **UsageStatsManager**, que requer a permissão especial `android.permission.PACKAGE_USAGE_STATS`. Para obter essa permissão, o malware geralmente engana o usuário durante o onboarding, solicitando que acesse **Configurações > Aplicativos > Acesso especial > Acesso ao uso do aplicativo** e habilite o app manualmente. ```java UsageStatsManager usm = (UsageStatsManager) getSystemService(USAGE_STATS_SERVICE); long now = System.currentTimeMillis(); UsageEvents usageEvents = usm.queryEvents(now - 5000, now); UsageEvents.Event event = new UsageEvents.Event(); while (usageEvents.hasNextEvent()) { usageEvents.getNextEvent(event); if (event.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) { String pkg = event.getPackageName(); // Verificar se pkg está na lista de alvos bancários checkTargetApp(pkg); } } ``` O malware mantém uma lista de pacotes-alvo como `com.bradesco`, `com.itau.ibank`, `br.com.bb.android`, `com.nubank`, `com.c6bank` e outros apps financeiros brasileiros. Quando detecta que um desses pacotes passou para o foreground, aciona o módulo de overlay correspondente. ### Método 2: AccessibilityService (Legado e Alternativo) O **AccessibilityService** era o método preferido antes do Android 5.0 e continua sendo amplamente utilizado por oferecer mais controle. O serviço recebe eventos de acessibilidade em tempo real, incluindo `TYPE_WINDOW_STATE_CHANGED`: ```java @Override public void onAccessibilityEvent(AccessibilityEvent event) { if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) { String packageName = event.getPackageName().toString(); // Detecta mudança de app em tempo real if (isTargetBankingApp(packageName)) { launchOverlayActivity(packageName); } } } ``` O AccessibilityService oferece vantagens adicionais além do monitoramento de foreground: pode ler conteúdo da tela (texto de campos de formulário), simular cliques e gestos, e interceptar texto digitado - tornando-o uma ferramenta de espionagem muito mais poderosa que UsageStatsManager isolado. Por isso, [[anubis]] e [[cerberus]] preferem esse método, abusando do serviço de acessibilidade para múltiplas técnicas simultaneamente. ### Persistência do Monitoramento Para manter o monitoramento contínuo mesmo quando o app malicioso não está em primeiro plano, o malware implementa: - **Foreground Service** com notificação persistente (Android 8+) disfarçado como "Serviço de Proteção" ou "Sincronização" - **JobScheduler** ou **WorkManager** para verificações periódicas mesmo com app em background - **BroadcastReceiver** para reativar o serviço após reinicialização do dispositivo (`BOOT_COMPLETED`) - **Alarmes via AlarmManager** com intervalos de polling de 100-500ms para resposta quase em tempo real ## Detecção ### Indicadores de Comprometimento Comportamentais Apps legítimos raramente necessitam de monitoramento contínuo do foreground com polling agressivo. Sinais de alerta incluem: - App solicitando permissão de **Acesso ao Uso** (`PACKAGE_USAGE_STATS`) sem justificativa funcional clara - App solicitando habilitação de **Serviço de Acessibilidade** sem ser uma ferramenta de acessibilidade real - Serviço em background com consumo de bateria desproporcional à funcionalidade declarada - Notificação persistente de app desconhecido ou com nome genérico ("Serviço do Sistema", "Proteção do Dispositivo") ### Mobile Threat Defense (MTD) Soluções como Zimperium, Lookout e Pradeo detectam T1416 via: - Análise estática: verificação de uso de `UsageStatsManager` e `AccessibilityService` em apps não declaradamente de acessibilidade - Análise dinâmica: monitoramento de frequência de chamadas à API `queryEvents()` - polling a cada <1 segundo é anômalo - Correlação: apps que solicitam `PACKAGE_USAGE_STATS` + `SYSTEM_ALERT_WINDOW` simultaneamente têm alta probabilidade de ser malware de overlay ### Google Play Protect O Play Protect mantém detecção heurística de apps que combinam T1416 com [[t1417-input-capture]] (keylogging) e [[t1627-execution-guardrails]]. Apps fora da Play Store (sideload) não são cobertos por padrão - MDM corporativo deve impor restrições de instalação de fontes desconhecidas. ## Mitigação - **[[m1006-use-recent-os-version]]** - Android 10+ introduziu restrições adicionais ao lançamento de atividades em background (overlay attack de apps em background requer permissão `SYSTEM_ALERT_WINDOW` explícita); Android 12+ aumentou visibilidade de serviços de acessibilidade para o usuário - **[[m1011-user-guidance]]** - Orientar usuários a nunca habilitar Serviços de Acessibilidade para apps que não sejam explicitamente ferramentas de acessibilidade; desconfiar de solicitações de permissão `SYSTEM_ALERT_WINDOW` em apps não confiáveis - **[[m1005-exploit-protection]]** - Manter Google Play Protect ativo e configurar MDM para bloquear instalação de apps de fontes desconhecidas (sideload) - **Revisar periodicamente** apps com permissão de Acessibilidade ativada em **Configurações > Acessibilidade > Apps instalados** - Implementar **Mobile Threat Defense (MTD)** em dispositivos corporativos com detecção de overlay attacks em tempo real ## Contexto LATAM > [!latam] Relevância para Brasil e LATAM > T1416 é a técnica-gatilho dos principais trojans bancários brasileiros. **BRata** utiliza AccessibilityService para detectar abertura de apps do **Banco do Brasil**, **Itaú**, **Bradesco** e **Caixa Econômica** e sobrepõe telas de login falsas idênticas às originais. **Ghimob** - identificado pelo Kaspersky como ameaça de origem brasileira com alcance global - monitora mais de 150 apps financeiros, incluindo exchanges de criptomoedas e corretoras. Ambas as famílias exploram o alto índice de adoção de mobile banking no Brasil (maior da América Latina segundo FEBRABAN) como superfície de ataque. Recomendação para instituições financeiras brasileiras: implementar detecção de overlay em apps proprietários via verificação de sobreposição de janela e integração com soluções MTD. ## Referências - [MITRE ATT&CK - T1416](https://attack.mitre.org/techniques/T1416/) - Definição oficial e procedimentos conhecidos - [Kaspersky - Ghimob: A Teto with Global Reach](https://securelist.com/ghimob-a-tet-with-global-reach/99228/) - Análise técnica do Ghimob com detalhes de T1416 - [ESET - BRata: Brazilian RAT Android](https://www.welivesecurity.com/en/eset-research/brata-android-remote-access-tool/) - Cobertura da família BRata e overlay attacks - [Threat Fabric - Cerberus](https://www.threatfabric.com/blogs/cerberus-a-new-banking-trojan-from-the-underworld.html) - Análise do Cerberus banking trojan com abuso de AccessibilityService - [Android Developers - UsageStatsManager](https://developer.android.com/reference/android/app/usage/UsageStatsManager) - Documentação oficial da API - [FEBRABAN - Pesquisa de Tecnologia Bancária 2024](https://portal.febraban.org.br/) - Dados de adoção mobile banking Brasil