
Patch non officiel de libvirt pour le laboratoire gratuit SpecterOps Kubernetes for Red Teamers
Un patch non officiel libvirt et QEMU/KVM pour le cours gratuit Kubernetes for Red Teamers de SpecterOps. Les adresses réseau d'origine, la topologie Kubernetes, les callbacks Mythic et le comportement du laboratoire restent inchangés.
Parce qu'exécuter VirtualBox sous Linux, c'est comme apporter un générateur portable dans une maison déjà raccordée au réseau électrique ; vous payez deux fois pour quelque chose que le noyau vous offre déjà, tout en ajoutant un autre hyperviseur et une surface d'attaque de modules noyau. KVM fait partie de Linux, tandis que QEMU et libvirt fournissent les couches de machine virtuelle et de gestion autour de lui. Cela évite d'ajouter une pile d'hyperviseur tiers distincte à un hôte Linux.
VirtualBox résout le problème de distribution multiplateforme du cours ; libvirt résout le problème de l'hôte Linux. Le fournisseur VirtualBox d'origine reste intact pour les utilisateurs Windows et macOS, tandis que ce patch permet aux utilisateurs Linux d'exécuter le même laboratoire sur KVM.
Ce dépôt ne contient volontairement pas l'archive du laboratoire SpecterOps ni une copie de son arborescence source. Obtenez le matériel d'origine via le cours officiel :
README.md
ARCHITECTURE.md
LICENSE
NOTICE.md
UPSTREAM_SHA256SUMS
docs/
libvirt-lab-provisioned.png
patches/
libvirt.patch
SHA256SUMS
patches/libvirt.patch contient uniquement les modifications nécessaires pour ajouter la prise en charge de libvirt.
Il ne contient pas l'archive d'origine, les plans de conversion internes, les rapports
de revue, le harnais de test local, les identifiants générés ou l'état des machines virtuelles.
vagrant-libvirt ;Téléchargez k8s-attack-path-part-1-lab-assets.tar.gz depuis la
section Lab Infrastructure and Configuration du cours gratuit SpecterOps.
Extrayez les fichiers de laboratoire d'origine :
mkdir -p ~/kubernetes-for-red-teamers
cd ~/Downloads
tar xzvf k8s-attack-path-part-1-lab-assets.tar.gz -C ~/kubernetes-for-red-teamers
Clonez le dépôt du patch :
cd ~
git clone https://github.com/GregDurys/specterops-k8s-red-teamers-libvirt-patch.git
Vérifiez le patch :
cd ~/specterops-k8s-red-teamers-libvirt-patch
sha256sum -c patches/SHA256SUMS
Le résultat doit être :
patches/libvirt.patch: OK
Optionnellement, vérifiez l'archive téléchargée par rapport à la version utilisée pour tester ce patch :
cd ~/Downloads
sha256sum -c ~/specterops-k8s-red-teamers-libvirt-patch/UPSTREAM_SHA256SUMS
Si la somme de contrôle diffère, SpecterOps a peut-être mis à jour les fichiers du laboratoire.
Appliquez le 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
Validez la configuration :
vagrant validate
Le résultat doit être :
Vagrantfile validated successfully.
Le patch ajoute son propre README d'utilisation du laboratoire et un document d'architecture au répertoire extrait.
Démarrez le laboratoire depuis le répertoire du cours patché :
vagrant up --provider=libvirt
Le Vagrantfile désactive automatiquement le démarrage parallèle car les machines ultérieures consomment des fichiers générés par le plan de contrôle.

La topologie fonctionnelle présentée dans le schéma du cours est préservée :
| Élément du schéma | Conversion libvirt |
|---|---|
| Teamserver | 192.168.56.10, DNS teamserver |
| Plan de contrôle | 192.168.56.20, serveur API sur TCP 6443 |
| Worker 1 | 192.168.56.30 |
| Worker 2 | 192.168.56.31 |
| Interface Mythic | TCP 7443 |
| Port de callback | TCP 8081 |
| Registre TLS | TCP 5000, approuvé par les nœuds du cluster |
| Callbacks Mythic | Callbacks developer et noaccess conservés |
| Accès hôte | Vagrant transfère les ports 7443 et 8081 vers le teamserver |
| Trafic privé du laboratoire | Reste sur le réseau isolé 192.168.56.0/24 |
| Accès Internet | Conservé via l'adaptateur 1 |
| Résolution de noms d'hôte | Conservée sur les quatre machines virtuelles |
| Code-server et manifests du laboratoire | Inchangés par rapport à l'amont |
L'implémentation réseau présente une différence délibérée :
k8s-workshop-mgmt,
normalement 192.168.157.0/24.Les machines virtuelles libvirt peuvent donc communiquer via l'adaptateur 1, alors que les adaptateurs NAT séparés de VirtualBox ne fournissent pas ce chemin. Kubernetes, Calico, les callbacks Mythic, le registre et la résolution de noms d'hôte du laboratoire sont explicitement épinglés à l'adaptateur 2, donc la topologie du laboratoire reste inchangée.
Lisez ARCHITECTURE.md pour les détails de la topologie, de la gestion des collisions et de la justification du dossier synchronisé.
Une fois le provisionnement terminé :
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
Les trois nœuds Kubernetes doivent être Ready avec les adresses internes .20,
.30 et .31. La page de connexion Mythic doit être accessible via le port hôte
transféré et directement à https://192.168.56.10:7443. Les deux callbacks du cours
doivent apparaître dans Mythic comme décrit dans le matériel officiel du cours.
Pour démonter l'environnement de test :
vagrant destroy -f
Le travail original de ce dépôt est sous licence Apache License 2.0.
Cette licence s'applique uniquement au code et à la documentation originaux contribués par ce dépôt. Elle n'accorde aucun droit sur le cours SpecterOps, l'archive téléchargée ou tout autre matériel amont.