
Gestire macchine Android con comportamenti predefiniti per ambienti Cyber Range.
RoboDroid
RoboDroid è uno strumento software all'avanguardia progettato per semplificare la gestione (e molto presto anche il deployment) di macchine Android per l'utilizzo in ambienti Cyber Range. Con RoboDroid, gli utenti possono facilmente configurare e personalizzare comportamenti predefiniti per le loro macchine Android, consentendo loro di creare scenari complessi di attacchi informatici e testare le proprie difese contro un'ampia gamma di minacce.
I dispositivi mobili sono diventati onnipresenti nel mondo di oggi. Le persone usano gli smartphone per quasi ogni aspetto della loro vita, inclusi banking, shopping e comunicazione. Di conseguenza, i dispositivi mobili sono ora un bersaglio primario per i criminali informatici.
Tuttavia, la sicurezza dei dispositivi mobili viene spesso trascurata nei corsi di formazione e negli ambienti di test di cybersecurity. Questo può lasciare le organizzazioni vulnerabili ad attacchi che sfruttano le debolezze dei dispositivi mobili. Pertanto, è importante introdurre componenti mobili nei cyber-range di prossima generazione per adattarsi al mondo attuale, sempre più dipendente dagli smartphone.
RoboDroid è progettato per aiutare a colmare questa lacuna fornendo un insieme di strumenti in grado di simulare comportamenti umani su smartphone. I comportamenti predefiniti sono creati utilizzando Frida e sono gestiti nel repository RoboDroid Library.
L'obiettivo di RoboDroid è fornire un modo semplice per introdurre componenti mobili in ambienti Cyber Range. Il suo scopo principale è offrire agli utenti una piattaforma facile da usare che permetta di simulare comportamenti e azioni umane sui dispositivi mobili.
RoboDroid sfrutta la tecnologia Frida per eseguire comportamenti specifici delle applicazioni, mentre utilizza ADB per tutte le altre operazioni. Questa potente combinazione consente agli utenti di creare flussi di lavoro di comportamenti preimpostati che possono simulare le azioni di un utente mobile.
Un esempio di flusso di lavoro che può essere utilizzato in un ambiente cyber range prevede la simulazione di un utente mobile che riceve un'email di phishing, fa clic sul collegamento contenuto nell'email e successivamente scarica un malware.
L'immagine seguente lo riassume:

Il flusso di lavoro può essere suddiviso nei seguenti passaggi:
Creando ed eseguendo flussi di lavoro come questo, gli utenti possono simulare scenari realistici di attacchi informatici e testare le proprie difese contro un'ampia gamma di minacce. Ciò aiuta a garantire che i sistemi e le reti siano ben protetti contro potenziali vulnerabilità e che gli utenti siano preparati a rispondere efficacemente in caso di attacco.

RoboDroid comunica con l'Agente Frida fornito dalla RoboDroid Library tramite messaggi, garantendo un'interazione efficiente.
Quando RoboDroid avvia un comportamento specifico, attende un messaggio dall'Agente Frida. Il messaggio può essere di tipo FAILURE o COMPLETED.
Se il tipo di messaggio è FAILURE, RoboDroid riavvia il comportamento corrente per garantirne il completamento con successo. Se il tipo di messaggio è COMPLETED, il passo corrente viene contrassegnato come completato e RoboDroid passa al passo successivo.
Inoltre, un messaggio di tipo COMPLETED può contenere anche output che possono essere utilizzati nei passaggi successivi. Ciò garantisce che lo strumento possa ottimizzare il proprio comportamento per ottenere una simulazione accurata delle azioni umane sui dispositivi mobili.
Fornendo questo robusto processo di comunicazione, RoboDroid garantisce l'integrazione senza soluzione di continuità dell'Agente Frida nel suo set di strumenti e facilita la creazione di flussi di lavoro complessi per la simulazione di dispositivi mobili in un ambiente Cyber Range.
Puoi installarlo facilmente eseguendo:
pipx install robodroid
Ti suggeriamo di usare pipx invece di pip perché nelle future versioni di Python l'installazione dei pacchetti con pip sarà rimossa al di fuori degli ambienti virtuali.
RoboDroid ha il supporto integrato per il download automatico dei comportamenti (e presto anche l'auto-aggiornamento) dal repository RoboDroid Library. Se desideri aggiungere un nuovo comportamento Frida, ti suggeriamo di recarti nel repository specifico e fare una Pull Request.
robodroid --help
Questo mostrerà l'aiuto per lo strumento:
&&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
RoboDroid v0.0.3
Usage: robodroid [OPTIONS] COMMAND [ARGS]...
Gestisci e distribuisci macchine Android con comportamenti predefiniti per ambienti Cyber Range
╭─ Opzioni ────────────────────────────────────────────────────────────────────────────────╮
│ --help -h Mostra questo messaggio ed esce. │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Comandi ─────────────────────────────────────────────────────────────────────────────────╮
│ run Esegue RoboDroid. │
| update-library Aggiorna la RoboDroid Library all'ultima versione │
│ version Stampa la versione corrente ed esce. │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
runPuoi eseguire robodroid in due modalità diverse:
default) &&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
RoboDroid v0.0.3
Usage: robodroid run [OPTIONS]
Esegue RoboDroid.
╭─ Opzioni ─────────────────────────────────────────────────────────────────────────╮
│ --log-mode [silent|normal|debug] Imposta la modalità di log [default: │
│ normal] │
│ --mode -m [interactive|managed] Imposta la modalità di esecuzione │
│ [default: interactive] │
│ --config -c TEXT Nome del file di configurazione │
│ gestita da caricare │
│ --help -h Mostra questo messaggio ed esce. │
╰───────────────────────────────────────────────────────────────────────────────────╯
Nella modalità interattiva c'è un prompt che permette all'utente di selezionare l'host ADB, la porta e il dispositivo da utilizzare, mentre la modalità gestita utilizza un file di configurazione che DEVE ESSERE POSIZIONATO in $HOME/.RoboDroid/config in formato yaml. La modalità gestita è la modalità ideale da utilizzare quando si configura un laboratorio/ambiente senza bisogno di input/configurazione da parte dell'utente.
La tabella seguente fornisce una descrizione dei campi utilizzati nel file di configurazione:
| Chiave | Obbligatoria | Descrizione |
|---|---|---|
| device | True | Informazioni sul dispositivo da utilizzare |
| workflow | True | Il flusso di lavoro da utilizzare (nome del file) |
Prima di eseguirlo effettivamente, è necessario fornire almeno un file di flusso di lavoro valido che deve essere posizionato in $HOME/.RoboDroid/workflows in formato yaml.
Questo file di configurazione definisce tutti i passaggi del flusso di lavoro che verranno eseguiti; puoi dare un'occhiata alla cartella examples per alcune configurazioni valide. La tabella seguente fornisce una descrizione dei campi utilizzati nel file di flusso di lavoro:
| Chiave | Obbligatoria | Descrizione |
|---|---|---|
Nella sezione init puoi impostare gli APK che devono essere installati e i pacchetti che devono essere puliti (archiviazione e cache) prima di eseguire il flusso di lavoro effettivo. La struttura di questa sezione è la seguente:
| Chiave | Obbligatoria | Descrizione |
|---|---|---|
| install | True | Elenco dei percorsi degli APK da installare |
| clear | False | Elenco dei pacchetti da pulire (archiviazione e cache) |
Nella sezione behaviors c'è il flusso di lavoro effettivo. È una lista di elementi chiamati passaggi che devono essere eseguiti in sequenza. Ogni passaggio ha la seguente struttura:
Infine, ogni input ha la seguente struttura:
| Chiave | Obbligatoria | Descrizione |
|---|---|---|
| id | True | ID dell'input |
| value | True | Il valore da assegnare a questo input |
L'ultima cosa da dire è che puoi anche utilizzare gli output dei passaggi precedenti come input per quelli successivi. Per farlo, puoi impostare il valore di un input utilizzando il prefisso riservato robodroid.outputs seguito dall'ID del passaggio e dall'ID dell'output, per esempio:
...
- 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
...
Le opzioni da riga di comando possono anche essere impostate tramite variabili d'ambiente (particolarmente utile quando si esegue in Docker); la tabella seguente fornisce un elenco delle variabili d'ambiente attualmente disponibili:
| Chiave | Descrizione |
|---|---|
| ROBODROID_LOG_MODE | Livello di log di RoboDroid [silent |
| ROBODROID_RUN_MODE | Modalità di esecuzione [interactive |
| ROBODROID_MANAGED_CONFIG_NAME | Il nome della configurazione gestita da utilizzare (in esecuzione in modalità managed) |
TODO
Abbiamo realizzato un breve video dimostrativo che mostra RoboDroid in azione con un template che fa quanto segue:
Questo flusso di lavoro simula un comune attacco di phishing (sebbene semplificato) che può essere utilizzato in un Cyber Range di prossima generazione che coinvolga dispositivi mobili Android.
RoboDroid è uno strumento neonato e ha ancora bisogno di crescere! Attualmente queste sono le funzionalità che prevediamo di aggiungere molto presto:
Naturalmente prevediamo di aggiungere sempre più comportamenti nella RoboDroid Library e sempre più comandi adb in questo repository. Invitiamo inoltre ogni utente a contribuire a questo progetto e a migliorarlo!
Sviluppato da Angelo Delicato @SecSI
RoboDroid è rilasciato sotto GPL-3.0 LICENSE
| id |
| True |
| L'ID del flusso di lavoro |
| init | False | La sezione init, contiene le azioni di configurazione iniziale |
| behaviors | True | L'elenco dei comportamenti da eseguire |
| Chiave | Obbligatoria | Descrizione |
|---|
| id | True | ID del passaggio |
| name | True | Il nome del comportamento (nella RoboDroid Library o nell'elenco dei comandi) |
| type | True | Il tipo di comportamento ("frida-behavior", "adb") |
| inputs | False | L'elenco degli input |