
Gérer des machines Android avec des comportements prédéfinis pour des environnements de Cyber Range.
RoboDroid
RoboDroid est un outil logiciel de pointe conçu pour simplifier le processus de gestion (et très bientôt également de déploiement) de machines Android destinées à être utilisées dans des environnements de Cyber Range. Avec RoboDroid, les utilisateurs peuvent facilement configurer et personnaliser des comportements prédéfinis pour leurs machines Android, leur permettant de créer des scénarios d'attaque informatique complexes et de tester leurs défenses contre un large éventail de menaces.
Les appareils mobiles sont devenus omniprésents dans le monde d'aujourd'hui. Les gens utilisent les smartphones pour presque tous les aspects de leur vie, y compris les opérations bancaires, les achats et la communication. En conséquence, les appareils mobiles sont désormais une cible privilégiée pour les cybercriminels.
Cependant, la sécurité des appareils mobiles est souvent négligée dans les environnements de formation et de test en cybersécurité. Cela peut exposer les organisations à des attaques exploitant les faiblesses des appareils mobiles. Il est donc important d'introduire des composants mobiles dans les cyber ranges de nouvelle génération pour s'adapter au monde actuel de plus en plus dépendant des smartphones.
RoboDroid est conçu pour combler cette lacune en fournissant un ensemble d'outils capables de simuler un comportement humain sur smartphone. Les comportements prédéfinis sont créés à l'aide de Frida et sont gérés dans le dépôt RoboDroid Library.
L'objectif de RoboDroid est de fournir un moyen simple d'introduire des composants mobiles dans les environnements de Cyber Range. Son objectif principal est de fournir aux utilisateurs une plateforme facile à utiliser qui leur permet de simuler des comportements et des actions humaines sur des appareils mobiles.
RoboDroid exploite la technologie Frida pour exécuter des comportements spécifiques aux applications, tout en utilisant ADB pour toutes les autres opérations. Cette combinaison puissante permet aux utilisateurs de créer des workflows de comportements prédéfinis qui peuvent simuler les actions d'un utilisateur mobile.
Un exemple de workflow pouvant être utilisé dans un environnement de cyber range consiste à simuler un utilisateur mobile recevant un e-mail de phishing, cliquant sur le lien contenu dans l'e-mail, puis téléchargeant un malware.
L'image suivante le résume :

Le workflow peut être décomposé en les étapes suivantes :
En créant et en exécutant des workflows comme celui-ci, les utilisateurs peuvent simuler des scénarios d'attaque cyber réalistes et tester leurs défenses contre un large éventail de menaces. Cela permet de s'assurer que les systèmes et les réseaux sont bien protégés contre les vulnérabilités potentielles et que les utilisateurs sont préparés à réagir efficacement en cas d'attaque.

RoboDroid communique avec l'Agent Frida fourni par la RoboDroid Library via des messages, offrant une interaction efficace.
Lorsque RoboDroid commence un comportement spécifique, il attend un message de l'Agent Frida. Le message peut être de type FAILURE ou COMPLETED.
Si le type de message est FAILURE, RoboDroid redémarre le comportement actuel pour garantir une exécution réussie. Si le type de message est COMPLETED, l'étape en cours est marquée comme terminée et RoboDroid passe à l'étape suivante.
De plus, un message de type COMPLETED peut également contenir des sorties qui peuvent être utilisées dans les étapes suivantes. Cela garantit que l'outil peut optimiser son comportement pour réaliser une simulation précise des actions humaines sur les appareils mobiles.
En fournissant ce processus de communication robuste, RoboDroid assure une intégration transparente de l'Agent Frida dans sa boîte à outils et facilite la création de workflows complexes pour la simulation d'appareils mobiles dans un environnement de Cyber Range.
Vous pouvez facilement l'installer en exécutant :
pipx install robodroid
Nous vous suggérons d'utiliser pipx plutôt que pip car dans les futures versions de Python, l'installation de paquets avec pip sera supprimée en dehors des environnements virtuels.
RoboDroid prend en charge nativement le téléchargement automatique des comportements (et bientôt la mise à jour automatique) à partir du dépôt RoboDroid Library. Si vous souhaitez ajouter un nouveau comportement Frida, nous vous suggérons de vous rendre sur le dépôt spécifique et de faire une Pull Request.
robodroid --help
Ceci affichera l'aide de l'outil :
&&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
RoboDroid v0.0.3
Usage: robodroid [OPTIONS] COMMAND [ARGS]...
Gérer et déployer des machines Android avec des comportements prédéfinis pour les environnements Cyber Range
╭─ Options ──────────────────────────────────────────────────────────────────────────────────╮
│ --help -h Afficher ce message et quitter. │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commandes ────────────────────────────────────────────────────────────────────────────────╮
│ run Exécuter RoboDroid. │
| update-library Mettre à jour la RoboDroid Library vers la dernière version |
│ version Afficher la version actuelle et quitter. │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
runVous pouvez exécuter robodroid de deux manières différentes :
par défaut) &&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
RoboDroid v0.0.3
Usage: robodroid run [OPTIONS]
Exécuter RoboDroid.
╭─ Options ───────────────────────────────────────────────────────────────────────────╮
│ --log-mode [silent|normal|debug] Définir le mode de journalisation [défaut : normal] │
│ --mode -m [interactive|managed] Définir le mode d'exécution [défaut : interactive] │
│ --config -c TEXT Nom du fichier de configuration gérée à charger │
│ --help -h Afficher ce message et quitter. │
╰─────────────────────────────────────────────────────────────────────────────────────╯
En mode interactif, une invite permet à l'utilisateur de sélectionner l'hôte ADB, le port et l'appareil à utiliser, tandis que le mode géré utilise un fichier de configuration qui DOIT ÊTRE PLACÉ sous $HOME/.RoboDroid/config au format yaml. Le mode géré est le mode idéal à utiliser lors de la mise en place d'un laboratoire/environnement sans nécessiter de saisie/configuration de la part de l'utilisateur.
Le tableau suivant fournit une description des champs utilisés dans le fichier de configuration :
| Clé | Requis | Description |
|---|---|---|
| device | True | Informations sur l'appareil à utiliser |
| workflow | True | Le workflow à utiliser (nom du fichier) |
Avant de l'exécuter réellement, vous devez fournir au moins un fichier de workflow valide qui doit être placé sous $HOME/.RoboDroid/workflows au format yaml.
Ce fichier de configuration définit toutes les étapes du workflow qui seront exécutées. Vous pouvez consulter le dossier examples pour des configurations valides. Le tableau suivant fournit une description des champs utilisés dans le fichier de workflow :
| Clé | Requis | Description |
|---|---|---|
| id | True |
Dans la section init, vous pouvez définir les APK à installer et les paquets à nettoyer (stockage et cache) avant d'exécuter le workflow réel. La structure de cette section est la suivante :
| Clé | Requis | Description |
|---|---|---|
| install | True | Liste des chemins des APK à installer |
| clear | False | Liste des paquets à nettoyer (stockage et cache) |
Dans la section behaviors se trouve le workflow proprement dit. Il s'agit d'une liste d'éléments appelés étapes, destinés à être exécutés séquentiellement. Chaque étape a la structure suivante :
Enfin, chaque entrée a la structure suivante :
| Clé | Requis | Description |
|---|---|---|
| id | True | ID de l'entrée |
| value | True | La valeur à attribuer à cette entrée |
La dernière chose à mentionner est que vous pouvez également utiliser les sorties des étapes précédentes comme entrée pour les suivantes. Pour ce faire, vous pouvez définir la valeur d'une entrée en utilisant le préfixe réservé robodroid.outputs suivi de l'ID de l'étape et de l'ID de la sortie, par exemple :
...
- 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
...
Les options de la CLI peuvent également être définies via des variables d'environnement (particulièrement utile lors de l'exécution dans Docker). Le tableau suivant fournit une liste des variables d'environnement actuellement disponibles :
| Clé | Description |
|---|---|
| ROBODROID_LOG_MODE | Niveau de journalisation de RoboDroid [silent |
| ROBODROID_RUN_MODE | Mode d'exécution [interactive |
| ROBODROID_MANAGED_CONFIG_NAME | Le nom de la configuration gérée à utiliser (en mode managed) |
TODO
Nous avons réalisé une courte vidéo de démonstration montrant RoboDroid en action avec un modèle qui fait ce qui suit :
Ce workflow simule une attaque de phishing courante (bien que simplifiée) qui peut être utilisée dans un Cyber Range de nouvelle génération impliquant des appareils mobiles Android.
RoboDroid est un outil nouveau et a encore besoin de grandir ! Actuellement, voici les fonctionnalités que nous prévoyons d'ajouter très prochainement :
Bien sûr, nous prévoyons d'ajouter de plus en plus de comportements dans la RoboDroid Library et de plus en plus de commandes adb dans ce dépôt. Nous encourageons également chaque utilisateur à contribuer à ce projet et à l'améliorer !
Développé par Angelo Delicato @SecSI
RoboDroid est publié sous la LICENCE GPL-3.0
| L'ID du workflow |
| init | False | La section init, contient les actions de configuration initiale |
| behaviors | True | La liste des comportements à exécuter |
| Clé | Requis | Description |
|---|
| id | True | ID de l'étape |
| name | True | Le nom du comportement (dans la RoboDroid Library ou dans la liste des commandes) |
| type | True | Le type du comportement ("frida-behavior", "adb") |
| inputs | False | La liste des entrées |