mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 21:53:54 +00:00
106 lines
7.8 KiB
Markdown
106 lines
7.8 KiB
Markdown
# Explorando uma aplicação com modo de depuração
|
||
|
||
<details>
|
||
|
||
<summary><strong>Aprenda hacking na 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ê 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 do 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 do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||
|
||
</details>
|
||
|
||
# **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 ativar o modo de depuração.
|
||
- Recompile, assine e zipalign o aplicativo modificado.
|
||
|
||
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 Aplicativo para Aguardar a Conexão do Depurador:**
|
||
- Comando: `adb shell am setup-debug-app –w <nome_do_pacote>`.
|
||
- **Observação:** Este comando deve ser executado sempre antes de iniciar o aplicativo para garantir que ele aguarde o 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 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á em modo de depuração e também verificará binários que indicam um dispositivo com root. O depurador pode ser usado para modificar informações do aplicativo, desativar o bit de depuração e alterar os nomes dos binários pesquisados para burlar essas verificações.
|
||
|
||
Para a verificação de debuggeable:
|
||
|
||
1. **Modificar Configurações de Flag:**
|
||
- Na seção de variáveis do console do depurador, navegue até: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
|
||
- **Observação:** 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 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 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` é usado exclusivamente para verificar o status de debug sem alterar nenhum código.
|
||
|
||
## **Preparando a Configuração**
|
||
- O processo envolveu iniciar um emulador, instalar o aplicativo 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 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 de destino.
|
||
|
||
## **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 <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, 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)
|
||
|
||
<details>
|
||
|
||
<summary><strong>Aprenda hacking na 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ê 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 do 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 do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||
|
||
</details>
|