MASTG-TEST-0045: Testando Root Detection
Bypass da Detecção de Root¶
Execute rastreamentos de execução com jdb, DDMS, strace e/ou módulos do kernel para descobrir o que o aplicativo está fazendo. Normalmente, você verá todos os tipos de interações suspeitas com o sistema operacional, como a abertura do binário su para leitura e a obtenção de uma lista de processos. Essas interações são sinais inequívocos de detecção de root. Identifique e desative os mecanismos de detecção de root, um por vez. Se você estiver realizando uma avaliação de resiliência em caixa preta, desativar os mecanismos de detecção de root é o seu primeiro passo.
Para contornar essas verificações, você pode usar várias técnicas, a maioria das quais foi apresentada no capítulo "Engenharia Reversa e Manipulação":
- Renomear binários. Por exemplo, em alguns casos, simplesmente renomear o binário
sué suficiente para derrotar a detecção de root (mas tome cuidado para não prejudicar seu ambiente!). - Desmontar
/procpara evitar a leitura de listas de processos. Às vezes, a indisponibilidade de/procé suficiente para contornar essas verificações. - Usar Frida ou Xposed para fazer hook de APIs nas camadas Java e nativa. Isso oculta arquivos e processos, esconde o conteúdo de arquivos e retorna todos os tipos de valores falsos que o aplicativo solicita.
- Fazer hook de APIs de baixo nível usando módulos do kernel.
- Aplicar patches no aplicativo para remover as verificações.
Avaliação de Eficácia¶
Verifique a presença de mecanismos de detecção de root, incluindo os seguintes critérios:
- Múltiplos métodos de detecção estão espalhados pelo aplicativo (em oposição a concentrar tudo em um único método).
- Os mecanismos de detecção de root operam em múltiplas camadas de API (APIs Java, funções de bibliotecas nativas, chamadas de sistema/assembler).
- Os mecanismos são de alguma forma originais (não são copiados e colados do StackOverflow ou de outras fontes).
Desenvolva métodos de bypass para os mecanismos de detecção de root e responda às seguintes perguntas:
- Os mecanismos podem ser facilmente contornados com ferramentas padrão, como Choicy?
- É necessária análise estática/dinâmica para lidar com a detecção de root?
- Você precisa escrever código personalizado?
- Quanto tempo levou para contornar os mecanismos com sucesso?
- Qual é a sua avaliação da dificuldade de contornar os mecanismos?
Se a detecção de root estiver ausente ou for muito fácil de contornar, faça sugestões alinhadas com os critérios de eficácia listados acima. Essas sugestões podem incluir mais mecanismos de detecção e uma melhor integração dos mecanismos existentes com outras defesas.