Laboratório integrado de simulação de ameaças com Splunk e MITRE Caldera
Este é um ambiente Docker pré-configurado para simular ataques (Caldera) e monitorar/responder com o Splunk. Ideal para testes de Red Team/Blue Team.
threat-hunt-lab/
├── .env # Variáveis de ambiente (senhas)
├── docker-compose.yml # Orquestração dos serviços
├── caldera/
│ └── Dockerfile # Build personalizado do Caldera
└── volumes/
├── splunk-data/ # Dados persistentes do Splunk
└── caldera-logs/ # Logs do Caldera
Notas de atualização: 22-fev-2024 - Este é apenas um Minimum Viable Product (MVP) com uma estrutura mínima para testes. Algumas configurações adicionais (como redes personalizadas, volumes, limites de arquivos, etc.), embora úteis em um projeto maior, poderiam complicar o trabalho. Farei pequenos incrementos diários, conforme avanço com o projeto.
Certifique-se de ter o Docker e o Docker Compose instalados com os seguintes comandos (exemplo para Ubuntu):
- Docker e Docker Compose instalados.
- Portas 8000 (Splunk) e 8888 (Caldera) liberadas.
Nota: Consulte a documentação oficial do Docker para lidar com especificidades não mencionadas anteriormente.
- Clone o repositório:
git clone https://github.com/had-nu/threat-hunt-lab.git
cd threat-hunt-lab
- Configure senhas no
.env
:
echo "SPLUNK_PASSWORD=SenhaForte123" > .env
- Splunk
O
docker-compose.yml
deste repositório já configura e baixa a imagem oficial do Splunk do Docker Hub automaticamente ao rodar os contêineres. Não é necessário nenhum passo manual antes disso.
- Imagem utilizada:
splunk/splunk:9.1.2
.
- Caldera
O MITRE Caldera não possui uma imagem oficial no Docker Hub, portanto será necessário construir a imagem localmente. Entretanto, o repositório oficial do Caldera fornece um
Dockerfile
que pode ser usado para essa construção.
Para construir o Caldera:
- Clone o repositório do Caldera e construa a imagem:
git clone --recursive --branch 5.0.0 https://github.com/mitre/caldera.git caldera
docker build ./caldera --build-arg WIN_BUILD=true -t caldera:latest
cd ..
- Isso usa o
Dockerfile
oficial do Caldera. - O argumento
--build-arg WIN_BUILD=true
é opcional (inclua apenas se precisar de suporte a builds Windows no plugin Sandcat).
Com a imagem do Caldera construída e o Splunk configurado via docker-compose.yml, inicie o laboratório:
- Suba os contêineres:
docker-compose up
- Splunk: Disponível em http://localhost:8000 (usuário:
admin
, senha:<DefinaUmaSenha>
). - Caldera: Disponível em http://localhost:8888 (usuário:
admin
, senha:admin
).
- Verifique os logs:
- Logs aparecem no terminal.
- Logs persistentes ficam em
./volumes/splunk-data
e./volumes/caldera-logs
.
- Parando o ambiente:
docker compose down # Mantém os volumes
docker compose down -v # Remove volumes
- Portas em conflito: Se necessário, altere as portas no
docker-compose.yml
. - Erros de build: Verifique se o Caldera foi clonado recursivamente.
- Erros de permissão: Se está no Linux sem privilégios de super usuário, lembre-se de incluir o
sudo
. - Atualizar senhas: Após alterar senhas no
.env
lembre-se de reiniciar o serviço.
Comandos Docker Compose
- Iniciar os serviços em segundo plano:
docker-compose up -d # cria e inicia os containers do Splunk e Caldera em modo detached.
- Parar e remover containers (mantendo volumes de dados):
docker-compose down
- Parar e remover tudo (containers + volumes):
docker-compose down -v # dados persistentes serão apagados.
- Visualizar logs em tempo real:
docker-compose logs -f # para "follow".
- Reiniciar um serviço específico:
docker-compose restart splunk
Comandos Docker
- Listar containers em execução:
docker ps # exibe apenas containers ativos.
- Listar todos os containers (ativos e parados):
docker ps -a # mostra todos os containers, incluindo os parados.
- Visualizar logs de um container:
docker logs splunk-threatlab
- Acessar o terminal de um container:
docker exec -it splunk-threatlab /bin/bash
- Remover uma imagem:
docker rmi splunk/splunk:9.1.2 # remove a imagem do Splunk (após parar containers dependentes).
- Limpar recursos não utilizados:
docker system prune -a # remove containers, imagens e volumes não utilizados (use com cuidado).
Gerenciamento de Volumes
- Listar todos os volumes criados pelo Docker:
docker volume ls
- Inspecionar um volume:
docker volume inspect threat-hunt-lab_splunk-data
Este projeto está licenciado sob a Apache License 2.0. Consulte o arquivo LICENSE para mais detalhes.