
Управляйте Android-машинами с предопределенным поведением для сред Cyber Range.
RoboDroid
RoboDroid — это современный программный инструмент, предназначенный для упрощения управления (а очень скоро и развёртывания) Android-устройств в средах киберполигонов. С помощью RoboDroid пользователи могут легко настраивать и кастомизировать предопределённые сценарии поведения для своих Android-устройств, что позволяет создавать сложные сценарии кибератак и тестировать защиту от широкого спектра угроз.
Мобильные устройства стали неотъемлемой частью современного мира. Люди используют смартфоны практически для всех аспектов своей жизни, включая банкинг, покупки и общение. В результате мобильные устройства стали основной целью киберпреступников.
Однако безопасность мобильных устройств часто упускается из виду в учебных и тестовых средах по кибербезопасности. Это может сделать организации уязвимыми для атак, эксплуатирующих слабые места мобильных устройств. Поэтому важно внедрять мобильные компоненты в киберполигоны нового поколения, чтобы адаптироваться к современному миру, всё более зависимому от смартфонов.
RoboDroid создан для заполнения этого пробела, предоставляя набор инструментов, способных имитировать человеческое поведение на смартфонах. Предопределённые сценарии поведения создаются с помощью Frida и управляются в репозитории RoboDroid Library.
Цель RoboDroid — предоставить простой способ внедрения мобильных компонентов в среды киберполигонов. Его основная задача — предоставить пользователям простую в использовании платформу, позволяющую имитировать человеческое поведение и действия на мобильных устройствах.
RoboDroid использует технологию Frida для выполнения сценариев, специфичных для приложений, а для всех остальных операций — ADB. Такое мощное сочетание позволяет пользователям создавать рабочие процессы из предустановленных сценариев, имитирующих действия мобильного пользователя.
Один из примеров рабочего процесса, который можно использовать в среде киберполигона, включает имитацию получения пользователем фишингового письма, перехода по ссылке в письме и последующей загрузки вредоносного ПО.
Следующее изображение иллюстрирует это:

Процесс можно разбить на следующие шаги:
Создавая и запуская такие рабочие процессы, пользователи могут моделировать реалистичные сценарии кибератак и тестировать свою защиту от широкого спектра угроз. Это помогает обеспечить надёжную защиту систем и сетей от потенциальных уязвимостей, а также подготовить пользователей к эффективному реагированию в случае атаки.

RoboDroid общается с агентом Frida, предоставляемым библиотекой RoboDroid, с помощью сообщений, обеспечивая эффективное взаимодействие.
Когда RoboDroid запускает определённый сценарий поведения, он ожидает сообщения от агента Frida. Сообщение может быть типа FAILURE (сбой) или COMPLETED (выполнено).
Если тип сообщения FAILURE, RoboDroid перезапускает текущий сценарий, чтобы гарантировать успешное завершение. Если тип сообщения COMPLETED, текущий шаг считается завершённым, и RoboDroid переходит к следующему шагу.
Кроме того, сообщение типа COMPLETED может содержать выходные данные, которые можно использовать в последующих шагах. Это гарантирует, что инструмент может оптимизировать своё поведение для точной имитации человеческих действий на мобильных устройствах.
Благодаря этому надёжному процессу обмена сообщениями RoboDroid обеспечивает бесшовную интеграцию агента Frida в свой инструментарий и облегчает создание сложных рабочих процессов для имитации мобильных устройств в среде киберполигона.
Вы можете легко установить его, выполнив:
pipx install robodroid
Мы рекомендуем использовать pipx вместо pip, потому что в будущих версиях Python установка пакетов с помощью pip будет удалена за пределами виртуальных окружений.
RoboDroid имеет встроенную поддержку автоматической загрузки (и скоро автообновления) сценариев поведения из репозитория RoboDroid Library. Если вы хотите добавить новый сценарий для Frida, мы рекомендуем перейти в соответствующий репозиторий и сделать Pull Request.
robodroid --help
Эта команда отобразит справку по инструменту:
&&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
RoboDroid v0.0.3
Использование: robodroid [OPTIONS] COMMAND [ARGS]...
Управление и развёртывание Android-устройств с предопределёнными сценариями поведения для сред киберполигонов
╭─ Опции ──────────────────────────────────────────────────────────────────────────────────╮
│ --help -h Показать это сообщение и выйти. │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Команды ─────────────────────────────────────────────────────────────────────────────────╮
│ run Запустить RoboDroid. │
| update-library Обновить библиотеку RoboDroid до последней версии |
│ version Показать текущую версию и выйти. │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
runВы можете запустить robodroid двумя способами:
по умолчанию) &&&&&&&&&&&
&&&& &&&&
&&& &&&
(&&&& &&&& &&&& &&&)&
&(&&&& &&&&)&
&&&& &&&&
&&&&&&&&&&&&&
&&& &&&&&&&&&&&&&&& &&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&& &&&&&&&&&&&&&&& &&&&
&&&&&&&&&&&
&&&& &&&&
&&&& &&&&
RoboDroid v0.0.3
Использование: robodroid run [OPTIONS]
Запустить RoboDroid.
╭─ Опции ───────────────────────────────────────────────────────────────────────────╮
│ --log-mode [silent|normal|debug] Режим логирования [по умолчанию: normal]│
│ --mode -m [interactive|managed] Режим запуска [по умолчанию: interactive]│
│ --config -c TEXT Имя управляющего конфигурационного файла │
│ --help -h Показать это сообщение и выйти. │
╰─────────────────────────────────────────────────────────────────────────────────────╯
В интерактивном режиме отображается приглашение, позволяющее пользователю выбрать хост ADB, порт и устройство, в то время как автоматизированный режим использует конфигурационный файл, который ДОЛЖЕН НАХОДИТЬСЯ в $HOME/.RoboDroid/config в формате yaml. Автоматизированный режим идеально подходит для настройки лаборатории/среды без необходимости ручного ввода/конфигурации.
В следующей таблице приведено описание полей, используемых в конфигурационном файле:
| Ключ | Обязательный | Описание |
|---|---|---|
| device | Да | Информация об используемом устройстве |
| workflow | Да | Используемый рабочий процесс (имя файла) |
Перед фактическим запуском необходимо предоставить хотя бы один корректный файл рабочего процесса, который должен находиться в $HOME/.RoboDroid/workflows в формате yaml.
Этот конфигурационный файл определяет все шаги выполняемого рабочего процесса. Примеры корректных конфигураций можно найти в папке examples. В следующей таблице приведено описание полей, используемых в файле рабочего процесса:
| Ключ | Обязательный | Описание |
|---|---|---|
| id |
В разделе init можно указать APK-файлы для установки и пакеты для очистки (хранилище и кэш) перед запуском рабочего процесса. Структура этого раздела следующая:
| Ключ | Обязательный | Описание |
|---|---|---|
| install | Да | Список путей к APK-файлам для установки |
| clear | Нет | Список пакетов для очистки (хранилище и кэш) |
В разделе behaviors находится собственно рабочий процесс. Это список элементов, называемых шагами, которые выполняются последовательно. Каждый шаг имеет следующую структуру:
Наконец, каждый входной параметр имеет следующую структуру:
| Ключ | Обязательный | Описание |
|---|---|---|
| id | Да | Идентификатор входного параметра |
| value | Да | Значение, присваиваемое этому входному параметру |
Последнее, что нужно сказать: вы также можете использовать выходные данные предыдущих шагов в качестве входных данных для следующих. Для этого можно задать значение входного параметра, используя зарезервированный префикс robodroid.outputs, за которым следует идентификатор шага и идентификатор выходного параметра, например:
...
- 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); в следующей таблице приведён список доступных на данный момент переменных окружения:
| Ключ | Описание |
|---|---|
| ROBODROID_LOG_MODE | Уровень логирования RoboDroid [silent |
| ROBODROID_RUN_MODE | Режим запуска [interactive |
| ROBODROID_MANAGED_CONFIG_NAME | Имя управляющей конфигурации для использования (при работе в режиме managed) |
TODO
Мы подготовили короткое демонстрационное видео, показывающее RoboDroid в действии с шаблоном, который делает следующее:
Этот рабочий процесс имитирует обычную фишинговую атаку (хотя и упрощённую), которая может быть использована в киберполигоне нового поколения с участием мобильных устройств Android.
RoboDroid — это новый инструмент, которому ещё предстоит развиваться! В настоящее время мы планируем добавить следующие функции в ближайшее время:
Разумеется, мы планируем добавлять всё больше сценариев поведения в RoboDroid Library и больше команд adb в этот репозиторий. Мы также призываем всех пользователей внести свой вклад в этот проект и сделать его лучше!
Разработано Angelo Delicato @SecSI
RoboDroid распространяется под лицензией GPL-3.0
| Да |
| Идентификатор рабочего процесса |
| init | Нет | Раздел инициализации, содержит начальные действия по настройке |
| behaviors | Да | Список сценариев поведения для выполнения |
| Ключ | Обязательный | Описание |
|---|
| id | Да | Идентификатор шага |
| name | Да | Название сценария поведения (из библиотеки RoboDroid или списка команд) |
| type | Да | Тип сценария поведения ("frida-behavior", "adb") |
| inputs | Нет | Список входных данных |