# 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.