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
KslDump — KslDump — Warum ein eigenes Messer mitbringen, wenn Defender bereits eines in der Küche hinterlassen hat? | Kitploit
Tools/GitHubGitHub/andreisss/ksldump
Privilege EscalationSchwachstellenanalyseExploitationPenetrationstestsRed TeamingBinary-Exploitation
GitHubandreisss/ksldump

KslDump

KslDump — Warum ein eigenes Messer mitbringen, wenn Defender bereits eines in der Küche hinterlassen hat?

Repository anzeigen
39851vor 4 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

KslDump - BMVD (Bringen Sie den anfälligen Microsoft-Treiber)

GitHub stars GitHub forks GitHub downloads Sponsor License: GPL v3

Wichtiger Kontext

Ich habe das Problem am 7. März 2026 an Microsoft gemeldet. Allerdings hatte die Game-Hacking-Community fast 20 Tage zuvor bereits Reverse Engineering betrieben und es öffentlich diskutiert. Von meiner Seite aus verfolge ich deren Projekte nicht und war mir dessen nicht bewusst. Es ist auch klar, dass es sich um zwei völlig separate und unabhängige Projekte handelt.

Referenzen

  • Avantguard Blogbeitrag

Warum ein eigenes Messer mitbringen, wenn Defender bereits eines in der Küche liegen gelassen hat?

KslDump extrahiert Anmeldeinformationen aus dem PPL-geschützten LSASS unter ausschließlicher Verwendung von Microsoft-signierten Komponenten. Es wird kein Exploit eingesetzt. Es wird kein Treiber geladen. Die gesamte Angriffskette ist mit Windows Defender vorinstalliert. Microsoft hat die laufende Version (wd\KslD.sys) gepatcht, indem MmCopyMemory auf null gesetzt wurde, aber die alte anfällige Version (drivers\KslD.sys) auf der Festplatte belassen. Der Angreifer bringt nichts mit – er zeigt den Dienst nur auf das zurück, was Microsoft zu bereinigen vergessen hat.

image

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


Die Sicherheitslücke

KslD.sys ist ein Kernel-Treiber, der mit Microsoft Defender ausgeliefert wird. Er ist Microsoft-signiert, als vertrauenswürdiges Kernelmodul geladen und stellt ein Geräteobjekt \\.\KslD bereit, das aus dem Benutzermodus zugänglich ist.

Der Treiber akzeptiert IOCTL 0x222044 mit mehreren Unterbefehlen, die uneingeschränkten Kernel- und physischen Speicherzugriff für jeden Prozess bieten, der das Gerätehandle öffnen kann.

Anfällige Unterbefehle

SubCmdFähigkeitAuswirkung
2Gibt CR3, IDTR und andere CPU-Steuerregister an den Benutzermodus zurückSofortige KASLR-Umgehung
12Ruft MmCopyMemory() mit vom Angreifer kontrollierten Adress- und Größenparametern aufBeliebiges Lesen von Kernel-/physischem Speicher

Die "Zugriffskontrolle"

Das einzige Tor zum Gerätehandle ist eine Prozessnamenszeichenfolge, die in einem Registrierungsschlüssel (AllowedProcessName) unter dem Dienstschlüssel des Treibers gespeichert ist. Dieser Wert ist:

  • Von jedem lokalen Administrator bearbeitbar
  • Nicht durch Defenders Manipulationsschutz geschützt
  • Nicht gegen Codesignatur, Integrität oder andere Binäreigenschaften validiert
  • Ein einfacher Stringvergleich – benennen Sie Ihre Binärdatei um und Sie sind drin

Der Unterschied liegt in einer Zeile in CCommand::Initialize:

root@kitploit:~
// 82 KB version (patched) — deliberately clears the pointer:
v3 = MmGetSystemRoutineAddress(L"MmCopyMemory");
if (v3 >= 0) {
    *(a1 + 24) = 0;        // ← NULLs it — SubCmd 12 is dead
}

// 333 KB version (vulnerable) — stores the pointer:
ptr = MmGetSystemRoutineAddress(L"MmCopyMemory");
if (ptr) {
    *(this + 0x18) = ptr;   // ← Keeps it — SubCmd 12 works
}

Defender-Plattformupdates scheinen die gepatchte 82-KB-Version in drivers\wd\ abzulegen und ImagePath darauf zu setzen, während die ältere 333-KB-Version in drivers\ verbleibt. Auf getesteten Systemen wurde die alte Binärdatei nie entfernt. Der Exploit schaltet einfach ImagePath zurück auf die anfällige Version und startet den Dienst neu. Beide Binärdateien sind Microsoft-signiert und werden vom Betriebssystem als vertrauenswürdig eingestuft.


Warum der alte Treiber noch auf der Festplatte ist – persönliche Theorie

Die öffentliche Dokumentation von Microsoft zeigt, dass KB4052623 Defender-Plattformupdates liefert, einschließlich einer historischen Verschiebung von Defender-Treibern nach System32\drivers\wd, während Windows-Wartung WinSxS-gestützte Komponentenspeicherdateien über NTFS-Hardlinks behält und überholte Komponentenversionen nur während der Bereinigung entfernt. Auf dem getesteten System erklärt dies, warum die neuere 82-KB-Version von KslD.sys über den Defender-Plattformupdate-Pfad eintreffen konnte, während die ältere 333-KB-Version von System32\drivers\KslD.sys als aktuelle CBS-gestützte Kopie im Komponentenspeicher verblieb, bis sie durch eine neuere CBS-Version ersetzt wurde.


Das Blocklist-Paradoxon

Microsoft unterhält eine Blockliste für anfällige Treiber (DriverSiPolicy.p7b), um speziell BYOVD-Angriffe zu verhindern. Diese Blockliste wird über HVCI erzwungen und blockiert das Laden bekannter anfälliger signierter Treiber.

Aus der eigenen Dokumentation von Microsoft:

"Die Blockliste für anfällige Treiber soll dazu beitragen, Systeme gegen nicht von Microsoft entwickelte Treiber im gesamten Windows-Ökosystem zu härten"

Microsofts eigene Treiber sind von der Blockliste von Natur aus ausgeschlossen.


Warum das funktioniert

Die Grundursache ist einfach: MmCopyMemory respektiert PPL nicht.

PPL (Protected Process Light) wurde entwickelt, um den Diebstahl von Anmeldeinformationen zu verhindern, indem es OpenProcess- und ReadProcessMemory-Aufrufe gegen LSASS blockiert. Aber PPL schützt nur den Benutzermodus-API-Pfad. Es hat keine Autorität über Kernel-Mode-Reads des physischen Speichers.

KslD.sys gibt Code im Benutzermodus einen direkten Pfad zu MmCopyMemory() – Microsofts eigener Kernel-API zum Kopieren von Speicher nach physischer oder virtueller Adresse. Der Treiber führt durch:

  • Keine Adressbereichsvalidierung – jede physische Adresse wird akzeptiert
  • Keine Größenbeschränkung – lesen Sie so viel Sie möchten
  • Keine Aufruferüberprüfung über eine Registrierungsstring-Überprüfung hinaus, die ein Admin bearbeiten kann

Das Ergebnis: Ein Microsoft-signierter Treiber bietet sofort eine vollständige PPL-Umgehung.


Das Lese-Primitiv

Der Kern der Sicherheitslücke ist SubCmd 12 – ein uneingeschränkter MmCopyMemory()-Wrapper:

root@kitploit:~
IOCTL:    0x222044
Input:    struct {
            DWORD  SubCmd;       // 12
            DWORD  Reserved;     // 0
            QWORD  Address;      // Target VA or PA
            QWORD  Size;         // Bytes to read
            DWORD  Flags;        // 1 = Physical, 2 = Virtual
            DWORD  Padding;
          }
Output:   Raw memory contents (up to Size bytes)

Physisches Lesen (Flags = 1) ist das kritische Primitiv. Der Zugriff auf den physischen Speicher unterliegt keinen Prozessschutzebenen, EPROCESS-Flags oder Beschränkungen der Benutzermodus-API, was PPL umgeht.

Virtuelles Lesen (Flags = 2) liest Kernel-Virtualadressen direkt, nützlich zum Durchlaufen von Kernel-Strukturen (EPROCESS, ntoskrnl-Exporte) ohne manuelle Seitentabellenübersetzung.



Angriffskette

root@kitploit:~
┌──────────────────────────────────────────────────────────────────┐
│                        KslDump Attack Flow                       │
├──────────────────────────────────────────────────────────────────┤
│                                                                  │
│  1. Registry Edit         ImagePath ← vulnerable 333KB KslD.sys *│
│          │                AllowedProcessName ← our process       │
│          │                sc stop/start KslD                     │
│          ▼                                                       │
│  2. KASLR Bypass          SubCmd 2 → CR3 + IDTR                  │
│          │                IDT → lowest ISR → ntoskrnl base       │
│          ▼                                                       │
│  3. Kernel Walk           PsInitialSystemProcess → SYSTEM EPROC  │
│          │                ActiveProcessLinks → find lsass.exe    │
│          │                Read lsass DTB from EPROCESS+0x28      │
│          ▼                      (all via SubCmd 12, flags=2)     │
│                                                                  │
│  4. Physical Read         Page table walk using lsass DTB        │
│          │                MmCopyMemory() reads lsass pages       │
│          │                      *** BYPASSES PPL ***             │
│          ▼                      (SubCmd 12, flags=1)             │
│                                                                  │
│  5. Key Extraction        Find lsasrv.dll via PEB → LDR         │
│          │                Scan .text for LSA key signatures      │
│          │                Follow BCRYPT chain → AES + 3DES + IV  │
│          ▼                                                       │
│  6. Credential Dump       Walk LogonSessionList                  │
│                           Decrypt MSV1_0 credentials             │
│                           → NT hashes                            │
│                                                                  │
└──────────────────────────────────────────────────────────────────┘

Anforderungen

  • Lokale Administratorrechte
  • Python 3.x mit dem Paket cryptography (pip install cryptography)
  • Die anfällige 333-KB-Datei KslD.sys muss auf der Festplatte vorhanden sein (Standard: C:\Windows\System32\drivers\KslD.sys)

Die Ironie – Eine Zusammenfassung

Der Angriff erfordert keine Treiber von Drittanbietern, keinen unsignierten Code, keine Exploits. Alles ist Microsoft-signiert, von Microsoft ausgeliefert und bereits auf dem System. Der anfällige Treiber liegt auf der Festplatte neben seinem eigenen Patch, ausgeschlossen von der Blockliste, die genau diese Angriffsklasse verhindern soll.


Verantwortungsvolle Offenlegung

Diese Sicherheitslücke wurde dem Microsoft Security Response Center (MSRC) gemeldet. Sie wurde als "Keine Sicherheitslücke" mit folgender Begründung geschlossen:

"Der beschriebene Angriff hängt von bereits vorhandenen Administratorrechten ab. Es wurden keine Nachweise erbracht, wie diese Rechte erlangt wurden. Berichte, die Administrator- oder Root-Zugriff voraussetzen, ohne eine Sicherheitslücke nachzuweisen, die diese Rechte gewährt, werden als weniger schwerwiegend eingestuft, da ein Angreifer mit einem solchen Zugriff bereits schwerwiegendere Aktionen durchführen könnte."

Es wurde keine CVE zugewiesen. Es wurde kein Fix veröffentlicht.


Haftungsausschluss

Dieses Tool wird ausschließlich für autorisierte Sicherheitstests und Forschungszwecke bereitgestellt. Verwenden Sie es nur auf Systemen, die Sie besitzen oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Unbefugter Zugriff auf Computersysteme ist illegal. Der Autor übernimmt keine Haftung für Missbrauch.


Tool herunterladen