
Kit di hacking fai-da-te per PCI Express per Xilinx SP605. Questo repository ospita anche Hyper-V Backdoor e Boot Backdoor, controlla il readme per link e informazioni.
Informazioni generali
Contenuti
Configurazione della scheda SP605
Configurazione del software
Esempi
Uso dell'API Python
Attacchi DMA pratici
Attacchi Option ROM
Risoluzione dei problemi
Compilazione del progetto dal codice sorgente
Questa repository contiene un insieme di strumenti e proof of concept relativi al bus PCI-E e agli attacchi DMA. Include un progetto HDL che implementa un endpoint PCI-E gen 1.1 controllabile via software per Xilinx SP605 Evaluation Kit con FPGA Spartan-6. Rispetto alla popolare USB3380EVB, questo progetto permette di operare con i Transaction Level Packet (TLP) grezzi del bus PCI-E e di eseguire operazioni complete di lettura/scrittura della memoria a 64 bit. Per dimostrare i casi d'uso applicativi del progetto, è disponibile uno strumento per attacchi DMA pre-boot su macchine basate su UEFI che consente di eseguire driver DXE UEFI arbitrari durante l'inizializzazione della piattaforma.
È disponibile un programma che mostra come utilizzare gli attacchi DMA pre-boot per iniettare una backdoor nel VM exit handler di Hyper-V in Windows 10 e 11 con sicurezza basata sulla virtualizzazione abilitata, in esecuzione su piattaforme con UEFI Secure Boot abilitato. La PoC Hyper-V Backdoor fornita può essere utile per scopi di reverse engineering e sviluppo di exploit; fornisce un'interfaccia per l'ispezione dello stato dell'hypervisor (VMCS, memoria fisica/virtuale, registri, ecc.) dalla partizione guest e per eseguire attacchi di fuga dalla VM guest-to-host.
Un altro programma mostra come utilizzare gli attacchi DMA pre-boot per iniettare codice arbitrario in modalità utente o kernel nel sistema operativo Windows dirottando il suo processo di avvio tramite Boot Backdoor. Questo programma può funzionare anche con DMA Shell − è un payload di Boot Backdoor che consente di eseguire comandi da console tramite il dispositivo PCI-E rogue, trasferire file e caricare eseguibili di terze parti nel sistema operativo di destinazione in fase di esecuzione.
💾 La parte Hyper-V Backdoor di questo progetto ha molte altre funzionalità e opzioni di distribuzione rispetto a quelle descritte in questo documento; puoi usarla separatamente dagli strumenti di attacco DMA anche senza hardware speciale: consulta la sua documentazione
💾 La parte Boot Backdoor di questo progetto ha molte altre funzionalità e opzioni di distribuzione rispetto a quelle descritte in questo documento; puoi usarla separatamente dagli strumenti di attacco DMA anche senza hardware speciale: consulta la sua documentazione
💾 Gli strumenti Python di questo progetto e i progetti FPGA per le schede SP605, ZC706 e PicoEVB possono essere utilizzati anche per distribuire SMM Backdoor Next Gen con attacco DMA pre-boot. Consulta la sua documentazione per maggiori dettagli tecnici.
🛠️ Gli strumenti Python e i payload di questo progetto, inclusi Hyper-V Backdoor e Boot Backdoor, possono essere utilizzati anche con schede basate su Xilinx Zynq-7000 SoC. Esiste un progetto separato di design per attacchi DMA per il kit di valutazione Xilinx ZC706.
🛠️ Gli strumenti Python e i payload di questo progetto, inclusi Hyper-V Backdoor e Boot Backdoor, possono essere utilizzati anche con la scheda di sviluppo PicoEVB. Esiste un progetto Pico DMA separato − un impianto hardware completamente autonomo per attacchi DMA pre-boot per slot M.2 in grado di eseguire driver DXE UEFI arbitrari come payload.
s6_pcie_microblaze.xise − File di progetto Xilinx ISE.
microblaze/pcores/axis_pcie_v1_00_a/ − Modulo periferico personalizzato che consente di collegare il blocco endpoint PCI Express integrato dell'FPGA Spartan-6 come flusso TLP grezzo al core del soft processor MicroBlaze.
sdk/srec_bootloader_0/ − Bootloader semplice per il soft processor MicroBlaze; utilizza il formato immagine SREC e la memoria flash lineare integrata della SP605 per caricare e memorizzare il programma principale di MicroBlaze.
sdk/main_0/ − Programma principale per il soft processor MicroBlaze; inoltra i pacchetti TLP grezzi del bus PCI-E alla connessione TCP utilizzando la porta Ethernet integrata della SP605 e lo stack di rete lwIP.
python/pcie_lib.py − Libreria Python per interagire in rete con il programma principale MicroBlaze in esecuzione sulla scheda SP605; implementa varie astrazioni di basso e alto livello per lavorare con il livello TLP del PCI-E dal codice Python.
python/pcie_mem.py − Programma a riga di comando che scarica la RAM dell'host sullo schermo o su un file di output inviando TLP MRd.
python/pcie_mem_scan.py − Programma a riga di comando che esegue la scansione dell'host di destinazione alla ricerca di intervalli di memoria fisica accessibili tramite il bus PCI-E; è utile per un audit di sicurezza delle piattaforme con IOMMU abilitato (esempi: 1, 2, 3, 4).
python/uefi_backdoor_simple.py − Programma a riga di comando per l'attacco DMA pre-boot che inietta un driver UEFI fittizio nella sequenza di avvio della macchina di destinazione.
python/uefi_backdoor_hv.py − Programma a riga di comando per l'attacco DMA pre-boot che inietta una backdoor nel VM exit handler di Hyper-V nella sequenza di avvio del sistema di destinazione.
python/uefi_backdoor_boot.py − Programma a riga di comando per l'attacco DMA pre-boot che inietta Boot Backdoor nella sequenza di avvio del sistema di destinazione.
python/payloads/DmaBackdoorSimple/ − Codice sorgente del driver DXE UEFI fittizio da utilizzare con uefi_backdoor_simple.py.
python/payloads/DmaBackdoorHv/ − Codice sorgente del driver DXE UEFI da utilizzare con uefi_backdoor_hv.py; implementa la funzionalità Hyper-V Backdoor.
python/payloads/DmaBackdoorBoot/ − Codice sorgente del driver DXE UEFI da utilizzare con uefi_backdoor_boot.py; implementa la funzionalità Boot Backdoor.
