hacktricks/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md

110 lines
7.8 KiB
Markdown
Raw Normal View History

# Explorando uma aplicação depurável
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
2022-04-28 16:01:33 +00:00
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
2022-04-28 16:01:33 +00:00
## **Burlando verificações de root e depuráveis**
2022-04-28 16:01:33 +00:00
**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)
2022-04-28 16:01:33 +00:00
### Passos para Tornar um App Android Depurável e Burlar Verificações
#### **Tornando o App Depurável**
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 ativar o modo de depuração.
- Recompile, assine e alinhe o aplicativo modificado com zipalign.
2. **Instalar o Aplicativo Modificado:**
- Use o comando: `adb install <nome_do_aplicativo>`.
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 App para Aguardar Conexão do Depurador:**
- Comando: `adb shell am setup-debug-app w <nome_do_pacote>`.
- **Nota:** Este comando deve ser executado cada vez antes de iniciar o aplicativo para garantir que ele aguarde pelo depurador.
- Para persistência, use `adb shell am setup-debug-app w -persistent <nome_do_pacote>`.
- Para remover todas as flags, use `adb shell am clear-debug-app <nome_do_pacote>`.
5. **Preparar para Depuração no Android Studio:**
- Navegue no Android Studio até _Arquivo -> Abrir Perfil ou APK_.
- Abra o APK recompilado.
6. **Definir Pontos de Interrupção em Arquivos Java Importantes:**
- Coloque pontos de interrupção em `MainActivity.java` (especificamente no método `onCreate`), `b.java` e `ContextWrapper.java`.
#### **Burlando Verificações**
O aplicativo, em certos pontos, verificará se é depurável e também procurará por binários indicando um dispositivo com root. O depurador pode ser usado para modificar informações do app, desmarcar o bit depurável e alterar os nomes dos binários pesquisados para burlar essas verificações.
Para a verificação depurável:
1. **Modificar 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.
![Captura de Tela do Depurador](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png)
*Figura: Captura de tela ilustrando a visão do depurador e a modificação das configurações de flag.*
Esses passos garantem coletivamente que o aplicativo possa ser depurado e que certas verificações de segurança possam ser burladas usando o depurador, facilitando uma análise ou modificação mais aprofundada do comportamento do aplicativo.
O passo 2 envolve alterar um valor de flag para 814267972, que é representado em binário como 110000101101000000100010100.
## **Explorando uma Vulnerabilidade**
Uma demonstração foi fornecida usando um aplicativo vulnerável contendo um botão e um textview. Inicialmente, o aplicativo 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 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 é depurável e suscetível a exploração.
- Vale ressaltar que `apktool` é usado apenas para verificar o status depurável sem alterar nenhum código.
### **Preparando o Ambiente**
- O processo envolveu iniciar um emulador, instalar o aplicativo vulnerável e usar `adb jdwp` para identificar portas 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 definindo pontos de interrupção e controlando o fluxo do aplicativo.
- Comandos como `classes` e `methods <nome_da_classe>` 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, particularmente mudando a mensagem "Try Again" para "Hacked".
- 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 depurável pode ser manipulado, destacando o potencial para explorações mais complexas, 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)
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>