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-30051 — Forschung im Rahmen einer Masterarbeit zu CVE-2024-30051 (Windows DWM Heap Overflow). Bietet einen hochzuverlässigen Exploit mit automatisierter Heap-Spray-Optimierung, Echtzeit-Protokollierung und empirischer Erfolgsquotenanalyse. Portfolioprojekt, das fortgeschrittene Windows-Binary-Exploitation, Heap-Layout-Manipulation und LPE über den Desktop Window Manager demonstriert. | Kitploit
Tools/GitHubGitHub/devianntsec/cve-2024-30051
Privilege EscalationSpeicherforensikSchwachstellenanalyseExploitationReverse EngineeringPapers & ForschungLernen & BildungPayload-EntwicklungBinary-Exploitation

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

Forschung im Rahmen einer Masterarbeit zu CVE-2024-30051 (Windows DWM Heap Overflow). Bietet einen hochzuverlässigen Exploit mit automatisierter Heap-Spray-Optimierung, Echtzeit-Protokollierung und empirischer Erfolgsquotenanalyse. Portfolioprojekt, das fortgeschrittene Windows-Binary-Exploitation, Heap-Layout-Manipulation und LPE über den Desktop Window Manager demonstriert.

GitHubdevianntsec/cve-2024-30051

CVE-2024-30051

Repository anzeigen
15vor 4 MonatenNoch nicht geprüft
Teilen

CVE-2024-30051 — Windows-DWM-Heap-Overflow-EoP · Forschung zur Masterarbeit

Platform Language License: MIT Research CVSS

Heap-basierter Pufferüberlauf im Windows Desktop Window Manager (dwmcore.dll)
Lokale Rechteausweitung → Integritätsstufe SYSTEM über den DWM-Prozess
Ziel-Build: Windows 11 22H2 (10.0.22621.3447) · Patch: KB5037771


Beschreibung

Dieses Repository enthält meine Forschung zur Masterarbeit über CVE-2024-30051, eine Schwachstelle mit hohem Schweregrad (CVSS 7,8) zur Rechteausweitung in der Core Library des Windows Desktop Window Managers (dwmcore.dll).

Die Schwachstelle rührt von einer Fehlberechnung der Größe durch Integer-Division in CCommandBuffer::Initialize her. Die für new() verwendete Größe und die für memcpy() verwendete Größe weichen aufgrund dieser Fehlberechnung voneinander ab, was einen Heap-Überlauf von 0x8F Bytes erzeugt. Ein erfolgreicher Exploit führt dazu, dass dwm.exe eine vom Angreifer kontrollierte DLL lädt und beliebigen Code unter dem Konto window manager\dwm-1 mit Integritätsstufe SYSTEM ausführt.

Mein Beitrag


Repository-Struktur

root@kitploit:~
CVE-2024-30051-Masters-Thesis/
├── README.md
├── LICENSE
├── setup.bat                        # Copies s11.dll to required location
│
├── exploit/
│   ├── C21.sln                      # Visual Studio 2022 solution
│   ├── exploit_src/
│   │   ├── c26f.vcxproj
│   │   ├── c26f.filters
│   │   └── main.cpp                 # Exploit — heap spray + hooking + overflow
│   └── payload/
│       ├── payload.vcxproj
│       ├── payload.vcxproj.filters
│       ├── dllmain.cpp              # Payload DLL — spawns SYSTEM shell + cleanup
│       ├── framework.h
│       ├── pch.h
│       └── pch.cpp
│
└── docs/
    ├── screenshots/                 # Patch diffing, WinDbg, and forensic captures
    └── analysis/
        ├── 01-root-cause.md         # Integer division bug in CCommandBuffer::Initialize
        ├── 02-heap-spray.md         # 50-session empirical data and statistical findings
        └── 03-timeline.md           # Discovery, disclosure, and patch chronology

Schnellstart

Voraussetzungen

  • Windows 11 22H2 (Build 22621.3447, ungepatcht — ohne KB5037771)
  • Visual Studio 2022 mit C++-Desktop-Workload
  • VM mit Snapshot empfohlen (erforderlich für einen reproduzierbaren Heap-Zustand)

Schritt 1 — Payload-DLL erstellen

Öffnen Sie C21.sln in Visual Studio 2022. Erstellen Sie das Projekt payload in Release x64.

Schritt 2 — DLL platzieren

Führen Sie setup.bat aus dem Repository-Stammverzeichnis aus. Es kopiert s11.dll nach C:\Users\Public\Documents\s11.dll (den durch PAYLOAD_DLL_PATH definierten Pfad).

⚠️ Die DLL muss sich vor dem Ausführen von C26f.exe an genau diesem Pfad befinden. Ein Platzieren neben der ausführbaren Datei funktioniert nicht.

Schritt 3 — Exploit erstellen

Erstellen Sie das Projekt C26f in Release x64.

Schritt 4 — Ausführen

root@kitploit:~
x64\Release\C26f.exe

Führen Sie es aus einer normalen (nicht erhöhten) CMD aus. Der Exploit versucht automatisch bis zu 10 Mal erneut. Bei Erfolg lädt dwm.exe die s11.dll und startet eine CMD mit SYSTEM-Integritätsstufe. Ein Sitzungsprotokoll wird nach %TEMP%\cve_30051_log.txt geschrieben.


Exploit-Konfiguration

root@kitploit:~
#define MAX_ATTEMPTS        10      // Max auto-retry attempts per session
#define SPRAY_STEP          0x10    // Hole spacing index (1024 holes)
#define SPRAY_RANGE_START   0x3000  // Spray range start index
#define SPRAY_RANGE_END     0x7000  // Spray range end index
#define SLEEP_POST_SPRAY    0xC8    // ms wait after spray (200ms)
#define SLEEP_POST_HOLES    0xC8    // ms wait after freeing holes (200ms)
#define PAYLOAD_DLL_PATH    "C:\\Users\\Public\\Documents\\s11.dll"

Technischer Überblick

Root Cause der Schwachstelle

In CCommandBuffer::Initialize (dwmcore.dll 10.0.22621.3447) wird CD2DSharedBuffer::GetBufferSize zweimal aufgerufen. Die an new() übergebene Größe wird vor der Multiplikation einer Integer-Division durch 0x90 unterzogen, während memcpy() den Rohwert verwendet:

root@kitploit:~
buffer_size = GetBufferSize()   → e.g. 0x23F

size_new    = (0x23F / 0x90) * 0x90  = 0x1B0   ← allocated
size_memcpy = 0x23F                             ← copied

overflow    = 0x23F - 0x1B0 = 0x8F bytes

Ergebnisse des Patch-Diffings

BinDiff-Vergleich zwischen Build 10.0.22621.3447 (verwundbar) und 10.0.22621.3593 (gepatcht):

Der anomale Wert von 0,32 gegenüber einer globalen Ähnlichkeit von 0,98 ist die direkte Signatur des Orts der Schwachstelle.

Exploit-Ablaufkette

root@kitploit:~
1. Hook RtlCreateHeap               → capture dwmcore heap handle
2. Hook RtlAllocateHeap             → capture base chunk address
3. Hook NtDCompositionCreateChannel → capture MappedAddress (shared memory region)
4. Hook NtDCompositionCommitChannel → overwrite size field (0x120 → 0x23F)
                                      inject additional batch commands
5. Heap spray 0x10000 CHolographicInteropTexture objects (size=0x1B0)
6. Free holes every 0x10 indices    → create gaps for overflow landing
7. Write payload into overflow buffer → KCBTable+0x388 + LoadLibraryA + DLL path
8. Release all spray objects         → trigger overflow → LoadLibraryA("s11.dll")
9. dwm.exe loads payload DLL         → spawns CMD as SYSTEM integrity

Empirische Heap-Spray-Analyse (50 Sitzungen)

Forschungsfrage

Beeinflusst der verfügbare RAM die Anzahl der Versuche, die für ein erfolgreiches Heap-Spray erforderlich sind?

Versuchsaufbau

Zwei Blöcke mit je 25 Sitzungen. Protokoll pro Sitzung: sauberen Snapshot nach dem Booten wiederherstellen → 100 Sekunden Stabilisierung abwarten → Exploit starten → erfolgreichen Versuch notieren.

BlockRAMSitzungenErfolgeFehlschläge
A8.192 MB25

Ergebnisse

Statistische Tests

TestStatistikp-WertSchlussfolgerung
Mann-Whitney-UU = 184,0p = 0,031Lehnt H₀ ab
Welch's t-Testt(23) = −2,695p = 0,011Lehnt H₀ ab

Wichtigste Schlussfolgerungen

  • C1: Der DWM-Heap nach dem Booten ist 12,9–19× deterministischer als theoretisch vorhergesagt.
  • C2: Die RAM-Verfügbarkeit hat einen statistisch signifikanten Einfluss auf die Zuverlässigkeit des Heap-Sprays (p = 0,031).
  • C3: Die Halbierung des RAM verdoppelt die Standardabweichung (1,135 → 2,645).
  • C4: Die Fehlerrate ist mit 4 % über beide Konfigurationen hinweg homogen.
  • C5: Die Konstante base = heap_base + 0x720 bestätigt ein reproduzierbares Heap-Layout nach dem Booten als Haupttreiber der Determiniertheit — nicht die Lochdichte.
  • C6: Bei ≥ 8 GB RAM kann ein Angreifer innerhalb der ersten 5 Versuche mit Erfolg rechnen.

Vollständige Rohdaten, das Sitzungsprotokollformat und Beobachtungen zum deterministischen Heap sind in docs/analysis/02-heap-spray.md dokumentiert.


Ausgabe nach der Ausnutzung

Bei Erfolg öffnet sich ein CMD-Fenster unter window manager\dwm-1:

root@kitploit:~
=====================================================
  CVE-2024-30051 - Windows DWM Heap Overflow EoP
  CWE-122  |  CVSS 7.8  |  Elevation of Privilege
=====================================================

  Researched and reproduced by : devianntsec
  Original PoC by              : Ricardo Narvaja (Fortra)
  Target                       : Windows 11 22H2 (22621.3447)

=====================================================

  [*] Current user:
  window manager\dwm-1

  [*] Mandatory Integrity Level:
  Mandatory Label\System Mandatory Level   S-1-16-16384

  [*] Enabled privileges:
  SeImpersonatePrivilege    Enabled

=====================================================
  Shell running under DWM process - SYSTEM level
=====================================================

Artefakte (s11.dll und das .bat-Skript) werden nach 5 Sekunden automatisch über einen verzögerten Bereinigungsprozess gelöscht.


Forensische Artefakte


Technische Dokumentation

DokumentBeschreibung
Root-Cause-Analyse

Akademischer Kontext

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

Dieses CVE repräsentiert den Vektor Windows-Desktop-Anwendung innerhalb der Arbeit und demonstriert:

  • Ausnutzung eines heap-basierten Pufferüberlaufs über den DirectComposition-ALPC-Kanal
  • Binäres Diffing (BinDiff) als systematische Methode zur Lokalisierung von N-Day-Schwachstellen
  • In-Process-API-Hooking ohne externe Werkzeuge
  • Empirische Quantifizierung der Determiniertheit von Heap-Sprays über RAM-Konfigurationen hinweg

Schlüsselbegriffe: EoP · Heap-Überlauf · DirectComposition · DWM · Patch-Diffing · BinDiff · WinDbg · Heap-Spray · Empirische Analyse · CVE-2024-30051


Autor

Annais Molina (devianntsec) — Masterstudentin in Cybersicherheit

GitHub LinkedIn Email


Danksagungen

  • Ricardo Narvaja (Fortra/CoreSecurity) — Original-PoC und Reverse-Engineering-Artikel
  • Kaspersky GReAT — Ursprüngliche Entdeckung der Schwachstelle und verantwortungsvolle Offenlegung
  • Microsoft MSRC — Patch KB5037771 (Mai 2024)

Lizenz

MIT-Lizenz — siehe LICENSE


Rechtshinweis

Dieses Repository wird ausschließlich zu Bildungs- und Sicherheitsforschungszwecken im Rahmen einer akademischen Masterarbeit bereitgestellt. Alle Tests wurden auf isolierten virtuellen Maschinen ohne Netzwerkexposition durchgeführt. Verwenden Sie es nur auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen besitzen. Unbefugte Verwendung 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
AspektBeschreibung
Patch-DiffingVollständige BinDiff-Analyse, die CCommandBuffer::Initialize als exakten Ort der Schwachstelle identifiziert (Ähnlichkeitswert 0,32 gegenüber global 0,98 über 14.062 abgeglichene Funktionen)
WinDbg-DynamikanalyseSchritt-für-Schritt-Verifikation aller 4 Hooks, des Überschreibens des Größenfelds und der Payload-Konstruktion
Empirische Heap-Spray-Analyse50 kontrollierte Sitzungen über zwei RAM-Konfigurationen (8.192 MB und 4.096 MB) mit formalen statistischen Tests
Statistische ErkenntnisseMann-Whitney-U (p = 0,031) und Welch's t-Test (p = 0,011) bestätigen den RAM-Effekt; beobachtete Mittelwerte 12,9–19× besser als die theoretische Vorhersage von ~64 Versuchen
Payload-DLL-Pfad zentralisiertFest verdrahteten Pfad in die Präprozessor-Konstante #define PAYLOAD_DLL_PATH extrahiert
SitzungsprotokollierungVollständiges, mit Zeitstempel versehenes Protokoll pro Sitzung, geschrieben nach %TEMP%\cve_30051_log.txt
Akademische DokumentationRoot Cause, 50-Sitzungen-Heap-Spray-Analyse und CVE-Zeitleiste
MetrikWert
Globale Ähnlichkeit0,98
Konfidenz0,99
Abgeglichene Funktionen14.062 (99,1 %)
Ähnlichkeit von CCommandBuffer::Initialize0,32
Basisblöcke — verwundbare Version4
Basisblöcke — gepatchte Version20 (16 Validierungsblöcke hinzugefügt)
24
1
B4.096 MB25241
BlockRAMDurchschnittliche VersucheStandardabweichung95-%-KIFaktor gegenüber Theorie (64)
A8.192 MB3,3751,135[2,896; 3,854]≈ 19× schneller
B4.096 MB4,9582,645[3,841; 6,076]≈ 12,9× schneller
ArtefaktSpeicherortPersistenzErkennungswerkzeug
cmd.exe als Kindprozess von dwm.exeSicherheitsereignisprotokollJa (wenn Prozessüberwachung aktiv)Ereignis-ID 4688
Externer Prozess greift auf dwm.exe zuSysmonJaSysmon-Ereignis-ID 10
dwm.exe-Absturz bei fehlgeschlagenen VersuchenAnwendungsereignisprotokollJaEreignis-ID 1000
Payload-DLL s11.dll auf der FestplatteC:\Users\Public\Documents\Nur die ersten ~5 SekundenSHA-256-Überwachung
Integer-Divisionsfehler in CCommandBuffer::Initialize, Methodik des Patch-Diffings
Heap-Spray-AnalyseEmpirische Daten aus 50 Sitzungen, rohe Sitzungsdaten, statistische Tests
CVE-ZeitleisteChronologie von Entdeckung, Offenlegung und Patch