O Docker é uma plataforma open source que facilita a criação e administração de ambientes isolados. Ele possibilita o empacotamento de uma aplicação ou ambiente dentro de um container, se tornando portátil para qualquer outro host que contenha o Docker instalado.

Se você é meu aluno no curso Segurança em Aplicações WEB já sabe que existem várias distribuições linux preparadas para Pentest, dentre as principais e minhas prediletas estão:

Estas e outras distribuições com o mesmo intuito visam trazer uma série de ferramentas já preparadas para testes de segurança, e todas funcionam em modo LiveCD, ou seja, é possível executar a imagem diretamente de um disco ou pendrive. Porém, o LiveCD exige um esforço grande seja para gravação da ISO em um CD ou Pendrive, ou mesmo na criação de uma máquina virtual.

Se falamos de containers a única coisa necessária para a preparação do ambiente é a instalação do Docker, algo bem simples e fácil. Tendo o docker instalado e configurado podemos utilizar a imagem criada por nós, ou até fazer uso de uma imagem disponível no Docker HUB. Desta forma ganhamos tempo e portabilidade.

Para nosso container webpentest vamos utilizar algumas ferramentas ja conhecidas e para esse artigo vamos abordar somente ferramentas de uso via console.

Instalação

Para instalar o docker e o configurar sugiro seguir o passo a passo disponibilizado na documentação do mesmo. É bem simples, compatível com grande parte das distribuições Linux, bem como é totalmente compatível com o muito usado Janelas.

Clique aqui e acesse o tutorial de instalação do Docker.

Eu utilizo OpenSUSE, então vou utilizar ele como base para este artigo. Mas, saiba que o Docker funciona da mesma maneira em qualquer Sistema Operacional, fique despreocupado e utilize em sua distribuição linux ou mesmo no Windows e MAC.

Para instalar no OpenSUSE:

usuario@opensuse:~> sudo zypper se docker
 S | Nome                     | Resumo                                                   | Tipo  

–+——————————+————————————————————–+————-

 | docker                   | The Linux container runtime                              | pacote 
usuario@opensuse:~> sudo zypper in docker
usuario@opensuse:~> sudo systemctl enable docker
usuario@opensuse:~> sudo systemctl start docker
usuario@opensuse:~> sudo docker info
Client:
 Debug Mode: false

Server:
 Containers: 5
  Running: 1
  Paused: 0
  Stopped: 4
 Images: 26
 Server Version: 19.03.11
 Storage Driver: btrfs
  Build Version: Btrfs v5.6.1 
  Library Version: 102
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: oci runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
 init version: 
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.6.14-1-default
 Operating System: openSUSE Tumbleweed
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 15.55GiB
 Name: wolfgang
 ID: WC4U:GFR2:HYIG:LNCA:C2HO:45BD:MU5H:WW46:FLNP:6X5M:B24X:54A2
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No swap limit support

Se você conseguiu executar com sucesso as etapas anteriores, já instalou o docker. Vamos para a configuração do container.

Vamos utilizar o container disponibilizado pela OffSec, empresa responsável pela distribuição do Kali Linux.

Para isso, façamos:

usuario@opensuse:~> sudo docker pull kalilinux/kali-rolling
usuario@opensuse:~> sudo docker run -t -i kalilinux/kali-rolling /bin/bash
root@0129d62d2319:/# apt-get update && apt-get install hydra cewl metasploit-framework -y
root@0129d62d2319:/# exit

Tendo executado os comandos teremos configurado o container docker, bem como atualizado o mesmo e instalado o MetaSploit e a ferramenta Cewl na máquina. O processo pode demorar um pouco, mas tenha fé, funcionará!

Feito isso, vamos configurar um segundo container, que utilizaremos como alvo de nossos testes.

usuario@opensuse:~> sudo docker run -d -p 80:80 citizenstig/nowasp

Feito isso, temos nosso ambiente preparado para nossos testes!

Exemplo BruteForce

Brute force é literalmente “força bruta”, termo utilizado para descrever um tipo de ataque onde força-se a entrada em algum sistema, site, servidor, aplicativo, etc. A técnica utilizada se dá através de sucessivas tentativas de acertar uma combinação de senha (uma chave), e assim conseguir acesso às informações e dados que deseja.

Imagine sua casa, existem duas forma de entrar, não é mesmo? Uma é a mais simples e óbvia, através da chave, onde se abre o portão e a porta, entrando de forma fácil. Essa ação é tomada por você e os demais que sejam autorizados a entrar em sua casa, ou seja, aqueles que têm a chave.

Outra forma é através de um arrombamento, empurrando o portão até que o mesmo caia, utilizando uma força bruta para abrir a passagem. Normalmente, esse método será utilizado por um bandido que pretende invadir sua residência.

Vamos criar uma wordlist com o Cewl para começar nosso teste.

usuario@opensuse:~> sudo docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                          NAMES
44ce535cd097        citizenstig/nowasp       "/run.sh"           19 minutes ago      Up 19 minutes       0.0.0.0:80->80/tcp, 3306/tcp   focused_burnell
1bff810ea695        kalilinux/kali-rolling   "/bin/bash"         57 minutes ago      Up 4 minutes                                       unruffled_borg

usuario@opensuse:~> sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' unruffled_borg 
172.17.0.3
usuario@opensuse:~> sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' focused_burnell 
172.17.0.4
usuario@opensuse:~> sudo docker exec -it nome_de_seu_container_kali_linux  
usuario@opensuse:~> sudo docker exec -it unruffled_borg cewl "172.17.0.4" -d 1 -w senhas.txt
usuario@opensuse:~> sudo docker exec -it unruffled_borg hydra -l admin -P senhas.txt 172.17.0.4 http-post-form "/mutillidae/index.php?page=login.php:username=^USER^&password=^PASS^&login-php-submit-button=Login:Not Logged In"

Ao executar, teremos descoberto usuário e senha do sistema alvo!

Conclusão

A utilização de docker para nossos pentests é algo natual vista a evolução tecnológica que estamos percebendo com esta tecnologia. Assim sendo, torna-se muito útil conseguir utilizar ferramentas de pentests com esta ferramenta.

Este foi apenas um exemplo do que se pode fazer! Se interessa por segurança? Quer aprender mais? Aproveite e se inscreva em meu curso de Segurança em Aplicações WEB. Aproveite a promoção clicando aqui!

Deixe uma resposta