Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, verifique os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
Dica de recompensa por bugs: inscreva-se no Intigriti, uma plataforma premium de recompensa por bugs 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" %}
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 pelo 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.
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:
{% file src="../../../.gitbook/assets/app-release.zip" %}
Ou do seu repositório original (baixe app-release.apk)
pip3 install objection
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 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
Não todos os comandos possíveis do Objection serão listados neste tutorial, apenas aqueles que eu achei mais úteis.
Algumas informações interessantes (como senhas ou caminhos) podem ser encontradas dentro do ambiente.
env
frida
file download <remote path> [<local path>]
file upload <local path> [<remote path>]
import <local path frida-script>
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
android root disable #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.
android shell_exec whoami
android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false #This may enable you to take screenshots using the hardware keys
Numa aplicação real, devemos conhecer todas as informações descobertas nesta parte antes de usar o objection graças à análise estática. De qualquer forma, desta maneira 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ê não conseguir obter algum código-fonte legível do aplicativo.
android hooking list activities
android hooking list services
android hooking list receivers
Frida lançará um erro se nenhum for encontrado
android hooking get current_activity
Vamos começar a procurar por classes dentro de nossa aplicação
android hooking search classes asvid.github.io.fridaapp
Agora vamos extrair os métodos dentro da classe MainActivity:
android hooking search methods asvid.github.io.fridaapp MainActivity
Vamos descobrir quais parâmetros os métodos da classe precisam:
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
Também é possível 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.
Este é muito útil se você quiser interceptar o método de uma classe e só souber o nome da classe. Você pode usar essa função para pesquisar qual módulo possui a classe e então interceptar seu método.
A partir do código-fonte do aplicativo, sabemos que a função sum() da MainActivity está sendo executada a cada segundo. Vamos tentar dump all possible information cada vez que a função for chamada (argumentos, valor de retorno e backtrace):
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
Na verdade, acho todos os métodos da classe MainActivity realmente interessantes, vamos observá-los todos. Tenha cuidado, isso poderia causar uma falha na aplicação.
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.
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 true:
Agora, se você digitar qualquer coisa na caixa de texto para o código PIN, verá que qualquer coisa é válida:
Procure e imprima instâncias ativas de uma classe Java específica, especificada por um nome de classe totalmente qualificado. O resultado é 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>
Você pode brincar com o armazenamento de chaves e intents usando:
android keystore list
android intents launch_activity
android intent launch_service
memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
memory list modules
Na parte inferior da lista, você pode ver o frida:
Vamos verificar o que o frida está exportando:
Você também pode pesquisar 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)
Você pode usar o comando sqlite
para interagir com bancos de dados sqlite.
exit
- Os métodos de hooking às vezes travam o aplicativo (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 em todos os métodos de criptografia comuns usados pelo aplicativo para ver texto cifrado, texto simples, chaves, IVs e algoritmos usados.
Dica de recompensa por bug: inscreva-se no Intigriti, uma plataforma premium de recompensas por bugs 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" %}
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, verifique os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os repositórios HackTricks e HackTricks Cloud.