Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-51324 — Ricerca di tesi magistrale su CVE-2024-51324 (BYOVD). Exploit avanzato con 4 modalità operative (SCANNER, LOADER, KILLER, CLEANUP), verifica del driver SHA-256 e documentazione accademica completa. Il pezzo del portfolio copre la sicurezza dei driver del kernel Windows, il reverse engineering di IOCTL e lo sfruttamento di Bring Your Own Vulnerable Driver. | Kitploit
Strumenti/GitHubGitHub/devianntsec/cve-2024-51324
Strumenti DifensiviAnalisi delle VulnerabilitàExploitReverse EngineeringInformatica ForensePenetration TestingPaper e RicercaApprendimento e FormazioneRed Teaming

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Informazioni

Binary Exploitation
GitHubdevianntsec/cve-2024-51324

CVE-2024-51324

Vedi Repository
13 mesi faNon ancora revisionato

Ricerca di tesi magistrale su CVE-2024-51324 (BYOVD). Exploit avanzato con 4 modalità operative (SCANNER, LOADER, KILLER, CLEANUP), verifica del driver SHA-256 e documentazione accademica completa. Il pezzo del portfolio copre la sicurezza dei driver del kernel Windows, il reverse engineering di IOCTL e lo sfruttamento di Bring Your Own Vulnerable Driver.

Condividi

CVE-2024-51324 — BYOVD: BdApiUtil64.sys · Ricerca per la Tesi Magistrale

Platform Language License: MIT Research CVSS

Bring Your Own Vulnerable Driver (BYOVD) — Antivirus Baidu BdApiUtil64.sys
Tre primitive del kernel non documentate: terminazione dei processi, cancellazione arbitraria di file e cancellazione di file in uso con bypass di SectionObjectPointer
Affetto: Antivirus Baidu v5.2.3.116083 (BdApiUtil64.sys)


Caricamento del driver vulnerabile nel kernel (modalità LOADER)

Descrizione

Questo repository contiene la mia ricerca per la Tesi Magistrale su CVE-2024-51324, una vulnerabilità Bring Your Own Vulnerable Driver (BYOVD) nel driver del kernel BdApiUtil64.sys dell'Antivirus Baidu.

Il record NVD assegna un punteggio base CVSS v3.1 di 3.8 (Basso) con vettore AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N e CWE-269 (Gestione impropria dei privilegi). Questo punteggio non riflette la realtà dell'attacco locale documentata in questa ricerca: una volta che il driver viene caricato da un amministratore (un passo unico ottenibile tramite ingegneria sociale o qualsiasi escalation di privilegi locale), qualsiasi processo successivo — inclusi processi in sandbox o di utente standard — può inviare IOCTL senza ulteriori controlli di privilegio. Un punteggio CVSS v3.1 valutato dal ricercatore di 7.8 (Alto) con vettore AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H cattura in modo più accurato la realtà dello sfruttamento post-caricamento. Entrambi i punteggi sono discussi nella documentazione tecnica.

Il driver crea l'oggetto dispositivo \Device\BdApiUtil con SecurityDescriptor = NULL, permettendo a qualsiasi processo indipendentemente dal livello di integrità di aprire un handle e inviare IOCTL. L'analisi statica tramite Ghidra 11.0.3 rivela che il meccanismo interno è più significativo di quanto documentato in precedenza: il driver utilizza PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode) anziché ZwOpenProcess, bypassando SeAccessCheck completamente. Tre primitive IOCTL sono state pienamente caratterizzate, due delle quali non hanno documentazione pubblica precedente.

Il mio contributo


Struttura del repository

root@kitploit:~
CVE-2024-51324/
├── README.md
├── LICENSE
│
├── drivers/
│   └── BdApiUtil64.sys              # Driver (non distribuito)
│
├── exploit/
│   ├── exploit-explanation.md
│   └── byovd_killer.py              # Exploit principale — 4 modalità operative
│
└── 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    # RE completo con Ghidra, tre primitive, test PPL
        └── 03-timeline.md

Avvio rapido

Prerequisiti

  • Windows 10/11 (qualsiasi build)
  • Python 3.6+
  • BdApiUtil64.sys (SHA-256: 47EC51B5F0EDE1E70BD66F3F0152F9EB536D534565DBB7FCC3A05F542DBE4428)
  • Account amministratore (solo modalità LOADER e CLEANUP)
  • Account utente standard sufficiente per la modalità KILLER una volta caricato il driver

Passo 1 — Scansiona il sistema

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

Passo 2 — Carica il driver (richiede amministratore)

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

Passo 3 — Termina i processi (non richiede amministratore)

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

Passo 4 — Pulizia (richiede amministratore)

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

Modalità operative


Dimostrazioni

Modalità SCANNER — Informazioni di sistema

SCANNER Mode

Modalità SCANNER — Ricerca processo target

SCANNER Target

Modalità LOADER — Caricamento driver

LOADER Mode

Modalità LOADER — Percorso personalizzato e nome servizio

LOADER Custom

Modalità KILLER — Termina per nome processo

Kill by Name

Modalità KILLER — Termina per PID

Kill by PID

Modalità KILLER — Limita istanze

Limit Instances

Modalità KILLER — Prova simulata (Simulazione)

Dry Run

Modalità CLEANUP — Scarica driver

CLEANUP Mode


Panoramica tecnica

Superficie di attacco IOCTL — Tre primitive

Il reverse engineering di BdApiUtil64.sys tramite Ghidra 11.0.3 ha identificato una superficie di attacco più ampia di qualsiasi documento pubblico precedente:

Primitiva 1 — Terminazione dei processi (0x800024B4)

La catena di dispatch ha tre livelli:

root@kitploit:~
IOCTL 0x800024B4
  └─ FUN_00028630  (IRP_MJ_DEVICE_CONTROL dispatcher)
       └─ FUN_00015230  (wrapper: validates IOCTL code and buffer size = 4 bytes)
            └─ FUN_000152b0  (kill handler — vulnerability locus)

Handler ricostruito (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  ← bypasses SeAccessCheck
        local_res18
    );
    ZwTerminateProcess(local_res18[0], 0);
}

Perché KernelMode bypassa SeAccessCheck:

root@kitploit:~
Percorso ZwOpenProcess:
  NtOpenProcess → ObOpenObjectByName → SeAccessCheck
                                        (controlla DACL, token del chiamante, livello di integrità)
                                        può restituire STATUS_ACCESS_DENIED

Percorso ObOpenObjectByPointer(KernelMode):
  SeAccessCheck  ← NON invocato
  → Handle PROCESS_ALL_ACCESS concesso incondizionatamente

ZwOpenProcess è assente dalla tabella di importazione del driver. La descrizione basata su ZwOpenProcess presente in fonti precedenti è tecnicamente errata.

Primitiva 2 — Cancellazione arbitraria di file (0x80002648)

Il handler FUN_00013bb0 riceve un percorso Unicode, valida InputBufferLength ≥ 0x208 e delega a FUN_00013c10. Il sub-handler apre il file in modalità kernel (nessun SeAccessCheck sul token del chiamante) e invia un IRP IRP_MJ_SET_INFORMATION con FileInformationClass = 0xD (FileDispositionInformation), contrassegnando il file per la cancellazione. Qualsiasi file accessibile al kernel può essere cancellato indipendentemente dai permessi NTFS.

Primitiva 3 — Cancellazione di file in uso (0x8000264C)

Il handler FUN_000139d0 accede a FileObject->SectionObjectPointer (offset 0x28 in FILE_OBJECT) e annulla temporaneamente due campi prima di inviare l'IRP di cancellazione:

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

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

// Restore after completion
plVar1[2] = DataSectionObject_backup;
plVar1[0] = ImageSectionObject_backup;

IopDeleteFile controlla questi puntatori prima di onorare FileDispositionInformation. Annullandoli, il handler fa apparire il file come non mappato, bypassando la protezione per file in uso. Questa primitiva può eliminare il binario di un agente EDR in esecuzione dal disco senza prima terminare il processo.

Catena completa di eliminazione EDR:

root@kitploit:~
1. Termina il processo EDR     (IOCTL 0x800024B4)
2. Elimina il binario EDR dal disco (IOCTL 0x8000264C) ← funziona anche se mappato in memoria
3. Impedisci il riavvio           ← l'eseguibile non esiste più sul disco

Test empirico

Resistenza PPL (10 tentativi per categoria di processo)

PPL (Protected Process Light) è l'unica mitigazione a runtime che resiste alla terminazione basata su ObOpenObjectByPointer(KernelMode) da questo driver.

Analisi della tabella di importazione


Scenari di post-sfruttamento


Artefatti forensi

Cosa persiste dopo --cleanup

L'Event ID 7045 è l'unico artefatto che sopravvive a un ciclo di attacco completo con pulizia. Contiene il nome del servizio, ImagePath (percorso completo del binario), il tipo di servizio e il timestamp di creazione.

La cancellazione dei log è auto-incriminante

Eseguire wevtutil cl System per rimuovere l'Event ID 7045 genera Event ID 1102 nel canale Security, registrando chi ha cancellato il log e quando. Ciò rende rilevabile la manomissione dei log anche se l'artefatto originale viene distrutto.

Azione dell'attaccanteArtefatto risultanteCanalePersistenza
wevtutil cl System

Regole di rilevamento

Regola Sigma

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

Regola Sigma completa e configurazione Sysmon (Event ID 6 per hash SHA-256 + Event ID 13 per chiave di registro) disponibili in docs/detection/.


Documentazione tecnica

DocumentoDescrizione
Analisi della causa principale

Contesto accademico

Questa ricerca fa parte della mia Tesi Magistrale in Cybersecurity (UCAM — Campus Internacional de Ciberseguridad), che analizza vulnerabilità N-Day in diversi ambienti.

Questa CVE rappresenta il vettore driver del kernel Windows / BYOVD all'interno della tesi, dimostrando:

  • Analisi della superficie di attacco del driver del kernel tramite enumerazione completa degli IOCTL
  • Correzione tecnica delle descrizioni pubbliche precedenti (ZwOpenProcess assente; il meccanismo reale è ObOpenObjectByPointer(KernelMode))
  • Scoperta di due primitive precedentemente non documentate (IOCTL di cancellazione file)
  • Caratterizzazione empirica della resistenza PPL
  • Analisi degli artefatti forensi attraverso ciclo completo post-pulizia
  • Critica del punteggio CVSS: gap documentato tra il punteggio ufficiale NVD e la gravità dello sfruttamento locale

Keywords: BYOVD · Kernel Driver · IOCTL · Ghidra · Process Termination · File Deletion · SectionObjectPointer · ObOpenObjectByPointer · Defense Evasion · CVE-2024-51324


Autore

Annais Molina (devianntsec) — Studente Magistrale in Cybersecurity

GitHub LinkedIn Email


Riconoscimenti

  • NVD / NIST — Registro CVE e punteggio
  • loldrivers.io — Indice dei driver vulnerabili mantenuto dalla comunità
  • BlackSnufkin — Riferimento PoC originale
  • Cisco Talos — Analisi BYOVD del ransomware DeadLock (Dicembre 2025)

Licenza

Licenza MIT — vedi LICENSE


Avvertenza legale

Questo repository è fornito solo per scopi educativi e di ricerca sulla sicurezza, come parte di una Tesi Magistrale accademica. Tutti i test sono stati eseguiti su macchine virtuali isolate senza esposizione alla rete. Il driver vulnerabile (BdApiUtil64.sys) non è distribuito in questo repository — deve essere ottenuto in modo indipendente. Utilizzare solo su sistemi di cui si è proprietari o per i quali si dispone di esplicita autorizzazione scritta al test. L'uso non autorizzato contro sistemi è illegale e può comportare azioni penali.

© 2026 Annais Molina · Tesi Magistrale in Cybersecurity
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
Scarica lo strumento
AspettoDescrizione
Correzione tecnicaZwOpenProcess è assente dalla tabella di importazione; il meccanismo reale è PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode), che bypassa SeAccessCheck incondizionatamente
Tre primitive documentateTerminazione dei processi (0x800024B4), cancellazione arbitraria di file (0x80002648) e cancellazione di file in uso con bypass di SectionObjectPointer (0x8000264C) — le ultime due non hanno documentazione pubblica precedente
Quattro modalità operativeLOADER, KILLER, SCANNER e CLEANUP — gestione completa del ciclo di vita
Verifica SHA-256Hash del driver verificato prima di ogni tentativo di caricamento
Test empirico PPL10 tentativi per categoria di processo che confermano PPL come unica mitigazione a runtime
Analisi forensePersistenza dell'Event ID 7045 dopo la pulizia; Event ID 1102 come artefatto di cancellazione del log auto-incriminante
Regole di rilevamentoRegola Sigma e configurazione Sysmon (Event ID 6 per hash + Event ID 13 per chiave di registro)
Rivalutazione CVSSDiscrepanza documentata tra il punteggio ufficiale NVD (3.8 Basso) e la gravità di sfruttamento locale valutata dal ricercatore (7.8 Alto)
ModalitàComandoPrivilegiDescrizione
SCANNER--scanQualsiasi utenteInformazioni sullo stato del sistema e del driver
LOADER--loadAmministratoreCarica il driver tramite creazione di servizio kernel
KILLER--kill / --pidQualsiasi utenteTermina i processi tramite IOCTL
CLEANUP--cleanupAmministratoreArresta ed elimina il servizio driver
IOCTLHandlerPrimitivaDocumentazione precedente
0x800024B4FUN_000152b0Terminazione dei processiParziale (meccanismo errato)
0x80002648FUN_00013bb0Cancellazione arbitraria di fileNessuna
0x8000264CFUN_00013850Cancellazione di file in uso (bypass SectionObjectPointer)Nessuna
ProcessoPPL attivoTerminabileCausa
notepad.exeNo✅ 10/10Nessuna protezione
regedit.exeNo✅ 10/10Nessuna protezione
spoolsv.exeNo✅ 9/10SCM riavvia in 1 caso
MsMpEng.exeNo (nessun PPL nell'ambiente di test)✅ 8/10Leggera variabilità di temporizzazione
lsass.exeNo (RunAsPPL assente)✅ 6/10Variabilità di stato
csrss.exeSì (PPL incondizionato)❌ 0/10STATUS_ACCESS_DENIED
PresenteAssente
PsLookupProcessByProcessIdZwOpenProcess
ObOpenObjectByPointerSeAccessCheck
ZwTerminateProcessSePrivilegeCheck
PsGetCurrentProcess
IoGetRequestorProcess
ScenarioTargetImpatto
Terminazione EDR/AVMsMpEng.exe, SentinelAgent.exeEvasione della difesa
Cancellazione binario EDR (in uso)Eseguibile EDR sul discoImpedisci riavvio dopo la terminazione
Interruzione log di auditServizio EventLogManipolazione delle prove forensi
Bypass del processo protettolsass.exe (senza RunAsPPL)Facilitatore dell'accesso alle credenziali
Preparazione pre-crittografia ransomwareAgenti di sicurezzaCatena completa di evasione della difesa
ArtefattoStato post-pulizia
Servizio in SCMRimosso
Driver in driverqueryRimosso
Oggetto dispositivoInaccessibile
Chiave di registroRimossa
Event ID 7045Persiste — non può essere rimosso tramite sc delete
Event ID 7045 cancellato
System
—
wevtutil cl SystemEvent ID 1102 generatoSecurityPermanente
Controllo di accesso mancante nel handler IRP_MJ_DEVICE_CONTROL
Analisi del driverRE completo con Ghidra, tre primitive IOCTL, test PPL, analisi della tabella di importazione
Cronologia CVECronologia della scoperta, divulgazione e patch