Docker é uma plataforma de tecnologia open source escrita na linguagem Go, que está em alta desde 2014. Antes de abordarmos a tecnologia e sua ligação com o mundo de cibersegurança, é ideal entendermos melhor o que ela faz.
Inicialmente, Docker não é um sistema de virtualização tradicional, onde existe um ou mais S.O.’s isolados entre si rodando em um servidor físico. Docker utiliza um conceito chamado containers, que são uma forma de acesso limitado ao hardware, permitindo executar várias instâncias de software separadas entre si. Os containers são isolados, tendo sua própria porção de disco, memória RAM e CPU. Portanto, enquanto um sistema virtualizado utiliza uma virtualização a baixo nível, onde as chamadas do S.O. ao processador precisam ser processadas pelo hypervisor, o Docker faz as chamadas via API do Kernel do S.O.
Diferenças estruturais entre sistemas virtualizados e Docker
Voltando aos containers. Eles são imagens de software que incluem todas as dependências necessárias para rodarem, como bibliotecas, configurações específicas, ferramentas de sistema, etc. A grande vantagem é que um software poderá rodar em qualquer plataforma, independente do ambiente. Sabe aquele problema de sempre ter que fazer o setup de uma máquina virtual, instalar dependências e patches e mesmo assim ter o risco do software não funcionar? O Docker é a uma boa solução para isso.
Enquanto o uso do Docker é uma vantagem evidente para os times de desenvolvimento, ele pode ser obviamente aproveitado por outras comunidades e serviços. Containers podem ser compartilhados, ativados e desativados quando necessário, o que é uma grande vantagem os que utilizam vários softwares diferentes no o dia a dia.
Quem nunca se deparou com um dos seguintes problemas?
Um bom exemplo de uso são algumas imagens Docker da distribuição REMnux, que oferece ferramentas para análise de malware com a vantagem de não ter que instalar o S.O. ou cada software individualmente com suas dependências.
Caso de uso bem prático e que mostra bem as vantagens de uso do Docker, utilizando as ferramentas PEScanner e Maltrieve: PEScanner é uma ferramenta que faz análise estática de arquivos suspeitos do tipo PE, que é o formato padrão para aplicações que rodam em plataforma Windows. Já o Maltrieve é uma ferramenta que possibilita coletar algumas amostras de malware.
Antes de prosseguirmos com o uso deles, precisamos instalar o Docker em nosso S.O. Neste caso será utilizada a distro Kali Linux. Para fazer a instalação do Docker em seu S.O. de preferência, siga estes passos ou estes para uso no Kali Linux.
Após seguir todos os passos, inicialize o serviço do Docker e verifique o status da instalação:
Agora serão feitos download das imagens do PEScanner e Maltrieve neste repositório. Todas as referências de uso das ferramentas também estão comentadas no mesmo local.
Crie uma pasta para onde serão direcionados os samples do Maltrieve e adicione permissões na pasta para que ela possa interagir com as imagens Docker. Aqui, a pasta criada tem o seguinte path: /home/maltrieve e foram atribuídas permissões de acesso globais com o comando “chmod 777 maltrieve”.
Após, define-se o comando abaixo para que a imagem seja executada e o Maltrieve funcione em sua forma com sua configuração padrão, enviando os samples coletados para a pasta /home/Maltrieve: Docker run –rm -it -v /home/maltrieve:/archive remnux/maltrieve
Depois, o processo pode ser interrompido com CTRL+C para que sejam verificados os samples coletados.
Agora executa-se a imagem do PEScanner, chamando um bash deste container e manipulando os arquivos em nosso diretório Maltrieve, que serão mapeados para a pasta /home/nonroot/workdir da imagem.
docker run –rm -it -v /home/maltrieve:/home/nonroot/workdir remnux/pescanner
Utilizando o comando file podemos analisar o cabeçalho dos arquivos e descobrir seu tipo e. depois disso, basta executar o comando PEScanner passando o arquivo de interesse como parâmetro.
O PEScanner traz diversas informações sobre o sample, incluindo assinaturas HASH MD5 e SHA-1 e o hash das funções importadas. Fazendo uma procura por estas informações, é possível descobrir que o sample é uma variação do Locky Ransomware.
O Docker ainda tem muito a crescer e muitas outras ferramentas de segurança estão sendo adaptadas em imagem, o que facilita muito as atividades em cibersegurança. Um exemplo adicional é o tempo que levei para rodar uma imagem do elasticsearch com Docker, em comparação com o tempo que levei na minha primeira instalação do software em uma máquina virtual. Certamente foram algumas horas de diferença.
Referências:
Docker – O que é, o que não é, e alguns detalhes a mais
Security Risks and Benefits of Docker Application Containers
How to Run Linux Malware Analysis Apps as Docker Containers – SANS