Objection Tutorial
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Dica de bug bounty: inscreva-se no Intigriti, uma plataforma de bug bounty premium 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!
objection - Exploração Móvel em Tempo de Execução
Objection é um kit de ferramentas de exploração móvel em tempo de execução, alimentado por Frida. Foi criado 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 jailbreak / bypass de root. Ao usar objection
, você ainda está limitado por todas as restrições impostas pelo sandbox aplicável que está enfrentando.
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.
Para este tutorial, vou usar o APK que você pode baixar aqui:
Ou do seu repositório original (baixe app-release.apk)
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 você deseja testar dentro da opção --gadget. neste caso:
Nem todos os comandos possíveis do objection serão listados neste tutorial, apenas os que eu achei mais úteis.
Algumas informações interessantes (como senhas ou caminhos) podem ser encontradas dentro do ambiente.
Em uma aplicação real, devemos conhecer todas as informações descobertas nesta parte antes de usar objection graças à análise estática. De qualquer forma, dessa maneira você pode 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.
Frida lançará um erro se nenhum for encontrado
Vamos começar a procurar por classes dentro do nosso aplicativo.
Agora vamos extrair os métodos dentro da classe MainActivity:
Vamos descobrir quais parâmetros os métodos da classe precisam:
Você também pode listar todas as classes que foram carregadas dentro da aplicação atual:
Isso é muito útil se você quiser hook a method de uma classe e você só souber o nome da classe. Você poderia usar essa função para procurar qual módulo possui a classe e então hook seu método.
Do código-fonte da aplicação, sabemos que a função sum() da MainActivity está sendo executada a cada segundo. Vamos tentar dump todas as informações possíveis cada vez que a função é chamada (argumentos, valor de retorno e backtrace):
Na verdade, acho todos os métodos da classe MainActivity realmente interessantes, vamos hook them all. Cuidado, isso pode crash uma aplicação.
Se você brincar com o aplicativo enquanto a classe está conectada, você verá quando cada função está sendo chamada, seus argumentos e o valor de retorno.
Do código-fonte, você pode ver que a função checkPin recebe um String como argumento e retorna um boolean. Vamos fazer a função sempre retornar true:
Agora, se você escrever qualquer coisa na caixa de texto para o código PIN, você verá que qualquer coisa é válida:
Pesquise e imprima instâncias ativas de uma classe Java específica, especificada por um nome de classe totalmente qualificado. A saída é 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.
Você pode brincar com o keystore e intents usando:
Na parte inferior da lista, você pode ver frida:
Vamos verificar o que frida está exportando:
Você também pode buscar e escrever na memória com objection:
Você pode usar o comando sqlite
para interagir com bancos de dados sqlite.
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 de sslpinnin) para hookear todos os métodos comuns de criptografia usados pelo aplicativo para ver texto cifrado, texto simples, 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 e comece a ganhar recompensas de até $100,000!
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)