VIKIROOT
Este é um PoC do CVE-2016-5195 para Android 6.0.1 Marshmallow de 64 bits (talvez 7.0?), bem como uma ferramenta de root temporal universal e estável. Não requer um executável SUID ou quaisquer alterações no sistema de arquivos.
Funcionalidades
- Bypass do SELinux (veja abaixo para detalhes).
- Somente memória: não modifica o sistema de arquivos nem precisa de executável especial.
- Estável: não afeta a estabilidade do seu dispositivo.
- Escalável: fácil adicionar novo kernel e/ou novos dispositivos.
- Reversível: o backdoor é limpo automaticamente após o fim do shell root, o que significa que nenhuma reinicialização é necessária após o uso.
Atenção
Por "bypass do SELinux" quero dizer que o payload será executado no domínio init mesmo que o SELinux esteja em modo enforcing, no entanto, ainda é necessário um patch no sepolicy para tornar o domínio init sem restrições. Normalmente, isso significa que uma imagem de boot modificada é necessária.
Pré-requisito
- I, Robot de Isaac Asimov.
- dispositivo "com capacidade dirtycow".
- sepolicy com patch.
Compilação
Binários pré-compilados estão disponíveis na página de releases. Caso contrário, basta adicionar a toolchain standalone do NDK ao PATH e executar make.
Uso
Você pode executá-lo através de um shell adb (coloque-o em /data/local/tmp) e obter um shell root no terminal embutido ou em um servidor de terminal remoto como nc. Para detalhes, execute-o sem nenhum parâmetro.
Solução de problemas
- primeiramente, leia atentamente a parte "Atenção" acima.
- "espaço insuficiente para o payload" ou "kernel desconhecido": é necessária uma reinicialização.
- "aguardando shell de conexão reversa": por favor, acorde o dispositivo, abra o aplicativo de relógio/alarme ou alterne o interruptor bluetooth para acionar o backdoor.
- ainda sem sorte: execute a versão "dbg" e envie um e-mail para mim com os arquivos gerados, que são apenas dump de alguma parte do kernel e não contêm informações pessoais.
Créditos
- scumjr pelo método de patch do vDSO.
- Tzul por me ajudar a depurar o problema de sepolicy.
- RenaKunisaki por fazê-lo funcionar com o bionic.
TODO
- Enriqueça a base de dados do kernel para suporte a x86 e assim por diante.
- Testá-lo no Android 7 Nougat (ajuda desejada!).