Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
s6_pcie_microblaze — Xilinx SP605용 PCI Express DIY 해킹 툴킷. 이 저장소는 Hyper-V Backdoor와 Boot Backdoor가 있는 곳이기도 합니다. 링크와 정보는 readme를 확인하세요. | Kitploit
도구/GitHubGitHub/cr4sh/s6_pcie_microblaze
ExploitationData ExfiltrationPost-ExploitationHardware HackingCommand and ControlRed TeamingPayload Development
GitHubcr4sh/s6_pcie_microblaze

s6_pcie_microblaze

Xilinx SP605용 PCI Express DIY 해킹 툴킷. 이 저장소는 Hyper-V Backdoor와 Boot Backdoor가 있는 곳이기도 합니다. 링크와 정보는 readme를 확인하세요.

저장소 보기
880167206개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

PCI Express DIY 해킹 툴킷

일반 정보
목차
SP605 보드 구성
소프트웨어 구성
예제
Python API 사용하기
실용적인 DMA 공격
Option ROM 공격
문제 해결
소스 코드에서 프로젝트 빌드하기

일반 정보

이 저장소에는 PCI-E 버스 및 DMA 공격과 관련된 도구와 개념 증명(proof of concept) 세트가 포함되어 있습니다. Spartan-6 FPGA 기반 Xilinx SP605 Evaluation Kit용 소프트웨어로 제어 가능한 PCI-E gen 1.1 엔드포인트 디바이스를 구현하는 HDL 설계가 포함됩니다. 널리 사용되는 USB3380EVB와 비교하여 이 설계는 PCI-E 버스의 원시 TLP(트랜잭션 레벨 패킷)로 작동하고 전체 64비트 메모리 읽기/쓰기 작업을 수행할 수 있습니다. 설계의 실제 사용 사례를 보여주기 위해 플랫폼 초기화 중에 임의의 UEFI DXE 드라이버를 실행할 수 있는 UEFI 기반 머신용 사전 부팅 DMA 공격 도구가 있습니다.

프로그램이 사전 부팅 DMA 공격을 사용하여 UEFI Secure Boot가 활성화된 플랫폼에서 실행되는 가상화 기반 보안이 활성화된 Windows 10 및 11에 Hyper-V VM exit 핸들러 백도어를 주입하는 방법을 보여줍니다. 제공된 Hyper-V Backdoor PoC는 리버스 엔지니어링 및 익스플로잇 개발 목적으로 유용할 수 있으며, 게스트 파티션에서 하이퍼바이저 상태(VMCS, 물리/가상 메모리, 레지스터 등)를 검사하고 게스트에서 호스트로의 VM 탈출 공격을 수행할 수 있는 인터페이스를 제공합니다.

또 다른 프로그램은 사전 부팅 DMA 공격을 사용하여 Boot Backdoor로 부팅 프로세스를 가로채 Windows 운영 체제에 임의의 사용자 모드 또는 커널 모드 코드를 주입하는 방법을 보여줍니다. 이 프로그램은 DMA Shell과 함께 작동할 수도 있습니다. DMA Shell은 악성 PCI-E 디바이스를 통해 콘솔 명령을 실행하고, 파일을 전송하고, 런타임에 타사 실행 파일을 대상 운영 체제에 로드할 수 있는 Boot Backdoor 페이로드입니다.

💾 이 프로젝트의 Hyper-V Backdoor 부분에는 이 문서에 설명된 것보다 더 많은 기능과 배포 옵션이 있으며, 특별한 하드웨어 없이도 DMA 공격 도구와 별도로 사용할 수 있습니다: 해당 문서를 확인하세요

💾 이 프로젝트의 Boot Backdoor 부분에는 이 문서에 설명된 것보다 더 많은 기능과 배포 옵션이 있으며, 특별한 하드웨어 없이도 DMA 공격 도구와 별도로 사용할 수 있습니다: 해당 문서를 확인하세요

💾 이 프로젝트의 Python 도구와 SP605, ZC706 및 PicoEVB 보드용 FPGA 설계는 사전 부팅 DMA 공격으로 SMM Backdoor Next Gen을 배포하는 데에도 사용할 수 있습니다. 자세한 기술 내용은 해당 문서를 확인하세요.

🛠️ 이 프로젝트의 Python 도구 및 페이로드(Hyper-V Backdoor 및 Boot Backdoor 포함)는 Xilinx Zynq-7000 SoC 기반 보드에서도 사용할 수 있습니다. Xilinx ZC706 평가 키트용 DMA 공격 설계에는 별도의 프로젝트가 있습니다.

🛠️ 이 프로젝트의 Python 도구 및 페이로드(Hyper-V Backdoor 및 Boot Backdoor 포함)는 PicoEVB 개발 보드에서도 사용할 수 있습니다. 별도의 Pico DMA 프로젝트 − M.2 슬롯용 완전 자율형 사전 부팅 DMA 공격 하드웨어 임플란트로, 임의의 UEFI DXE 드라이버를 페이로드로 실행할 수 있습니다.

목차

  • s6_pcie_microblaze.xise − Xilinx ISE 프로젝트 파일입니다.

  • microblaze/pcores/axis_pcie_v1_00_a/ − Spartan-6 FPGA의 PCI Express 통합 엔드포인트 블록을 원시 TLP 스트림으로 MicroBlaze 소프트 프로세서 코어에 연결할 수 있게 해주는 커스텀 주변 장치 모듈입니다.

  • sdk/srec_bootloader_0/ − MicroBlaze 소프트 프로세서용 간단한 부트로더로, SREC 이미지 형식과 SP605의 온보드 리니어 플래시 메모리를 사용하여 기본 MicroBlaze 프로그램을 로드하고 저장합니다.

  • sdk/main_0/ − MicroBlaze 소프트 프로세서용 메인 프로그램으로, SP605의 온보드 이더넷 포트와 lwIP 네트워크 스택을 사용하여 PCI-E 버스의 원시 TLP 패킷을 TCP 연결로 전달합니다.

  • python/pcie_lib.py − SP605 보드에서 실행되는 메인 MicroBlaze 프로그램과 네트워크로 상호 작용하는 Python 라이브러리로, Python 코드에서 PCI-E의 TLP 레벨을 다루기 위한 다양한 저수준 및 고수준 추상화를 구현합니다.

  • python/pcie_mem.py − MRd TLP를 전송하여 호스트 RAM을 화면이나 출력 파일로 덤프하는 명령줄 프로그램입니다.

  • python/pcie_mem_scan.py − PCI-E 버스를 통해 접근 가능한 물리적 메모리 범위를 대상 호스트에서 스캔하는 명령줄 프로그램으로, IOMMU가 활성화된 플랫폼의 보안 감사에 유용합니다 (예: 1, 2, 3, 4).

  • python/uefi_backdoor_simple.py − 대상 머신 부팅 시퀀스에 더미 UEFI 드라이버를 주입하는 사전 부팅 DMA 공격용 명령줄 프로그램입니다.

  • python/uefi_backdoor_hv.py − 대상 시스템 부팅 시퀀스에 Hyper-V VM exit 핸들러 백도어를 주입하는 사전 부팅 DMA 공격용 명령줄 프로그램입니다.

  • python/uefi_backdoor_boot.py − 대상 시스템 부팅 시퀀스에 Boot Backdoor를 주입하는 사전 부팅 DMA 공격용 명령줄 프로그램입니다.

  • python/payloads/DmaBackdoorSimple/ − uefi_backdoor_simple.py와 함께 사용할 더미 UEFI DXE 드라이버의 소스 코드입니다.

  • python/payloads/DmaBackdoorHv/ − uefi_backdoor_hv.py와 함께 사용할 UEFI DXE 드라이버의 소스 코드로, Hyper-V Backdoor 기능을 구현합니다.

  • python/payloads/DmaBackdoorBoot/ − uefi_backdoor_boot.py와 함께 사용할 UEFI DXE 드라이버의 소스 코드로, Boot Backdoor 기능을 구현합니다.

SP605 보드 구성

Xilinx UG526 문서(일명 SP605 하드웨어 사용자 가이드)는 이 멋진 보드의 사용 및 구성에 대해 더 자세히 알고 싶다면 가장 좋은 참고 자료입니다.

  1. 온보드 SPI 플래시 칩에서 비트스트림을 로드하려면 SW1 스위치를 1-ON, 2-OFF 위치로 돌려 SP605를 구성해야 합니다.

  2. 이제 FPGA 비트스트림을 SPI 플래시에 작성해야 합니다. Xilinx iMPACT 유틸리티를 사용하여 JTAG로 수행하려면 s6_pcie_microblaze.mcs 파일을 사용하고 (이 튜토리얼 참조), SP605의 J17 헤더에 연결된 외부 SPI 플래시 프로그래머를 사용하려면 s6_pcie_microblaze.bin 파일을 사용하세요 (가장 빠르고 편리한 방법입니다).

flashrom 호환 SPI 플래시 프로그래머를 사용하는 경우 flash_to_spi.py 프로그램을 flashrom 래퍼로 사용할 수 있습니다:``` $ ./flash_to_spi.py linux_spi:dev=/dev/spidev1.0 s6_pcie_microblaze.bin Using region: "main". Calibrating delay loop... OK. Found Winbond flash chip "W25Q64.V" (8192 kB, SPI) on linux_spi. Reading old flash chip contents... done. Erasing and writing flash chip... Warning: Chip content is identical to the requested image. Erase/write done.

3) 이전 단계에서 SPI flash에 기록된 Bitstream 파일에는 MicroBlaze 코어용 커스텀 부트로더가 포함되어 있습니다 (자세한 내용은 [bootloader.c](https://github.com/Cr4sh/s6_pcie_microblaze/blob/master/sdk/srec_bootloader_0/src/bootloader.c) 참조). 이 부트로더를 사용하면 보드 옵션을 구성하고 SP605의 UART 포트를 통해 linear flash에 메인 프로그램을 기록할 수 있습니다.

업데이트 모드로 MicroBlaze를 부팅하려면 SPI flash 프로그래머를 분리하고 `SW4` 푸시버튼 스위치를 누른 상태에서 보드에 전원을 공급한 다음, 활성 업데이트 모드를 나타내는 `DS6` LED가 켜지면 `SW4`를 놓으십시오.

4) linear flash에 메인 프로그램을 기록하려면 (자세한 내용은 [main.c](https://github.com/Cr4sh/s6_pcie_microblaze/blob/master/sdk/main_0/src/main.c) 참조) 컴퓨터를 SP605의 UART 브리지 USB 포트에 연결하고 `--flash` 옵션과 함께 `bootloader_ctl.py` 프로그램을 실행해야 합니다:```
$ easy_install pyserial
$ ./python/bootloader_ctl.py /dev/ttyUSB0 --flash sdk/main_0/Debug/main_0.srec
[+] Opening device "/dev/ttyUSB0"...
[+] Flasing 339852 bytes from "sdk/main_0/Debug/main_0.srec"...
Erasing flash...
Writing 0x100 bytes at 0x00100000
Writing 0x100 bytes at 0x00100100

...

Writing 0x100 bytes at 0x00152e00
Writing 0x8c bytes at 0x00152f00
[+] DONE
  1. 네트워크 설정을 구성하려면 bootloader_ctl.py 프로그램을 --config 옵션과 함께 실행해야 합니다:``` $ ./python/bootloader_ctl.py /dev/ttyUSB0 --config 192.168.2.247:255.255.255.0:192.168.2.1:28472 [+] Opening device "/dev/ttyUSB0"... [+] Updating board settings...

Address: 192.168.2.247 Netmask: 255.255.255.0 Gateway: 192.168.2.1 Port: 28472

Erasing flash... Writing 0x12 bytes at 0x00000000 [+] DONE

6) 이제 업데이트 모드에서 나와 리니어 플래시에서 메인 MicroBlaze 프로그램을 부팅할 수 있습니다:```
$ ./python/bootloader_ctl.py /dev/ttyUSB0 --boot
[+] Opening device "/dev/ttyUSB0"...
[+] Exitting from update mode...
도구 다운로드