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
KslDump — KslDump — Perché portare il proprio coltello quando Defender ne ha già lasciato uno in cucina? | Kitploit
Strumenti/GitHubGitHub/andreisss/ksldump
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPenetration TestingRed TeamingBinary Exploitation
GitHubandreisss/ksldump

KslDump

KslDump — Perché portare il proprio coltello quando Defender ne ha già lasciato uno in cucina?

Vedi Repository
398514 mesi faRevisionato da Kitploit

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 →
Condividi

KslDump - BMVD (Bring the Microsoft Vulnerable Driver)

GitHub stars GitHub forks GitHub downloads Sponsor License: GPL v3

Contesto importante

Ho segnalato il problema a Microsoft il 7 marzo 2026. Tuttavia, quasi 20 giorni prima, la comunità di hacking dei videogiochi lo aveva già invertito e discusso pubblicamente. Da parte mia, non seguo i loro progetti e non ero a conoscenza di nulla di tutto ciò. È anche chiaro che si tratta di due progetti completamente separati e non correlati.

Riferimenti

  • Articolo del blog Avantguard

Perché portare il proprio coltello quando Defender ne ha già lasciato uno in cucina?

KslDump estrae le credenziali da LSASS protetto da PPL utilizzando soli componenti firmati Microsoft. Non viene distribuito alcun exploit. Non viene caricato alcun driver. L'intera catena d'attacco è preinstallata con Windows Defender. Microsoft ha corretto la versione in esecuzione (wd\KslD.sys) azzerando MmCopyMemory, ma ha lasciato la vecchia versione vulnerabile (drivers\KslD.sys) sul disco. L'aggressore non porta nulla — si limita a reindirizzare il servizio verso ciò che Microsoft ha dimenticato di ripulire.

image

https://github.com/user-attachments/assets/78dfce25-56b3-4eb8-9de2-7c183601e597


La vulnerabilità

KslD.sys è un driver kernel fornito con Microsoft Defender. È firmato Microsoft, caricato come modulo kernel attendibile ed espone un oggetto dispositivo \\.\KslD accessibile dalla modalità utente.

Il driver accetta l'IOCTL 0x222044 con diversi sotto-comandi che forniscono accesso illimitato alla memoria kernel e fisica a qualsiasi processo che possa aprire l'handle del dispositivo.

Sotto-comandi vulnerabili

SubCmdCapacitàImpatto
2Restituisce CR3, IDTR e altri registri di controllo della CPU alla modalità utenteSconfitta istantanea di KASLR
12Chiama MmCopyMemory() con indirizzo e dimensione controllati dall'aggressoreLettura arbitraria della memoria kernel/fisica

Il "controllo di accesso"

L'unico gate per l'handle del dispositivo è una stringa del nome del processo memorizzata in una chiave di registro (AllowedProcessName) sotto la chiave del servizio del driver. Questo valore è:

  • Modificabile da qualsiasi amministratore locale
  • Non protetto dalla protezione anti-manomissione di Defender
  • Non convalidato rispetto a firma del codice, integrità o qualsiasi proprietà binaria
  • Un semplice confronto di stringhe — rinomina il tuo binario e sei dentro

La differenza è una riga in CCommand::Initialize:

root@kitploit:~
// Versione 82 KB (corretta) — cancella deliberatamente il puntatore:
v3 = MmGetSystemRoutineAddress(L"MmCopyMemory");
if (v3 >= 0) {
    *(a1 + 24) = 0;        // ← Lo azzera — SubCmd 12 è morto
}

// Versione 333 KB (vulnerabile) — memorizza il puntatore:
ptr = MmGetSystemRoutineAddress(L"MmCopyMemory");
if (ptr) {
    *(this + 0x18) = ptr;   // ← Lo mantiene — SubCmd 12 funziona
}

Gli aggiornamenti della piattaforma Defender sembrano rilasciare la versione corretta da 82 KB in drivers\wd\ e puntare ImagePath su di essa, mentre la versione più vecchia da 333 KB rimane in drivers\. Sui sistemi testati, il vecchio binario non è mai stato rimosso. L'exploit si limita a reimpostare ImagePath sulla versione vulnerabile e riavviare il servizio. Entrambi i binari sono firmati Microsoft e attendibili dal sistema operativo.


Perché il vecchio driver è ancora sul disco - teoria personale

La documentazione pubblica di Microsoft mostra che KB4052623 fornisce gli aggiornamenti della piattaforma Defender, incluso uno spostamento storico dei driver Defender in System32\drivers\wd, mentre il servizio Windows mantiene i file dell'archivio componenti supportati da WinSxS tramite collegamenti reali NTFS e rimuove solo le versioni sostituite dei componenti durante la pulizia. Sul sistema testato, questo spiega perché il nuovo KslD.sys da 82 KB potrebbe arrivare attraverso il percorso di aggiornamento della piattaforma Defender mentre il vecchio KslD.sys da 333 KB in System32\drivers\ rimaneva presente come copia corrente dell'archivio componenti supportato da CBS fino a quando non sostituito da una versione CBS più recente.


Il paradosso della blocklist

Microsoft mantiene una Vulnerable Driver Blocklist (DriverSiPolicy.p7b) specificamente per prevenire attacchi BYOVD. Questa blocklist viene applicata tramite HVCI e blocca il caricamento di driver firmati noti come vulnerabili.

Dalla documentazione di Microsoft:

"La blocklist dei driver vulnerabili è progettata per aiutare a rafforzare i sistemi contro driver non sviluppati da Microsoft nell'ecosistema Windows"

I driver di Microsoft sono esclusi dalla blocklist per progettazione.


Perché funziona

La causa principale è semplice: MmCopyMemory non rispetta PPL.

PPL (Protected Process Light) è stato progettato per prevenire il furto di credenziali bloccando le chiamate OpenProcess e ReadProcessMemory contro LSASS. Ma PPL protegge solo il percorso API della modalità utente. Non ha alcuna autorità sulle letture fisiche della memoria in modalità kernel.

KslD.sys fornisce al codice in modalità utente un percorso diretto a MmCopyMemory() — l'API kernel di Microsoft per copiare memoria tramite indirizzo fisico o virtuale. Il driver esegue:

  • Nessuna convalida dell'intervallo di indirizzi — qualsiasi indirizzo fisico è accettato
  • Nessuna imposizione di limiti di dimensione — leggi quanto vuoi
  • Nessuna verifica del chiamante oltre a un controllo di stringa del registro che un amministratore può modificare

Il risultato: un driver firmato Microsoft fornisce un bypass completo di PPL già pronto all'uso.


La primitiva di lettura

Il cuore della vulnerabilità è SubCmd 12 — un wrapper senza restrizioni di MmCopyMemory():

root@kitploit:~
IOCTL:    0x222044
Input:    struct {
            DWORD  SubCmd;       // 12
            DWORD  Reserved;     // 0
            QWORD  Address;      // VA o PA di destinazione
            QWORD  Size;         // Byte da leggere
            DWORD  Flags;        // 1 = Fisico, 2 = Virtuale
            DWORD  Padding;
          }
Output:   Contenuto grezzo della memoria (fino a Size byte)

La lettura fisica (Flags = 1) è la primitiva critica. L'accesso alla memoria fisica non è soggetto a livelli di protezione del processo, flag EPROCESS o restrizioni API della modalità utente, questo è ciò che bypassa PPL.

La lettura virtuale (Flags = 2) legge direttamente indirizzi virtuali del kernel, utile per esaminare le strutture del kernel (EPROCESS, esportazioni ntoskrnl) senza traduzione manuale della tabella delle pagine.



Catena d'attacco

root@kitploit:~
┌──────────────────────────────────────────────────────────────────┐
│                        Flusso d'attacco di KslDump               │
├──────────────────────────────────────────────────────────────────┤
│                                                                  │
│  1. Modifica registro       ImagePath ← KslD.sys vulnerabile 333KB *│
│          │                  AllowedProcessName ← nostro processo       │
│          │                  sc stop/start KslD                     │
│          ▼                                                       │
│  2. Bypass KASLR           SubCmd 2 → CR3 + IDTR                  │
│          │                  IDT → ISR più basso → base ntoskrnl       │
│          ▼                                                       │
│  3. Camminata kernel       PsInitialSystemProcess → SYSTEM EPROC  │
│          │                  ActiveProcessLinks → trova lsass.exe    │
│          │                  Leggi DTB di lsass da EPROCESS+0x28      │
│          ▼                      (tutto tramite SubCmd 12, flags=2)   │
│                                                                  │
│  4. Lettura fisica         Camminata tabella pagine usando DTB di lsass       │
│          │                  MmCopyMemory() legge pagine di lsass       │
│          │                      *** BYPASSA PPL ***             │
│          ▼                      (SubCmd 12, flags=1)             │
│                                                                  │
│  5. Estrazione chiavi      Trova lsasrv.dll tramite PEB → LDR         │
│          │                  Scansiona .text per firme chiave LSA      │
│          │                  Segui catena BCRYPT → AES + 3DES + IV  │
│          ▼                                                       │
│  6. Dump credenziali       Cammina LogonSessionList               │
│                           Decifra credenziali MSV1_0             │
│                           → Hash NT                            │
│                                                                  │
└──────────────────────────────────────────────────────────────────┘

Requisiti

  • Privilegi di amministratore locale
  • Python 3.x con pacchetto cryptography (pip install cryptography)
  • Il KslD.sys vulnerabile da 333 KB deve esistere sul disco (default: C:\Windows\System32\drivers\KslD.sys)

L'ironia — Un riassunto

L'attacco non richiede driver di terze parti, codice non firmato o exploit. Tutto è firmato Microsoft, fornito da Microsoft e già presente sul sistema. Il driver vulnerabile si trova sul disco accanto alla sua stessa correzione, escluso dalla blocklist progettata proprio per prevenire questa classe di attacchi.


Divulgazione responsabile

Questa vulnerabilità è stata segnalata al Microsoft Security Response Center (MSRC). L'hanno chiusa come "Non una vulnerabilità" con la seguente motivazione:

"L'attacco descritto dipende da privilegi amministrativi preesistenti. Non è stata fornita alcuna prova di come siano stati ottenuti tali privilegi. I report che presuppongono accesso amministrativo o di root senza dimostrare una vulnerabilità che concede tali privilegi vengono considerati a basso impatto, poiché un aggressore con tale accesso potrebbe già eseguire azioni più gravi."

Non è stato assegnato alcun CVE. Non è stata emessa alcuna correzione.


Disclaimer

Questo strumento è fornito esclusivamente per scopi autorizzati di test di sicurezza e ricerca. Utilizzalo solo su sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta per i test. L'accesso non autorizzato a sistemi informatici è illegale. L'autore non si assume alcuna responsabilità per un uso improprio.


Scarica lo strumento