Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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-2018-0952-SystemCollector — PoC pour l'élévation de privilèges dans le service Windows 10 Diagnostics Hub Standard Collector | Kitploit
Outils/GitHubGitHub/atredispartners/cve-2018-0952-systemcollector
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionRed TeamingExploitation de Binaires
GitHubatredispartners/cve-2018-0952-systemcollector

CVE-2018-0952-SystemCollector

PoC pour l'élévation de privilèges dans le service Windows 10 Diagnostics Hub Standard Collector

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
Voir le dépôt
111311il y a 8 ansVérifié par Kitploit

SystemCollector

PoC pour l'élévation de privilèges dans le service Standard Collector du Diagnostics Hub de Windows 10

Produits concernés

  • Windows 10
  • Windows Server
  • Windows Server 2016
  • Visual Studio 2015 Update 3
  • Visual Studio 2017

Résumé

La bibliothèque Diagnostics Hub Packaging, utilisée par le service Windows Standard Collector, peut être forcée à copier un fichier arbitraire vers un emplacement arbitraire en raison du manque d'emprunt d'identité du client dans DiagnosticsHub.StandardCollector.Runtime.dll.

Voici un compte-rendu détaillé de la façon dont cette vulnérabilité a été découverte et exploitée : Privilege Escalation Vulnerability in Windows Standard Collector Service.

Détails techniques

Le service Standard Collector permet de définir plusieurs valeurs lors de la configuration d'une session de diagnostic, notamment le répertoire scratch et l'ID de session. L'ID de session peut être n'importe quel GUID et le répertoire scratch peut être n'importe quel emplacement où l'utilisateur dispose de droits d'écriture. Si la session de collecte est configurée avec un ID de c13851b2-b1e1-438f-bf73-949df897f1bf et un chemin scratch de C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\, les événements suivants se produisent lors de l'appel de la méthode GetCurrentResult de l'objet ICollectionSession :

  1. Un fichier Event Trace Log (.etl) est créé dans le chemin scratch : C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl
  2. Un dossier Report est également créé dans le chemin scratch : C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1
  3. Un dossier portant un GUID aléatoire est créé dans le dossier Report : C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65

Ces dossiers et fichiers ETL sont créés par le service de collecte pour le package .diagsession qui est normalement créé lorsqu'une session se termine. L'appel de la méthode Stop sur l'objet ICollectionSession amène le service de collecte à valider le package de diagnostic en appelant Microsoft::DiagnosticsHub::Packaging::DhPackageDirectory::CommitPackage. La fonction CommitPackage copie ou déplace le fichier d'origine {scratch path}\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl vers le dossier GUID aléatoire : {scratch path}\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl

L'opération de copie/déplacement déclenchée par la fonction CommitPackagingResult dans DiagnosticsHub.StandardCollector.Runtime.dll est effectuée sans emprunter l'identité de l'utilisateur (contrairement à la création initiale des fichiers/dossiers), ce qui peut conduire à un problème TOCTOU si le dossier cible est remplacé par un point de montage qui redirige la copie vers un emplacement arbitraire. Pour exploiter ce problème de manière utile, un attaquant doit remplacer le contenu du fichier ETL avant qu'il ne soit copié. Cela peut être fait en gagnant la course (race condition) avec un OpLock après que le service a libéré le descripteur du fichier.

Bien que nous ne contrôlions pas entièrement le nom du fichier .etl copié, nous pouvons utiliser l'astuce du lien symbolique de répertoire d'objets pour le contrôler. La configuration point de montage + lien symbolique ressemblerait à ceci :

  • Point de montage : {scratch path}\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65\ -> \RPC Control\
  • Lien symbolique : \RPC Control\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl -> C:\Windows\System32\anything.dll

Le contrôle du contenu du fichier, de l'emplacement de copie et du nom du fichier offre à un attaquant de nombreuses possibilités de chargement de DLL. Cependant, le PoC inclus démontre que le contrôle du nom de fichier n'est pas nécessaire, car le service de collecte charge volontiers une DLL quel que soit son nom, tant qu'elle se trouve dans le répertoire C:\Windows\System32 ou C:\Windows\System32\DiagSvcs. Pour ce faire, on démarre une nouvelle session de collecte avec un agent dont le nom d'assembly correspond au nom de la DLL copiée c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl.

Le PoC inclus est une solution Visual Studio avec un projet DLL C++ pour le payload qui lance notepad.exe et un projet C# pour interagir avec le service et exploiter la vulnérabilité à l'aide de la bibliothèque NtApiDotNet.

Étapes pour reproduire :

  1. Compiler la solution Visual Studio
  2. Exécuter SystemCollector.exe en tant qu'utilisateur normal

Résultat attendu :

L'opération de validation du package emprunte l'identité de l'utilisateur et échoue lors de la tentative de copie du fichier.

Résultat observé :

Le fichier est copié dans le dossier cible du point de montage C:\Windows\System32, puis chargé comme agent de collecte, et enfin, notepad.exe est lancé avec les privilèges SYSTEM.

Références supplémentaires

  • https://www.atredis.com/blog/cve-2018-0952-privilege-escalation-vulnerability-in-windows-standard-collector-service
  • https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-0952
  • https://github.com/atredispartners/advisories/blob/master/ATREDIS-2018-0004.md
Télécharger l’outil