
고정된 EDK II/OVMF 펌웨어를 빌드하고, QEMU에서 UEFI VM을 부팅하며, PXE 네트워크 부팅 DoS 및 메모리 손상 취약점에 대한 Python PoC 스크립트를 실행하는 교육용 랩입니다.
EDK II / OVMF의 PXE 네트워크 부팅 취약점을 연구하기 위한 교육용 랩입니다. 고정된 EDK II 리비전을 빌드하고, QEMU에서 UEFI 가상 머신을 부팅하며, 서비스 거부(DoS) 및 메모리 손상을 조사하기 위한 Python 개념 증명 스크립트를 포함합니다.
참고 자료: EDK II 보안 권고 · 업스트림 수정
dnsmasq, ip/tc(일반적으로 iproute2 또는 iproute에서 제공), 그리고 sudo/root 권한.압축을 푼 아카이브에서:
cd pxe-lab-public
chmod +x *.sh
./start.sh
런처는 의존성을 확인하고, 누락된 패키지 설치를 제안하며, 필요 시 edk2-stable202608(커밋 2970e5699ba6267f3384ffab20f96647578aebc8)을 빌드하고 VM 제어 메뉴를 엽니다. start.sh나 펌웨어 빌드를 sudo로 실행하지 마십시오.
유용한 명령:
./start.sh --check # 환경 확인
./start.sh --build-only # QEMU를 시작하지 않고 고정된 펌웨어만 빌드
./start.sh --system # 대신 시스템 OVMF 사용 (고정된 취약점 검증에는 부적합)
./lab_run.sh --help # 네트워킹, 캡처, QEMU 옵션 표시
기본 QEMU 사용자 모드 네트워크는 격리되어 있으며 root 권한이 필요하지 않습니다. 패킷 캡처를 기록하려면 펌웨어를 빌드한 후 ./lab_run.sh --pcap session.pcap을 실행하십시오.
PoC 스크립트는 브리지 모드를 요구하며, 기본 QEMU 사용자 모드 네트워크에는 패킷을 주입할 수 없습니다.
먼저 일반 사용자로 ./start.sh --build-only를 실행하여 펌웨어를 빌드하십시오. 그런 다음 한 터미널에서:
cd pxe-lab-public
sudo ./lab.sh --network bridge --namespace pxelab
메뉴에서 **1 (Start)**을 선택하십시오. 별도의 터미널에서 압축을 푼 아카이브의 루트에서 다음 중 하나를 실행하십시오:
cd PoC-DoS
sudo bash ./start_dos.sh
또는 실험적 메모리 손상 / RCE 시도의 경우:
cd PoC-RCE
sudo bash ./start_rce.sh
이 실험들은 격리된 가상 PXE 환경에 조작된 트래픽을 전송하며, 펌웨어 멈춤, 충돌 또는 예외를 유발할 수 있습니다. 충돌이나 손상된 레지스터 값은 임의 코드 실행이 성공했다는 증거가 아닙니다. RCE 스크립트는 실험적 시도이며 검증된 RCE 익스플로잇이 아닙니다. 결과는 시스템 및 펌웨어 빌드에 따라 달라질 수 있습니다.
랩 인프라(설정, 빌드, VM 관리 코드)는 대규모 언어 모델(LLM)의 도움을 받아 생성되었으며 저자가 테스트했습니다. DoS 및 RCE 개념 증명 스크립트는 저자가 직접 작성하고 LLM 어시스턴트와 함께 테스트했습니다. 테스트는 정확성, 안전성, 재현성 또는 다른 시스템과의 호환성을 보장하지 않습니다.
이 코드는 소유하고 통제하는 장비에서, 격리된 테스트 환경에서만 사용하십시오. 제3자의 시스템, 네트워크 또는 장치에 대해 사용하지 마십시오.
모든 코드와 스크립트는 “있는 그대로(AS IS)” 제공되며, 어떠한 종류의 보증도 없습니다. 관련 법률이 허용하는 최대 범위 내에서, 저자는 이 저장소의 사용으로 인해 발생하는 오류, 오작동, 손해, 데이터 손실 또는 그 결과에 대한 책임을 부인합니다. 사용자는 자신의 행동과 관련 법률 준수에 대해 전적으로 책임이 있습니다.