
Kit de hacking DIY de PCI Express para Xilinx SP605. Este repositorio también alberga Hyper-V Backdoor y Boot Backdoor, consulta el readme para enlaces e información.
Información general
Contenido
Configuración de la placa SP605
Configuración del software
Ejemplos
Uso de la API de Python
Ataques DMA prácticos
Ataques a la Option ROM
Solución de problemas
Compilación del proyecto desde el código fuente
Este repositorio contiene un conjunto de herramientas y pruebas de concepto relacionadas con el bus PCI-E y los ataques DMA. Incluye un diseño HDL que implementa un dispositivo endpoint PCI-E gen 1.1 controlable por software para el kit de evaluación Xilinx SP605 con FPGA Spartan-6. En comparación con el popular USB3380EVB, este diseño permite operar con paquetes TLP (Transaction Level Packets) sin procesar del bus PCI-E y realizar operaciones completas de lectura/escritura de memoria de 64 bits. Para demostrar casos de uso aplicados del diseño, hay una herramienta para ataques DMA de pre-arranque en máquinas basadas en UEFI que permite ejecutar controladores UEFI DXE arbitrarios durante la inicialización de la plataforma.
Hay un programa que muestra cómo usar ataques DMA de pre-arranque para inyectar un backdoor de Hyper-V VM exit handler en Windows 10 y 11 con seguridad basada en virtualización habilitada y que se ejecutan en una plataforma con UEFI Secure Boot habilitado. El PoC de Hyper-V Backdoor proporcionado puede ser útil para fines de ingeniería inversa y desarrollo de exploits; proporciona una interfaz para inspeccionar el estado del hipervisor (VMCS, memoria física/virtual, registros, etc.) desde la partición invitada y realizar ataques de escape de VM de invitado a host.
Otro programa muestra cómo usar ataques DMA de pre-arranque para inyectar código arbitrario en modo usuario o modo kernel en el sistema operativo Windows mediante el secuestro de su proceso de arranque usando Boot Backdoor. Este programa también puede funcionar con DMA Shell − es un payload de Boot Backdoor que permite ejecutar comandos de consola a través del dispositivo PCI-E malicioso, transferir archivos y cargar ejecutables de terceros en el sistema operativo objetivo en tiempo de ejecución.
💾 La parte de Hyper-V Backdoor de este proyecto tiene muchas otras características y opciones de implementación además de las descritas en este documento; puedes usarla por separado de las herramientas de ataque DMA, incluso sin ningún hardware especial: consulta su documentación
💾 La parte de Boot Backdoor de este proyecto tiene muchas otras características y opciones de implementación además de las descritas en este documento; puedes usarla por separado de las herramientas de ataque DMA, incluso sin ningún hardware especial: consulta su documentación
💾 Las herramientas Python de este proyecto y los diseños FPGA para las placas SP605, ZC706 y PicoEVB también se pueden usar para implementar SMM Backdoor Next Gen con ataques DMA de pre-arranque. Consulta su documentación para más detalles técnicos.
🛠️ Las herramientas Python y los payloads de este proyecto, incluidos Hyper-V Backdoor y Boot Backdoor, también se pueden usar con placas basadas en el SoC Xilinx Zynq-7000. Existe un proyecto separado de diseño de ataques DMA para el kit de evaluación Xilinx ZC706.
🛠️ Las herramientas Python y los payloads de este proyecto, incluidos Hyper-V Backdoor y Boot Backdoor, también se pueden usar con la placa de desarrollo PicoEVB. Existe un proyecto Pico DMA aparte − un implante de hardware totalmente autónomo para ataques DMA de pre-arranque en la ranura M.2 que puede ejecutar controladores UEFI DXE arbitrarios como payload.
s6_pcie_microblaze.xise − Archivo de proyecto de Xilinx ISE.
microblaze/pcores/axis_pcie_v1_00_a/ − Módulo periférico personalizado que permite conectar el bloque de endpoint PCI Express integrado de la FPGA Spartan-6 como flujo de TLP sin procesar al núcleo del procesador soft MicroBlaze.
sdk/srec_bootloader_0/ − Bootloader simple para el procesador soft MicroBlaze; utiliza el formato de imagen SREC y la memoria flash lineal integrada de la SP605 para cargar y almacenar el programa principal de MicroBlaze.
sdk/main_0/ − Programa principal para el procesador soft MicroBlaze; reenvía paquetes TLP sin procesar del bus PCI-E a la conexión TCP mediante el puerto Ethernet integrado de la SP605 y la pila de red lwIP.
python/pcie_lib.py − Librería Python para interactuar a través de la red con el programa principal de MicroBlaze que se ejecuta en la placa SP605; implementa varias abstracciones de bajo y alto nivel para trabajar con el nivel TLP de PCI-E desde código Python.
python/pcie_mem.py − Programa de línea de comandos que vuelca la RAM del host a la pantalla o a un archivo de salida mediante el envío de TLPs MRd.
python/pcie_mem_scan.py − Programa de línea de comandos que escanea el host objetivo en busca de rangos de memoria física accesibles a través del bus PCI-E; es útil para una auditoría de seguridad de plataformas con IOMMU habilitada (ejemplos: 1, 2, 3, 4).
python/uefi_backdoor_simple.py − Programa de línea de comandos para ataque DMA de pre-arranque que inyecta un controlador UEFI ficticio en la secuencia de arranque de la máquina objetivo.
python/uefi_backdoor_hv.py − Programa de línea de comandos para ataque DMA de pre-arranque que inyecta un backdoor de Hyper-V VM exit handler en la secuencia de arranque del sistema objetivo.
python/uefi_backdoor_boot.py − Programa de línea de comandos para ataque DMA de pre-arranque que inyecta Boot Backdoor en la secuencia de arranque del sistema objetivo.
python/payloads/DmaBackdoorSimple/ − Código fuente del controlador UEFI DXE ficticio para usar con uefi_backdoor_simple.py.
python/payloads/DmaBackdoorHv/ − Código fuente del controlador UEFI DXE para usar con uefi_backdoor_hv.py; implementa la funcionalidad de Hyper-V Backdoor.
python/payloads/DmaBackdoorBoot/ − Código fuente del controlador UEFI DXE para usar con uefi_backdoor_boot.py; implementa la funcionalidad de Boot Backdoor.