Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-7771 — Chaîne d'exploitation complète pour CVE-2025-7771 dans ThrottleStop.sys, exploitant des IOCTL de lecture/écriture en mémoire physique non validés pour élever les privilèges d'administrateur à SYSTEM sous Windows. | Kitploit
Outils/GitHubGitHub/yulisec/cve-2025-7771
Outils DéfensifsEscalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionRed TeamingDéveloppement de Charges UtilesExploitation de Binaires
GitHubyulisec/cve-2025-7771

CVE-2025-7771

Chaîne d'exploitation complète pour CVE-2025-7771 dans ThrottleStop.sys, exploitant des IOCTL de lecture/écriture en mémoire physique non validés pour élever les privilèges d'administrateur à SYSTEM sous Windows.

1il y a 11h 16mPas encore vérifié
Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2025-7771 — Lecture/écriture arbitraire en mémoire physique via ThrottleStop.sys

Preuve de concept complète pour le pilote ThrottleStop.sys de TechPowerUp (CVE-2025-7771). Un pilote noyau signé, toujours chargeable, expose une lecture et une écriture non validées en mémoire physique via deux IOCTL. Ce dépôt transforme cette primitive en une élévation de privilèges locale fonctionnelle d'administrateur à SYSTEM et documente une particularité de nommage de périphérique qui casse la plupart des détections basées sur le chemin ou le nom de fichier.

Un PoC pour les mêmes IOCTL existait déjà (voir Crédits). Il s'agit ici d'une chaîne d'exploitation complète et indépendante, et non d'une simple démonstration de primitive.

Pilote affecté

ChampValeur
SHA25616F83F056177C4EC24C7E99D01CA9D9D6713BD0497EEEDB777A3FFEFA99C97F0
SHA182ED942A52CDCF120A8919730E00BA37619661A3
MD56BC8E3505D9F51368DDF323ACB6ABC49
Version3.0.0.0 ("Low-Level Driver", 2004-2020)
SignataireTechPowerUp LLC, DigiCert EV Code Signing
Empreinte du certificat524EDA9C819321C66E22C7BABEB23DAEAFFB2182
Validité du certificat2019-08-10 au 2022-06-15

Le certificat a expiré en 2022, mais la signature porte un horodatage de contresignature de confiance, donc Windows le charge toujours. La révocation n'aide que si sa date précède la date de signature, ce qui est rarement le cas pour d'anciens pilotes comme celui-ci.

La ressource de version ne contient ni CompanyName, ni OriginalFilename, ni InternalName, donc le fichier ne peut pas être attribué à un éditeur à partir de ses propres métadonnées.

La faille

Deux IOCTL lisent et écrivent la mémoire physique sans validation de limites ni d'adresse :

IOCTLOpération
0x80006498Lecture physique
0x8000649CÉcriture physique

Les deux sont METHOD_BUFFERED, donc il n'y a pas de déréférencement de pointeur utilisateur ; le défaut est l'absence de validation de l'adresse physique fournie par l'appelant, et non un pointeur non vérifié.

À signaler : le gestionnaire d'écriture 0x8000649C est déclaré FILE_READ_ACCESS. Un handle ouvert en lecture seule peut donc toujours émettre des écritures physiques, donc le masque d'accès déclaré ne correspond pas à ce que fait réellement le gestionnaire.

Impact

L'ouverture du périphérique nécessite des droits administrateur, donc il ne s'agit pas en soi d'un franchissement de frontière de privilèges. Ce que cela donne à un attaquant déjà administrateur, c'est une lecture/écriture noyau arbitraire depuis le mode utilisateur, ce qui contourne les protections censées tenir au-dessus d'admin : l'intégrité de code HVCI, PPL, et l'auto-protection EDR/AV. Du classique bring-your-own-vulnerable-driver.

Comme démonstration concrète, le PoC utilise la primitive de lecture/écriture pour voler le jeton SYSTEM et lancer un shell SYSTEM.

CVSS 4.0 : AV:L/AC:H/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H (8.7, Élevé).

Comment fonctionne l'exploit

Tout s'exécute depuis le mode utilisateur contre les IOCTL de lecture/écriture physique du pilote. Il n'y a pas de parcours de tables de pages ni de CR3 impliqué ; les deux processus sont localisés en scannant directement la mémoire physique :

  1. Localiser SYSTEM. Scanner la mémoire physique à la recherche d'un EPROCESS dont ImageFileName est System et UniqueProcessId vaut 4. Le scan est borné aux plages de RAM peuplées lues depuis la clé de registre HARDWARE\RESOURCEMAP\...\Physical Memory du firmware, et non une fenêtre devinée, donc les trous MMIO ne sont jamais touchés et rien au-dessus de la RAM installée n'est manqué.
  2. Lire le jeton SYSTEM. Lire le champ Token (EPROC_TOKEN) depuis l'EPROCESS localisé.
  3. Localiser notre processus. Scanner la mémoire physique de la même manière à la recherche de l'EPROCESS du PoC lui-même, en faisant correspondre le nom d'image comme un motif de 8 octets et en confirmant avec son PID.
  4. Échanger le jeton. Écrire la valeur du jeton SYSTEM dans notre propre emplacement Token. Le jeton est un _EX_FAST_REF, donc les bits de comptage de références faibles sont masqués par défaut (--mask sélectionne le comportement).
  5. Le prouver. Lancer cmd.exe ; whoami renvoie NT AUTHORITY\SYSTEM.

Les offsets (EPROC_TOKEN, EPROC_PID, EPROC_IMG_NAME, etc.) sont propres à une build donnée et doivent être confirmés avec dt nt!_EPROCESS sur la version de Windows cible.

Le nom de l'exécutable compte. L'étape 3 localise notre propre processus en faisant correspondre son ImageFileName en mémoire physique, et ce champ est limité à 15 caractères avec le scan qui fait correspondre les 8 premiers. Gardez le nom compilé court et distinctif ; si vous renommez le binaire, restez dans cette limite sinon l'auto-scan ne trouvera pas le processus.

Le nom du périphérique est contrôlé par l'attaquant

Le pilote n'utilise pas de nom de périphérique fixe. Il dérive le nom de l'objet périphérique à partir du nom de service sous lequel il est enregistré ; le nom de fichier sur le disque n'a aucune importance. Enregistrer le binaire sous le service TRIXX produit \\.\TRIXX peu importe le nom du fichier sur le disque.

Donc toute détection basée sur \Device\ThrottleStop ou ThrottleStop.sys est trivialement contournée. La détection doit se baser sur le hash du fichier ou le certificat de signature :

root@kitploit:~
SHA256:     16F83F056177C4EC24C7E99D01CA9D9D6713BD0497EEEDB777A3FFEFA99C97F0
Thumbprint: 524EDA9C819321C66E22C7BABEB23DAEAFFB2182
Subject:    CN=TechPowerUp LLC, O=TechPowerUp LLC, L=Spokane, S=Washington, C=US

La liste DEVICE_NAMES dans le source n'est qu'une sonde pour les installations produit connues. Passez un nom de périphérique en argument pour cibler un service que vous avez enregistré vous-même.

Pilotes TechPowerUp associés

CVEPilote
CVE-2019-7245GPU-Z.sys
CVE-2025-5324GPU-Z.sys
CVE-2025-7771ThrottleStop.sys (ce dépôt)

Le pilote n'est pas inclus

Le binaire n'est pas fourni ici. Vérifiez toute copie par rapport au SHA256 ci-dessus. L'échantillon est catalogué dans LOLDrivers.

Compilation

root@kitploit:~
cl /nologo /EHsc /W4 /O2 src\ThrottleStop.cpp /Fe:myLittleLpe.exe /link advapi32.lib

Utilisation

Usage en laboratoire uniquement. Exécutez dans une VM isolée avec un snapshot pour revenir en arrière.

root@kitploit:~
sc.exe create <name> type= kernel binPath= C:\path\to\ThrottleStop.sys
sc.exe start <name>

myLittleLpe.exe

sc.exe stop <name>
sc.exe delete <name>

Le binaire ne prend aucun argument. Il affiche la carte de mémoire physique, scanne les EPROCESS SYSTEM et local, échange le jeton, et lance cmd.exe en tant que NT AUTHORITY\SYSTEM.

Démo

myLittleLpe.exe run showing physical memory map, EPROCESS scan, token swap and a SYSTEM shell

Autres PoC et travaux antérieurs

Autres travaux publics sur le même pilote, pour comparaison :

  • Demoo1337/ThrottleStop — PoC antérieur pour les mêmes IOCTL
  • xM0kht4r/CVE-2025-7771 — lecture/écriture physique plus VA-vers-PA via Superfetch
  • AmrHuss/throttlestop-exploit-rw — lecture/écriture physique avec traduction d'adresse Superfetch
  • v31l0x1/ThrottleStopPPL — contournement de la protection PPL
  • Yuri08loveElaina/CVE-2025-7771 — une autre implémentation

Crédits

  • LOLDrivers — catalogage des pilotes vulnérables

Avertissement

Publié pour la recherche défensive et l'ingénierie de détection. La vulnérabilité est déjà publique sous CVE-2025-7771. Tout ici a été testé sur des systèmes appartenant à l'auteur. N'exécutez pas ceci contre des systèmes que vous ne possédez pas ou que vous n'êtes pas autorisé à tester.

Télécharger l’outil