11 KiB
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!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios do HackTricks e 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 hoje e comece a ganhar recompensas de até $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Introdução
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. 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 (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:
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.
env
Informações sobre Frida
frida
Upload/Download
Upload/Download
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
Importar script frida
import <local path frida-script>
SSLPinning
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.
Comando Exec
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 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
Pesquisar Classes
Vamos começar procurando por classes dentro da nossa aplicação
android hooking search classes asvid.github.io.fridaapp
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
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
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 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
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 <class>
![](<../../../.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
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
No final da lista, você pode ver o frida:
Vamos verificar o que o frida está exportando:
Pesquisar/Escrever
Você também pode pesquisar e escrever na memória com 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 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 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!
- Adquira o merchandising oficial do PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas dicas de hacking enviando PRs para os repositórios do GitHub HackTricks e HackTricks Cloud.