Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2018-0952-SystemCollector — PoC para escalada de privilegios en el servicio de recopilación estándar del centro de diagnóstico de Windows 10 | Kitploit
Herramientas/GitHubGitHub/atredispartners/cve-2018-0952-systemcollector
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónRed TeamingExplotación de Binarios
GitHubatredispartners/cve-2018-0952-systemcollector

CVE-2018-0952-SystemCollector

PoC para escalada de privilegios en el servicio de recopilación estándar del centro de diagnóstico de Windows 10

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
11131hace 8 añosRevisado por Kitploit

SystemCollector

PoC para escalada de privilegios en el servicio Diagnostics Hub Standard Collector de Windows 10

Productos afectados

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

Resumen

La biblioteca Diagnostics Hub Packaging, utilizada por el servicio Windows Standard Collector, puede ser forzada a copiar un archivo arbitrario a una ubicación arbitraria debido a la falta de suplantación del cliente en DiagnosticsHub.StandardCollector.Runtime.dll.

Aquí hay un análisis detallado de cómo se encontró y explotó esta vulnerabilidad: Vulnerabilidad de escalada de privilegios en el servicio Windows Standard Collector.

Detalles técnicos

El servicio Standard Collector permite definir varios valores al configurar una sesión de diagnóstico, incluyendo el directorio temporal (scratch) y el ID de sesión. El ID de sesión puede ser cualquier GUID y el directorio temporal puede ser cualquier ubicación sobre la que el usuario tenga permisos de escritura. Si la sesión de recolección se configura con un ID de c13851b2-b1e1-438f-bf73-949df897f1bf y una ruta temporal de C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\, ocurren los siguientes eventos al llamar al método GetCurrentResult del objeto ICollectionSession:

  1. Se crea un archivo de registro de seguimiento de eventos (.etl) en la ruta temporal: C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl
  2. También se crea una carpeta Report en la ruta temporal: C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1
  3. Se crea una carpeta con un GUID aleatorio dentro de la carpeta Report: C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65

Estas carpetas y archivos ETL son creados por el servicio de recolección para el paquete .diagsession que normalmente se crea cuando una sesión ha finalizado. Llamar al método Stop en el objeto ICollectionSession hará que el servicio de recolección confirme el paquete de diagnóstico llamando a Microsoft::DiagnosticsHub::Packaging::DhPackageDirectory::CommitPackage. La función CommitPackage copiará o moverá el archivo original {ruta temporal}\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl a la carpeta de GUID aleatorio: {ruta temporal}\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl

La operación de copia/movimiento desencadenada por la función CommitPackagingResult en DiagnosticsHub.StandardCollector.Runtime.dll se realiza sin suplantar al usuario (a diferencia de la creación inicial de archivos/carpetas), lo que lleva a un posible problema TOCTOU si la carpeta de destino se reemplaza con un punto de montaje que redirige la copia a una ubicación arbitraria. Para explotar este problema de manera útil, un atacante necesitaría intercambiar el contenido del archivo ETL antes de que se copie. Esto se puede lograr ganando la condición de carrera con un OpLock después de que el servicio haya liberado el identificador del archivo.

Aunque no controlamos completamente el nombre del archivo .etl que se copia, podemos usar el truco del enlace simbólico del directorio de objetos para controlarlo. La configuración de punto de montaje + enlace simbólico sería algo como esto:

  • Punto de montaje: {ruta temporal}\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65\ -> \RPC Control\
  • Enlace simbólico: \RPC Control\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl -> C:\Windows\System32\anything.dll

Tener control sobre el contenido del archivo, la ubicación de copia y el nombre del archivo le brinda a un atacante numerosas posibilidades de carga de DLL. Sin embargo, el PoC incluido demuestra que no es necesario controlar el nombre del archivo, ya que el servicio de recolección carga felizmente una DLL con cualquier nombre, siempre que esté en el directorio C:\Windows\System32 o C:\Windows\System32\DiagSvcs. Esto se logra iniciando una nueva sesión de recolección con un agente que tenga un nombre de ensamblado que coincida con el nombre de la DLL copiada c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl.

El PoC incluido es una solución de VS con un proyecto de DLL en C++ para el payload que lanza notepad.exe y un proyecto en C# para interactuar con el servicio y explotar la vulnerabilidad usando la biblioteca NtApiDotNet.

Pasos para reproducir:

  1. Compilar la solución de Visual Studio
  2. Ejecutar SystemCollector.exe como un usuario normal

Resultado esperado:

La operación de confirmación del paquete suplanta al usuario y falla al intentar copiar el archivo.

Resultado observado:

El archivo se copia a la carpeta de destino del punto de montaje C:\Windows\System32, luego se carga como agente de recolección y, finalmente, se lanza notepad.exe con privilegios de SYSTEM.

Referencias adicionales

  • 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
Descargar herramienta