Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-51324 — 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. | Kitploit
Tools/GitHubGitHub/devianntsec/cve-2024-51324
DefensivwerkzeugeSchwachstellenanalyseExploitationReverse EngineeringForensikPenetrationstestsPapers & ForschungLernen & BildungRed Teaming

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Binary-Exploitation
GitHubdevianntsec/cve-2024-51324

CVE-2024-51324

Repository anzeigen
13vor 4 MonatenNoch nicht geprüft

Über

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.

Teilen

CVE-2024-51324 — BYOVD: BdApiUtil64.sys · Forschung zur Masterarbeit

Platform Language License: MIT Research CVSS

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 mit SectionObjectPointer-Umgehung
Betroffen: Baidu Antivirus v5.2.3.116083 (BdApiUtil64.sys)


Laden des angreifbaren Treibers in den Kernel (LOADER-Modus)

Beschreibung

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.

Mein Beitrag

AspektBeschreibung
Technische KorrekturZwOpenProcess fehlt in der Importtabelle; der tatsächliche Mechanismus ist PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode), der SeAccessCheck bedingungslos umgeht
Drei dokumentierte PrimitivenProzessbeendigung (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 BetriebsmodiLOADER, KILLER, SCANNER und CLEANUP – vollständige Lebenszyklusverwaltung
SHA-256-VerifikationTreiber-Hash vor jedem Ladeversuch verifiziert
PPL-empirische Tests10 Versuche pro Prozesskategorie, die PPL als einzige Laufzeit-Mitigation bestätigen
Forensische AnalyseEreignis-ID 7045 persistiert nach Bereinigung; Ereignis-ID 1102 als selbstbelastendes Loglösch-Artefakt
ErkennungsregelnSigma-Regel und Sysmon-Konfiguration (Ereignis-ID 6 nach Hash + Ereignis-ID 13 nach Registrierungsschlüssel)
CVSS-NeubewertungDokumentierte Diskrepanz zwischen offiziellem NVD-Score (3.8 Niedrig) und forscherbewerteter Schwere lokaler Ausbeutung (7.8 Hoch)

Repository-Struktur

root@kitploit:~
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

Schnellstart

Voraussetzungen

  • Windows 10/11 (beliebiger Build)
  • Python 3.6+
  • BdApiUtil64.sys (SHA-256: 47EC51B5F0EDE1E70BD66F3F0152F9EB536D534565DBB7FCC3A05F542DBE4428)
  • Administratorkonto (nur LOADER- und CLEANUP-Modi)
  • Standardbenutzerkonto für KILLER-Modus ausreichend, sobald der Treiber geladen ist

Schritt 1 – System scannen

root@kitploit:~
python exploit/byovd_killer.py --scan
python exploit/byovd_killer.py --scan --target lsass.exe

Schritt 2 – Treiber laden (Admin erforderlich)

root@kitploit:~
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

Schritt 3 – Prozesse beenden (Kein Admin erforderlich)

root@kitploit:~
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

Schritt 4 – Bereinigung (Admin erforderlich)

root@kitploit:~
python exploit/byovd_killer.py --cleanup
python exploit/byovd_killer.py --cleanup --service-name MyService

Betriebsmodi

ModusBefehlBerechtigungenBeschreibung
SCANNER--scanJeder BenutzerSystem- und Treiberstatusinformationen
LOADER--loadAdminTreiber über Kernel-Diensterstellung laden
KILLER--kill / --pidJeder BenutzerProzesse über IOCTL beenden
CLEANUP--cleanupAdminTreiberdienst stoppen und löschen

Demonstrationen

SCANNER-Modus – Systeminformationen

SCANNER-Modus

SCANNER-Modus – Zielprozesssuche

SCANNER-Ziel

LOADER-Modus – Treiber laden

LOADER-Modus

LOADER-Modus – Benutzerdefinierter Pfad und Dienstname

LOADER benutzerdefiniert

KILLER-Modus – Beenden nach Prozessname

Beenden nach Name

KILLER-Modus – Beenden nach PID

Beenden nach PID

KILLER-Modus – Instanzen begrenzen

Instanzen begrenzen

KILLER-Modus – Trockenlauf (Simulation)

Trockenlauf

CLEANUP-Modus – Treiber entladen

CLEANUP-Modus


Technische Übersicht

IOCTL-Angriffsfläche – Drei Primitiven

Das Reverse Engineering von BdApiUtil64.sys mittels Ghidra 11.0.3 identifizierte eine größere Angriffsfläche als in allen früheren öffentlichen Quellen dokumentiert:

IOCTLHandlerPrimitiveFrühere Dokumentation
0x800024B4FUN_000152b0ProzessbeendigungTeilweise (Mechanismus falsch)
0x80002648FUN_00013bb0Beliebiges DateilöschenKeine
0x8000264CFUN_00013850Löschen von in Benutzung befindlichen Dateien (SectionObjectPointer-Umgehung)Keine

Primitiv 1 – Prozessbeendigung (0x800024B4)

Die Dispatch-Kette hat drei Ebenen:

root@kitploit:~
IOCTL 0x800024B4
  └─ FUN_00028630  (IRP_MJ_DEVICE_CONTROL-Dispatcher)
       └─ FUN_00015230  (Wrapper: validiert IOCTL-Code und Puffergröße = 4 Bytes)
            └─ FUN_000152b0  (Kill-Handler – Schwachstellenort)

Rekonstruierter Handler (Ghidra):

root@kitploit:~
if ((param_1 != 0) && (param_1 != 4)) {
    PsLookupProcessByProcessId(param_1, &local_res10);
    ObOpenObjectByPointer(
        local_res10,
        0x200,      // OBJ_KERNEL_HANDLE
        0,          // PassedAccessState: NULL
        0x1fffff,   // PROCESS_ALL_ACCESS
        0,          // ObjectType: NULL
        0,          // AccessMode: KernelMode  ← umgeht SeAccessCheck
        local_res18
    );
    ZwTerminateProcess(local_res18[0], 0);
}

Warum KernelMode SeAccessCheck umgeht:

root@kitploit:~
ZwOpenProcess-Pfad:
  NtOpenProcess → ObOpenObjectByName → SeAccessCheck
                                        (prüft DACL, Aufrufer-Token, Integritätsstufe)
                                        kann STATUS_ACCESS_DENIED zurückgeben

ObOpenObjectByPointer(KernelMode)-Pfad:
  SeAccessCheck  ← NICHT aufgerufen
  → PROCESS_ALL_ACCESS-Handle wird bedingungslos gewährt

ZwOpenProcess ist in der Importtabelle des Treibers nicht vorhanden. Die auf ZwOpenProcess basierende Beschreibung in früheren Quellen ist technisch falsch.

Primitiv 2 – Beliebiges Dateilöschen (0x80002648)

Der Handler FUN_00013bb0 empfängt einen Unicode-Pfad, validiert InputBufferLength ≥ 0x208 und delegiert an FUN_00013c10. Der Sub-Handler öffnet die Datei im Kernelmodus (kein SeAccessCheck auf dem Aufrufer-Token) und sendet ein IRP_MJ_SET_INFORMATION-IRP mit FileInformationClass = 0xD (FileDispositionInformation), wodurch die Datei zum Löschen markiert wird. Jede für den Kernel zugängliche Datei kann unabhängig von NTFS-Berechtigungen gelöscht werden.

Primitiv 3 – Löschen von in Benutzung befindlichen Dateien (0x8000264C)

Der Handler FUN_000139d0 greift auf FileObject->SectionObjectPointer (Offset 0x28 in FILE_OBJECT) zu und setzt vorübergehend zwei Felder auf Null, bevor er das Lösch-IRP sendet:

root@kitploit:~
plVar1 = FileObject->SectionObjectPointer;
plVar1[2] = 0;  // DataSectionObject  → NULL
plVar1[0] = 0;  // ImageSectionObject → NULL

IofCallDriver(device, irp);
KeWaitForSingleObject(...);

// Nach Abschluss wiederherstellen
plVar1[2] = DataSectionObject_backup;
plVar1[0] = ImageSectionObject_backup;

IopDeleteFile prüft diese Zeiger, bevor es FileDispositionInformation berücksichtigt. Durch Nullsetzen lässt der Handler die Datei als nicht gemappt erscheinen und umgeht so den Schutz für in Benutzung befindliche Dateien. Dieses Primitiv kann die Binärdatei eines laufenden EDR-Agenten von der Festplatte löschen, ohne den Prozess zuvor zu beenden.

Vollständige EDR-Eliminierungskette:

root@kitploit:~
1. EDR-Prozess beenden     (IOCTL 0x800024B4)
2. EDR-Binärdatei auf Festplatte löschen (IOCTL 0x8000264C) ← funktioniert auch bei speichergemappten Dateien
3. Neustart verhindern     ← ausführbare Datei existiert nicht mehr auf der Festplatte

Empirische Tests

PPL-Resistenz (10 Versuche pro Prozesskategorie)

ProzessPPL aktivBeendbarUrsache
notepad.exeNein✅ 10/10Kein Schutz
regedit.exeNein✅ 10/10Kein Schutz
spoolsv.exeNein✅ 9/10SCM startet in 1 Fall neu
MsMpEng.exeNein (kein PPL in Testumgebung)✅ 8/10Leichte Timing-Variabilität
lsass.exeNein (RunAsPPL nicht vorhanden)✅ 6/10Zustandsvariabilität
csrss.exeJa (unbedingter PPL)❌ 0/10STATUS_ACCESS_DENIED

PPL (Protected Process Light) ist die einzige Laufzeit-Mitigation, die der auf ObOpenObjectByPointer(KernelMode) basierenden Beendigung durch diesen Treiber widersteht.

Importtabellen-Analyse

VorhandenNicht vorhanden
PsLookupProcessByProcessIdZwOpenProcess
ObOpenObjectByPointerSeAccessCheck
ZwTerminateProcessSePrivilegeCheck
PsGetCurrentProcess
IoGetRequestorProcess

Post-Exploitation-Szenarien

SzenarioZielAuswirkung
EDR/AV-BeendigungMsMpEng.exe, SentinelAgent.exeVerteidigungsumgehung
Löschen der EDR-Binärdatei (in Benutzung)EDR-Ausführbare Datei auf FestplatteNeustart nach Beendigung verhindern
Störung der Audit-ProtokolleEventLog-DienstForensik manipulieren
Umgehung von geschützten Prozessenlsass.exe (ohne RunAsPPL)Zugang zu Anmeldeinformationen erleichtern
Ransomware-Vorbereitung vor VerschlüsselungSicherheitsagentenVollständige Verteidigungsumgehungskette

Forensische Artefakte

Was nach --cleanup bestehen bleibt

ArtefaktZustand nach Bereinigung
Dienst in SCMEntfernt
Treiber in driverqueryEntfernt
GeräteobjektNicht zugänglich
RegistrierungsschlüsselEntfernt
Ereignis-ID 7045Besteht – kann nicht durch sc delete entfernt werden

Ereignis-ID 7045 ist das einzige Artefakt, das einen vollständigen Angriffszyklus mit Bereinigung überlebt. Es enthält Dienstnamen, ImagePath (voller Binärpfad), Diensttyp und Erstellungszeitstempel.

Das Löschen von Protokollen ist selbstbelastend

Die Ausführung von wevtutil cl System zum Entfernen von Ereignis-ID 7045 erzeugt Ereignis-ID 1102 im Sicherheitskanal, die aufzeichnet, wer das Protokoll wann gelöscht hat. Dies macht die Manipulation von Protokollen nachweisbar, selbst wenn das ursprüngliche Artefakt zerstört wird.

AngreiferaktionResultierendes ArtefaktKanalPersistenz
wevtutil cl SystemEreignis-ID 7045 gelöschtSystem—
wevtutil cl SystemEreignis-ID 1102 erzeugtSicherheitDauerhaft

Erkennungsregeln

Sigma-Regel

root@kitploit:~
title: BYOVD Attack via BdApiUtil64.sys (CVE-2024-51324)
id: a3f7c2e1-8b4d-4f9a-b6e3-2d1c9f8a7b5e
status: experimental
logsource:
  product: windows
  service: system
detection:
  selection_eventid:
    EventID: 7045
  selection_driver:
    - ServiceName|contains: 'BdApi'
    - ImagePath|contains: 'BdApiUtil64.sys'
  condition: selection_eventid and selection_driver
level: high
tags:
  - attack.defense_evasion
  - attack.t1562.001
  - attack.privilege_escalation
  - attack.t1068

Vollständige Sigma-Regel und Sysmon-Konfiguration (Ereignis-ID 6 nach SHA-256-Hash + Ereignis-ID 13 nach Registrierungsschlüssel) verfügbar in docs/detection/.


Technische Dokumentation

DokumentBeschreibung
UrsachenanalyseFehlende Zugriffskontrolle im IRP_MJ_DEVICE_CONTROL-Handler
TreiberanalyseVollständige Ghidra RE, drei IOCTL-Primitiven, PPL-Tests, Importtabellenanalyse
CVE-ZeitleisteChronologie von Entdeckung, Offenlegung und Patch

Akademischer Kontext

Diese Forschung ist Teil meiner Masterarbeit in Cybersicherheit (UCAM — Campus Internacional de Ciberseguridad), die N-Day-Schwachstellen in mehreren Umgebungen analysiert.

Diese CVE repräsentiert den Vektor Windows-Kernel-Treiber / BYOVD innerhalb der Arbeit und demonstriert:

  • Analyse der Kernel-Treiber-Angriffsfläche durch vollständige IOCTL-Aufzählung
  • Technische Korrektur früherer öffentlicher Beschreibungen (ZwOpenProcess fehlt; tatsächlicher Mechanismus ist ObOpenObjectByPointer(KernelMode))
  • Entdeckung von zwei bisher undokumentierten Primitiven (Dateilösch-IOCTLs)
  • Empirische Charakterisierung der PPL-Resistenz
  • Forensische Artefaktanalyse über den vollständigen Bereinigungszyklus
  • CVSS-Bewertungskritik: dokumentierte Lücke zwischen offiziellem NVD-Score und lokaler Ausbeutungsschwere

Schlagwörter: BYOVD · Kernel-Treiber · IOCTL · Ghidra · Prozessbeendigung · Dateilöschen · SectionObjectPointer · ObOpenObjectByPointer · Verteidigungsumgehung · CVE-2024-51324


Autor

Annais Molina (devianntsec) — Masterstudentin in Cybersicherheit

GitHub LinkedIn Email


Danksagungen

  • NVD / NIST — CVE-Eintrag und Bewertung
  • loldrivers.io — Von der Community gepflegtes Verzeichnis angreifbarer Treiber
  • BlackSnufkin — Ursprüngliches PoC-Referenz
  • Cisco Talos — DeadLock-Ransomware-BYOVD-Analyse (Dezember 2025)

Lizenz

MIT-Lizenz – siehe LICENSE


Rechtlicher Hinweis

Dieses Repository wird ausschließlich zu Bildungs- und Sicherheitsforschungszwecken als Teil einer akademischen Masterarbeit bereitgestellt. Alle Tests wurden auf isolierten virtuellen Maschinen ohne Netzzugriff durchgeführt. Der angreifbare Treiber (BdApiUtil64.sys) wird in diesem Repository nicht verteilt – er muss unabhängig bezogen werden. Verwenden Sie ihn nur auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Testgenehmigung haben. Unbefugte Nutzung gegen Systeme ist illegal und kann zu strafrechtlicher Verfolgung führen.

© 2026 Annais Molina · Masterarbeit in Cybersicherheit
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
Tool herunterladen