# Tutorial de Objection
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
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 [**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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de **bug bounty criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## **Introdução**
[![objection](https://github.com/sensepost/objection/raw/master/images/objection.png)](https://github.com/sensepost/objection)
**objection - Exploração Móvel em Tempo de Execução**
`objection` é um kit de ferramentas para exploração móvel em tempo de execução, alimentado por [Frida](https://www.frida.re). Foi desenvolvido com o objetivo de ajudar na avaliação de aplicações móveis e sua postura de segurança sem a necessidade de um dispositivo móvel jailbroken ou com root.
**Nota:** Isto não é uma forma de bypass de jailbreak/root. Ao usar `objection`, você ainda está limitado por todas as restrições impostas pelo sandbox aplicável com o qual está lidando.
### Resumo
O **objetivo** do **objection** é permitir que o usuário chame as **principais ações oferecidas pelo Frida**. **Caso contrário**, o usuário precisará criar um **script único para cada aplicativo** que deseja testar.
## Tutorial
Para este tutorial, vou usar o APK que você pode baixar aqui:
{% file src="../../../.gitbook/assets/app-release.zip" %}
Ou do seu [repositório original](https://github.com/asvid/FridaApp) (baixe o app-release.apk)
### Instalação
```bash
pip3 install objection
```
### Conexão
Faça uma **conexão ADB regular** e **inicie** o servidor **frida** no dispositivo (e verifique se o frida está funcionando tanto no cliente quanto no servidor).
Se você estiver usando um **dispositivo com root**, é necessário selecionar o aplicativo que deseja testar dentro da opção _**--gadget**_. Neste caso:
```bash
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
```
### Ações Básicas
Nem todos os comandos possíveis do objection serão listados neste tutorial, apenas aqueles que achei mais úteis.
#### Ambiente
Algumas informações interessantes (como senhas ou caminhos) podem ser encontradas dentro do ambiente.
```bash
env
```
#### Informações sobre Frida
```bash
frida
```
#### Upload/Download
#### Upload/Download
```bash
file download []
file upload []
```
#### Importar script frida
```bash
import
```
#### SSLPinning
```bash
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
```
#### Detecção de Root
```bash
android root disable #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.
```
#### Comando Exec
```bash
android shell_exec whoami
```
#### Capturas de Tela
```bash
android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
```
### Análise estática tornada Dinâmica
Em um aplicativo real, devemos saber todas as informações descobertas nesta parte antes de usar objection graças à **análise estática**. De qualquer forma, talvez você possa ver **algo novo**, pois aqui você terá apenas uma lista completa de classes, métodos e objetos exportados.
Isso também é útil se, de alguma forma, você estiver **incapaz de obter algum código-fonte legível** do aplicativo.
#### Listar atividades, receptores e serviços
```
android hooking list activities
```
Como solicitado, o conteúdo não será traduzido, pois é uma imagem e não há texto em inglês fornecido para tradução.
```
android hooking list services
android hooking list receivers
```
Frida lançará um erro se nenhum for encontrado
#### Obtendo a atividade atual
```
android hooking get current_activity
```
![](<../../../.gitbook/assets/image (73) (1).png>)
#### Pesquisar Classes
Vamos começar procurando por classes dentro da nossa aplicação
```
android hooking search classes asvid.github.io.fridaapp
```
![](<../../../.gitbook/assets/image (69).png>)
#### Pesquisar Métodos de uma classe
Agora vamos extrair os métodos dentro da classe _MainActivity:_
```
android hooking search methods asvid.github.io.fridaapp MainActivity
```
![](<../../../.gitbook/assets/image (70) (1).png>)
#### Listar Métodos Declarados de uma Classe com seus Parâmetros
Vamos descobrir quais parâmetros os métodos da classe necessitam:
```
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
```
![](<../../../.gitbook/assets/image (79).png>)
#### Listar classes
Você também pode listar todas as classes que foram carregadas dentro do aplicativo atual:
```
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
```
Esta técnica é muito útil se você deseja **enganchar o método de uma classe e você só conhece o nome da classe**. Você poderia usar essa função para **pesquisar qual módulo possui a classe** e depois enganchar seu método.
### Enganchar sendo fácil
#### Enganchar (observar) um método
A partir do [código-fonte](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt) da aplicação, sabemos que a **função** _**sum()**_ **da** _**MainActivity**_ está sendo executada **a cada segundo**. Vamos tentar **despejar todas as informações possíveis** cada vez que a função é chamada (argumentos, valor de retorno e rastreamento de pilha):
```
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
```
![](<../../../.gitbook/assets/image (71).png>)
#### Fazendo hook (monitorando) de uma classe inteira
Na verdade, eu acho todos os métodos da classe MainActivity muito interessantes, vamos **fazer hook de todos eles**. Tenha cuidado, isso pode **crashar** um aplicativo.
```
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
```
#### Alterando o valor de retorno booleano de uma função
Do código-fonte, você pode ver que a função _checkPin_ recebe uma _String_ como argumento e retorna um _boolean_. Vamos fazer a função **sempre retornar verdadeiro**:
### Instâncias de classes
Pesquise e imprima **instâncias ativas de uma classe Java específica**, especificada por um nome de classe totalmente qualificado. Out é o resultado de uma tentativa de obter um valor de string para uma objeção descoberta que normalmente **conteria valores de propriedade para o objeto**.
```
android heap print_instances
```
```markdown
![](<../../../.gitbook/assets/image (80).png>)
### Keystore/Intents
Você pode interagir com o keystore e intents usando:
```
```
android keystore list
android intents launch_activity
android intent launch_service
```
### Memória
#### Dump
```bash
memory dump all #Dump all memory
memory dump from_base #Dump a part
```
#### Lista
```
memory list modules
```
![](<../../../.gitbook/assets/image (66).png>)
No final da lista, você pode ver o frida:
![](<../../../.gitbook/assets/image (67).png>)
Vamos verificar o que o frida está exportando:
![](<../../../.gitbook/assets/image (68).png>)
#### Pesquisar/Escrever
Você também pode pesquisar e escrever na memória com objection:
```
memory search "" (--string) (--offsets-only)
memory write "" "" (--string)
```
### SQLite
Você pode usar o comando `sqlite` para interagir com bancos de dados sqlite.
### Sair
```
exit
```
## O que falta no Objection
* Os métodos de hooking às vezes fazem o aplicativo travar (isso também é por causa do Frida).
* Você não pode usar as instâncias das classes para chamar funções da instância. E você não pode criar novas instâncias de classes e usá-las para chamar funções.
* Não há um atalho (como o que existe para sslpinnin) para fazer hook em todos os métodos comuns de criptografia usados pelo aplicativo para ver texto cifrado, texto plano, chaves, IVs e algoritmos usados.
**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de bug bounty criada por hackers, para hackers! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje mesmo e comece a ganhar recompensas de até **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
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 [**merchandising oficial do 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 [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).