
Gestiona máquinas Android con comportamientos predefinidos para entornos de Cyber Range.
RoboDroid
RoboDroid es una herramienta de software de vanguardia diseñada para simplificar el proceso de gestionar (y muy pronto también desplegar) máquinas Android para su uso en entornos de Cyber Range. Con RoboDroid, los usuarios pueden configurar y personalizar fácilmente comportamientos predefinidos para sus máquinas Android, permitiéndoles crear escenarios complejos de ciberataques y probar sus defensas contra una amplia gama de amenazas.
Los dispositivos móviles se han vuelto omnipresentes en el mundo actual. Las personas usan teléfonos inteligentes para casi todos los aspectos de sus vidas, incluyendo la banca, las compras y la comunicación. Como resultado, los dispositivos móviles son ahora un objetivo principal para los ciberdelincuentes.
Sin embargo, la seguridad de los dispositivos móviles a menudo se pasa por alto en los entornos de entrenamiento y pruebas de ciberseguridad. Esto puede dejar a las organizaciones vulnerables a ataques que explotan las debilidades de los dispositivos móviles. Por lo tanto, es importante introducir componentes móviles en los cyber-ranges de próxima generación para adaptarse al mundo actual, cada vez más dependiente de los teléfonos inteligentes.
RoboDroid está diseñado para ayudar a llenar este vacío proporcionando un conjunto de herramientas que pueden simular el comportamiento humano similar al de un teléfono inteligente. Los comportamientos predefinidos se crean utilizando Frida y se gestionan en el repositorio de RoboDroid Library.
El objetivo de RoboDroid es proporcionar una forma sencilla de introducir componentes móviles en entornos de Cyber Range. Su objetivo principal es ofrecer a los usuarios una plataforma fácil de usar que les permita simular comportamientos y acciones similares a los humanos en dispositivos móviles.
RoboDroid aprovecha la tecnología Frida para ejecutar comportamientos específicos de aplicaciones, mientras utiliza ADB para todas las demás operaciones. Esta potente combinación permite a los usuarios crear flujos de trabajo de comportamientos preestablecidos que pueden simular las acciones de un usuario móvil.
Un ejemplo de flujo de trabajo que se puede utilizar en un entorno de cyber range implica simular que un usuario móvil recibe un correo electrónico de phishing, hace clic en el enlace contenido en el correo y posteriormente descarga un malware.
La siguiente imagen lo resume:

El flujo de trabajo se puede descomponer en los siguientes pasos:
Al crear y ejecutar flujos de trabajo como este, los usuarios pueden simular escenarios realistas de ciberataques y probar sus defensas contra una amplia gama de amenazas. Esto ayuda a garantizar que los sistemas y las redes estén bien protegidos contra posibles vulnerabilidades, y que los usuarios estén preparados para responder de manera efectiva en caso de un ataque.

RoboDroid se comunica con el Agente Frida proporcionado por RoboDroid Library mediante mensajes, proporcionando una interacción eficiente.
Cuando RoboDroid inicia un comportamiento específico, espera un mensaje del Agente Frida. El mensaje puede ser de tipo FAILURE o COMPLETED.
Si el tipo de mensaje es FAILURE, RoboDroid reinicia el comportamiento actual para asegurar una finalización exitosa. Si el tipo de mensaje es COMPLETED, el paso actual se marca como finalizado y RoboDroid pasa al siguiente paso.
Además, un mensaje de tipo COMPLETED también puede contener salidas que se pueden utilizar en pasos posteriores. Esto asegura que la herramienta pueda optimizar su comportamiento para lograr una simulación precisa de acciones humanas en dispositivos móviles.
Al proporcionar este proceso de comunicación robusto, RoboDroid garantiza la integración perfecta del Agente Frida en su conjunto de herramientas y facilita la creación de flujos de trabajo complejos para la simulación de dispositivos móviles en un entorno de Cyber Range.
Puedes instalarlo fácilmente ejecutando:
pipx install robodroid
Te sugerimos usar pipx en lugar de pip porque en futuras versiones de Python se eliminará la instalación de paquetes con pip fuera de entornos virtuales.
RoboDroid tiene soporte incorporado para la descarga automática de comportamientos (y pronto actualización automática) desde el repositorio RoboDroid Library. Si deseas agregar un nuevo comportamiento de Frida, te sugerimos que vayas al repositorio específico y hagas un Pull Request.
robodroid --help
Esto mostrará la ayuda de la herramienta:
&&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
RoboDroid v0.0.3
Usage: robodroid [OPTIONS] COMMAND [ARGS]...
Manage and deploy Android machines with pre-defined behaviors for Cyber Range environments
╭─ Options ──────────────────────────────────────────────────────────────────────────────────╮
│ --help -h Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────────────────╮
│ run Run RoboDroid. │
| update-library Update the RoboDroid Library to the latest version |
│ version Print the current version and exit. │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
runPuedes ejecutar robodroid en dos modos diferentes:
default) &&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
RoboDroid v0.0.3
Usage: robodroid run [OPTIONS]
Run RoboDroid.
╭─ Options ───────────────────────────────────────────────────────────────────────────╮
│ --log-mode [silent|normal|debug] Set logging mode [default: normal] │
│ --mode -m [interactive|managed] Set run mode [default: interactive] │
│ --config -c TEXT Name of the managed config file to load │
│ --help -h Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────────╯
En el modo interactivo hay un prompt que permite al usuario seleccionar el host ADB, el puerto y el dispositivo a utilizar, mientras que el modo gestionado utiliza un archivo de configuración que DEBE UBICARSE en $HOME/.RoboDroid/config en formato yaml. El modo gestionado es el modo perfecto para usar al configurar un laboratorio/entorno sin necesidad de entrada/configuración del usuario.
La siguiente tabla proporciona una descripción de los campos utilizados en el archivo de configuración:
| Clave | Requerido | Descripción |
|---|---|---|
| device | True | Información sobre el dispositivo a utilizar |
| workflow | True | El flujo de trabajo a utilizar (nombre del archivo) |
Antes de ejecutarlo realmente, debes proporcionar al menos un archivo de flujo de trabajo válido que debe colocarse en $HOME/.RoboDroid/workflows en formato yaml.
Este archivo de configuración define todos los pasos del flujo de trabajo que se ejecutarán; puedes echar un vistazo a la carpeta examples para ver configuraciones válidas. La siguiente tabla proporciona una descripción de los campos utilizados en el archivo de flujo de trabajo:
| Clave | Requerido | Descripción |
|---|---|---|
En la sección init puedes establecer los APKs que deben instalarse y los paquetes que deben limpiarse (almacenamiento y caché) antes de ejecutar el flujo de trabajo real. La estructura de esta sección es la siguiente:
| Clave | Requerido | Descripción |
|---|---|---|
| install | True | Lista de rutas de APKs a instalar |
| clear | False | Lista de paquetes a limpiar (almacenamiento y caché) |
En la sección behaviors se encuentra el flujo de trabajo real. Es una lista de elementos llamados pasos que deben ejecutarse secuencialmente. Cada paso tiene la siguiente estructura:
Finalmente, cada entrada tiene la siguiente estructura:
| Clave | Requerido | Descripción |
|---|---|---|
| id | True | ID de la entrada |
| value | True | El valor a asignar a esta entrada |
Lo último que hay que decir es que también puedes usar salidas de pasos anteriores como entrada para los siguientes. Para hacerlo, puedes establecer el valor de una entrada usando el prefijo reservado robodroid.outputs seguido del ID del paso y el ID de la salida, por ejemplo:
...
- id: get-link
name: k9-mail-refresh-and-get-link
type: frida
- id: open-and-download
name: firefox-android-open-link-and-download
type: frida
inputs:
- id: link
value: robodroid.outputs.get-link.link
...
Las opciones de la CLI también se pueden configurar mediante variables de entorno (especialmente útil al ejecutarlo dentro de Docker); la siguiente tabla proporciona una lista de las variables de entorno actualmente disponibles:
| Clave | Descripción |
|---|---|
| ROBODROID_LOG_MODE | Nivel de registro de RoboDroid [silent |
| ROBODROID_RUN_MODE | Modo de ejecución [interactive |
| ROBODROID_MANAGED_CONFIG_NAME | El nombre de la configuración gestionada a usar (al ejecutarse en modo managed) |
PENDIENTE
Hicimos un breve video de demostración que muestra RoboDroid en acción con una plantilla que hace lo siguiente:
Este flujo de trabajo simula un ataque de phishing común (aunque simplificado) que se puede utilizar en un Cyber Range de próxima generación que involucra dispositivos móviles Android.
RoboDroid es una herramienta recién nacida y aún necesita crecer. Actualmente, estas son las características que planeamos agregar muy pronto:
Por supuesto, planeamos agregar más y más comportamientos en RoboDroid Library y más y más comandos adb en este repositorio. También animamos a todos los usuarios a contribuir a este proyecto y hacerlo mejor.
Desarrollado por Angelo Delicato @SecSI
RoboDroid se publica bajo la LICENCIA GPL-3.0
| id |
| True |
| El ID del flujo de trabajo |
| init | False | La sección de inicio, contiene las acciones de configuración iniciales |
| behaviors | True | La lista de comportamientos a ejecutar |
| Clave | Requerido | Descripción |
|---|
| id | True | ID del paso |
| name | True | El nombre del comportamiento (en la RoboDroid Library o en la lista de comandos) |
| type | True | El tipo de comportamiento ("frida-behavior", "adb") |
| inputs | False | La lista de entradas |