# Exploiting a debuggeable application
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** š¬ [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** š¦ [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
# **Contornando 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 debugƔvel e contornar verificaƧƵes
### **Tornando o App Debuggable**
ConteĆŗdo baseado em https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
1. **Decompile o APK:**
- Utilize a ferramenta APK-GUI para decompilar o APK.
- No arquivo _android-manifest_, insira `android:debuggable=true` para habilitar o modo de depuraĆ§Ć£o.
- Recompile, assine e zipalign a aplicaĆ§Ć£o modificada.
2. **Instale a AplicaĆ§Ć£o Modificada:**
- Use o comando: `adb install `.
3. **Recupere o Nome do Pacote:**
- Execute `adb shell pm list packages ā3` para listar aplicativos de terceiros e encontrar o nome do pacote.
4. **Configure o App para Aguardar ConexĆ£o do Depurador:**
- Comando: `adb shell am setup-debug-app āw `.
- **Nota:** Este comando deve ser executado toda vez antes de iniciar a aplicaĆ§Ć£o para garantir que ela aguarde o depurador.
- Para persistĆŖncia, use `adb shell am setup-debug-app āw -āpersistent `.
- Para remover todas as flags, use `adb shell am clear-debug-app `.
5. **Prepare-se para DepuraĆ§Ć£o no Android Studio:**
- Navegue no Android Studio para _File -> Open Profile or APK_.
- Abra o APK recompilado.
6. **Defina Breakpoints em Arquivos Java Chave:**
- Coloque breakpoints em `MainActivity.java` (especificamente no mƩtodo `onCreate`), `b.java` e `ContextWrapper.java`.
### **Contornando VerificaƧƵes**
A aplicaĆ§Ć£o, em certos pontos, verificarĆ” se Ć© debugĆ”vel e tambĆ©m verificarĆ” binĆ”rios que indicam um dispositivo com root. O depurador pode ser usado para modificar informaƧƵes do app, desmarcar o bit de debugĆ”vel e alterar os nomes dos binĆ”rios pesquisados para contornar essas verificaƧƵes.
Para a verificaĆ§Ć£o de debugĆ”vel:
1. **Modifique ConfiguraƧƵes de Flag:**
- Na seĆ§Ć£o de variĆ”veis do console do depurador, navegue atĆ©: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
- **Nota:** A representaĆ§Ć£o binĆ”ria de `flags = 814267974` Ć© `11000011100111011110`, indicando que a "Flag_debuggable" estĆ” ativa.
![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 a aplicaĆ§Ć£o pode ser depurada e que certas verificaƧƵes de seguranƧa podem ser contornadas usando o depurador, facilitando uma anĆ”lise ou modificaĆ§Ć£o mais aprofundada do comportamento da aplicaĆ§Ć£o.
O passo 2 envolve mudar um valor de flag para 814267972, que Ʃ representado em binƔrio como 110000101101000000100010100.
# **Explorando uma Vulnerabilidade**
Uma demonstraĆ§Ć£o foi fornecida usando uma aplicaĆ§Ć£o vulnerĆ”vel contendo um botĆ£o e um textview. Inicialmente, a aplicaĆ§Ć£o exibe "Crack Me". O objetivo Ć© alterar a mensagem de "Try Again" para "Hacked" em tempo de execuĆ§Ć£o, sem modificar o cĆ³digo-fonte.
## **Verificando a Vulnerabilidade**
- A aplicaĆ§Ć£o foi decompilada usando `apktool` para acessar o arquivo `AndroidManifest.xml`.
- A presenƧa de `android_debuggable="true"` no AndroidManifest.xml indica que a aplicaĆ§Ć£o Ć© debugĆ”vel e suscetĆvel Ć exploraĆ§Ć£o.
- Vale ressaltar que `apktool` Ć© empregado apenas para verificar o status de debugĆ”vel sem alterar nenhum cĆ³digo.
## **Preparando o Setup**
- O processo envolveu iniciar um emulador, instalar a aplicaĆ§Ć£o vulnerĆ”vel e usar `adb jdwp` para identificar as portas do Dalvik VM que estĆ£o ouvindo.
- O JDWP (Java Debug Wire Protocol) permite a depuraĆ§Ć£o de uma aplicaĆ§Ć£o em execuĆ§Ć£o em uma VM, expondo uma porta Ćŗnica.
- O encaminhamento de porta foi necessĆ”rio para depuraĆ§Ć£o remota, seguido pela anexaĆ§Ć£o do JDB Ć aplicaĆ§Ć£o alvo.
## **Injetando CĆ³digo em Tempo de ExecuĆ§Ć£o**
- A exploraĆ§Ć£o foi realizada definindo breakpoints e controlando o fluxo da aplicaĆ§Ć£o.
- Comandos como `classes` e `methods ` foram usados para descobrir a estrutura da aplicaĆ§Ć£o.
- Um breakpoint 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, particularmente mudando a mensagem "Try Again" para "Hacked".
- O cĆ³digo modificado foi executado usando o comando `run`, alterando com sucesso a saĆda da aplicaĆ§Ć£o em tempo real.
Este exemplo demonstrou como o comportamento de uma aplicaĆ§Ć£o debugĆ”vel pode ser manipulado, destacando o potencial para exploraƧƵes mais complexas, como obter acesso ao shell no dispositivo no contexto da aplicaĆ§Ć£o.
## 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)
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** š¬ [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** š¦ [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}