Drozer Tutorial
Dica de recompensa por bugs: cadastre-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!
APKs para testar
Sieve (de mrwlabs)
Partes deste tutorial foram extraídas da documentação em pdf do Drozer.
Instalação
Instale o Cliente Drozer dentro do seu host. Baixe-o das últimas versões.
Baixe e instale o arquivo APK do drozer nas últimas versões. Neste momento, é este.
Iniciando o Servidor
O agente está em execução na porta 31415, precisamos fazer encaminhamento de porta para estabelecer a comunicação entre o Cliente Drozer e o Agente, aqui está o comando para fazer isso:
Finalmente, inicie o aplicativo e pressione o botão "ON"
E conecte-se a ele:
Comandos Interessantes
Comandos | Descrição |
Help MODULE | Mostra a ajuda do módulo selecionado |
list | Mostra uma lista de todos os módulos do drozer que podem ser executados na sessão atual. Isso oculta módulos para os quais você não tem permissões adequadas para executar. |
shell | Inicia um shell Linux interativo no dispositivo, no contexto do Agente. |
clean | Remove arquivos temporários armazenados pelo drozer no dispositivo Android. |
load | Carrega um arquivo contendo comandos do drozer e os executa em sequência. |
module | Encontra e instala módulos adicionais do drozer da Internet. |
unset | Remove uma variável nomeada que o drozer passa para quaisquer shells Linux que ele inicia. |
set | Armazena um valor em uma variável que será passada como variável de ambiente para quaisquer shells Linux iniciados pelo drozer. |
shell | Inicia um shell Linux interativo no dispositivo, no contexto do Agente. |
run MODULE | Executa um módulo do drozer. |
exploit | O Drozer pode criar exploits para serem executados no dispositivo. |
payload | Os exploits precisam de um payload. |
Pacote
Encontre o nome do pacote filtrando por parte do nome:
Informações básicas do pacote:
Leia Manifesto:
Superfície de ataque do pacote:
Atividades: Talvez você consiga iniciar uma atividade e contornar algum tipo de autorização que deveria impedir você de lançá-la.
Provedores de conteúdo: Talvez você consiga acessar dados privados ou explorar alguma vulnerabilidade (SQL Injection ou Traversal de Caminho).
Serviços:
is debuggable: Saiba mais
Atividades
O valor "android:exported" de um componente de atividade exportado está definido como "true" no arquivo AndroidManifest.xml:
Listar atividades exportadas:
Iniciar atividade:
Talvez você possa iniciar uma atividade e contornar algum tipo de autorização que deveria impedir você de lançá-la.
Você também pode iniciar uma atividade exportada pelo adb:
PackageName é com.example.demo
Nome da Atividade Exportada é com.example.test.MainActivity
Fornecedores de Conteúdo
Este post era tão extenso para estar aqui, então você pode acessá-lo em sua própria página aqui.
Serviços
Um serviço exportado é declarado dentro do Manifest.xml:
Dentro do código verifique a função **handleMessage
** que irá receber a mensagem:
Listar serviço
Interagir com um serviço
Exemplo
Dê uma olhada na ajuda do drozer para app.service.send
:
Note que você estará enviando primeiro os dados dentro de "msg.what", depois "msg.arg1" e "msg.arg2", você deve verificar dentro do código quais informações estão sendo usadas e onde.
Usando a opção --extra
você pode enviar algo interpretado por "msg.replyTo", e usando --bundle-as-obj
você cria um objeto com os detalhes fornecidos.
No exemplo a seguir:
what == 2354
arg1 == 9234
arg2 == 1
replyTo == object(string com.mwr.example.sieve.PIN 1337)
Receptores de Transmissão
Na seção de informações básicas do Android, você pode ver o que é um Receptor de Transmissão.
Após descobrir esses Receptores de Transmissão, você deve verificar o código deles. Preste atenção especial na função onReceive
pois será responsável por lidar com as mensagens recebidas.
Detectar todos os receptores de transmissão
Verificar receptores de transmissão de um aplicativo
Interações de Transmissão
Enviar uma mensagem
Neste exemplo, abusando do apk FourGoats Content Provider, você pode enviar um SMS arbitrário para qualquer destino não premium sem pedir permissão ao usuário.
Se você ler o código, os parâmetros "phoneNumber" e "message" devem ser enviados para o Content Provider.
Está depurável
Um APK de produção nunca deve estar depurável. Isso significa que você pode anexar um depurador Java à aplicação em execução, inspecioná-la em tempo de execução, definir pontos de interrupção, avançar passo a passo, reunir valores de variáveis e até mesmo alterá-los. O InfoSec Institute tem um excelente artigo sobre aprofundar quando sua aplicação está depurável e injetar código em tempo de execução.
Quando uma aplicação está depurável, ela aparecerá no Manifesto:
Você pode encontrar todas as aplicações depuráveis com o Drozer:
Tutoriais
Mais informações
Dica de recompensa por bugs: inscreva-se na 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!
Last updated