# T1407 - Download New Code at Runtime > [!danger] Técnica mobile de Defense Evasion na qual aplicações maliciosas baixam e executam código adicional após a instalação, contornando verificações de segurança de app stores e permitindo atualização dinâmica de funcionalidades maliciosas. ## Visão Geral A técnica **T1407 - Download New Code at Runtime** descreve a capacidade de malware móvel de baixar, carregar e executar código adicional dinâmicamente após a instalação inicial do aplicativo. Esta abordagem é uma das mais eficazes para evadir mecanismos de segurança de lojas de aplicativos (Google Play Protect, App Store Review) porque o aplicativo submetido para revisão pode parecer completamente benigno - a funcionalidade maliciosa é carregada apenas depois que o app é aprovado e instalado no dispositivo da vítima. No Android, esta técnica é implementada principalmente através de **DexClassLoader** e **PathClassLoader** para carregar arquivos DEX dinâmicamente, uso de **reflection** para invocar métodos de classes baixadas, download de bibliotecas nativas (.so) e execução via JNI, e scripts JavaScript executados via WebView. No iOS, as opções são mais limitadas devido às restrições do sandbox, mas incluem download de JavaScriptCore scripts e abuso de frameworks como JSPatch (historicamente). Esta técnica é particularmente perigosa porque permite que o malware evolua continuamente sem necessidade de reinstalação. Um trojan bancário pode inicialmente funcionar como um app legítimo de utilidade, e após dias ou semanas, baixar módulos que implementam overlay attacks contra aplicativos bancários específicos. Isso torna a análise forense mais complexa e a detecção proativa significativamente mais difícil. A técnica está intimamente relacionada com [[t1406-obfuscated-files-or-information|T1406 - Obfuscated Files or Information]], já que o código baixado em tempo de execução é frequentemente ofuscado para dificultar análise reversa. Também se conecta com técnicas de C2 como [[t1437-application-layer-protocol|T1437 - Application Layer Protocol]], dado que o download de código requer comunicação de rede. ## Attack Flow ```mermaid graph TB A["📦 Resource Development<br/>Servidor de staging preparado"] --> B["📧 Initial Access<br/>App aparentemente legítimo<br/>publicado na Play Store"] B --> C["⏱️ Persistence<br/>App instalado,<br/>aguarda trigger"] C --> D["🛡️ Defense Evasion<br/>Download de código<br/>em tempo de execução"] D --> E["💻 Execution<br/>Módulo malicioso carregado<br/>via DexClassLoader"] E --> F["📋 Collection<br/>Overlay attack captura<br/>credenciais bancárias"] F --> G["📡 C2 + Exfiltration<br/>Dados enviados ao atacante"] classDef attack fill:#e74c3c,stroke:#c0392b,color:#ecf0f1 classDef neutral fill:#3498db,stroke:#2980b9,color:#ecf0f1 classDef highlight fill:#e67e22,stroke:#d35400,color:#ecf0f1 class A,B neutral class C neutral class D attack class E,F highlight class G highlight ``` ## Detecção | Método | Descrição | Fonte de Dados | |--------|-----------|----------------| | Análise de ClassLoader | Detectar uso de DexClassLoader, PathClassLoader e InMemoryDexClassLoader | [[ds0041-application-vetting\|Application Vetting]] | | Monitoramento de downloads | Identificar downloads de arquivos DEX, JAR ou SO por apps instalados | [[ds0029-network-traffic\|Network Traffic]] | | Análise de reflexão | Detectar uso extensivo de Java Reflection API para invocar código dinâmico | [[ds0041-application-vetting\|Application Vetting]] | | Inspeção de armazenamento | Verificar criação de arquivos executáveis em diretórios de dados do app | [[ds0022-file\|File Monitoring]] | | Análise de permissões | Identificar apps com INTERNET + WRITE_EXTERNAL_STORAGE + uso de ClassLoader | [[ds0041-application-vetting\|Application Vetting]] | | Sandbox dinâmico | Executar app em sandbox com monitoramento de rede e filesystem por período estendido | [[ds0041-application-vetting\|Application Vetting]] | ### Regra Sigma ```yaml title: Android Dynamic Code Loading Detection id: f1a2b3c4-d5e6-7f8a-9b0c-1d2e3f4a5b6c status: experimental description: Detecta indicadores de download e carregamento dinâmico de código em apps Android logsource: category: proxy product: network detection: selection_dex_download: cs-method: 'GET' cs-uri|endswith: - '.dex' - '.jar' - '.so' - '.apk' cs-uri|not_endswith: - 'play.googleapis.com' selection_encoded_payload: cs-method: 'POST' sc-content-type: - 'application/octet-stream' - 'application/zip' sc-bytes|gte: 50000 condition: selection_dex_download or selection_encoded_payload falsepositives: - Frameworks de atualização legítimos (React Native CodePush, etc.) - Game engines com download de assets level: high tags: - attack.defense_evasion - attack.t1407 ``` ## Mitigação - **Application Vetting rigoroso** - Implementar análise dinâmica prolongada (72+ horas) para detectar download tardio de código ([[m1005-application-vetting\|M1005]]) - **Google Play Protect** - Manter Play Protect ativado para detecção pós-instalação de comportamento malicioso - **Restrição de fontes** - Bloquear sideloading de APKs via políticas de MDM, forçando instalação apenas via Play Store ([[m1012-enterprise-policy\|M1012]]) - **Monitoramento de rede** - Detectar downloads de arquivos executáveis (.dex, .jar, .so) por apps instalados - **Runtime Application Self-Protection** - Implementar RASP em apps bancários para detectar tentativas de injeção de código - **Segmentação de rede** - Monitorar e restringir comunicação de dispositivos móveis com servidores de staging conhecidos ([[m1030-network-segmentation\|M1030]]) - **Educação do usuário** - Alertar sobre riscos de apps com excesso de permissões e fontes não confiáveis ([[m1011-user-guidance\|M1011]]) ## Relevância LATAM/Brasil Esta técnica é uma das mais utilizadas por malware bancário brasileiro e latino-americano. O cenário regional apresenta padrões específicos: **Dropper apps na Play Store:** Grupos brasileiros de cibercrime financeiro públicam regularmente apps aparentemente inofensivos (calculadoras, QR code readers, apps de utilidade) na Google Play Store que, após instalação, baixam módulos de overlay attack direcionados a bancos brasileiros específicos como Banco do Brasil, Bradesco, Itaú e Nubank. O módulo malicioso é baixado apenas quando o app detecta que está instalado em um dispositivo brasileiro (verificação de MCC/MNC, idioma e timezone). **Evolução de payload:** Trojans como [[s0531-grandoreiro|Grandoreiro]] e [[brata|BRATA]] utilizam esta técnica para atualizar suas listas de apps bancários alvo e templates de overlay sem necessidade de repúblicar o dropper. Isso permite que o mesmo dropper seja utilizado por meses antes de ser detectado e removido. **GoPIX e fraude PIX:** O malware [[gopix|GoPIX]] exemplifica o uso sofisticado desta técnica no contexto brasileiro, baixando módulos específicos para interceptação e manipulação de transações PIX em tempo real, uma funcionalidade que não estaria presente na versão do app submetida à loja. A dominância do Android no mercado brasileiro (~80% market share) e a relativa facilidade de sideloading de APKs amplificam o impacto desta técnica na região. ## Referências - [MITRE ATT&CK - T1407](https://attack.mitre.org/techniques/T1407/) - [MITRE ATT&CK Mobile - Download New Code at Runtime](https://attack.mitre.org/techniques/T1407/) - ESET WeLiveSecurity - Trojan bancário Android na América Latina - Kaspersky - Evolução dos droppers Android brasileiros - Check Point Research - Malware na Google Play Store