Was ist BYOVD (Bring-Your-Own-Vulnerable-Driver)? (Glossar)
BYOVD ist der Schritt, bei dem ein Angreifer einen legitim signierten Kerneltreiber mit einem bekannten ausnutzbaren Bug ablegt, ihn lädt und den Bug nutzt, um Ring 0 zu erlangen. Driver Signature Enforcement nickt höflich, weil der Treiber tatsächlich von einem echten Hersteller signiert ist. Die Schwachstelle lebt im Treiber selbst, üblicherweise in einem IOCTL-Handler, der beliebigen Speicher-Lese-/Schreibzugriff an jeden verteilt, der das Gerät öffnet.
Bekannte Beispiele: altes mhyprot2.sys (Anti-Cheat von Genshin Impact), gdrv.sys (Gigabyte), RTCore64.sys (MSI Afterburner), procexp152.sys (der Treiber von Process Explorer). Die Liste auf loldrivers.io wächst weiter.
Warum DSE nicht hilft#
DSE prüft die Signaturkette. Sie schaut nicht in den Treiber hinein und reasoniert nicht über dessen IOCTL-Oberfläche. Sobald ein verwundbarer signierter Treiber geladen ist, erhält der Angreifer:
- Deaktivieren des EDR durch Patchen seiner Kernel-Callbacks.
- Lesen von LSASS, ohne Erkennungen vom Typ
MiniDumpWriteDumpauszulösen. - Umschalten von PPL-Bits, damit User-Mode-Tools geschützte Prozesse berühren können.
- Laden eines völlig unsignierten Angreifertreibers durch Schreiben in den Kernelspeicher.
Microsofts empfohlene Driver-Blocklist existiert dafür, und auf den meisten SKUs ist sie Opt-in oder nur teilweise standardmäßig aktiv.
Wie Amcache BYOVD erwischt#
Root\InventoryDriverBinary enthält einen Datensatz pro Treiber, den das System geladen hat. Die wichtigen Felder:
DriverTimeStamp: das PE-Linkdatum des Treibers.DriverSigned: das Signatur-Flag.Hash: SHA-1 der Treiberbinary.KeyLastWriteTimestamp: wann der Appraiser den Eintrag geschrieben hat.
Das Muster ist einfach: signiert + alter DriverTimeStamp + aktueller KeyLastWriteTimestamp. Ein 2014 kompilierter Treiber, der erstmals letzten Dienstag in Ihrer Hive auftauchte, hat per Konstruktion die Form eines 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 KeyLastWriteTimestampGleichen Sie die verbleibenden Hashes mit loldrivers.io ab. Ein Treffer ist nahezu diagnostisch.
Für den vollständigen Workflow siehe Commodity-Malware mit Amcache jagen.
Verwandte Begriffe#
Verwandte Beiträge
- Was ist SRUM (SRUDB.dat)? (Glossar)
SRUM ist die ESE-Datenbank, mit der Windows die Ressourcennutzung pro Anwendung stündlich über 30 bis 60 Tage verfolgt. Das einzige Windows-Artefakt mit Netzwerk-Byte-Summen pro App. Kritisch für Exfiltration.
- Was ist Shimcache (AppCompatCache)? (Glossar)
Shimcache ist der vom Kernel verwaltete Loader-Cache in der SYSTEM-Hive. 1024 Einträge, kein Hash, bis zum Neustart veraltet. Anders als Amcache; paaren Sie sie.
- Was ist Amcache ProgramId? (Glossar)
ProgramId ist der 44-Zeichen-Anwendungs-Identitätshash, den Amcache speichert. Über Hosts hinweg stabil bei derselben Installation. Erwischt Neukompilierungen und Umbenennungen, wo Hash daneben liegt.
- Was ist Windows Prefetch? (Glossar)
Windows Prefetch ist das Verzeichnis der .pf-Dateien, das Ausführung beweist. Bis zu 8-10 Laufzeiten pro Binary plus die in den ersten zehn Sekunden geladenen Dateien. Der stärkste Windows-Ausführungsnachweis.