
Inoffizieller libvirt-Patch für das kostenlose SpecterOps Kubernetes für Red-Teamer-Labor
Ein inoffizieller Libvirt- und QEMU/KVM-Patch für den kostenlosen SpecterOps-Kurs „Kubernetes für Red Teamer“. Die ursprünglichen Netzwerkadressen, die Kubernetes-Topologie, die Mythic-Callbacks und das Laborverhalten bleiben unverändert.
Weil VirtualBox unter Linux zu betreiben ist, als würde man ein tragbares Stromaggregat in ein Haus bringen, das bereits an das Stromnetz angeschlossen ist; man zahlt doppelt für etwas, das der Kernel bereits liefert, und fügt gleichzeitig eine weitere Hypervisor- und Kernel-Modul-Angriffsfläche hinzu. KVM ist Teil von Linux, während QEMU und libvirt die Virtual-Machine- und Verwaltungsebenen darum herum bereitstellen. Dadurch wird vermieden, einem Linux-Host einen separaten Hypervisor-Modul-Stack von Drittanbietern hinzuzufügen.
VirtualBox löst das plattformübergreifende Verteilungsproblem des Kurses; libvirt löst das Linux-Host-Problem. Der ursprüngliche VirtualBox-Provider bleibt für Windows- und macOS-Benutzer unangetastet, während dieser Patch es Linux-Benutzern ermöglicht, dasselbe Labor auf KVM auszuführen.
Dieses Repository enthält absichtlich weder das SpecterOps-Laborarchiv noch eine Kopie seines Quellbaums. Besorgen Sie sich das Originalmaterial über den offiziellen Kurs:
README.md
ARCHITECTURE.md
LICENSE
NOTICE.md
UPSTREAM_SHA256SUMS
docs/
libvirt-lab-provisioned.png
patches/
libvirt.patch
SHA256SUMS
patches/libvirt.patch enthält nur die Änderungen, die zum Hinzufügen der Libvirt-Unterstützung erforderlich sind. Es enthält weder das Originalarchiv, interne Konvertierungspläne, Überprüfungsberichte, lokale Testumgebungen, generierte Anmeldedaten noch VM-Zustände.
vagrant-libvirt-Plugin;Laden Sie k8s-attack-path-part-1-lab-assets.tar.gz aus dem
Abschnitt „Lab Infrastructure and Configuration“ des kostenlosen SpecterOps-Kurses herunter.
Extrahieren Sie die ursprünglichen Labordateien:
mkdir -p ~/kubernetes-for-red-teamers
cd ~/Downloads
tar xzvf k8s-attack-path-part-1-lab-assets.tar.gz -C ~/kubernetes-for-red-teamers
Klonen Sie das Patch-Repository:
cd ~
git clone https://github.com/GregDurys/specterops-k8s-red-teamers-libvirt-patch.git
Überprüfen Sie den Patch:
cd ~/specterops-k8s-red-teamers-libvirt-patch
sha256sum -c patches/SHA256SUMS
Das Ergebnis sollte sein:
patches/libvirt.patch: OK
Optional können Sie das heruntergeladene Archiv gegen die Version überprüfen, die zum Testen dieses Patches verwendet wurde:
cd ~/Downloads
sha256sum -c ~/specterops-k8s-red-teamers-libvirt-patch/UPSTREAM_SHA256SUMS
Wenn die Prüfsumme abweicht, hat SpecterOps möglicherweise die Labordateien aktualisiert.
Wenden Sie den Patch an:
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
Validieren Sie die Konfiguration:
vagrant validate
Das Ergebnis sollte sein:
Vagrantfile validated successfully.
Der Patch fügt dem extrahierten Verzeichnis eine eigene Labor-README und ein Architekturdokument hinzu.
Starten Sie das Labor aus dem gepatchten Kursverzeichnis:
vagrant up --provider=libvirt
Das Vagrantfile deaktiviert automatisch den parallelen Start, da spätere Maschinen Dateien konsumieren, die von der Control Plane generiert werden.

Die funktionale Topologie aus dem Kursdiagramm bleibt erhalten:
| Diagrammelement | Libvirt-Konvertierung |
|---|---|
| Teamserver | 192.168.56.10, DNS teamserver |
| Control Plane | 192.168.56.20, API-Server auf TCP 6443 |
| Worker 1 | 192.168.56.30 |
| Worker 2 | 192.168.56.31 |
| Mythic-UI | TCP 7443 |
| Callback-Port | TCP 8081 |
| TLS-Registry | TCP 5000, von den Cluster-Knoten als vertrauenswürdig eingestuft |
| Mythic-Callbacks | Developer- und Noaccess-Callbacks beibehalten |
| Host-Zugriff | Vagrant leitet die Ports 7443 und 8081 an den Teamserver weiter |
| Privater Laborverkehr | Bleibt im isolierten 192.168.56.0/24-Netzwerk |
| Internetzugriff | Über Adapter 1 beibehalten |
| Hostnamen-Auflösung | Über alle vier VMs hinweg beibehalten |
| Code-Server und Labor-Manifeste | Unverändert gegenüber dem Upstream |
Die Netzwerkimplementierung weist einen bewussten Unterschied auf:
k8s-workshop-mgmt-NAT-Netzwerk, normalerweise 192.168.157.0/24.Die Libvirt-VMs können daher über Adapter 1 kommunizieren, während die separaten NAT-Adapter von VirtualBox diesen Pfad nicht bieten. Kubernetes, Calico, Mythic-Callbacks, die Registry und die Labor-Hostnamen-Auflösung sind explizit an Adapter 2 gebunden, sodass die Labor-Topologie unverändert bleibt.
Lesen Sie ARCHITECTURE.md für Details zur Topologie, Kollisionsbehandlung und der Begründung für Synced Folders.
Nach Abschluss der Bereitstellung:
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
Alle drei Kubernetes-Knoten sollten Ready sein, mit den internen Adressen .20, .30 und .31. Die Mythic-Anmeldeseite sollte über den weitergeleiteten Host-Port und direkt unter https://192.168.56.10:7443 erreichbar sein. Die beiden Kurs-Callbacks sollten in Mythic erscheinen, wie im offiziellen Kursmaterial beschrieben.
Zum Herunterfahren der Testumgebung:
vagrant destroy -f
Originalarbeiten in diesem Repository sind unter der Apache License 2.0 lizenziert.
Diese Lizenz gilt nur für die ursprünglichen Code- und Dokumentationsbeiträge dieses Repositories. Sie gewährt keine Rechte am SpecterOps-Kurs, am heruntergeladenen Archiv oder an anderem Upstream-Material.