From 8d7aa31fe55e275fb4873b52b13d2ddbc052d9f2 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 4 Aug 2025 18:34:10 +0000 Subject: [PATCH] Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's --- src/SUMMARY.md | 1 + .../android-app-pentesting/README.md | 99 ++++++------ .../accessibility-services-abuse.md | 145 ++++++++++++++++++ .../android-app-pentesting/tapjacking.md | 14 +- 4 files changed, 206 insertions(+), 53 deletions(-) create mode 100644 src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ad779f71c..177fddcd7 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -322,6 +322,7 @@ - [Android APK Checklist](mobile-pentesting/android-checklist.md) - [Android Applications Pentesting](mobile-pentesting/android-app-pentesting/README.md) + - [Accessibility Services Abuse](mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md) - [Android Applications Basics](mobile-pentesting/android-app-pentesting/android-applications-basics.md) - [Android Task Hijacking](mobile-pentesting/android-app-pentesting/android-task-hijacking.md) - [ADB Commands](mobile-pentesting/android-app-pentesting/adb-commands.md) diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index 50eae18be..f642d8162 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -27,6 +27,7 @@ Dê uma olhada na seguinte lista de [**Comandos ADB**](adb-commands.md) para apr - [Falsificando sua localização na Play Store](spoofing-your-location-in-play-store.md) - [API Privilegiada Shizuku (acesso privilegiado não-root baseado em ADB)](shizuku-privileged-api.md) - [Explorando Mecanismos Inseguros de Atualização In-App](insecure-in-app-update-rce.md) +- [Abusando de Serviços de Acessibilidade (Android RAT)](accessibility-services-abuse.md) - **Baixar APKs**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) - Extrair APK do dispositivo: ```bash @@ -60,27 +61,27 @@ Por favor, [**leia aqui para encontrar informações sobre diferentes decompilad ### Procurando Informações Interessantes -Apenas dando uma olhada nas **strings** do APK, você pode procurar por **senhas**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **chaves** **api**, **criptografia**, **bluetooth uuids**, **tokens** e qualquer coisa interessante... procure até por **backdoors** de execução de código ou backdoors de autenticação (credenciais de admin hardcoded para o app). +Apenas dando uma olhada nas **strings** do APK você pode procurar por **senhas**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **chaves** **api**, **criptografia**, **bluetooth uuids**, **tokens** e qualquer coisa interessante... procure até por **backdoors** de execução de código ou backdoors de autenticação (credenciais de admin hardcoded para o app). **Firebase** -Preste atenção especial às **URLs do firebase** e verifique se estão mal configuradas. [Mais informações sobre o que é o Firebase e como explorá-lo aqui.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) +Preste atenção especial às **URLs do firebase** e verifique se está mal configurado. [Mais informações sobre o que é o Firebase e como explorá-lo aqui.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### Compreensão Básica da Aplicação - Manifest.xml, strings.xml A **examinação dos arquivos _Manifest.xml_ e **_strings.xml_** de uma aplicação pode revelar potenciais vulnerabilidades de segurança**. Esses arquivos podem ser acessados usando decompiladores ou renomeando a extensão do arquivo APK para .zip e, em seguida, descompactando-o. -**Vulnerabilidades** identificadas no **Manifest.xml** incluem: +**Vulnerabilidades** identificadas a partir do **Manifest.xml** incluem: - **Aplicações Debugáveis**: Aplicações configuradas como debuggable (`debuggable="true"`) no arquivo _Manifest.xml_ representam um risco, pois permitem conexões que podem levar à exploração. Para uma melhor compreensão sobre como explorar aplicações debuggables, consulte um tutorial sobre como encontrar e explorar aplicações debuggables em um dispositivo. - **Configurações de Backup**: O atributo `android:allowBackup="false"` deve ser explicitamente definido para aplicações que lidam com informações sensíveis para evitar backups de dados não autorizados via adb, especialmente quando a depuração USB está habilitada. - **Segurança de Rede**: Configurações de segurança de rede personalizadas (`android:networkSecurityConfig="@xml/network_security_config"`) em _res/xml/_ podem especificar detalhes de segurança como pins de certificado e configurações de tráfego HTTP. Um exemplo é permitir tráfego HTTP para domínios específicos. -- **Atividades e Serviços Exportados**: Identificar atividades e serviços exportados no manifesto pode destacar componentes que podem ser mal utilizados. Uma análise mais aprofundada durante testes dinâmicos pode revelar como explorar esses componentes. -- **Content Providers e FileProviders**: Content providers expostos podem permitir acesso ou modificação não autorizada de dados. A configuração de FileProviders também deve ser examinada. +- **Atividades e Serviços Exportados**: Identificar atividades e serviços exportados no manifesto pode destacar componentes que podem ser mal utilizados. Uma análise adicional durante os testes dinâmicos pode revelar como explorar esses componentes. +- **Content Providers e FileProviders**: Content providers expostos podem permitir acesso ou modificação não autorizada de dados. A configuração de FileProviders também deve ser analisada. - **Broadcast Receivers e Esquemas de URL**: Esses componentes podem ser aproveitados para exploração, com atenção especial a como os esquemas de URL são gerenciados para vulnerabilidades de entrada. - **Versões do SDK**: Os atributos `minSdkVersion`, `targetSDKVersion` e `maxSdkVersion` indicam as versões do Android suportadas, destacando a importância de não suportar versões do Android desatualizadas e vulneráveis por razões de segurança. -Do arquivo **strings.xml**, informações sensíveis como chaves de API, esquemas personalizados e outras notas de desenvolvedor podem ser descobertas, sublinhando a necessidade de uma revisão cuidadosa desses recursos. +A partir do arquivo **strings.xml**, informações sensíveis como chaves de API, esquemas personalizados e outras notas de desenvolvedor podem ser descobertas, sublinhando a necessidade de uma revisão cuidadosa desses recursos. ### Tapjacking @@ -110,7 +111,7 @@ android-task-hijacking.md No Android, arquivos **armazenados** no **armazenamento interno** são **projetados** para serem **acessíveis** exclusivamente pela **aplicação** que **os criou**. Essa medida de segurança é **imposta** pelo sistema operacional Android e geralmente é adequada para as necessidades de segurança da maioria das aplicações. No entanto, os desenvolvedores às vezes utilizam modos como `MODE_WORLD_READABLE` e `MODE_WORLD_WRITABLE` para **permitir** que arquivos sejam **compartilhados** entre diferentes aplicações. No entanto, esses modos **não restringem o acesso** a esses arquivos por outras aplicações, incluindo aquelas potencialmente maliciosas. 1. **Análise Estática:** -- **Assegure-se** de que o uso de `MODE_WORLD_READABLE` e `MODE_WORLD_WRITABLE` seja **cuidadosamente examinado**. Esses modos **podem potencialmente expor** arquivos a **acessos não intencionais ou não autorizados**. +- **Assegure-se** de que o uso de `MODE_WORLD_READABLE` e `MODE_WORLD_WRITABLE` seja **cuidadosamente analisado**. Esses modos **podem potencialmente expor** arquivos a **acessos não intencionais ou não autorizados**. 2. **Análise Dinâmica:** - **Verifique** as **permissões** definidas em arquivos criados pela aplicação. Especificamente, **verifique** se algum arquivo está **definido para ser legível ou gravável globalmente**. Isso pode representar um risco significativo à segurança, pois permitiria que **qualquer aplicação** instalada no dispositivo, independentemente de sua origem ou intenção, **lesse ou modificasse** esses arquivos. @@ -157,7 +158,7 @@ Alguns desenvolvedores salvam dados sensíveis no armazenamento local e os cript **Uso de Algoritmos Inseguros e/ou Obsoletos** -Os desenvolvedores não devem usar **algoritmos obsoletos** para realizar **verificações de autorização**, **armazenar** ou **enviar** dados. Alguns desses algoritmos são: RC4, MD4, MD5, SHA1... Se **hashes** forem usados para armazenar senhas, por exemplo, hashes resistentes a força bruta **devem** ser usados com sal. +Os desenvolvedores não devem usar **algoritmos obsoletos** para realizar **verificações de autorização**, **armazenar** ou **enviar** dados. Alguns desses algoritmos são: RC4, MD4, MD5, SHA1... Se **hashes** forem usados para armazenar senhas, por exemplo, devem ser usados hashes resistentes a força bruta com sal. ### Outras verificações @@ -187,9 +188,9 @@ Leia a página a seguir para aprender como acessar facilmente o código C# de ap De acordo com este [**post de blog**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/), superpacked é um algoritmo Meta que comprime o conteúdo de uma aplicação em um único arquivo. O blog fala sobre a possibilidade de criar um aplicativo que descompacte esse tipo de aplicativo... e uma maneira mais rápida que envolve **executar a aplicação e coletar os arquivos descompactados do sistema de arquivos.** -### Análise de Código Estática Automatizada +### Análise Estática de Código Automatizada -A ferramenta [**mariana-trench**](https://github.com/facebook/mariana-trench) é capaz de encontrar **vulnerabilidades** ao **escanear** o **código** da aplicação. Esta ferramenta contém uma série de **fontes conhecidas** (que indicam ao ferramenta os **lugares** onde a **entrada** é **controlada pelo usuário**), **sinks** (que indicam ao ferramenta **lugares perigosos** onde a entrada maliciosa do usuário pode causar danos) e **regras**. Essas regras indicam a **combinação** de **fontes-sinks** que indicam uma vulnerabilidade. +A ferramenta [**mariana-trench**](https://github.com/facebook/mariana-trench) é capaz de encontrar **vulnerabilidades** ao **escanear** o **código** da aplicação. Esta ferramenta contém uma série de **fontes conhecidas** (que indicam ao ferramenta os **lugares** onde a **entrada** é **controlada pelo usuário**), **sinks** (que indicam ao ferramenta **lugares perigosos** onde a entrada maliciosa do usuário pode causar danos) e **regras**. Essas regras indicam a **combinação** de **fontes-sinks** que indica uma vulnerabilidade. Com esse conhecimento, **mariana-trench revisará o código e encontrará possíveis vulnerabilidades nele**. @@ -267,7 +268,7 @@ Você precisa ativar as opções de **depuração** e será legal se você puder 4. Pressione **Número da versão** 7 vezes. 5. Volte e você encontrará as **Opções de desenvolvedor**. -> Uma vez que você tenha instalado a aplicação, a primeira coisa que deve fazer é testá-la e investigar o que ela faz, como funciona e se familiarizar com ela.\ +> Uma vez que você tenha instalado a aplicação, a primeira coisa que você deve fazer é testá-la e investigar o que ela faz, como funciona e se familiarizar com ela.\ > Sugiro que **realize esta análise dinâmica inicial usando a análise dinâmica do MobSF + pidcat**, para que possamos **aprender como a aplicação funciona** enquanto o MobSF **captura** muitos **dados interessantes** que você pode revisar mais tarde. ### Vazamento de Dados Não Intencionais @@ -303,10 +304,10 @@ Se o banco de dados estiver salvando informações confidenciais e estiver **cri Enumere as tabelas usando `.tables` e enumere as colunas das tabelas fazendo `.schema `. -### Drozer (Exploit Activities, Content Providers e Services) +### Drozer (Explorar Atividades Exportadas, Provedores de Conteúdo e Serviços) Do [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** permite que você **assuma o papel de um aplicativo Android** e interaja com outros aplicativos. Ele pode fazer **qualquer coisa que um aplicativo instalado pode fazer**, como fazer uso do mecanismo de Comunicação Inter-Processo (IPC) do Android e interagir com o sistema operacional subjacente.\ -Drozer é uma ferramenta útil para **explorar atividades exportadas, serviços exportados e Content Providers**, como você aprenderá nas seções seguintes. +Drozer é uma ferramenta útil para **explorar atividades exportadas, serviços exportados e Provedores de Conteúdo**, como você aprenderá nas seções seguintes. ### Explorando Atividades Exportadas @@ -315,7 +316,7 @@ Além disso, lembre-se de que o código de uma atividade começa no método **`o **Bypass de Autorização** -Quando uma Atividade é exportada, você pode invocar sua tela de um aplicativo externo. Portanto, se uma atividade com **informações sensíveis** for **exportada**, você poderia **burlar** os mecanismos de **autenticação** **para acessá-la.** +Quando uma Atividade é exportada, você pode invocar sua tela de um aplicativo externo. Portanto, se uma atividade com **informações sensíveis** for **exportada**, você poderá **burlar** os mecanismos de **autenticação** **para acessá-la.** [**Aprenda como explorar atividades exportadas com Drozer.**](drozer-tutorial/index.html#activities) @@ -421,7 +422,7 @@ Se **Flutter** estiver sendo usado, você precisa seguir as instruções nesta [ Quando o SSL Pinning é implementado, contorná-lo se torna necessário para inspecionar o tráfego HTTPS. Vários métodos estão disponíveis para esse propósito: -- Modifique automaticamente o **apk** para **contornar** o SSL Pinning com [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). O melhor pró dessa opção é que você não precisará de root para contornar o SSL Pinning, mas precisará excluir o aplicativo e reinstalar o novo, e isso nem sempre funcionará. +- Modificar automaticamente o **apk** para **contornar** o SSL Pinning com [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). A melhor vantagem dessa opção é que você não precisará de root para contornar o SSL Pinning, mas precisará excluir o aplicativo e reinstalar o novo, e isso nem sempre funcionará. - Você pode usar **Frida** (discutido abaixo) para contornar essa proteção. Aqui você tem um guia para usar Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/) - Você também pode tentar **contornar automaticamente o SSL Pinning** usando [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` - Você também pode tentar **contornar automaticamente o SSL Pinning** usando **análise dinâmica do MobSF** (explicado abaixo) @@ -429,13 +430,13 @@ Quando o SSL Pinning é implementado, contorná-lo se torna necessário para ins #### Procurando Vulnerabilidades Comuns na Web -É importante também procurar por vulnerabilidades comuns na web dentro da aplicação. Informações detalhadas sobre como identificar e mitigar essas vulnerabilidades estão além do escopo deste resumo, mas são amplamente cobertas em outros lugares. +É importante também procurar vulnerabilidades comuns na web dentro da aplicação. Informações detalhadas sobre como identificar e mitigar essas vulnerabilidades estão além do escopo deste resumo, mas são amplamente cobertas em outros lugares. ### Frida [Frida](https://www.frida.re) é uma ferramenta de instrumentação dinâmica para desenvolvedores, engenheiros reversos e pesquisadores de segurança.\ **Você pode acessar aplicativos em execução e conectar métodos em tempo de execução para mudar o comportamento, alterar valores, extrair valores, executar códigos diferentes...**\ -Se você quiser fazer pentesting em aplicativos Android, precisa saber como usar o Frida. +Se você deseja fazer pentesting em aplicativos Android, precisa saber como usar o Frida. - Aprenda a usar o Frida: [**Tutorial Frida**](frida-tutorial/index.html) - Algumas "GUI" para ações com Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) @@ -470,7 +471,7 @@ Para acessar os dados dentro do keystore, você pode usar este script Frida: [ht ```bash frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` -### **Bypass de Impressão Digital/Biométricos** +### **Bypass de Impressão Digital/Biometria** Usando o seguinte script Frida, pode ser possível **bypassar a autenticação por impressão digital** que aplicativos Android podem estar realizando para **proteger certas áreas sensíveis:** ```bash @@ -496,7 +497,7 @@ Esta ferramenta pode ajudar você a gerenciar diferentes ferramentas durante a a Os desenvolvedores frequentemente criam componentes proxy como atividades, serviços e receptores de broadcast que manipulam esses Intents e os passam para métodos como `startActivity(...)` ou `sendBroadcast(...)`, o que pode ser arriscado. -O perigo reside em permitir que atacantes acionem componentes de aplicativo não exportados ou acessem provedores de conteúdo sensíveis ao desviar esses Intents. Um exemplo notável é o componente `WebView` convertendo URLs em objetos `Intent` via `Intent.parseUri(...)` e, em seguida, executando-os, potencialmente levando a injeções de Intent maliciosas. +O perigo reside em permitir que atacantes acionem componentes de aplicativo não exportados ou acessem provedores de conteúdo sensíveis ao redirecionar esses Intents. Um exemplo notável é o componente `WebView` convertendo URLs em objetos `Intent` via `Intent.parseUri(...)` e, em seguida, executando-os, potencialmente levando a injeções de Intent maliciosas. ### Principais Conclusões @@ -533,43 +534,43 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest Observe que o MobSF pode analisar **Android**(apk)**, IOS**(ipa) **e Windows**(apx) aplicações (_As aplicações do Windows devem ser analisadas a partir de um MobSF instalado em um host Windows_).\ Além disso, se você criar um arquivo **ZIP** com o código-fonte de um aplicativo **Android** ou **IOS** (vá para a pasta raiz do aplicativo, selecione tudo e crie um arquivo ZIP), ele também poderá analisá-lo. -O MobSF também permite que você faça uma análise **diff/Compare** e integre o **VirusTotal** (você precisará definir sua chave de API em _MobSF/settings.py_ e habilitá-la: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Você também pode definir `VT_UPLOAD` como `False`, então o **hash** será **enviado** em vez do arquivo. +O MobSF também permite que você **diff/Compare** análises e integre **VirusTotal** (você precisará definir sua chave de API em _MobSF/settings.py_ e habilitá-la: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Você também pode definir `VT_UPLOAD` como `False`, então o **hash** será **upload** em vez do arquivo. ### Análise Dinâmica Assistida com MobSF **MobSF** também pode ser muito útil para **análise dinâmica** em **Android**, mas nesse caso você precisará instalar o MobSF e **genymotion** em seu host (uma VM ou Docker não funcionará). _Nota: Você precisa **iniciar primeiro uma VM no genymotion** e **depois o MobSF.**_\ O **analisador dinâmico do MobSF** pode: -- **Dump de dados da aplicação** (URLs, logs, área de transferência, capturas de tela feitas por você, capturas de tela feitas por "**Exported Activity Tester**", e-mails, bancos de dados SQLite, arquivos XML e outros arquivos criados). Tudo isso é feito automaticamente, exceto pelas capturas de tela, você precisa pressionar quando quiser uma captura de tela ou precisa pressionar "**Exported Activity Tester**" para obter capturas de tela de todas as atividades exportadas. +- **Dump application data** (URLs, logs, área de transferência, capturas de tela feitas por você, capturas de tela feitas por "**Exported Activity Tester**", e-mails, bancos de dados SQLite, arquivos XML e outros arquivos criados). Tudo isso é feito automaticamente, exceto pelas capturas de tela, você precisa pressionar quando quiser uma captura de tela ou precisa pressionar "**Exported Activity Tester**" para obter capturas de tela de todas as atividades exportadas. - Capturar **tráfego HTTPS** - Usar **Frida** para obter **informações em tempo de execução** -A partir das versões **Android > 5**, ele **iniciará automaticamente o Frida** e definirá configurações de **proxy** globais para **capturar** o tráfego. Ele capturará apenas o tráfego do aplicativo testado. +A partir das versões **Android > 5**, ele **iniciará automaticamente o Frida** e definirá configurações de **proxy** globais para **capturar** tráfego. Ele capturará apenas o tráfego do aplicativo testado. **Frida** -Por padrão, ele também usará alguns Scripts Frida para **burlar SSL pinning**, **detecção de root** e **detecção de depurador** e para **monitorar APIs interessantes**.\ +Por padrão, ele também usará alguns Scripts Frida para **bypass SSL pinning**, **detecção de root** e **detecção de depurador** e para **monitorar APIs interessantes**.\ O MobSF também pode **invocar atividades exportadas**, capturar **capturas de tela** delas e **salvá-las** para o relatório. Para **iniciar** o teste dinâmico, pressione o botão verde: "**Start Instrumentation**". Pressione "**Frida Live Logs**" para ver os logs gerados pelos scripts Frida e "**Live API Monitor**" para ver todas as invocações para métodos hookados, argumentos passados e valores retornados (isso aparecerá após pressionar "Start Instrumentation").\ -O MobSF também permite que você carregue seus próprios **scripts Frida** (para enviar os resultados dos seus scripts Frida para o MobSF, use a função `send()`). Ele também possui **vários scripts pré-escritos** que você pode carregar (você pode adicionar mais em `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), basta **selecioná-los**, pressionar "**Load**" e pressionar "**Start Instrumentation**" (você poderá ver os logs desses scripts dentro de "**Frida Live Logs**"). +O MobSF também permite que você carregue seus próprios **scripts Frida** (para enviar os resultados de seus scripts Frida para o MobSF, use a função `send()`). Ele também possui **vários scripts pré-escritos** que você pode carregar (você pode adicionar mais em `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), basta **selecioná-los**, pressionar "**Load**" e pressionar "**Start Instrumentation**" (você poderá ver os logs desses scripts dentro de "**Frida Live Logs**"). ![](<../../images/image (419).png>) Além disso, você tem algumas funcionalidades auxiliares do Frida: -- **Enumerar Classes Carregadas**: Ele imprimirá todas as classes carregadas -- **Capturar Strings**: Ele imprimirá todas as strings capturadas enquanto usa o aplicativo (muito barulhento) -- **Capturar Comparações de Strings**: Pode ser muito útil. Ele **mostrará as 2 strings sendo comparadas** e se o resultado foi Verdadeiro ou Falso. -- **Enumerar Métodos de Classe**: Coloque o nome da classe (como "java.io.File") e ele imprimirá todos os métodos da classe. -- **Pesquisar Padrão de Classe**: Pesquisar classes por padrão -- **Rastrear Métodos de Classe**: **Rastrear** uma **classe inteira** (ver entradas e saídas de todos os métodos da classe). Lembre-se de que, por padrão, o MobSF rastreia vários métodos interessantes da API Android. +- **Enumerate Loaded Classes**: Ele imprimirá todas as classes carregadas +- **Capture Strings**: Ele imprimirá todas as strings capturadas enquanto usa o aplicativo (muito barulhento) +- **Capture String Comparisons**: Pode ser muito útil. Ele **mostrará as 2 strings sendo comparadas** e se o resultado foi Verdadeiro ou Falso. +- **Enumerate Class Methods**: Coloque o nome da classe (como "java.io.File") e ele imprimirá todos os métodos da classe. +- **Search Class Pattern**: Pesquisar classes por padrão +- **Trace Class Methods**: **Trace** uma **classe inteira** (veja entradas e saídas de todos os métodos da classe). Lembre-se de que, por padrão, o MobSF traça vários métodos interessantes da API do Android. -Uma vez que você tenha selecionado o módulo auxiliar que deseja usar, você precisa pressionar "**Start Instrumentation**" e verá todas as saídas em "**Frida Live Logs**". +Uma vez que você tenha selecionado o módulo auxiliar que deseja usar, você precisa pressionar "**Start Intrumentation**" e verá todas as saídas em "**Frida Live Logs**". **Shell** -O MobSF também traz um shell com alguns comandos **adb**, comandos **MobSF** e comandos comuns de **shell** na parte inferior da página de análise dinâmica. Alguns comandos interessantes: +O MobSF também oferece um shell com alguns comandos **adb**, **comandos MobSF** e comandos comuns de **shell** na parte inferior da página de análise dinâmica. Alguns comandos interessantes: ```bash help shell ls @@ -580,12 +581,12 @@ receivers ``` **Ferramentas HTTP** -Quando o tráfego http é capturado, você pode ver uma visão feia do tráfego capturado no "**HTTP(S) Traffic**" na parte inferior ou uma visão mais agradável no botão verde "**Start HTTPTools**". A partir da segunda opção, você pode **enviar** as **requisições capturadas** para **proxies** como Burp ou Owasp ZAP.\ -Para fazer isso, _ligue o Burp -->_ _desative o Intercept --> no MobSB HTTPTools selecione a requisição_ --> pressione "**Send to Fuzzer**" --> _selecione o endereço do proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). +Quando o tráfego http é capturado, você pode ver uma visão feia do tráfego capturado no "**Tráfego HTTP(S)**" na parte inferior ou uma visão mais agradável no botão verde "**Iniciar HTTPTools**". A partir da segunda opção, você pode **enviar** as **requisições capturadas** para **proxies** como Burp ou Owasp ZAP.\ +Para fazer isso, _ligue o Burp -->_ _desative o Intercept --> no MobSB HTTPTools selecione a requisição_ --> pressione "**Enviar para Fuzzer**" --> _selecione o endereço do proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). -Uma vez que você termine a análise dinâmica com MobSF, você pode pressionar "**Start Web API Fuzzer**" para **fuzz http requests** e procurar vulnerabilidades. +Uma vez que você termine a análise dinâmica com MobSF, você pode pressionar em "**Iniciar Web API Fuzzer**" para **fuzz http requests** e procurar por vulnerabilidades. -> [!TIP] +> [!DICA] > Após realizar uma análise dinâmica com MobSF, as configurações do proxy podem estar mal configuradas e você não conseguirá corrigi-las pela GUI. Você pode corrigir as configurações do proxy fazendo: > > ``` @@ -605,7 +606,7 @@ Esta é uma **ótima ferramenta para realizar análise estática com uma GUI** ### [Qark](https://github.com/linkedin/qark) -Esta ferramenta é projetada para procurar várias **vulnerabilidades relacionadas à segurança em aplicações Android**, seja no **código fonte** ou em **APKs empacotados**. A ferramenta também é **capaz de criar um "Proof-of-Concept" APK implantável** e **comandos ADB**, para explorar algumas das vulnerabilidades encontradas (Atividades expostas, intents, tapjacking...). Assim como com o Drozer, não há necessidade de rootear o dispositivo de teste. +Esta ferramenta é projetada para procurar várias **vulnerabilidades relacionadas à segurança em aplicações Android**, seja no **código fonte** ou em **APKs empacotados**. A ferramenta também é **capaz de criar um APK "Proof-of-Concept" implantável** e **comandos ADB**, para explorar algumas das vulnerabilidades encontradas (Atividades expostas, intents, tapjacking...). Assim como com o Drozer, não há necessidade de rootear o dispositivo de teste. ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk @@ -647,7 +648,7 @@ Baixe a [última versão](https://github.com/vincentcox/StaCoAn/releases): ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs_Framework) -AndroBugs Framework é um sistema de análise de vulnerabilidades do Android que ajuda desenvolvedores ou hackers a encontrar potenciais vulnerabilidades de segurança em aplicativos Android.\ +AndroBugs Framework é um sistema de análise de vulnerabilidades Android que ajuda desenvolvedores ou hackers a encontrar potenciais vulnerabilidades de segurança em aplicações Android.\ [Windows releases](https://github.com/AndroBugs/AndroBugs_Framework/releases) ``` python androbugs.py -f [APK file] @@ -676,13 +677,13 @@ Ele é capaz de: - Extrair informações privadas do APK usando regexps. - Analisar o Manifest. - Analisar domínios encontrados usando: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) e [whatweb](https://github.com/urbanadventurer/WhatWeb) -- Deofuscar APK via [apk-deguard.com](http://www.apk-deguard.com) +- Deobfuscar APK via [apk-deguard.com](http://www.apk-deguard.com) ### Koodous Útil para detectar malware: [https://koodous.com/](https://koodous.com) -## Ofuscando/Deofuscando código +## Obfuscating/Deobfuscating code Observe que dependendo do serviço e configuração que você usa para ofuscar o código. Segredos podem ou não acabar ofuscados. @@ -690,11 +691,11 @@ Observe que dependendo do serviço e configuração que você usa para ofuscar o Do [Wikipedia](): **ProGuard** é uma ferramenta de linha de comando de código aberto que reduz, otimiza e ofusca código Java. É capaz de otimizar bytecode, bem como detectar e remover instruções não utilizadas. ProGuard é software livre e é distribuído sob a Licença Pública Geral GNU, versão 2. -ProGuard é distribuído como parte do SDK do Android e é executado ao construir a aplicação em modo de lançamento. +ProGuard é distribuído como parte do SDK do Android e é executado ao construir o aplicativo em modo de lançamento. ### [DexGuard](https://www.guardsquare.com/dexguard) -Encontre um guia passo a passo para deofuscar o apk em [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) +Encontre um guia passo a passo para deobfuscar o apk em [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) (Daquele guia) Na última vez que verificamos, o modo de operação do Dexguard era: @@ -706,17 +707,17 @@ Encontre um guia passo a passo para deofuscar o apk em [https://blog.lexfo.fr/de ### [DeGuard](http://apk-deguard.com) -**DeGuard reverte o processo de ofuscação realizado por ferramentas de ofuscação do Android. Isso permite inúmeras análises de segurança, incluindo inspeção de código e previsão de bibliotecas.** +**DeGuard reverte o processo de ofuscação realizado por ferramentas de ofuscação do Android. Isso possibilita inúmeras análises de segurança, incluindo inspeção de código e previsão de bibliotecas.** Você pode enviar um APK ofuscado para a plataforma deles. -### [Deobfuscate android App](https://github.com/In3tinct/deobfuscate-android-app) +### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app -Esta é uma ferramenta LLM para encontrar quaisquer vulnerabilidades de segurança potenciais em aplicativos android e deofuscar o código do aplicativo android. Usa a API pública Gemini do Google. +Esta é uma ferramenta LLM para encontrar quaisquer vulnerabilidades de segurança potenciais em aplicativos android e deobfuscar o código do aplicativo android. Usa a API pública Gemini do Google. ### [Simplify](https://github.com/CalebFenton/simplify) -É um **deofuscador android genérico.** Simplify **executa virtualmente um aplicativo** para entender seu comportamento e então **tenta otimizar o código** para que se comporte de forma idêntica, mas seja mais fácil para um humano entender. Cada tipo de otimização é simples e genérico, então não importa qual o tipo específico de ofuscação utilizada. +É um **deobfuscador android genérico.** Simplify **executa virtualmente um aplicativo** para entender seu comportamento e então **tenta otimizar o código** para que se comporte de forma idêntica, mas seja mais fácil para um humano entender. Cada tipo de otimização é simples e genérico, então não importa qual o tipo específico de ofuscação utilizado. ### [APKiD](https://github.com/rednaga/APKiD) @@ -730,9 +731,9 @@ APKiD fornece informações sobre **como um APK foi feito**. Ele identifica muit ### [Androl4b](https://github.com/sh4hin/Androl4b) -AndroL4b é uma máquina virtual de segurança Android baseada em ubuntu-mate que inclui a coleção dos últimos frameworks, tutoriais e labs de diferentes especialistas em segurança e pesquisadores para engenharia reversa e análise de malware. +AndroL4b é uma máquina virtual de segurança Android baseada em ubuntu-mate que inclui a coleção dos últimos frameworks, tutoriais e laboratórios de diferentes especialistas e pesquisadores de segurança para engenharia reversa e análise de malware. -## Referências +## References - [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/) - [https://appsecwiki.com/#/](https://appsecwiki.com/#/) É uma ótima lista de recursos @@ -741,7 +742,7 @@ AndroL4b é uma máquina virtual de segurança Android baseada em ubuntu-mate qu - [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh) - [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec) -## Ainda a tentar +## Yet to try - [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/) - [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit) diff --git a/src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md b/src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md new file mode 100644 index 000000000..682acf1f6 --- /dev/null +++ b/src/mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md @@ -0,0 +1,145 @@ +# Abuso do Serviço de Acessibilidade do Android + +{{#include ../../banners/hacktricks-training.md}} + +## Visão Geral + +`AccessibilityService` foi criado para ajudar usuários com deficiência a interagir com dispositivos Android. Infelizmente, as mesmas **APIs de automação poderosas** (navegação global, entrada de texto, despacho de gestos, janelas sobrepostas…) podem ser armadas por malware para obter **controle remoto completo** do dispositivo _sem privilégios de root_. + +Trojans bancários modernos do Android e Trojans de Acesso Remoto (RATs) como **PlayPraetor, SpyNote, BrasDex, SOVA, ToxicPanda** e muitos outros seguem a mesma receita: + +1. Enganar a vítima para habilitar um serviço de acessibilidade malicioso (a permissão *BIND_ACCESSIBILITY_SERVICE* é considerada "de alto risco" e requer uma ação explícita do usuário). +2. Aproveitar o serviço para +* capturar todos os eventos de UI e texto que aparecem na tela, +* injetar gestos sintéticos (`dispatchGesture`) e ações globais (`performGlobalAction`) para automatizar qualquer tarefa que o operador desejar, +* desenhar sobreposições em tela cheia sobre aplicativos legítimos usando o tipo de janela **TYPE_ACCESSIBILITY_OVERLAY** (sem prompt de `SYSTEM_ALERT_WINDOW`!), +* conceder silenciosamente permissões adicionais em tempo de execução clicando nas caixas de diálogo do sistema em nome da vítima. +3. Exfiltrar dados ou realizar **Fraude no Dispositivo (ODF)** em tempo real enquanto o usuário está olhando para uma tela perfeitamente normal. + +--- + +## Solicitando a permissão +```xml + + + + + + + + + +``` +O XML acompanhante define como o diálogo falso será exibido: +```xml + + +``` +--- + +## Primitivas de automação de UI remota +```java +public class EvilService extends AccessibilityService { +@Override +public void onAccessibilityEvent(AccessibilityEvent event) { +// harvest text or detect foreground app change +} + +// Simulate HOME / BACK / RECENTS … +private void navHome() { performGlobalAction(GLOBAL_ACTION_HOME); } +private void navBack() { performGlobalAction(GLOBAL_ACTION_BACK); } +private void openRecents() { performGlobalAction(GLOBAL_ACTION_RECENTS); } + +// Generic tap / swipe +public void tap(float x, float y) { +Path p = new Path(); p.moveTo(x, y); +GestureDescription.StrokeDescription s = new GestureDescription.StrokeDescription(p, 0, 50); +dispatchGesture(new GestureDescription.Builder().addStroke(s).build(), null, null); +} +} +``` +Com apenas essas duas APIs, um atacante pode: +* Desbloquear a tela, abrir o aplicativo bancário, navegar na árvore da interface do usuário e enviar um formulário de transferência. +* Aceitar todos os diálogos de permissão que aparecem. +* Instalar/atualizar APKs extras via a intenção da Play Store. + +--- + +## Padrões de abuso + +### 1. Phishing por sobreposição (Coleta de credenciais) +Um `WebView` transparente ou opaco é adicionado ao gerenciador de janelas: +```java +WindowManager.LayoutParams lp = new WindowManager.LayoutParams( +MATCH_PARENT, MATCH_PARENT, +TYPE_ACCESSIBILITY_OVERLAY, // ⬅ bypasses SYSTEM_ALERT_WINDOW +FLAG_NOT_FOCUSABLE | FLAG_NOT_TOUCH_MODAL, // touches still reach the real app +PixelFormat.TRANSLUCENT); +wm.addView(phishingView, lp); +``` +A vítima digita credenciais no formulário falso enquanto o aplicativo em segundo plano recebe os mesmos gestos – nenhum prompt suspeito de "desenhar sobre outros aplicativos" é exibido. + +> Exemplo detalhado: a seção *Phishing de Sobreposição de Acessibilidade* na página de Tapjacking. + +### 2. Automação de Fraude no Dispositivo +Famílias de malware como **PlayPraetor** mantêm um canal WebSocket persistente onde o operador pode emitir comandos de alto nível (`init`, `update`, `alert_arr`, `report_list`, …). O serviço traduz esses comandos em gestos de baixo nível, alcançando transações não autorizadas em tempo real que facilmente contornam a autenticação multifatorial vinculada a esse dispositivo. + +### 3. Streaming e Monitoramento de Tela +Ao combinar a **MediaProjection API** com uma biblioteca cliente RTMP, o RAT pode transmitir o framebuffer ao vivo para `rtmp://:1935/live/`, dando ao adversário perfeita consciência situacional enquanto o mecanismo de Acessibilidade controla a interface. + +--- + +## PlayPraetor – fluxo de comando e controle + +1. **Heartbeat HTTP(S)** – iterar sobre uma lista codificada até que um domínio responda `POST /app/searchPackageName` com o C2 ativo. +2. **WebSocket (porta 8282)** – comandos JSON bidirecionais: +* `update` – enviar novas conf/APKs +* `alert_arr` – configurar modelos de sobreposição +* `report_list` – enviar lista de nomes de pacotes alvo +* `heartbeat_web` – manter ativo +3. **RTMP (porta 1935)** – streaming de tela/vídeo ao vivo. +4. **Exfiltração REST** – +* `/app/saveDevice` (impressão digital) +* `/app/saveContacts` | `/app/saveSms` | `/app/uploadImageBase64` +* `/app/saveCardPwd` (credenciais bancárias) + +O **AccessibilityService** é o mecanismo local que transforma esses comandos em nuvem em interações físicas. + +--- + +## Detectando serviços de acessibilidade maliciosos + +* `adb shell settings get secure enabled_accessibility_services` +* Configurações → Acessibilidade → *Serviços baixados* – procure por aplicativos que **não** são do Google Play. +* Soluções MDM / EMM podem impor `ACCESSIBILITY_ENFORCEMENT_DEFAULT_DENY` (Android 13+) para bloquear serviços instalados manualmente. +* Analise os serviços em execução: +```bash +adb shell dumpsys accessibility | grep "Accessibility Service" +``` + +--- + +## Recomendações de fortalecimento para desenvolvedores de aplicativos + +* Marque visualizações sensíveis com `android:accessibilityDataSensitive="accessibilityDataPrivateYes"` (API 34+). +* Combine `setFilterTouchesWhenObscured(true)` com `FLAG_SECURE` para evitar sequestro de toque/sobreposição. +* Detecte sobreposições verificando `WindowManager.getDefaultDisplay().getFlags()` ou a API `ViewRootImpl`. +* Recuse operar quando `Settings.canDrawOverlays()` **ou** um serviço de Acessibilidade não confiável estiver ativo. + +--- + +## Referências +* [A ameaça em evolução do PlayPraetor: Como atores de língua chinesa escalam globalmente um RAT Android](https://www.cleafy.com/cleafy-labs/playpraetors-evolving-threat-how-chinese-speaking-actors-globally-scale-an-android-rat) +* [Documentação de acessibilidade do Android – Automatizando a interação da UI](https://developer.android.com/guide/topics/ui/accessibility/service) + +{{#include ../../banners/hacktricks-training.md}} diff --git a/src/mobile-pentesting/android-app-pentesting/tapjacking.md b/src/mobile-pentesting/android-app-pentesting/tapjacking.md index c4c31b34f..19378e28d 100644 --- a/src/mobile-pentesting/android-app-pentesting/tapjacking.md +++ b/src/mobile-pentesting/android-app-pentesting/tapjacking.md @@ -9,7 +9,7 @@ Na prática, isso **cega o usuário para que ele não saiba que está realmente ### Detecção -Para detectar aplicativos vulneráveis a este ataque, você deve procurar por **atividades exportadas** no manifesto do android (note que uma atividade com um intent-filter é automaticamente exportada por padrão). Uma vez que você tenha encontrado as atividades exportadas, **verifique se elas requerem alguma permissão**. Isso porque o **aplicativo malicioso também precisará dessa permissão**. +Para detectar aplicativos vulneráveis a este ataque, você deve procurar por **atividades exportadas** no manifesto do android (note que uma atividade com um intent-filter é automaticamente exportada por padrão). Uma vez que você tenha encontrado as atividades exportadas, **verifique se elas requerem alguma permissão**. Isso ocorre porque o **aplicativo malicioso também precisará dessa permissão**. Você também pode verificar a versão mínima do SDK do aplicativo, checando o valor de **`android:minSdkVersion`** no arquivo **`AndroidManifest.xml`**. Se o valor for **menor que 30**, o aplicativo é vulnerável ao Tapjacking. @@ -25,7 +25,7 @@ Se **`android:filterTouchesWhenObscured`** estiver definido como **`true`**, a ` #### **`setFilterTouchesWhenObscured`** -O atributo **`setFilterTouchesWhenObscured`** definido como true também pode prevenir a exploração dessa vulnerabilidade se a versão do Android for inferior.\ +O atributo **`setFilterTouchesWhenObscured`** definido como verdadeiro também pode prevenir a exploração dessa vulnerabilidade se a versão do Android for inferior.\ Se definido como **`true`**, por exemplo, um botão pode ser automaticamente **desativado se estiver obscurecido**: ```xml