
Boîte à outils de hacking DIY PCI Express pour Xilinx SP605. Ce dépôt héberge également Hyper-V Backdoor et Boot Backdoor, consultez le readme pour les liens et informations.
Informations générales
Contenu
Configuration de la carte SP605
Configuration logicielle
Exemples
Utilisation de l'API Python
Attaques DMA pratiques
Attaques Option ROM
Dépannage
Construction du projet à partir du code source
Ce dépôt contient un ensemble d'outils et de preuves de concept liés au bus PCI-E et aux attaques DMA. Il comprend une conception HDL qui implémente un périphérique endpoint PCI-E gen 1.1 contrôlable par logiciel pour le Xilinx SP605 Evaluation Kit avec FPGA Spartan-6. Par rapport au populaire USB3380EVB, cette conception permet de travailler avec les paquets bruts de niveau transaction (TLP) du bus PCI-E et d'effectuer des opérations complètes de lecture/écriture mémoire 64 bits. Pour démontrer les cas d'utilisation concrets de la conception, un outil pour les attaques DMA pré-démarrage sur les machines basées sur UEFI permet d'exécuter des pilotes UEFI DXE arbitraires pendant l'initialisation de la plateforme.
Un programme montre comment utiliser les attaques DMA pré-démarrage pour injecter une backdoor de gestionnaire de VM exit Hyper-V dans Windows 10 et 11 avec sécurité basée sur la virtualisation activée, fonctionnant sur une plateforme avec UEFI Secure Boot activé. La preuve de concept Hyper-V Backdoor fournie peut être utile pour la rétro-ingénierie et le développement d'exploits ; elle fournit une interface pour inspecter l'état de l'hyperviseur (VMCS, mémoire physique/virtuelle, registres, etc.) depuis la partition invitée et effectuer des attaques d'évasion de machine virtuelle de l'invité vers l'hôte.
Un autre programme montre comment utiliser les attaques DMA pré-démarrage pour injecter du code arbitraire en mode utilisateur ou en mode noyau dans le système d'exploitation Windows en détournant son processus de démarrage à l'aide de Boot Backdoor. Ce programme peut également fonctionner avec DMA Shell − c'est un payload Boot Backdoor qui permet d'exécuter des commandes console via le périphérique PCI-E malveillant, de transférer des fichiers et de charger des exécutables tiers dans le système d'exploitation cible au moment de l'exécution.
💾 La partie Hyper-V Backdoor de ce projet possède de nombreuses autres fonctionnalités et options de déploiement que celles décrites dans ce document ; vous pouvez l'utiliser séparément des outils d'attaque DMA, même sans matériel spécial : consultez sa documentation
💾 La partie Boot Backdoor de ce projet possède de nombreuses autres fonctionnalités et options de déploiement que celles décrites dans ce document ; vous pouvez l'utiliser séparément des outils d'attaque DMA, même sans matériel spécial : consultez sa documentation
💾 Les outils Python de ce projet et les conceptions FPGA pour les cartes SP605, ZC706 et PicoEVB peuvent également être utilisés pour déployer SMM Backdoor Next Gen avec une attaque DMA pré-démarrage. Consultez sa documentation pour plus de détails techniques.
🛠️ Les outils Python et les payloads de ce projet, y compris Hyper-V Backdoor et Boot Backdoor, peuvent également être utilisés avec les cartes basées sur le SoC Xilinx Zynq-7000. Il existe un projet séparé de conception d'attaques DMA pour le kit d'évaluation Xilinx ZC706.
🛠️ Les outils Python et les payloads de ce projet, y compris Hyper-V Backdoor et Boot Backdoor, peuvent également être utilisés avec la carte de développement PicoEVB. Il existe un projet Pico DMA séparé − implant matériel d'attaque DMA pré-démarrage entièrement autonome pour emplacement M.2, capable d'exécuter des pilotes UEFI DXE arbitraires en tant que payload.
s6_pcie_microblaze.xise − Fichier de projet Xilinx ISE.
microblaze/pcores/axis_pcie_v1_00_a/ − Module périphérique personnalisé qui permet de connecter le bloc endpoint PCI Express intégré du FPGA Spartan-6 en tant que flux TLP brut au cœur du processeur logiciel MicroBlaze.
sdk/srec_bootloader_0/ − Bootloader simple pour le processeur logiciel MicroBlaze ; il utilise le format d'image SREC et la mémoire flash linéaire embarquée du SP605 pour charger et stocker le programme principal MicroBlaze.
sdk/main_0/ − Programme principal pour le processeur logiciel MicroBlaze ; il transmet les paquets TLP bruts du bus PCI-E vers la connexion TCP en utilisant le port Ethernet embarqué du SP605 et la pile réseau lwIP.
python/pcie_lib.py − Bibliothèque Python pour interagir en réseau avec le programme MicroBlaze principal exécuté sur la carte SP605 ; elle implémente diverses abstractions de bas et haut niveau pour travailler avec la couche TLP de PCI-E depuis le code Python.
python/pcie_mem.py − Programme en ligne de commande qui extrait la RAM de l'hôte vers l'écran ou un fichier de sortie en envoyant des TLP MRd.
python/pcie_mem_scan.py − Programme en ligne de commande qui analyse l'hôte cible pour trouver les plages de mémoire physique accessibles via le bus PCI-E ; utile pour un audit de sécurité des plateformes avec IOMMU activé (exemples : 1, 2, 3, 4).
python/uefi_backdoor_simple.py − Programme en ligne de commande pour attaque DMA pré-démarrage qui injecte un pilote UEFI factice dans la séquence de démarrage de la machine cible.
python/uefi_backdoor_hv.py − Programme en ligne de commande pour attaque DMA pré-démarrage qui injecte la backdoor de gestionnaire de VM exit Hyper-V dans la séquence de démarrage du système cible.
python/uefi_backdoor_boot.py − Programme en ligne de commande pour attaque DMA pré-démarrage qui injecte Boot Backdoor dans la séquence de démarrage du système cible.
python/payloads/DmaBackdoorSimple/ − Code source du pilote UEFI DXE factice à utiliser avec uefi_backdoor_simple.py.
python/payloads/DmaBackdoorHv/ − Code source du pilote UEFI DXE à utiliser avec uefi_backdoor_hv.py ; il implémente la fonctionnalité Hyper-V Backdoor.
python/payloads/DmaBackdoorBoot/ − Code source du pilote UEFI DXE à utiliser avec uefi_backdoor_boot.py ; il implémente la fonctionnalité Boot Backdoor.