
Um framework baseado em contêineres para permitir a integração de componentes móveis em plataformas de treinamento de segurança.
Dockerized Android é um framework baseado em containers que permite executar um Android Emulator dentro do Docker e controlá-lo através de um navegador. Este projeto foi desenvolvido para fornecer um ponto de partida para integrar componentes de segurança móvel em Cyber Ranges, mas pode ser usado para qualquer finalidade. De qualquer forma, para fins de desenvolvimento e teste, o projeto sugerido é docker-android.
Conforme afirmado na breve descrição acima, este projeto foi criado para fornecer um ponto de partida para a introdução de componentes de segurança móvel em Cyber Ranges. Por esse motivo, os recursos já desenvolvidos e os que serão adicionados no futuro ajudarão o usuário a configurar mais facilmente uma simulação realista (por exemplo, para treinamento de segurança). Este README é bastante longo; talvez você queira pular direto para a parte "Como executar".
Os seguintes recursos estão atualmente disponíveis:
| Configuração inicial | Configuração do Gerenciador de Instâncias | Configuração manual |
|---|---|---|
| initial-setup | instance-manager-setup | manual-setup |
| Recursos da caixa de ferramentas | Troca de instância |
|---|---|
| toolbox | instance-switch |
O projeto é composto por três partes principais:
O componente Core é aquele que executa todos os processos necessários para executar um Android Component (Emulado ou Real) dentro de um container Docker, expondo também alguns recursos para o exterior. É sem dúvida a parte mais complexa, pois precisa gerenciar diferentes processos para fornecer um conjunto de recursos. A figura acima mostra uma distinção clara entre processos de longa duração, processos de inicialização e scripts de utilidade. Além disso, esta figura mostra que existem 6 processos de longa duração; isso é uma pequena imprecisão adicionada para fornecer uma visão geral do componente Core. Na realidade, existem duas variações diferentes do componente Core:
A principal diferença arquitetural está relacionada aos processos de longa duração: o Core para Emulador executa o processo de longa duração emulator, enquanto o Core para Dispositivo Real executa o processo de longa duração scrcpy para exibir e controlar o dispositivo físico. As outras partes são bastante semelhantes, com apenas alguma lógica para seguir um comportamento diferente com base no tipo do componente Core.
O componente UI fornece uma maneira simples de usar todos os recursos expostos pelo backend e também adiciona a capacidade de exibir e controlar o dispositivo. O usuário deve inserir manualmente o endereço do componente Core e as portas correspondentes (a porta exposta pelo backend e a porta exposta pelo websockify); através desta configuração manual é possível alterar as portas padrão (que são 4242 para o backend e 6080 para o websockify).
O componente Gerenciador de Instâncias tem a função de fornecer todas as informações (ou seja, endereços e portas) sobre os Cores em execução através de uma única API REST. Isso é feito escrevendo um arquivo de configuração JSON simples que contém todas as informações sobre os Cores presentes no docker-compose para evitar o trabalho tedioso de adicioná-los manualmente um por um. A estrutura do arquivo de configuração JSON é a seguinte:
{
"instances": [
{
"name": [Generic string to identify the device],
"address": [Address of the component],
"core_port": [Port of the backend],
"vnc_port": [Port of VNC]
}
]
}