Qu'est-ce que BYOVD (Bring-Your-Own-Vulnerable-Driver) ? (glossaire)
BYOVD (Bring-Your-Own-Vulnerable-Driver) est une technique d'attaquant dans laquelle l'attaquant charge un pilote noyau légitimement signé mais vulnérable pour obtenir une exécution en mode noyau sur un hôte Windows moderne. Le pilote passe les contrôles de signature parce qu'il est signé ; la vulnérabilité à l'intérieur — typiquement un handler IOCTL qui expose des lectures/écritures mémoire arbitraires au mode utilisateur — est ce que l'attaquant exploite.
Des exemples célèbres incluent d'anciennes versions de mhyprot2.sys (anti-triche
Genshin Impact), gdrv.sys (Gigabyte), RTCore64.sys (MSI
Afterburner) et procexp152.sys de Process Explorer.
Pourquoi cela contourne les défenses Windows#
Windows moderne applique Driver Signature Enforcement (DSE) : les pilotes non signés ne peuvent pas se charger sur les builds desktop x64 en mode production. BYOVD contourne entièrement DSE en utilisant des pilotes qui sont signés. L'exploit est dans le comportement du pilote, pas dans sa chaîne de signature.
Une fois chargé, le pilote vulnérable donne à l'attaquant des primitives en mode noyau — typiquement des lectures/écritures mémoire arbitraires — ce qui suffit pour :
- Désactiver l'EDR / AV en patchant leurs callbacks.
- Voler la mémoire du processus LSASS sans déclencher
MiniDumpWriteDump. - Modifier les flags Protected Process Light (PPL).
- Charger le propre pilote non signé de l'attaquant via écriture en mode noyau.
Comment Amcache aide à détecter BYOVD#
La clé Root\InventoryDriverBinary d'Amcache enregistre chaque pilote
chargé sur l'hôte, avec :
DriverTimeStamp— la date de link PE du pilote.DriverSigned— s'il revendiquait une signature valide.Hash— SHA-1 du binaire du pilote.KeyLastWriteTimestamp— quand Amcache a enregistré l'entrée.
Le filtre standard de détection BYOVD sur
*_DriverBinaries.csv :
Import-Csv .\HOST_amcache_DriverBinaries.csv |
Where-Object {
$_.DriverSigned -eq 'True' -and
[DateTime]$_.DriverTimeStamp -lt (Get-Date).AddYears(-2) -and
[DateTime]$_.KeyLastWriteTimestamp -gt (Get-Date).AddDays(-30)
} |
Select-Object DriverName, DriverTimeStamp, KeyLastWriteTimestamp, Hash, Service |
Sort-Object KeyLastWriteTimestampUn pilote compilé en 2014 qui apparaît pour la première fois dans Amcache aujourd'hui est suspect par construction.
Ensuite, croisez le hash avec loldrivers.io — la base de données maintenue par la communauté des pilotes connus comme abusés. Si le hash correspond à une entrée BYOVD connue, vous avez une très haute confiance.
Pour le playbook d'investigation plus large, voir Chasser le malware commodity avec Amcache.
Termes apparentés#
- Amcache.hve — la ruche contenant les enregistrements de pilotes.
- DFIR triage — le workflow dans lequel la chasse BYOVD s'inscrit.
- InventoryApplicationFile — la clé équivalente en espace utilisateur.
Articles liés
- Qu'est-ce que SRUM (SRUDB.dat) ? (glossaire)
SRUM est le System Resource Usage Monitor Windows — une base de données ESE enregistrant l'utilisation CPU, réseau et E/S par application en buckets horaires sur 30-60 jours.
- Qu'est-ce que ShimCache (AppCompatCache) ? (glossaire)
ShimCache est un cache maintenu par le noyau dans la ruche du registre SYSTEM enregistrant jusqu'à 1024 binaires que le loader Windows a touchés. Différent d'Amcache.
- Qu'est-ce que le ProgramId Amcache ? (glossaire)
ProgramId est le hash d'identité applicative de 44 caractères qu'Amcache attribue à chaque application logique. Le même ProgramId sur différents hôtes signifie la même installation d'application.
- Qu'est-ce que Windows Prefetch ? (glossaire)
Prefetch est le dossier Windows de fichiers .pf enregistrant chaque exécution de binaire, avec jusqu'à 8-10 horodatages d'exécution par binaire et les fichiers que chacun a chargés. La preuve d'exécution Windows la plus forte.