Was ist BYOVD (Bring-Your-Own-Vulnerable-Driver)? (Glossar)

BYOVD (Bring-Your-Own-Vulnerable-Driver) ist eine Angreifer- Technik, bei der der Angreifer einen legitim signierten, aber verwundbaren Kernel-Treiber lädt, um Kernel-Mode-Ausführung auf einem modernen Windows-Host zu erlangen. Der Treiber besteht die Signaturprüfungen, weil er signiert ist; die Schwachstelle in ihm — typischerweise ein IOCTL-Handler, der beliebigen Speicher-Lese-/Schreibzugriff an den User-Mode freigibt — ist das, was der Angreifer ausnutzt.

Berühmte Beispiele sind alte Versionen von mhyprot2.sys (Genshin Impact Anti-Cheat), gdrv.sys (Gigabyte), RTCore64.sys (MSI Afterburner) und Process Explorers procexp152.sys.

Warum es Windows-Verteidigungen umgeht#

Modernes Windows erzwingt Driver Signature Enforcement (DSE): Unsignierte Treiber können auf x64-Desktop-Builds im Produktionsmodus nicht geladen werden. BYOVD umgeht DSE vollständig, indem es Treiber verwendet, die signiert sind. Der Exploit liegt im Verhalten des Treibers, nicht in seiner Signatur-Kette.

Einmal geladen, gibt der verwundbare Treiber dem Angreifer Kernel-Mode-Primitive — typischerweise beliebigen Speicher-Lese-/ Schreibzugriff — was ausreicht, um:

  • EDR / AV durch Patchen ihrer Callbacks zu deaktivieren.
  • LSASS-Prozessspeicher zu stehlen, ohne dass MiniDumpWriteDump ausgelöst wird.
  • PPL-Flags (Protected Process Light) zu modifizieren.
  • Den eigenen unsignierten Treiber des Angreifers via Kernel-Mode- Schreibzugriff zu laden.

Wie Amcache hilft, BYOVD zu erkennen#

Der Schlüssel Root\InventoryDriverBinary von Amcache zeichnet jeden auf dem Host geladenen Treiber auf, mit:

  • DriverTimeStamp — das PE-Link-Datum des Treibers.
  • DriverSigned — ob eine gültige Signatur beansprucht wurde.
  • Hash — SHA-1 des Treiber-Binärprogramms.
  • KeyLastWriteTimestamp — wann Amcache den Eintrag aufgezeichnet hat.

Der Standard-BYOVD-Erkennungs-Filter auf *_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 KeyLastWriteTimestamp

Ein 2014 kompilierter Treiber, der heute erstmals in Amcache auftaucht, ist konstruktionsbedingt verdächtig.

Dann vergleichen Sie den Hash mit loldrivers.io — der community-gepflegten Datenbank bekannter missbrauchter Treiber. Wenn der Hash mit einem bekannten BYOVD-Eintrag übereinstimmt, haben Sie sehr hohe Konfidenz.

Für das breitere Untersuchungs-Playbook siehe Commodity-Malware mit Amcache jagen.

Verwandte Begriffe#

Verwandte Beiträge

  • Was ist SRUM (SRUDB.dat)? (Glossar)

    SRUM ist der Windows System Resource Usage Monitor — eine ESE-Datenbank, die pro Anwendung CPU-, Netzwerk- und I/O-Nutzung in Stunden-Buckets über 30-60 Tage aufzeichnet.

  • Was ist ShimCache (AppCompatCache)? (Glossar)

    ShimCache ist ein kernelseitig gepflegter Cache in der SYSTEM-Registry-Hive, der bis zu 1024 Binärprogramme aufzeichnet, die der Windows-Loader berührt hat. Anders als Amcache.

  • Was ist Amcache ProgramId? (Glossar)

    ProgramId ist der 44-stellige Anwendungs-Identitäts-Hash, den Amcache jeder logischen Anwendung zuweist. Dieselbe ProgramId auf verschiedenen Hosts bedeutet dieselbe Anwendungsinstallation.

  • Was ist Windows Prefetch? (Glossar)

    Prefetch ist der Windows-Ordner mit .pf-Dateien, der jede Binärprogramm-Ausführung aufzeichnet, mit bis zu 8-10 Run-Zeitstempeln pro Binärprogramm und den Dateien, die jedes geladen hat. Der stärkste Windows-Ausführungsbeweis.

Zurück zu allen Beiträgen