
Masterarbeit-Forschung zu CVE-2024-51324 (BYOVD). Fortschrittlicher Exploit mit 4 Betriebsmodi (SCANNER, LOADER, KILLER, CLEANUP), SHA-256-Treiberverifizierung und vollständiger akademischer Dokumentation. Portfolio-Arbeit behandelt Windows-Kernel-Treibersicherheit, IOCTL-Reverse-Engineering und die Ausnutzung von Bring Your Own Vulnerable Driver.
Bring Your Own Vulnerable Driver (BYOVD) — Baidu Antivirus
BdApiUtil64.sys
Drei undokumentierte Kernel-Primitive: Prozessbeendigung, beliebiges Dateilöschen und Löschen von in Benutzung befindlichen Dateien mitSectionObjectPointer-Umgehung
Betroffen: Baidu Antivirus v5.2.3.116083 (BdApiUtil64.sys)
Laden des angreifbaren Treibers in den Kernel (LOADER-Modus)
Dieses Repository enthält meine Masterarbeit-Forschung zu CVE-2024-51324, einer Bring Your Own Vulnerable Driver (BYOVD)-Schwachstelle im Kernel-Treiber BdApiUtil64.sys von Baidu Antivirus.
Der NVD-Eintrag weist einen CVSS-v3.1-Basisscore von 3.8 (Niedrig) mit dem Vektor AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N und CWE-269 (Fehlerhaftes Berechtigungsmanagement) aus. Dieser Score spiegelt nicht die in dieser Forschung dokumentierte lokale Angriffsrealität wider: Sobald der Treiber von einem Administrator geladen wurde (ein einmaliger Schritt, der durch Social Engineering oder jede lokale Rechteausweitung erreichbar ist), kann jeder nachfolgende Prozess – einschließlich sandboxierter Prozesse oder Prozesse von Standardbenutzern – IOCTLs ohne weitere Berechtigungsprüfungen senden. Ein forscherbewerteter CVSS-v3.1-Score von 7.8 (Hoch) mit dem Vektor AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H erfasst die Ausbeutungsrealität nach dem Laden genauer. Beide Scores werden in der technischen Dokumentation diskutiert.
Der Treiber erstellt das Geräteobjekt \Device\BdApiUtil mit SecurityDescriptor = NULL, sodass jeder Prozess unabhängig von der Integritätsstufe einen Handle öffnen und IOCTLs senden kann. Die statische Analyse mittels Ghidra 11.0.3 zeigt, dass der interne Mechanismus bedeutender ist als bisher dokumentiert: Der Treiber verwendet PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode) anstelle von ZwOpenProcess und umgeht SeAccessCheck vollständig. Drei IOCTL-Primitive wurden vollständig charakterisiert, von denen zwei keine vorherige öffentliche Dokumentation haben.
| Aspekt | Beschreibung |
|---|---|
| Technische Korrektur | ZwOpenProcess fehlt in der Importtabelle; der tatsächliche Mechanismus ist PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode), der SeAccessCheck bedingungslos umgeht |
| Drei dokumentierte Primitiven | Prozessbeendigung (0x800024B4), beliebiges Dateilöschen (0x80002648) und Löschen von in Benutzung befindlichen Dateien mit SectionObjectPointer-Umgehung (0x8000264C) – die letzten beiden haben keine vorherige öffentliche Dokumentation |
| Vier Betriebsmodi | LOADER, KILLER, SCANNER und CLEANUP – vollständige Lebenszyklusverwaltung |
| SHA-256-Verifikation | Treiber-Hash vor jedem Ladeversuch verifiziert |
| PPL-empirische Tests | 10 Versuche pro Prozesskategorie, die PPL als einzige Laufzeit-Mitigation bestätigen |
| Forensische Analyse | Ereignis-ID 7045 persistiert nach Bereinigung; Ereignis-ID 1102 als selbstbelastendes Loglösch-Artefakt |
| Erkennungsregeln | Sigma-Regel und Sysmon-Konfiguration (Ereignis-ID 6 nach Hash + Ereignis-ID 13 nach Registrierungsschlüssel) |
| CVSS-Neubewertung | Dokumentierte Diskrepanz zwischen offiziellem NVD-Score (3.8 Niedrig) und forscherbewerteter Schwere lokaler Ausbeutung (7.8 Hoch) |
CVE-2024-51324/
├── README.md
├── LICENSE
│
├── drivers/
│ └── BdApiUtil64.sys # Treiber (nicht verteilt)
│
├── exploit/
│ ├── exploit-explanation.md
│ └── byovd_killer.py # Haupt-Exploit – 4 Betriebsmodi
│
└── docs/
├── screenshots/
│ ├── 01-byovd-scan.png
│ ├── 02-byovd-scan-target.png
│ ├── 03-byovd-load.png
│ ├── 04-byovd-load-custom.png
│ ├── 05-kill-name.gif
│ ├── 06-kill-pid.gif
│ ├── 07-kill-limit.gif
│ ├── 08-dry-run.gif
│ └── 09-byovd-cleanup.png
│
└── analysis/
├── 01-root-cause.md
├── 02-driver-analysis.md # Vollständige Ghidra RE, drei Primitiven, PPL-Tests
└── 03-timeline.md
BdApiUtil64.sys (SHA-256: 47EC51B5F0EDE1E70BD66F3F0152F9EB536D534565DBB7FCC3A05F542DBE4428)python exploit/byovd_killer.py --scan
python exploit/byovd_killer.py --scan --target lsass.exe
python exploit/byovd_killer.py --load
python exploit/byovd_killer.py --load --driver C:\path\to\BdApiUtil64.sys
python exploit/byovd_killer.py --load --service-name MyService
python exploit/byovd_killer.py --kill notepad.exe
python exploit/byovd_killer.py --pid 1234
python exploit/byovd_killer.py --kill notepad.exe --max-instances 2
python exploit/byovd_killer.py --kill notepad.exe --dry-run
python exploit/byovd_killer.py --cleanup
python exploit/byovd_killer.py --cleanup --service-name MyService
| Modus | Befehl | Berechtigungen | Beschreibung |
|---|---|---|---|
| SCANNER | --scan | Jeder Benutzer | System- und Treiberstatusinformationen |
| LOADER | --load | Admin | Treiber über Kernel-Diensterstellung laden |
| KILLER | --kill / --pid | Jeder Benutzer | Prozesse über IOCTL beenden |
| CLEANUP | --cleanup | Admin | Treiberdienst stoppen und löschen |






