Drozer Tutorial
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Consejo de bug bounty: regístrate en Intigriti, una plataforma de bug bounty premium creada por hackers, para hackers! Únete a nosotros en https://go.intigriti.com/hacktricks hoy, y comienza a ganar recompensas de hasta $100,000!
APKs para probar
Sieve (de mrwlabs)
Partes de este tutorial fueron extraídas de la documentación pdf de Drozer.
Instalación
Instala el Cliente Drozer dentro de tu host. Descárgalo de las últimas versiones.
Descarga e instala el APK de drozer desde las últimas versiones. En este momento es este.
Iniciando el Servidor
Agent se está ejecutando en el puerto 31415, necesitamos port forward para establecer la comunicación entre el Drozer Client y Agent, aquí está el comando para hacerlo:
Finalmente, lanza la aplicación y presiona el botón "ON"
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-ab1786558a7b9d62724edd85419268e3c891bad5%252Fimage%2520%28459%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=36987c70&sv=1)
Y conéctate a ella:
Comandos Interesantes
Comandos | Descripción |
Help MODULE | Muestra la ayuda del módulo seleccionado |
list | Muestra una lista de todos los módulos de drozer que se pueden ejecutar en la sesión actual. Esto oculta los módulos que no tienes permisos apropiados para ejecutar. |
shell | Inicia un shell de Linux interactivo en el dispositivo, en el contexto del Agente. |
clean | Elimina archivos temporales almacenados por drozer en el dispositivo Android. |
load | Carga un archivo que contiene comandos de drozer y los ejecuta en secuencia. |
module | Encuentra e instala módulos adicionales de drozer desde Internet. |
unset | Elimina una variable nombrada que drozer pasa a cualquier shell de Linux que genera. |
set | Almacena un valor en una variable que se pasará como una variable de entorno a cualquier shell de Linux generado por drozer. |
shell | Inicia un shell de Linux interactivo en el dispositivo, en el contexto del Agente |
run MODULE | Ejecuta un módulo de drozer |
exploit | Drozer puede crear exploits para ejecutar en el dispositivo. |
payload | Los exploits necesitan un payload. |
Paquete
Encuentra el nombre del paquete filtrando por parte del nombre:
Información básica del paquete:
Leer Manifest:
Superficie de ataque del paquete:
Actividades: Tal vez puedas iniciar una actividad y eludir algún tipo de autorización que debería impedirte lanzarla.
Proveedores de contenido: Tal vez puedas acceder a datos privados o explotar alguna vulnerabilidad (SQL Injection o Path Traversal).
Servicios:
es depurable: Aprende más
Actividades
El valor “android:exported” de un componente de actividad exportado se establece en “true” en el archivo AndroidManifest.xml:
Lista de actividades exportadas:
Iniciar actividad:
Quizás puedas iniciar una actividad y eludir algún tipo de autorización que debería impedirte lanzarla.
También puedes iniciar una actividad exportada desde adb:
PackageName es com.example.demo
Exported ActivityName es com.example.test.MainActivity
Proveedores de Contenido
Esta publicación era demasiado grande para estar aquí, así que puedes acceder a ella en su propia página aquí.
Servicios
Un servicio exportado se declara dentro del Manifest.xml:
Dentro del código verifica la función handleMessage
que recibirá el mensaje:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-f20e8ce2fc518cd80eb4ba6d3cc92921b98557d8%252Fimage%2520%2882%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=19362bd5&sv=1)
Listar servicio
Interactuar con un servicio
Ejemplo
Mira la ayuda de drozer para app.service.send
:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-b1c5a1a13c3d409442ea29b8a82310be8e29b742%252Fimage%2520%281079%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=d175ef02&sv=1)
Ten en cuenta que primero enviarás los datos dentro de "msg.what", luego "msg.arg1" y "msg.arg2", deberías verificar dentro del código qué información se está utilizando y dónde.
Usando la opción --extra
puedes enviar algo interpretado por "msg.replyTo", y usando --bundle-as-obj
creas un objeto con los detalles proporcionados.
En el siguiente ejemplo:
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%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-6046bf9a80645bab7a7591101301a9288f4783d8%252Fimage%2520%28647%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=d2ea5677&sv=1)
Broadcast Receivers
En la sección de información básica de Android, puedes ver qué es un Broadcast Receiver.
Después de descubrir estos Broadcast Receivers, deberías revisar el código de ellos. Presta especial atención a la función onReceive
ya que se encargará de manejar los mensajes recibidos.
Detectar todos los broadcast receivers
Verificar los receptores de difusión de una aplicación
Interacciones Broadcast
Enviar un mensaje
En este ejemplo, abusando del apk de FourGoats Content Provider, puedes enviar un SMS arbitrario a cualquier destino no premium sin pedir permiso al usuario.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-deb8d0d388e9fdc2f306cc84d13e3b79c623ac01%252Fimage%2520%28415%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=603f914f&sv=1)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2730383215-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOGiU7XValBchYYDg6h1H%252Fuploads%252Fgit-blob-9fe1e166755bb71fc118787b447a1445b53eb4fd%252Fimage%2520%28573%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=585f8b8b&sv=1)
Si lees el código, los parámetros "phoneNumber" y "message" deben ser enviados al Content Provider.
Es depurable
Un APK de producción nunca debería ser depurable. Esto significa que puedes adjuntar un depurador de java a la aplicación en ejecución, inspeccionarla en tiempo de ejecución, establecer puntos de interrupción, avanzar paso a paso, recopilar valores de variables e incluso cambiarlos. El instituto InfoSec tiene un excelente artículo sobre cómo profundizar cuando tu aplicación es depurable e inyectar código en tiempo de ejecución.
Cuando una aplicación es depurable, aparecerá en el Manifiesto:
Puedes encontrar todas las aplicaciones depurables con Drozer:
Tutoriales
Más información
Consejo de recompensas por errores: regístrate en Intigriti, una plataforma de recompensas por errores premium creada por hackers, para hackers! Únete a nosotros en https://go.intigriti.com/hacktricks hoy, y comienza a ganar recompensas de hasta $100,000!
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated