Back
Featured image of post [PT-BR] Introdução de Docker para Pentesters

[PT-BR] Introdução de Docker para Pentesters

Aprenda como usar o básico de docker a seu favor na hora de fazer pentest

Por que docker?

Na area de pentest é quase que um requisito você ter instalado diversas ferramentas que são utilizadas no dia a dia no seu ambiente de trabalho, muitas vezes o profissional opta por usar um sistema operacional que ja tenha tudo ali, sem necessidade de instalar mais nada (KaliLinux por exemplo) justamente para não se preocupar com instalação de programas.

Quem não utiliza Kali é obrigado a instalar TUDO que for usar.

Pare para pensar caso voce tivesse um PC novo, quantos ferramentas você iria baixar? Eu mesmo teria que fazer download de umas 10 ferramentas (wireshark, burpsuite, tcpdump, netcat, ftp, e a lista continua infinitamente). Eu sou preguiçoso e não tenho tempo pra ficar instalando ferramenta, isso sem contar os programas que dependem de outros, ou o pesadelo supremo: o conflitos de versões (pra que tanto python??)

Imagine se voce pegasse cada uma dessas ferramentas e colocasse dentro de uma caixa (uma caixinha mesmo), e essa caixa pudesse ser utilizada em qualquer computador, seja ele linux, windows ou mac, e a melhor parte: essa caixinha pudesse sumir e aparecer quando você quisesse.

Essa caixinha é o docker.

No contexto do docker, essa caixinha se chama container, que na pratica é um sistema operacional encapsulado, que pode ser descartado e recriado a qualquer momento.

Um container é criado a partir de uma imagem, dizendo quais programas ele vai ter instalado, quais diretórios ele tem acesso do seu computador, configurando o container em geral. Essa imagem é descrita em um arquivo chamado por Dockerfile.

Como docker ajuda no Pentest?

Com o docker, você tem em suas mãos milhares de imagens pré-prontas (disponíveis no site oficial) que já vem com ferramentas instaladas e configuradas devidamente.

Trocou de computador? Sem problema, as imagens que voce criou podem ser utilizadas em qualquer sistema operacional, basta instalar docker.

Quer testar algo que pode te dar problemas, ou até prejudicar o seu sistema operacional? Rode em docker, se der problema voce deleta o container.

Você não precisaria se preocupar com o espaço em disco quando fosse baixar novas ferramentas porque os programas instalados no container não estão no seu sistema, então removendo o container, é como se essa ferramenta nunca tivesse existido.

E caso alguem fosse vasculhar seu computador para ver as coisas que anda fazendo.. não encontraria nada, já que tudo que voce fez foi em um container do docker (que aliás nem existe mais :P)

Como usar o docker?

Primeiro você precisa ter o docker instalado, depois disso ja podemos começar com o primeiro comando do docker:

Esse comando a seguir mostra todos os containers que voce tem, independente se estejam rodando ou não

$ sudo docker ps -a

Provavelmente voce verá que não há nada na lista de containers, o que acha de criarmos um?

Vamos iniciar baixando a imagem do alpine (poderia ser ubuntu, mas escolhi alpine mesmo)

$ sudo docker pull alpine

Agora verifique a imagem do Alpine que você baixou faz parte das suas imagens:

$ sudo docker images

Se sua imagem estiver ai, podemos iniciar o container pelo comando:

$ sudo docker run --name exemplo --rm -it alpine /bin/sh

Se tudo der certo abrira uma shell root para você no terminal, isso significa que deu tudo certo e você está dentro de um container!

Para sair do container basta rodar o comando

$ exit

Vamos detalhar melhor o que cada item desse comando faz…

  • --name especifica o nome do container
  • --rm Deleta o container assim que você sai dele
  • -it Obtem uma shell interativa
  • alpine /bin/sh a primeira parte diz qual imagem vamos usar, e a /bin/sh significa qual comando vamos rodar nele, no caso, queremos o shell

Perceba que você rodou o comando run com o --rm, isso significa que tudo que você fez nele, será apagado assim que sair dele, veja os containers que você tem com esse comando:

$ sudo docker ps -a

Se você quer ter um container que não é deletado, basta rodar o mesmo comando, só que sem o --rm.

Docker para pentest

Agora que você viu como iniciar um container por linha de comando, e também via arquivos Dockerfile, vou demonstrar como isso pode ser aplicado para pentest.

No site oficial do Docker, exite uma parte dedicada as imagens do docker, e nela existem milhares de imagens PRONTAS para você dar pull nelas e começar a usar.

Porém seria muito fácil eu dizer que é só usar as que tem lá, o que acha de criarmos nossa própria imagem?

Primeiro vamos criando nosso Dockerfile, para dizer o que terá instalado no nosso container.

FROM ubuntu:latest

RUN apt-get update && apt-get upgrade -y && apt-get install -y curl proxychains tor nmap

CMD ["/bin/bash"]
  • FROM Demonstra qual imagem você estará se baseando
  • RUN Roda comandos em bash, normalmente usado para instalar dependencias. Ele é executado quando o container está sendo criado.
  • CMD Ele demonstra qual comando será executado quando um container está iniciando (Só pode existir 1 CMD por arquivo Dockerfile)

Esse Dockerfile está dizendo que o nosso container será ubuntu, e terá instalado por padrão o curl, proxychains, tor e o nmap.

Podemos criar o container a partir desse Dockerfile com o seguinte comando:

$ sudo docker build -t pentest .

Com ele criado, podemos verificar que ele existe na lista dos containers criados:

$ sudo docker ps -a

Se ele estiver nessa lista significa que podemos rodar o comando para iniciá-lo:

$ sudo docker run -it pentest

Conclusão

Agora que você sabe o básico de como começar com o docker no mundo de pentest, vou deixar algumas possibilidades para os curiosos:

  • Configurar a vpn diretamente no Dockerfile, assim toda vez que você entra no container, entrará na VPN também
  • Criar Dockerfile que faz rotinas de pentest para você (brute force de diretório, brute force de login, scan de portas), de forma automatizada.
  • Criar um container do tipo C2 ou C&C (command and control) e criar outros containers para serem nodes para testar sua botnet.

Acho que você entendeu a ideia: a única limitação é a criatividade.


Autor do post: Vtr

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy