Les attaques DMA (Direct Memory Access) exploitent les interfaces matérielles à haut débit — Thunderbolt, PCIe, FireWire et USB4 — pour lire et écrire directement dans la mémoire physique d'une machine, sans solliciter le processeur ni le système d'exploitation. Cette capacité d'accès direct rend les DMA attacks Thunderbolt PCIe particulièrement redoutables : elles contournent l'intégralité des protections logicielles, du chiffrement de disque BitLocker ou LUKS aux mécanismes d'authentification de session, en extrayant les clés maîtresses résidant en clair dans la RAM. Un attaquant disposant d'un accès physique de quelques minutes peut ainsi dumper l'intégralité de la mémoire, injecter du code malveillant dans le noyau ou déverrouiller un poste chiffré. Malgré les contre-mesures modernes comme l'IOMMU et Kernel DMA Protection, de nombreux équipements restent vulnérables à ces techniques d'exploitation matérielle.

En bref

  • Les attaques DMA permettent la lecture/écriture de TOUTE la mémoire physique via Thunderbolt, PCIe ou FireWire
  • PCILeech + FPGA (Screamer/Squirrel) est le standard pour les audits DMA professionnels
  • BitLocker sans PIN de pre-boot est vulnérable — la FVEK est en RAM et extractible par DMA
  • L'IOMMU (VT-d/AMD-Vi) est la mitigation principale mais n'est pas toujours activé par défaut
  • Thunderbolt 4 impose Security Level 2 minimum mais des contournements via ATS existent
\

En bref

  • Vecteurs DMA : Thunderbolt 3/4, PCIe, FireWire IEEE 1394, USB4 et M.2/NVMe
  • Outils : PCILeech, Inception, FPGA-based DMA platforms (Screamer, Squirrel)
  • Attaques : extraction de clés BitLocker/FileVault, bypass écran de verrouillage, injection kernel
  • Mitigations : IOMMU/VT-d, Thunderbolt Security Levels, Kernel DMA Protection, Secure Boot
  • Méthodologie de test physique pour les audits de sécurité matérielle
\
DMA (Direct Memory Access) — Mécanisme matériel permettant aux périphériques de lire et écrire directement dans la mémoire RAM sans intervention du processeur. Conçu pour les transferts de données haute performance, le DMA crée un vecteur d'attaque critique car il contourne toutes les protections logicielles du système d'exploitation.
\

Principes du DMA et Vecteurs d'Attaque

\

Le DMA est un mécanisme fondamental de l'architecture PC : les périphériques (carte réseau, carte graphique, contrôleur de stockage) ont besoin de transférer de grandes quantités de données vers et depuis la RAM sans solliciter le CPU à chaque octet. Le contrôleur DMA permet ces transferts directs entre le périphérique et la mémoire physique. Le problème de sécurité est évident : un périphérique malveillant peut lire ou écrire n'importe quelle adresse de la mémoire physique, accédant aux données de tous les processus, du kernel et des structures de sécurité.

\ \ \ \ \ \ \ \ \ \
InterfaceDébitAccès DMARisque
Thunderbolt 3/440 GbpsOui (PCIe tunneling)Critique
USB440-80 GbpsOui (PCIe tunneling)Critique
FireWire (IEEE 1394)800 MbpsOui (natif)Critique
ExpressCard5 Gbps (PCIe x1)Oui (PCIe direct)Critique
M.2/NVMe64 Gbps (PCIe 5.0 x4)Oui (PCIe direct)Nécessite ouverture
USB 3.x standard20 GbpsNon (sauf USB4)Faible
\

PCILeech : L'Outil de Référence

\

PCILeech est l'outil de référence pour l'exploitation DMA. Il supporte de multiples plateformes matérielles (FPGA, Thunderbolt, USB3380) et offre des fonctionnalités puissantes :

Retour terrain

Sur un test d'intrusion externe pour un groupe de BTP, j'ai exploité une CVE de 2023 sur une instance Confluence exposée sur Internet — non patchée depuis 14 mois. L'application était 'connue de l'équipe IT' comme devant être mise à jour mais la priorité n'avait jamais été accordée. En 20 minutes d'exploitation, j'avais un shell sur le serveur et accès au réseau interne. La fenêtre d'exploitation de 14 mois sur une CVE exploitée in-the-wild est malheureusement représentative.

\
# PCILeech — Exemples d'utilisation\ \ # 1. Dump de la mémoire physique complète\ pcileech dump -out memory.raw -min 0 -max 0x100000000\ \ # 2. Recherche de patterns en mémoire (clés de chiffrement)\ pcileech search -s "PRIVATE KEY" -min 0 -max 0x100000000\ \ # 3. Injection de shellcode en mémoire kernel\ pcileech kmdload -kmd LINUX_X64\ \ # 4. Bypass de l'écran de verrouillage Windows\ pcileech patch -sig wx64_intelptt_unlock\ \ # 5. Extraction de credentials (LSASS)\ pcileech lsass -out creds.txt
\

Plateformes FPGA pour Attaques DMA

\

Les plateformes FPGA sont le standard pour les attaques DMA professionnelles. Elles émulent un périphérique PCIe légitime (carte réseau, contrôleur USB) et interceptent/injectent les transactions DMA :

\
    \
  • Screamer (PCIe) : carte PCIe basée sur Xilinx Artix-7. Se connecte via le slot PCIe x1/x4 et émule n'importe quel device ID. Compatible PCILeech avec des débits de lecture de 2+ GB/s.
  • \
  • Squirrel (M.2) : facteur de forme M.2 — se branche dans le slot M.2 d'un laptop. Discret et efficace pour les audits physiques.
  • \
  • USB3380-based : carte USB-to-PCIe bridge. Moins performante mais bon marché (~50€) et facilement disponible.
  • \
  • LambdaConcept PCIe Screamer : plateforme open-source avec firmware PCILeech. Inclut un sniffer PCIe pour l'analyse passive du trafic.
  • \
\

Extraction de Clés BitLocker via DMA

\

L'une des attaques DMA les plus impactantes cible BitLocker (chiffrement de disque Windows). Quand BitLocker utilise le TPM seul (sans PIN de pre-boot), la clé de chiffrement (FVEK — Full Volume Encryption Key) est déchiffrée au boot et stockée en mémoire RAM. Un attaquant DMA peut :

\
    \
  1. Connecter un device DMA au système allumé (ou en veille S3)
  2. \
  3. Scanner la mémoire physique à la recherche du FVEK pattern
  4. \
  5. Extraire la clé — le disque peut être déchiffré hors-ligne
  6. \
\

Attaques FireWire Historiques

\

FireWire (IEEE 1394) est l'ancêtre des attaques DMA — le protocole accorde par conception un accès DMA complet à tout périphérique connecté, sans aucune authentification. L'outil Inception automatise les attaques FireWire :

\
# Inception — bypass de l'écran de verrouillage via FireWire\ inception --target win10 # Patch la mémoire pour bypass le login\ inception --target osx # Même chose sur macOS\ inception --target linux # Et Linux\ \ # Inception modifie la routine d'authentification en mémoire\ # pour qu'elle accepte n'importe quel mot de passe
\

IOMMU/VT-d : La Mitigation Principale

\

L'IOMMU crée des tables de traduction d'adresses pour les périphériques DMA, similaires aux tables de pages du MMU pour les processus. Chaque périphérique ne peut accéder qu'aux régions de mémoire physique qui lui sont explicitement assignées. Intel VT-d et AMD AMD-Vi implémentent l'IOMMU au niveau matériel.

\
    \
  • Thunderbolt Security Levels : None (SL0, DMA libre), User (SL1, confirmation), Secure (SL2, confirmation + UUID), USB-only (SL3, pas de PCIe tunneling)
  • \
  • Kernel DMA Protection (Windows 10+) : active l'IOMMU avant le chargement des drivers Thunderbolt, bloquant le DMA pré-boot
  • \
  • DMAR ACPI table : décrit les mappings IOMMU au BIOS/UEFI. Certains BIOS ne configurent pas correctement l'IOMMU, laissant des fenêtres d'attaque
  • \
\
⚠️ Attention — Même avec l'IOMMU activé, des contournements existent : certains BIOS laissent des fenêtres DMA ouvertes pendant le boot, les drivers kernel peuvent désactiver temporairement la protection IOMMU pour un device, et les attaques par ATS (Address Translation Services) PCIe peuvent contourner l'IOMMU en exploitant les capacités de traduction du device lui-même.
\
? Conseil pratique — Pour un audit DMA, commencez par vérifier si l'IOMMU est activé : dmesg | grep -i iommu sur Linux, ou msinfo32 → Kernel DMA Protection sur Windows. Testez avec un device PCILeech USB3380 (~50€) avant d'investir dans une plateforme FPGA.
\

À retenir

  • Les attaques DMA permettent la lecture/écriture de TOUTE la mémoire physique via Thunderbolt, PCIe ou FireWire
  • PCILeech + FPGA (Screamer/Squirrel) est le standard pour les audits DMA professionnels
  • BitLocker sans PIN de pre-boot est vulnérable — la FVEK est en RAM et extractible par DMA
  • L'IOMMU (VT-d/AMD-Vi) est la mitigation principale mais n'est pas toujours activé par défaut
  • Thunderbolt 4 impose Security Level 2 minimum mais des contournements via ATS existent
\

Références externes