Qu'est-ce que le BYOVD (Bring-Your-Own-Vulnerable-Driver) ? (glossaire)
Le BYOVD est la manœuvre par laquelle un attaquant dépose un pilote noyau signé légitimement comportant un bug exploitable connu, le charge, et utilise le bug pour obtenir le ring 0. Driver Signature Enforcement hoche poliment la tête parce que le pilote est véritablement signé par un éditeur réel. La vulnérabilité réside à l'intérieur du pilote lui-même, généralement un handler IOCTL qui distribue lecture/écriture mémoire arbitraire à quiconque ouvre le périphérique.
Exemples célèbres : ancien mhyprot2.sys (anti-cheat de Genshin Impact), gdrv.sys (Gigabyte), RTCore64.sys (MSI Afterburner), procexp152.sys (le pilote de Process Explorer). La liste sur loldrivers.io ne cesse de s'allonger.
Pourquoi DSE n'aide pas#
DSE vérifie la chaîne de signature. Il ne regarde pas à l'intérieur du pilote et ne raisonne pas sur sa surface IOCTL. Une fois qu'un pilote signé vulnérable est chargé, l'attaquant obtient :
- Désactiver l'EDR en patchant ses callbacks noyau.
- Lire LSASS sans déclencher les détections de type
MiniDumpWriteDump. - Modifier les bits PPL pour laisser l'outillage mode utilisateur toucher les processus protégés.
- Charger un pilote attaquant complètement non signé en écrivant dans la mémoire noyau.
La blocklist de pilotes recommandée par Microsoft existe pour cela, et sur la plupart des SKU elle est optionnelle ou seulement partiellement activée par défaut.
Comment Amcache attrape le BYOVD#
Root\InventoryDriverBinary contient un enregistrement par pilote chargé par le système. Les champs importants :
DriverTimeStamp: la date de lien PE du pilote.DriverSigned: l'indicateur de signature.Hash: SHA-1 du binaire du pilote.KeyLastWriteTimestamp: quand l'appraiser a écrit l'enregistrement.
Le motif est simple : signé + DriverTimeStamp ancien + KeyLastWriteTimestamp récent. Un pilote compilé en 2014 qui apparaît pour la première fois mardi dernier dans votre hive a, par construction, la forme d'un BYOVD.
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 DriverName, DriverTimeStamp, KeyLastWriteTimestamp, Hash, Service |
Sort-Object KeyLastWriteTimestampRecoupez les hashes restants avec loldrivers.io. Une correspondance est presque diagnostique.
Pour le workflow complet, voir Chasser les malwares courants avec Amcache.
Termes liés#
Articles liés
- Qu'est-ce que SRUM (SRUDB.dat) ? (glossaire)
SRUM est la base ESE que Windows utilise pour suivre l'usage des ressources par application, par heure, sur 30 à 60 jours. Le seul artefact Windows avec des totaux d'octets réseau par application. Critique pour l'exfiltration.
- Qu'est-ce que Shimcache (AppCompatCache) ? (glossaire)
Shimcache est le cache du loader maintenu par le noyau dans la ruche SYSTEM. 1024 entrées, pas de hash, périmé jusqu'au redémarrage. Différent d'Amcache ; appariez-les.
- Qu'est-ce que le ProgramId Amcache ? (glossaire)
ProgramId est le hash d'identité d'application de 44 caractères qu'Amcache stocke. Stable entre hôtes pour la même installation. Attrape les recompilations et renommages que Hash rate.
- Qu'est-ce que Windows Prefetch ? (glossaire)
Windows Prefetch est le répertoire de fichiers .pf qui prouve l'exécution. Jusqu'à 8-10 temps d'exécution par binaire plus les fichiers chargés dans les dix premières secondes. La preuve d'exécution la plus forte sous Windows.