
Patch não oficial do libvirt para o laboratório gratuito Kubernetes para Red Teamers da SpecterOps
Um patch não oficial de libvirt e QEMU/KVM para o curso gratuito SpecterOps Kubernetes for Red Teamers. Os endereços de rede originais, a topologia Kubernetes, os callbacks do Mythic e o comportamento do laboratório permanecem inalterados.
Porque executar VirtualBox no Linux é como levar um gerador portátil para uma casa que já está ligada à rede elétrica; você paga duas vezes por algo que o kernel já lhe dá, enquanto adiciona outro hipervisor e superfície de ataque de módulos de kernel. O KVM faz parte do Linux, enquanto o QEMU e o libvirt fornecem as camadas de máquina virtual e gestão em torno dele. Isso evita adicionar uma pilha separada de módulos de hipervisor de terceiros a um host Linux.
O VirtualBox resolve o problema de distribuição multiplataforma do curso; o libvirt resolve o problema do host Linux. O provider VirtualBox original permanece intocado para utilizadores de Windows e macOS, enquanto este patch permite que utilizadores Linux executem o mesmo laboratório no KVM.
Este repositório intencionalmente não contém o arquivo do laboratório SpecterOps nem uma cópia da sua árvore de código-fonte. Obtenha o material original através do curso oficial:
README.md
ARCHITECTURE.md
LICENSE
NOTICE.md
UPSTREAM_SHA256SUMS
docs/
libvirt-lab-provisioned.png
patches/
libvirt.patch
SHA256SUMS
patches/libvirt.patch contém apenas as alterações necessárias para adicionar suporte a libvirt. Não contém o arquivo original, planos de conversão internos, relatórios de revisão, harness de teste local, credenciais geradas ou estado da VM.
vagrant-libvirt;Transfira k8s-attack-path-part-1-lab-assets.tar.gz da
secção Lab Infrastructure and Configuration do curso gratuito SpecterOps.
Extraia os ficheiros originais do laboratório:
mkdir -p ~/kubernetes-for-red-teamers
cd ~/Downloads
tar xzvf k8s-attack-path-part-1-lab-assets.tar.gz -C ~/kubernetes-for-red-teamers
Clone o repositório do patch:
cd ~
git clone https://github.com/GregDurys/specterops-k8s-red-teamers-libvirt-patch.git
Verifique o patch:
cd ~/specterops-k8s-red-teamers-libvirt-patch
sha256sum -c patches/SHA256SUMS
O resultado deve ser:
patches/libvirt.patch: OK
Opcionalmente, verifique o arquivo transferido em relação à versão utilizada para testar este patch:
cd ~/Downloads
sha256sum -c ~/specterops-k8s-red-teamers-libvirt-patch/UPSTREAM_SHA256SUMS
Se o checksum diferir, a SpecterOps pode ter atualizado os ficheiros do laboratório.
Aplique o patch:
cd ~/kubernetes-for-red-teamers
git apply --check ~/specterops-k8s-red-teamers-libvirt-patch/patches/libvirt.patch
git apply ~/specterops-k8s-red-teamers-libvirt-patch/patches/libvirt.patch
Valide a configuração:
vagrant validate
O resultado deve ser:
Vagrantfile validated successfully.
O patch adiciona o seu próprio README de utilização do laboratório e documento de arquitetura ao diretório extraído.
Inicie o laboratório a partir do diretório do curso com patch:
vagrant up --provider=libvirt
O Vagrantfile desativa automaticamente o arranque paralelo porque as máquinas posteriores consomem ficheiros gerados pelo control plane.

A topologia funcional mostrada no diagrama do curso é preservada:
| Elemento do diagrama | Conversão Libvirt |
|---|---|
| Teamserver | 192.168.56.10, DNS teamserver |
| Control plane | 192.168.56.20, servidor API em TCP 6443 |
| Worker 1 | 192.168.56.30 |
| Worker 2 | 192.168.56.31 |
| UI Mythic | TCP 7443 |
| Porta de callback | TCP 8081 |
| Registry TLS | TCP 5000, confiável pelos nós do cluster |
| Callbacks Mythic | Callbacks developer e noaccess mantidos |
| Acesso do host | O Vagrant encaminha as portas 7443 e 8081 para o teamserver |
| Tráfego privado do laboratório | Permanece na rede isolada 192.168.56.0/24 |
| Acesso à Internet | Mantido através do adaptador 1 |
| Resolução de nomes de host | Mantida em todas as quatro VMs |
| Code-server e manifests do laboratório | Inalterados em relação ao upstream |
A implementação de rede tem uma diferença deliberada:
k8s-workshop-mgmt, normalmente 192.168.157.0/24.As VMs libvirt podem, portanto, comunicar através do adaptador 1, enquanto os adaptadores NAT separados do VirtualBox não fornecem esse caminho. Kubernetes, Calico, callbacks Mythic, o registry e a resolução de nomes de host do laboratório estão explicitamente fixados ao adaptador 2, pelo que a topologia do laboratório permanece inalterada.
Leia ARCHITECTURE.md para detalhes da topologia, tratamento de colisões e justificação da pasta sincronizada.
Após a conclusão do aprovisionamento:
vagrant status
vagrant ssh control-plane-1 -c 'kubectl get nodes -o wide'
vagrant port --guest 7443 teamserver
curl --insecure --head https://192.168.56.10:7443
Os três nós Kubernetes devem estar Ready com endereços internos .20, .30 e .31. A página de início de sessão do Mythic deve estar acessível através da porta do host encaminhada e diretamente em https://192.168.56.10:7443. Os dois callbacks do curso devem aparecer no Mythic conforme descrito pelo material oficial do curso.
Para desmontar o ambiente de teste:
vagrant destroy -f
O trabalho original neste repositório está licenciado sob a Apache License 2.0.
Esta licença aplica-se apenas ao código e documentação originais contribuídos por este repositório. Não concede quaisquer direitos sobre o curso SpecterOps, arquivo transferido ou outro material upstream.