
Cyber Range環境向けに事前定義された動作を持つAndroidマシンを管理します。
RoboDroid
RoboDroidは、サイバーレンジ環境でAndroidマシンを管理(そしてまもなくデプロイも)するプロセスを簡素化するために設計された最先端のソフトウェアツールです。RoboDroidを使用すると、ユーザーはAndroidマシンに事前定義された動作を簡単に設定およびカスタマイズでき、複雑なサイバー攻撃シナリオを作成し、幅広い脅威に対する防御をテストできます。
モバイルデバイスは今日の世界で遍在するようになりました。人々は銀行取引、買い物、コミュニケーションなど、生活のほぼすべての側面でスマートフォンを使用しています。その結果、モバイルデバイスは今やサイバー犯罪者の主要な標的となっています。
しかし、モバイルデバイスのセキュリティは、サイバーセキュリティのトレーニングやテスト環境でしばしば見過ごされています。これにより、組織はモバイルデバイスの弱点を悪用する攻撃に対して脆弱になる可能性があります。したがって、ますますスマートフォンに依存する現代の世界に適応するために、次世代のサイバーレンジにモバイルコンポーネントを導入することが重要です。
RoboDroidは、人間のようなスマートフォンの動作をシミュレートできるツールセットを提供することで、このギャップを埋めるために設計されています。事前定義された動作はFridaを使用して作成され、RoboDroid Libraryリポジトリで管理されています。
RoboDroidの目標は、サイバーレンジ環境にモバイルコンポーネントを導入する簡単な方法を提供することです。主な目的は、ユーザーがモバイルデバイス上で人間のような動作やアクションをシミュレートできる使いやすいプラットフォームを提供することです。
RoboDroidはFridaテクノロジーを活用してアプリケーション固有の動作を実行し、その他の操作にはADBを使用します。この強力な組み合わせにより、ユーザーはモバイルユーザーのアクションをシミュレートする事前設定された動作のワークフローを作成できます。
サイバーレンジ環境で使用できるワークフローの例として、モバイルユーザーがフィッシングメールを受信し、メールに含まれるリンクをクリックし、その後マルウェアをダウンロードするシナリオのシミュレーションがあります。
次の図はそれをまとめたものです:

ワークフローは以下のステップに分解できます:
このようなワークフローを作成して実行することで、ユーザーは現実的なサイバー攻撃シナリオをシミュレートし、幅広い脅威に対する防御をテストできます。これにより、システムとネットワークが潜在的な脆弱性から十分に保護され、攻撃発生時にユーザーが効果的に対応できるようになります。

RoboDroidは、RoboDroid Libraryが提供するFrida Agentとメッセージを介して通信し、効率的な相互作用を実現します。RoboDroidが特定の動作を開始すると、Frida Agentからのメッセージを待ちます。メッセージはFAILUREまたはCOMPLETEDのいずれかのタイプになります。
メッセージタイプがFAILUREの場合、RoboDroidは現在の動作を再起動して正常な完了を保証します。メッセージタイプがCOMPLETEDの場合、現在のステップは完了としてマークされ、RoboDroidは次のステップに進みます。
さらに、COMPLETEDタイプのメッセージには、後続のステップで使用できる出力が含まれる場合もあります。これにより、ツールは動作を最適化し、モバイルデバイス上での人間のようなアクションを正確にシミュレートできます。
この堅牢な通信プロセスにより、RoboDroidはFrida Agentをツールセットにシームレスに統合し、サイバーレンジ環境でのモバイルデバイスシミュレーションのための複雑なワークフロー作成を容易にします。
次のコマンドで簡単にインストールできます:
pipx install robodroid
pipではなくpipxを使用することをお勧めします。将来のPythonバージョンでは、仮想環境外でのpipによるパッケージインストールが削除されるためです。
RoboDroidは、RoboDroid Libraryリポジトリからの自動動作ダウンロード(そしてまもなく自動更新)を標準でサポートしています。新しいFrida動作を追加したい場合は、特定のリポジトリにアクセスしてプルリクエストを作成することをお勧めします。
robodroid --help
これにより、ツールのヘルプが表示されます:
&&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
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. │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
run commandrobodroidは2つのモードで実行できます:
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. │
╰─────────────────────────────────────────────────────────────────────────────────────╯
インタラクティブモードでは、ユーザーがADBホスト、ポート、使用するデバイスを選択できるプロンプトが表示されます。一方、マネージドモードは、$HOME/.RoboDroid/configの下に配置する必要がある yaml形式の設定ファイルを使用します。マネージドモードは、ユーザーの入力や設定を必要とせずにラボ/環境をセットアップするのに最適なモードです。
次の表は、configファイルで使用されるフィールドの説明です:
| Key | Required | Description |
|---|---|---|
| device | はい | 使用するデバイスに関する情報 |
| workflow | はい | 使用するワークフロー(ファイル名) |
実際に実行する前に、少なくとも1つの有効なワークフローファイルを用意する必要があります。このファイルは$HOME/.RoboDroid/workflowsの下にyaml形式で配置する必要があります。この設定ファイルは、実行されるワークフローのすべてのステップを定義します。有効な設定の例については、examplesフォルダを参照してください。次の表は、workflowファイルで使用されるフィールドの説明です:
| Key | Required | Description |
|---|---|---|
| id | はい | ワークフローのID |
| init |
initセクションでは、実際のワークフローを実行する前にインストールするAPKとクリーンアップ(ストレージとキャッシュ)するパッケージを設定できます。このセクションの構造は次のとおりです:
| Key | Required | Description |
|---|---|---|
| install | はい | インストールするAPKのパスのリスト |
| clear | いいえ | クリーンアップするパッケージのリスト(ストレージとキャッシュ) |
behaviorsセクションには実際のワークフローが含まれます。これはステップと呼ばれる要素のリストであり、順次実行されることを意図しています。各ステップの構造は次のとおりです:
最後に、各入力の構造は次のとおりです:
| Key | Required | Description |
|---|---|---|
| id | はい | 入力のID |
| value | はい | この入力に割り当てる値 |
最後に、前のステップからの出力を次のステップへの入力として使用することもできます。これを行うには、予約済みのプレフィックスrobodroid.outputsの後にステップのIDと出力のIDを続けて値を設定します。例:
...
- 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
...
CLIオプションは環境変数でも設定できます(Docker内で実行する場合に特に便利です)。次の表は、現在利用可能な環境変数の一覧です:
| Key | Description |
|---|---|
| ROBODROID_LOG_MODE | RoboDroidのログレベル [silent |
| ROBODROID_RUN_MODE | 実行モード [interactive |
| ROBODROID_MANAGED_CONFIG_NAME | 使用するマネージド設定の名前(managedモードで実行中) |
TODO
RoboDroidの動作を示す短いデモビデオを作成しました。このテンプレートは次のことを行います:
このワークフローは、Androidモバイルデバイスを含む次世代サイバーレンジで使用できる一般的なフィッシング攻撃(簡略化されていますが)をシミュレートします。
RoboDroidは生まれたばかりのツールであり、まだ成長する必要があります!現在、近々追加を計画している機能は次のとおりです:
もちろん、RoboDroid Libraryにさらに多くの動作を追加し、このリポジトリにさらに多くのadbコマンドを追加する予定です。また、すべてのユーザーがこのプロジェクトに貢献し、より良いものにすることを奨励します!
Developed by Angelo Delicato @SecSI
RoboDroid is released under the GPL-3.0 LICENSE
| いいえ |
| 初期設定アクションを含むinitセクション |
| behaviors | はい | 実行する動作のリスト |
| Key | Required | Description |
|---|
| id | はい | ステップのID |
| name | はい | 動作の名前(RoboDroidライブラリまたはコマンドリスト内) |
| type | はい | 動作のタイプ("frida-behavior", "adb") |
| inputs | いいえ | 入力のリスト |