mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-19 09:34:03 +00:00
109 lines
7.8 KiB
Markdown
109 lines
7.8 KiB
Markdown
# Explorando uma aplicação depurável
|
||
|
||
<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>
|
||
|
||
## **Burlando verificações de root e depuráveis**
|
||
|
||
**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 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>
|