# Explorando uma aplicação debuggeable
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! Outras formas de apoiar o HackTricks: * Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** * **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
# **Burlando verificações de root e debuggeable** Esta seção do post é um resumo do post [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0) ## Passos para tornar um aplicativo Android debuggeable e burlar verificações ### **Tornando o Aplicativo Debuggeable** Conteúdo baseado em https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0 1. **Descompilar o APK:** - Utilize a ferramenta APK-GUI para descompilar o APK. - No arquivo _android-manifest_, insira `android:debuggable=true` para habilitar o modo de depuração. - Recompile, assine e zipalign o aplicativo modificado. 2. **Instalar o Aplicativo Modificado:** - Use o comando: `adb install `. 3. **Recuperar o Nome do Pacote:** - Execute `adb shell pm list packages –3` para listar aplicativos de terceiros e encontrar o nome do pacote. 4. **Configurar o Aplicativo para Aguardar a Conexão do Debugger:** - Comando: `adb shell am setup-debug-app –w `. - **Observação:** Este comando deve ser executado sempre antes de iniciar o aplicativo para garantir que ele aguarde o debugger. - Para persistência, use `adb shell am setup-debug-app –w -–persistent `. - Para remover todos os flags, use `adb shell am clear-debug-app `. 5. **Preparar para Depuração no Android Studio:** - Navegue no Android Studio para _File -> Open Profile or APK_. - Abra o APK recompilado. 6. **Definir Pontos de Interrupção em Arquivos Java Chave:** - Coloque pontos de interrupção em `MainActivity.java` (especificamente no método `onCreate`), `b.java` e `ContextWrapper.java`. ### **Burlando Verificações** O aplicativo, em determinados pontos, verificará se está debuggeable e também verificará binários que indicam um dispositivo com root. O debugger pode ser usado para modificar informações do aplicativo, desativar o bit debuggable e alterar os nomes dos binários pesquisados para burlar essas verificações. Para a verificação de debuggable: 1. **Modificar Configurações de Flag:** - Na seção de variáveis do console do debugger, navegue até: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`. - **Observação:** A representação binária de `flags = 814267974` é `11000011100111011110`, indicando que o "Flag_debuggable" está ativo. ![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png) Esses passos garantem coletivamente que o aplicativo possa ser depurado e que certas verificações de segurança possam ser burladas usando o debugger, facilitando uma análise mais aprofundada ou modificação do comportamento do aplicativo. O Passo 2 envolve a alteração de um valor de flag para 814267972, que é representado em binário como 110000101101000000100010100. # **Explorando uma Vulnerabilidade** Foi fornecida uma demonstração usando um aplicativo vulnerável contendo um botão e um textview. Inicialmente, o aplicativo exibe "Crack Me". O objetivo é alterar a mensagem de "Tentar Novamente" para "Hackeado" em tempo de execução, sem modificar o código-fonte. ## **Verificando a Vulnerabilidade** - O aplicativo foi descompilado usando `apktool` para acessar o arquivo `AndroidManifest.xml`. - A presença de `android_debuggable="true"` no AndroidManifest.xml indica que o aplicativo é debuggeable e suscetível a exploração. - Vale ressaltar que o `apktool` é utilizado exclusivamente para verificar o status debuggable sem alterar nenhum código. ## **Preparando o Setup** - O processo envolveu a inicialização de um emulador, a instalação do aplicativo vulnerável e o uso de `adb jdwp` para identificar as portas do Dalvik VM que estão ouvindo. - O JDWP (Java Debug Wire Protocol) permite a depuração de um aplicativo em execução em uma VM, expondo uma porta única. - O encaminhamento de porta foi necessário para depuração remota, seguido pela conexão do JDB ao aplicativo alvo. ## **Injetando Código em Tempo de Execução** - A exploração foi realizada configurando pontos de interrupção e controlando o fluxo do aplicativo. - Comandos como `classes` e `methods ` foram usados para descobrir a estrutura do aplicativo. - Um ponto de interrupção foi definido no método `onClick`, e sua execução foi controlada. - Os comandos `locals`, `next` e `set` foram utilizados para inspecionar e modificar variáveis locais, especialmente alterando a mensagem "Tentar Novamente" para "Hackeado". - O código modificado foi executado usando o comando `run`, alterando com sucesso a saída do aplicativo em tempo real. Este exemplo demonstrou como o comportamento de um aplicativo debuggeable pode ser manipulado, destacando o potencial para exploits mais complexos, como obter acesso ao shell no dispositivo no contexto do aplicativo. ## Referências * [https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0) * [https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications)
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! Outras formas de apoiar o HackTricks: * Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** * **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.