2375, 2376 Pentesting Docker
WhiteIntel é um mecanismo de busca alimentado pela dark web que oferece funcionalidades gratuitas para verificar se uma empresa ou seus clientes foram comprometidos por malwares de roubo.
O principal objetivo do WhiteIntel é combater a apropriação de contas e ataques de ransomware resultantes de malwares de roubo de informações.
Você pode verificar o site deles e experimentar o mecanismo de busca de forma gratuita em:
Conceitos Básicos do Docker
O que é
Docker é a plataforma líder na indústria de containerização, liderando a inovação contínua. Facilita a criação e distribuição sem esforço de aplicativos, abrangendo desde os tradicionais até os futuristas, e garante a implantação segura deles em diversos ambientes.
Arquitetura básica do Docker
containerd: Este é um tempo de execução central para contêineres, encarregado da gestão abrangente do ciclo de vida de um contêiner. Isso envolve lidar com a transferência e armazenamento de imagens, além de supervisionar a execução, monitoramento e rede de contêineres. Mais insights detalhados sobre o containerd são explorados ainda mais.
O container-shim desempenha um papel crítico como um intermediário no manuseio de contêineres sem interface gráfica, assumindo perfeitamente o controle do runc após a inicialização dos contêineres.
runc: Estimado por suas capacidades de tempo de execução de contêiner leve e universal, o runc está alinhado com o padrão OCI. É usado pelo containerd para iniciar e gerenciar contêineres de acordo com as diretrizes OCI, tendo evoluído do libcontainer original.
grpc é essencial para facilitar a comunicação entre o containerd e o docker-engine, garantindo uma interação eficiente.
O OCI é fundamental para manter as especificações OCI para tempo de execução e imagens, sendo as versões mais recentes do Docker compatíveis com os padrões de imagem e tempo de execução OCI.
Comandos básicos
Containerd
Containerd foi desenvolvido especificamente para atender às necessidades de plataformas de contêineres como Docker e Kubernetes, entre outras. Seu objetivo é simplificar a execução de contêineres em vários sistemas operacionais, incluindo Linux, Windows, Solaris e outros, abstraindo funcionalidades específicas do sistema operacional e chamadas de sistema. O objetivo do Containerd é incluir apenas os recursos essenciais necessários pelos usuários, buscando omitir componentes desnecessários. No entanto, alcançar esse objetivo completamente é reconhecido como desafiador.
Uma decisão de design chave é que Containerd não lida com redes. A rede é considerada um elemento crítico em sistemas distribuídos, com complexidades como Redes Definidas por Software (SDN) e descoberta de serviços que variam significativamente de uma plataforma para outra. Portanto, o Containerd deixa os aspectos de rede para serem gerenciados pelas plataformas que ele suporta.
Enquanto o Docker utiliza o Containerd para executar contêineres, é importante observar que o Containerd suporta apenas um subconjunto das funcionalidades do Docker. Especificamente, o Containerd não possui as capacidades de gerenciamento de rede presentes no Docker e não suporta a criação de swarms do Docker diretamente. Essa distinção destaca o papel focado do Containerd como um ambiente de tempo de execução de contêiner, delegando funcionalidades mais especializadas para as plataformas com as quais se integra.
Podman
Podman é um mecanismo de contêiner de código aberto que adere aos padrões da Iniciativa de Contêiner Aberto (OCI), desenvolvido e mantido pela Red Hat. Ele se destaca do Docker com várias características distintas, especialmente sua arquitetura sem daemon e suporte para contêineres sem raiz, permitindo que os usuários executem contêineres sem privilégios de root.
O Podman é projetado para ser compatível com a API do Docker, permitindo o uso de comandos da CLI do Docker. Essa compatibilidade se estende ao seu ecossistema, que inclui ferramentas como Buildah para construir imagens de contêiner e Skopeo para operações de imagem como push, pull e inspect. Mais detalhes sobre essas ferramentas podem ser encontrados em sua página do GitHub.
Diferenças Chave
Arquitetura: Ao contrário do modelo cliente-servidor do Docker com um daemon em segundo plano, o Podman opera sem um daemon. Esse design significa que os contêineres são executados com os privilégios do usuário que os inicia, aumentando a segurança ao eliminar a necessidade de acesso de root.
Integração com Systemd: O Podman se integra ao systemd para gerenciar contêineres, permitindo o gerenciamento de contêineres por meio de unidades systemd. Isso contrasta com o uso do systemd pelo Docker principalmente para gerenciar o processo do daemon do Docker.
Contêineres sem Raiz: Uma característica fundamental do Podman é sua capacidade de executar contêineres sob os privilégios do usuário iniciante. Essa abordagem minimiza os riscos associados a violações de contêiner, garantindo que os invasores obtenham apenas os privilégios do usuário comprometido, e não acesso de root.
A abordagem do Podman oferece uma alternativa segura e flexível ao Docker, enfatizando o gerenciamento de privilégios do usuário e a compatibilidade com os fluxos de trabalho existentes do Docker.
Observe que, como o Podman visa suportar a mesma API que o Docker, você pode usar os mesmos comandos com o Podman como com o Docker, como:
Informação Básica
A API Remota está em execução por padrão na porta 2375 quando habilitada. O serviço por padrão não exigirá autenticação, permitindo que um atacante inicie um contêiner docker privilegiado. Ao usar a API Remota, é possível anexar hosts / (diretório raiz) ao contêiner e ler/escrever arquivos do ambiente do host.
Porta padrão: 2375
Enumeração
Manual
Note que, para enumerar a API do docker, você pode usar o comando docker
ou curl
como no exemplo a seguir:
Se você pode acessar a API remota do docker com o comando docker
você pode executar qualquer um dos comandos docker comentados anteriormente para interagir com o serviço.
Você pode export DOCKER_HOST="tcp://localhost:2375"
e evitar usar o parâmetro -H
com o comando docker
Escalonamento rápido de privilégios
Curl
Às vezes você verá 2376 disponível para o endpoint TLS. Não consegui me conectar a ele com o cliente docker, mas é possível fazer isso com o curl.
Se deseja mais informações sobre isso, mais informações estão disponíveis de onde copiei os comandos: https://securityboulevard.com/2019/02/abusing-docker-api-socket/
Automático
Comprometimento
Na página a seguir, você pode encontrar maneiras de escapar de um contêiner do Docker:
pageDocker SecurityAbusando disso, é possível escapar de um contêiner, você poderia executar um contêiner fraco na máquina remota, escapar dele e comprometer a máquina:
Escalação de Privilégios
Se você estiver dentro de um host que está usando o Docker, você pode ler estas informações para tentar elevar os privilégios.
Descobrindo segredos em contêineres Docker em execução
Verifique a seção de variáveis de ambiente para segredos e você pode encontrar:
Senhas.
IPs.
Portas.
Caminhos.
Outros... .
Se você deseja extrair um arquivo:
Protegendo seu Docker
Protegendo a instalação e uso do Docker
Você pode usar a ferramenta https://github.com/docker/docker-bench-security para inspecionar sua instalação atual do Docker.
./docker-bench-security.sh
Você pode usar a ferramenta https://github.com/kost/dockscan para inspecionar sua instalação atual do Docker.
dockscan -v unix:///var/run/docker.sock
Você pode usar a ferramenta https://github.com/genuinetools/amicontained para verificar os privilégios que um contêiner terá ao ser executado com diferentes opções de segurança. Isso é útil para saber as implicações de usar algumas opções de segurança para executar um contêiner:
docker run --rm -it r.j3ss.co/amicontained
docker run --rm -it --pid host r.j3ss.co/amicontained
docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained
Protegendo Imagens do Docker
Você pode usar uma imagem do Docker de https://github.com/quay/clair para fazer a verificação de suas outras imagens do Docker e encontrar vulnerabilidades.
docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"
clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image
Protegendo Dockerfiles
Você pode usar a ferramenta https://github.com/buddy-works/dockerfile-linter para inspecionar seu Dockerfile e encontrar todos os tipos de configurações incorretas. Cada configuração incorreta receberá um ID, você pode encontrar aqui https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md como corrigir cada uma delas.
dockerfilelinter -f Dockerfile
Você pode usar a ferramenta https://github.com/replicatedhq/dockerfilelint para inspecionar seu Dockerfile e encontrar todos os tipos de configurações incorretas.
dockerfilelint Dockerfile
Você pode usar a ferramenta https://github.com/RedCoolBeans/dockerlint para inspecionar seu Dockerfile e encontrar todos os tipos de configurações incorretas.
dockerlint Dockerfile
Você pode usar a ferramenta https://github.com/hadolint/hadolint para inspecionar seu Dockerfile e encontrar todos os tipos de configurações incorretas.
hadolint Dockerfile
Registrando atividades suspeitas
Você pode usar a ferramenta https://github.com/falcosecurity/falco para detectar comportamentos suspeitos em contêineres em execução.
Observe no trecho a seguir como o Falco compila um módulo de kernel e o insere. Depois disso, ele carrega as regras e começa a registrar atividades suspeitas. Neste caso, ele detectou 2 contêineres privilegiados iniciados, sendo que um deles com um ponto de montagem sensível, e após alguns segundos detectou como um shell foi aberto dentro de um dos contêineres.
Monitoramento do Docker
Você pode usar o auditd para monitorar o docker.
Referências
WhiteIntel é um mecanismo de busca alimentado pela dark web que oferece funcionalidades gratuitas para verificar se uma empresa ou seus clientes foram comprometidos por malwares de roubo.
O principal objetivo do WhiteIntel é combater tomadas de contas e ataques de ransomware resultantes de malwares de roubo de informações.
Você pode verificar o site deles e experimentar o mecanismo gratuitamente em:
Last updated