Drozer Tutorial
Aprenda e pratique AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
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!
APKs para testar
Sieve (do mrwlabs)
Partes deste tutorial foram extraídas da documentação do Drozer pdf.
Instalação
Instale o Drozer Client dentro do seu host. Baixe-o a partir das últimas versões.
Baixe e instale o APK do drozer a partir das últimas versões. Neste momento é este.
Iniciando o Servidor
O Agente está rodando na porta 31415, precisamos encaminhar a porta para estabelecer a comunicação entre o Cliente Drozer e o Agente, aqui está o comando para fazer isso:
Finalmente, inicie a aplicação e pressione o botão "ON"
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F910640767-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FjzQiXe8oFAkPoN0MXcUG%252Fuploads%252Fgit-blob-ab1786558a7b9d62724edd85419268e3c891bad5%252Fimage%2520%28459%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=3227e270&sv=1)
E conecte-se a ela:
Interesting Commands
Commands | Description |
Help MODULE | Mostra a ajuda do módulo selecionado |
list | Mostra uma lista de todos os módulos drozer que podem ser executados na sessão atual. Isso oculta módulos que você não tem permissões apropriadas 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 drozer e os executa em sequência. |
module | Encontra e instala módulos drozer adicionais da Internet. |
unset | Remove uma variável nomeada que o drozer passa para qualquer shell Linux que ele gera. |
set | Armazena um valor em uma variável que será passada como uma variável ambiental para qualquer shell Linux gerado pelo drozer. |
shell | Inicia um shell Linux interativo no dispositivo, no contexto do Agente |
run MODULE | Executa um módulo drozer |
exploit | O drozer pode criar exploits para executar no dispositivo. |
payload | Os exploits precisam de um payload. |
Package
Encontre o nome do pacote filtrando por parte do nome:
Informações Básicas do pacote:
Leia Manifest:
Superfície de ataque do pacote:
Atividades: Talvez você possa iniciar uma atividade e contornar algum tipo de autorização que deveria impedir você de lançá-la.
Provedores de conteúdo: Talvez você possa acessar dados privados ou explorar alguma vulnerabilidade (SQL Injection ou Path Traversal).
Serviços:
is debuggable: Saiba mais
Atividades
O valor “android:exported” de um componente de atividade exportado é 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 impedi-lo de lançá-la.
Você também pode iniciar uma atividade exportada a partir do adb:
PackageName é com.example.demo
Exported ActivityName é com.example.test.MainActivity
Content Providers
Este post era muito grande para estar aqui, então você pode acessá-lo em sua própria página aqui.
Services
Um serviço exportado é declarado dentro do Manifest.xml:
Dentro do código verifique a função handleMessage
que irá receber a mensagem:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F910640767-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FjzQiXe8oFAkPoN0MXcUG%252Fuploads%252Fgit-blob-f20e8ce2fc518cd80eb4ba6d3cc92921b98557d8%252Fimage%2520%2882%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=a820edd5&sv=1)
Listar serviço
Interagir com um serviço
Exemplo
Dê uma olhada na ajuda do drozer para app.service.send
:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F910640767-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FjzQiXe8oFAkPoN0MXcUG%252Fuploads%252Fgit-blob-b1c5a1a13c3d409442ea29b8a82310be8e29b742%252Fimage%2520%281079%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=d4338102&sv=1)
Note que você enviará 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)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F910640767-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FjzQiXe8oFAkPoN0MXcUG%252Fuploads%252Fgit-blob-6046bf9a80645bab7a7591101301a9288f4783d8%252Fimage%2520%28647%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=ce79bc77&sv=1)
Broadcast Receivers
Na seção de informações básicas do Android, você pode ver o que é um Broadcast Receiver.
Após descobrir esses Broadcast Receivers, você deve verificar o código deles. Preste atenção especial à função onReceive
, pois ela lidará com as mensagens recebidas.
Detectar todos os broadcast receivers
Verifique os receptores de broadcast de um aplicativo
Interações Broadcast
Enviar uma mensagem
Neste exemplo, abusando do FourGoats apk Content Provider, você pode enviar um SMS arbitrário para qualquer destino não premium sem pedir permissão ao usuário.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F910640767-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FjzQiXe8oFAkPoN0MXcUG%252Fuploads%252Fgit-blob-deb8d0d388e9fdc2f306cc84d13e3b79c623ac01%252Fimage%2520%28415%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=5bcef74f&sv=1)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F910640767-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FjzQiXe8oFAkPoN0MXcUG%252Fuploads%252Fgit-blob-9fe1e166755bb71fc118787b447a1445b53eb4fd%252Fimage%2520%28573%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=53eef18b&sv=1)
Se você ler o código, os parâmetros "phoneNumber" e "message" devem ser enviados para o Content Provider.
É depurável
Um APK de produção nunca deve ser 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, coletar valores de variáveis e até mesmo alterá-los. O InfoSec Institute tem um excelente artigo sobre como aprofundar-se quando sua aplicação é depurável e injetar código em tempo de execução.
Quando uma aplicação é depurável, ela aparecerá no Manifest:
Você pode encontrar todos os aplicativos depuráveis com Drozer:
Tutoriais
Mais informações
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)
Last updated