Blog

Docker for Security

Written by Carlos Borges | 27/mar/2018 19:00:00

[03 18] Docker for Security.jpg

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.

[03 18] Docker for Security_Diferenças estruturais entre sistemas virtualizados e Docker.jpg

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?

  • Precisar subir uma máquina virtual para rodar uma ferramenta de segurança e ter problemas de performance com os recursos de hardware.
  • Perder muito tempo fazendo a instalando de dependências e softwares, além da configuração? Só neste caso existem vários detalhes, como a necessidade de instalar um software na máquina principal, problemas de compatibilidade de software e problemas de versão entre uma máquina e outra.

 

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.

[03 18] Docker for Security_passos.jpg

 

Após seguir todos os passos, inicialize o serviço do Docker e verifique o status da instalação:

[03 18] Docker for Security_inicialize o serviço do Docker e verifique o status da instalação.jpg

 

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.

[03 18] Docker for Securityreferências de uso das ferramentas também estão comentadas 1.jpg

[03 18] Docker for Security_referências de uso das ferramentas também estão comentadas 2.jpg

 

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

[03 18] Docker for Security_home.jpg

 

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

[03 18] Docker for Security_home maltrieve.jpg
 

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.

[03 18] Docker for Security_Locky Ransomware.jpg

 

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