
Фреймворк на основе контейнеров для интеграции мобильных компонентов в платформы обучения безопасности
Dockerized Android — это контейнерная платформа, позволяющая запускать эмулятор Android внутри Docker и управлять им через браузер. Этот проект был разработан для того, чтобы стать отправной точкой для интеграции компонентов мобильной безопасности в Cyber Ranges, но он может использоваться для любых целей. В любом случае, для целей разработки и тестирования рекомендуется проект docker-android.
Как указано в кратком описании выше, этот проект был создан для того, чтобы стать отправной точкой для внедрения компонентов мобильной безопасности в Cyber Ranges. По этой причине уже реализованные функции и те, которые будут добавлены в будущем, помогут пользователю упростить настройку реалистичного моделирования (например, для обучения безопасности). Этот README довольно длинный, возможно, вы захотите сразу перейти к разделу «Как запустить».
В настоящее время доступны следующие функции:
| Начальная настройка | Настройка диспетчера экземпляров | Ручная настройка |
|---|---|---|
| initial-setup | instance-manager-setup | manual-setup |
| Функции панели инструментов | Переключение экземпляров |
|---|---|
| toolbox | instance-switch |
Проект состоит из трех основных частей:
На следующем рисунке представлен обзор фактической архитектуры двух обязательных компонентов:
Основной компонент — это тот, который выполняет все процессы, необходимые для запуска компонента Android (эмулированного или реального) внутри контейнера Docker, а также предоставляет некоторые функции внешним системам. Это, несомненно, самая сложная часть, поскольку она должна управлять различными процессами, чтобы обеспечить набор функций. На приведенном выше рисунке показано четкое различие между долгоживущими процессами, процессами запуска и служебными сценариями. Кроме того, на этом рисунке показано, что существует 6 долгоживущих процессов; это небольшая неточность, добавленная для общего обзора основного компонента. В реальности существуют две разные разновидности основного компонента:
Основное архитектурное различие касается долгоживущих процессов: ядро для эмулятора запускает долгоживущий процесс эмулятора, в то время как ядро для реального устройства запускает долгоживущий процесс scrcpy для отображения и управления физическим устройством. Остальные части довольно схожи, с небольшой разницей в логике для обеспечения различного поведения в зависимости от типа основного компонента.
Компонент пользовательского интерфейса предоставляет простой способ использования всех функций, предоставляемых серверной частью, а также добавляет возможность отображения и управления устройством. Пользователь должен вручную ввести адрес основного компонента и соответствующие порты (порт, предоставляемый серверной частью, и порт, предоставляемый websockify); с помощью этой ручной настройки можно изменить порты по умолчанию (которые равны 4242 для серверной части и 6080 для websockify).
Компонент диспетчера экземпляров отвечает за предоставление всей информации (т.е. адресов и портов) о работающих ядрах через единый REST API. Это достигается путем написания простого JSON-файла конфигурации, который содержит всю информацию о ядрах, присутствующих в docker-compose, чтобы избежать утомительной работы по ручному добавлению каждого по отдельности. Структура JSON-файла конфигурации следующая:
{
"instances": [
{
"name": [Generic string to identify the device],
"address": [Address of the component],
"core_port": [Port of the backend],
"vnc_port": [Port of VNC]
}
]
}
| Версия Android | API | Image |
|---|---|---|
| 5.0.1 | 21 | secsi/dockerized-android-core-emulator-5.0.1 |
| 5.1.1 | 22 | secsi/dockerized-android-core-emulator-5.1.1 |
| 6.0 | 23 | secsi/dockerized-android-core-emulator-6.0 |
| 7.0 | 24 | secsi/dockerized-android-core-emulator-7.0 |
| 7.1.1 | 25 | secsi/dockerized-android-core-emulator-7.1.1 |
| 8.0 | 26 | secsi/dockerized-android-core-emulator-8.0 |
| 8.1 | 27 | secsi/dockerized-android-core-emulator-8.1 |
| 9.0 | 28 | secsi/dockerized-android-core-emulator-9.0 |
| 10.0 | 29 | secsi/dockerized-android-core-emulator-10.0 |
| 11.0 | 30 | secsi/dockerized-android-core-emulator-11.0 |
| - | - | secsi/dockerized-android-core-bare |
| - | - | secsi/docker-android-core-real-device |