Scanner de vulnerabilidades através de Docker Containers

 Por Ciro Mota |  22, Agosto 2020 |  Tempo de leitura aproximadamente 6 minutos.
 Edições: Adição de bloco de anúncios Em 19, Setembro 2023.

Olá caros amigos. Sei que eu estava devendo, desde o lançamento do blog, um conteúdo sobre segurança. Então aqui estamos.

É inegável o quanto eu virei fã da tecnologia de microserviços, da imensa praticidade proporcionada por ela e o quanto essa praticidade nos facilita muito no dia a dia. Pensando em um cenário em que segurança é o item número um em T.I, que tal prover um scanner de vulnerabilidades através de um container? Não precisaremos de um PC específico para rodar a aplicação, nem tão quanto uma VM. O container cumprirá o seu propósito de efemeridade, ou seja, cumprir o seu propósito e ser descartado até uma nova próxima atualização?! Parece ser uma ideia muito interessante.

É isso que vamos tratar no artigo de hoje.

Nessus

O Nessus é uma ferramenta de scanner de vulnerabilidades Open Source, contudo, uma solução paga. Apesar disso, há uma opção gratuita em que podemos fazer uma varredura de até 16 endereços IP e isso pode ser bastante útil para uma pequena empresa ou até mesmo uma média empresa que possua essa quantidade de ativos a serem verificados em seu parque.

Para testá-la nessa modalidade gratuita, basta um cadastro e o código de verificação chegará ao email que foi utilizado. Partindo deste ponto fui através em algumas pesquisas verificar a sua utilização através de containers. Existem vários no Docker Hub, mas e por que não fazer o meu próprio? Pensei. Nessa mesma pesquisa encontrei algumas ideias através de Dockerfiles, consegui montar um de forma simples e igualmente simples para audita-lo caso necessário. Abaixo veremos como podemos monta-lo.

Continua após a publicidade
  1. Após o cadastro, vá até a pasta de downloads neste link e baixe a versão para a distribuição utilizada mais recente (“Nessus-8.11.0-debian6_amd64” no dia em que escrevo este artigo), no meu caso optei por utilizar uma imagem do Debian mais recente e no modo slim. Diga-se, tamanhos muito pequenos para imagens de Distros, só não superadas pela Alpine.

  2. Crie uma pasta em um local de fácil acesso, como sua /home por exemplo e salve-o o arquivo .deb nesta pasta.

  3. Copie o conteúdo do arquivo Dockerfile logo abaixo, salvando, claro, com o nome de Dockerfile.

FROM debian:buster-slim

RUN apt update -y \
	&& apt install net-tools iputils-ping -y
	
RUN rm -rf /var/lib/apt/lists/*

COPY *.deb /tmp/Nessus.deb

RUN dpkg -i /tmp/Nessus.deb	

EXPOSE 8834

ENTRYPOINT [ "/opt/nessus/sbin/nessusd" ]
  1. No terminal, execute:
docker build -t nessus $HOME/nessus .

O Dockerfile irá realizar toda a criação do container com o arquivo baixado anteriormente.

Continua após a publicidade
  1. Após a criação da imagem, execute o comando abaixo para executa-lo.
docker run -d --name nessus -p 9090:8834 nessus

No meu caso eu optei por mapear a porta 9090, você é livre para escolher a porta que deseja mapear no host. Após executar, vamos acessar o container através de https://localhost:9090. Abaixo algumas imagens do Nessus em ação.

Login Nessus

Definição do escopo de endereços IP

Lembrando que nesse caso, apesar de eu ter definido a busca para uma rede em /24, apenas 16 endereços é que poderão ser verificados devido a limitação da versão gratuita.

Resultado da verificação

No momento em que eu escrevia este artigo, não tinha nenhuma VM vulnerável que eu poderia testar, até que me lembrei de um arquivo .vdi (Imagem VirtualBox) do grande Windows XP, S.O que fez parte do meu nascimento e crescimento profissional. Possuo este .vdi há anos e ele conta com todas as atualizações possíveis para o velho XP. Ainda assim, observem que o scanner de fato funciona e aponta nele a vulnerabilidade MS-RDP, que para quem possa não estar lembrando, é a responsável pela grande disseminação de ransomwares.

Continua após a publicidade

A meu ver, apenas um pequeno erro de julgamento, para mim, essa é uma falha grave de segurança e não média como a ferramenta aponta. Vamos em frente.

OpenVAS

Essa é talvez, a ferramenta mais completa para varredura de vulnerabilidades e o principal, Open Souce mas diferente da Nessus, sem custo. Podemos encontrar a OpenVAS em ferramentas de pentest como o Kali Linux (sim, o Kali é uma ferramenta, não uma distro para usar no dia a dia ou aprender Linux).

Para essa, infelizmente não encontrei uma forma de elaborar um Dockerfile simples. Em todos os testes que fiz, ou o script não funcionava corretamente ao iniciar os serviços (utilizando uma imagem Debian recente) ou não eram satisfeitas as dependências necessárias para o funcionamento da ferramenta (um CentOS 7).

Continua após a publicidade

Eis que no entanto, no Docker Hub é possível encontrar uma imagem com mais de 10 milhões de downloads e na qual é possível auditar o código (sempre muito importante para saber o que está rodando). O passo a passo está muito bem explicado na página, bastando apenas segui-los em ordem para o resultado final e aqui, sem a limitação de 16 hosts da ferramenta anterior. Confira:

mikesplain/openvas

O download do container é um tanto grande, das definições do OpenVAS idem, para quem não possui conexões rápidas um planejamento prévio do download deve ser importante.

Aqui utilizei também a VM do XPzão como exemplo.

Resultado da verificação do OpenVAS

O OpenVAS é imenso e um scanner em uma rede média/grande pode demorar horas, mas ao final teremos um relatório completo das vulnerabilidades que teremos de corrigir visando o bem-estar do parque.

E se eu não quiser containers? (Update)

Sei que o tópico aborda a utilização de containers e ferramentas específicas, mas este método poderá ser de excelente utilidade para verificações atualizadas e sem qualquer custo. Ai neste caso meu caro gafanhoto, nós podemos fazer uso da boa e velha ferramenta Nmap, com auxílio de scanners para a detecção de vulnerabilidades.

Um desses scanners é o vulscan, que conta com o banco de dados dos principais bancos de vulnerabilidades existentes. Instalação e uso extremamente simples e abordado na documentação da ferramenta.

Continua após a publicidade

Para ilustrar o funcionamento com a opção padrão, utilizei em minha velha VM do Windows XP, a mesma que foi utilizada no teste acima, juntamente com um container do Debian Slim. Ai meu caro, deixe sua imaginação falar mais alto e faça um por exemplo, seu próprio container de verificação, com somente o mínimo essencial. Ou use a Nmap instalada na sua estação de trabalho ou Server, as possibilidades agora são muitas.

Resultado da verificação do Vulscan

Outra alternativa que oferece recurso similar é a nmap_vulners que oferece funcionamento similar a vulscan.

Independente da forma utilizada, como cito no início, não estaremos presos a necessidade de ter um PC específico ou VM para a função. Ao final da verificação, exclui-se o container até que ele seja usado na próxima oportunidade.

Espero que mais este artigo seja útil. Se você usa uma forma diferente ou conhece outra ferramenta, me deixe saber logo abaixo nos comentários.