
비공식 libvirt 패치: 무료 SpecterOps Kubernetes for Red Teamers 랩용
무료 SpecterOps Kubernetes for Red Teamers 강좌를 위한 비공식 libvirt 및 QEMU/KVM 패치입니다. 원래 네트워크 주소, Kubernetes 토폴로지, Mythic 콜백 및 랩 동작은 변경되지 않습니다.
Linux에서 VirtualBox를 실행하는 것은 이미 전력망에 연결된 집에 휴대용 발전기를 가져오는 것과 같습니다. 커널이 이미 제공하는 것을 두 번 지불하면서, 동시에 또 다른 하이퍼바이저와 커널 모듈 공격 표면을 추가하는 셈입니다. KVM은 Linux의 일부이며, QEMU와 libvirt는 그 주변에 가상 머신 및 관리 계층을 제공합니다. 이는 Linux 호스트에 별도의 타사 하이퍼바이저 모듈 스택을 추가하는 것을 피합니다.
VirtualBox는 강좌의 크로스 플랫폼 배포 문제를 해결하고, libvirt는 Linux 호스트 문제를 해결합니다. 원래 VirtualBox 프로바이더는 Windows 및 macOS 사용자를 위해 그대로 유지되며, 이 패치는 Linux 사용자가 KVM에서 동일한 랩을 실행할 수 있게 합니다.
이 저장소는 의도적으로 SpecterOps 랩 아카이브나 그 소스 트리 사본을 포함하지 않습니다. 공식 강좌를 통해 원본 자료를 얻으십시오:
README.md
ARCHITECTURE.md
LICENSE
NOTICE.md
UPSTREAM_SHA256SUMS
docs/
libvirt-lab-provisioned.png
patches/
libvirt.patch
SHA256SUMS
patches/libvirt.patch에는 libvirt 지원을 추가하는 데 필요한 변경 사항만 포함되어 있습니다. 원본 아카이브, 내부 변환 계획, 검토 보고서, 로컬 테스트 하네스, 생성된 자격 증명 또는 VM 상태는 포함하지 않습니다.
vagrant-libvirt 플러그인;무료 SpecterOps 강좌의 Lab Infrastructure and Configuration 섹션에서 k8s-attack-path-part-1-lab-assets.tar.gz를 다운로드합니다.
원본 랩 파일을 추출합니다:
mkdir -p ~/kubernetes-for-red-teamers
cd ~/Downloads
tar xzvf k8s-attack-path-part-1-lab-assets.tar.gz -C ~/kubernetes-for-red-teamers
패치 저장소를 클론합니다:
cd ~
git clone https://github.com/GregDurys/specterops-k8s-red-teamers-libvirt-patch.git
패치를 검증합니다:
cd ~/specterops-k8s-red-teamers-libvirt-patch
sha256sum -c patches/SHA256SUMS
결과는 다음과 같아야 합니다:
patches/libvirt.patch: OK
선택적으로, 다운로드한 아카이브를 이 패치를 테스트하는 데 사용된 버전과 대조하여 검증합니다:
cd ~/Downloads
sha256sum -c ~/specterops-k8s-red-teamers-libvirt-patch/UPSTREAM_SHA256SUMS
체크섬이 다르면 SpecterOps가 랩 파일을 업데이트했을 수 있습니다.
패치를 적용합니다:
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
구성을 검증합니다:
vagrant validate
결과는 다음과 같아야 합니다:
Vagrantfile validated successfully.
패치는 추출된 디렉터리에 자체 랩 사용 README 및 아키텍처 문서를 추가합니다.
패치된 강좌 디렉터리에서 랩을 시작합니다:
vagrant up --provider=libvirt
Vagrantfile은 이후 머신이 컨트롤 플레인이 생성한 파일을 사용하므로 병렬 시작을 자동으로 비활성화합니다.

강좌 다이어그램에 표시된 기능적 토폴로지는 유지됩니다:
네트워크 구현에는 한 가지 의도적인 차이점이 있습니다:
k8s-workshop-mgmt NAT 네트워크(일반적으로 192.168.157.0/24)에 연결합니다.따라서 libvirt VM은 어댑터 1을 통해 통신할 수 있는 반면, VirtualBox의 별도 NAT 어댑터는 해당 경로를 제공하지 않습니다. Kubernetes, Calico, Mythic 콜백, 레지스트리 및 랩 호스트 이름 해석은 명시적으로 어댑터 2에 고정되므로 랩 토폴로지는 변경되지 않습니다.
토폴로지, 충돌 처리 및 동기화 폴더 근거에 대한 자세한 내용은 ARCHITECTURE.md를 읽으십시오.
프로비저닝이 완료된 후:
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
세 Kubernetes 노드 모두 내부 주소 .20, .30, .31로 Ready 상태여야 합니다. Mythic 로그인 페이지는 포워딩된 호스트 포트와 https://192.168.56.10:7443에서 직접 접근할 수 있어야 합니다. 두 강좌 콜백은 공식 강좌 자료에 설명된 대로 Mythic에 나타나야 합니다.
테스트 환경을 종료하려면:
vagrant destroy -f
이 저장소의 원본 작업은 Apache License 2.0에 따라 라이선스가 부여됩니다.
이 라이선스는 이 저장소가 기여한 원본 코드 및 문서에만 적용됩니다. SpecterOps 강좌, 다운로드한 아카이브 또는 기타 업스트림 자료에 대한 권리를 부여하지 않습니다.
| 다이어그램 요소 | Libvirt 변환 |
|---|
| Teamserver | 192.168.56.10, DNS teamserver |
| 컨트롤 플레인 | 192.168.56.20, TCP 6443의 API 서버 |
| Worker 1 | 192.168.56.30 |
| Worker 2 | 192.168.56.31 |
| Mythic UI | TCP 7443 |
| 콜백 포트 | TCP 8081 |
| TLS 레지스트리 | TCP 5000, 클러스터 노드가 신뢰 |
| Mythic 콜백 | 개발자 및 noaccess 콜백 유지 |
| 호스트 액세스 | Vagrant가 포트 7443 및 8081을 teamserver로 포워딩 |
| 개인 랩 트래픽 | 격리된 192.168.56.0/24 네트워크에 유지 |
| 인터넷 액세스 | 어댑터 1을 통해 유지 |
| 호스트 이름 해석 | 4개 VM 모두에서 유지 |
| Code-server 및 랩 매니페스트 | 업스트림과 동일 |