13 KiB
Tutorial do Objection
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra The PEASS Family, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
![](/Mirrors/hacktricks/media/commit/c928d8e52e20ecf1e1fd997f788c98edc6924bf9/.gitbook/assets/i3.png)
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 hoje e comece a ganhar recompensas de até $100.000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Introdução
objection - Exploração de tempo de execução móvel
objection
é um kit de ferramentas de exploração móvel em tempo de execução, alimentado por Frida. Foi construído com o objetivo de ajudar a avaliar aplicativos móveis e sua postura de segurança sem a necessidade de um dispositivo móvel com jailbreak ou root.
Nota: Isso não é uma forma de bypass de jailbreak / root. Ao usar o objection
, você ainda está limitado por todas as restrições impostas pelo sandbox aplicável que está enfrentando.
Resumo
O objetivo do objection é permitir que o usuário chame as principais ações que o Frida oferece. Caso contrário, o usuário precisará criar um único script 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 de seu repositório original (baixe o app-release.apk)
Instalação
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:
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 eu achei mais úteis.
Ambiente
Algumas informações interessantes (como senhas ou caminhos) podem ser encontradas dentro do ambiente.
env
Informações sobre Frida
Frida is a dynamic instrumentation toolkit that allows developers, reverse-engineers, and security researchers to analyze and manipulate running applications on multiple platforms, including Windows, macOS, Linux, iOS, and Android.
Frida é um conjunto de ferramentas de instrumentação dinâmica que permite a desenvolvedores, engenheiros reversos e pesquisadores de segurança analisar e manipular aplicativos em execução em várias plataformas, incluindo Windows, macOS, Linux, iOS e Android.
frida
Upload/Download
Envio/Download
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
Importar script do frida
import <local path frida-script>
SSLPinning
O SSL Pinning é uma técnica de segurança que consiste em fixar o certificado SSL do servidor para evitar ataques Man-in-the-Middle (MITM). Isso significa que o aplicativo cliente só confiará no certificado SSL específico do servidor, em vez de confiar em qualquer certificado emitido por uma autoridade de certificação confiável. Essa técnica é amplamente utilizada em aplicativos móveis para garantir a segurança da comunicação entre o aplicativo e o servidor.
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
Detecção de Root
android root disable #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.
Executar Comando
android shell_exec whoami
Capturas de tela
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 conhecer todas as informações descobertas nesta parte antes de usar a objeção graças à análise estática. De qualquer forma, desta forma, talvez você possa ver algo novo, já que 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
Este tutorial irá mostrar como usar o Objection com o Frida para realizar testes de penetração em aplicativos Android. O Objection é uma ferramenta que permite a manipulação dinâmica de aplicativos Android, enquanto o Frida é uma estrutura de análise e instrumentação que permite a injeção de código em aplicativos em execução. Juntos, eles fornecem uma poderosa ferramenta para testes de penetração em aplicativos Android.
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
Procurar Classes
Vamos começar procurando por classes dentro do nosso aplicativo.
android hooking search classes asvid.github.io.fridaapp
Métodos de busca de uma classe
Agora vamos extrair os métodos dentro da classe MainActivity:
android hooking search methods asvid.github.io.fridaapp MainActivity
Listar métodos declarados de uma classe com seus parâmetros
Vamos descobrir quais parâmetros os métodos da classe precisam:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
Listar classes
Você também pode listar todas as classes que foram carregadas dentro da aplicação atual:
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
Isso é muito útil se você quiser interceptar o método de uma classe e só souber o nome da classe. Você pode usar esta função para procurar qual módulo possui a classe e, em seguida, interceptar seu método.
Interceptar é fácil
Interceptar (observar) um método
A partir do código-fonte do aplicativo, sabemos que a função sum() de MainActivity é executada a cada segundo. Vamos tentar capturar todas as informações possíveis cada vez que a função é chamada (argumentos, valor de retorno e backtrace):
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
Hooking (observando) uma classe inteira
Na verdade, eu acho todos os métodos da classe MainActivity realmente interessantes, vamos observá-los todos. Tenha cuidado, isso pode crashar um aplicativo.
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
Se você interagir com o aplicativo enquanto a classe estiver conectada, você verá quando cada função é chamada, seus argumentos e o valor de retorno.
Alterando o valor booleano de retorno de uma função
A partir 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:
Agora, se você escrever qualquer coisa na caixa de texto para o código PIN, verá que qualquer coisa é válida:
Instâncias de classe
Procure 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 contém valores de propriedade para o objeto.
android heap print_instances <class>
Keystore/Intents
Você pode manipular o keystore e intents usando:
android keystore list
android intents launch_activity
android intent launch_service
Memória
Despejo
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
Lista
memory list modules
Na parte inferior da lista, você pode ver o frida:
Vamos verificar o que o frida está exportando:
Busca/Escrita
Você também pode buscar e escrever na memória com o objection:
memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--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 com que o aplicativo falhe (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 de sslpinnin) para hook todos os métodos de criptografia comuns usados pelo aplicativo para ver texto cifrado, texto simples, chaves, IVs e algoritmos usados.
![](/Mirrors/hacktricks/media/commit/c928d8e52e20ecf1e1fd997f788c98edc6924bf9/.gitbook/assets/i3.png)
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 hoje e comece a ganhar recompensas de até $100.000!
{% embed url="https://go.intigriti.com/hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Verifique os PLANOS DE ASSINATURA!
- Descubra The PEASS Family, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.