Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/atredispartners/cve-2018-0952-systemcollector
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoTestes de PenetraçãoRed TeamingExploração de Binários
GitHubatredispartners/cve-2018-0952-systemcollector

CVE-2018-0952-SystemCollector

PoC para Elevação de Privilégio no Serviço Coletor Padrão do Hub de Diagnóstico do Windows 10

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
111312há 8 anosRevisado pelo Kitploit

SystemCollector

PoC para Escalação de Privilégio no Serviço Coletor Padrão do Hub de Diagnóstico do Windows 10

Produtos Afetados

  • Windows 10
  • Windows Server
  • Windows Server 2016
  • Visual Studio 2015 Atualização 3
  • Visual Studio 2017

Resumo

A biblioteca de Empacotamento do Hub de Diagnóstico, usada pelo Serviço Coletor Padrão do Windows, pode ser forçada a copiar um arquivo arbitrário para um local arbitrário devido à falta de impersonação do cliente em DiagnosticsHub.StandardCollector.Runtime.dll.

Aqui está um artigo detalhado sobre como essa vulnerabilidade foi encontrada e explorada: Vulnerabilidade de Escalação de Privilégio no Serviço Coletor Padrão do Windows.

Detalhes Técnicos

O Serviço Coletor Padrão permite que vários valores sejam definidos ao configurar uma sessão de diagnóstico, incluindo o diretório temporário (scratch) e o ID da sessão. O ID da sessão pode ser qualquer GUID e o diretório temporário pode ser qualquer local onde o usuário tenha permissões de gravação. Se a sessão de coleta for configurada com um ID de c13851b2-b1e1-438f-bf73-949df897f1bf e um caminho temporário de C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\, os seguintes eventos ocorrem ao chamar o método GetCurrentResult do objeto ICollectionSession:

  1. Um arquivo de Log de Rastreamento de Eventos (.etl) é criado no caminho temporário: C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl
  2. Uma pasta Report também é criada no caminho temporário: C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1
  3. Uma pasta com um GUID aleatório é criada na pasta Report: C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65

Essas pastas e arquivos ETL são criados pelo serviço coletor para o pacote .diagsession que normalmente é criado quando uma sessão termina. Chamar o método Stop no objeto ICollectionSession fará com que o serviço coletor confirme o pacote de diagnóstico chamando Microsoft::DiagnosticsHub::Packaging::DhPackageDirectory::CommitPackage. A função CommitPackage copiará ou moverá o arquivo original {scratch path}\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl para a pasta GUID aleatório: {scratch path}\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl

A operação de cópia/movimento acionada pela função CommitPackagingResult em DiagnosticsHub.StandardCollector.Runtime.dll é executada sem impersonar o usuário (ao contrário da criação inicial de arquivo/pasta), levando a um possível problema TOCTOU se a pasta de destino for substituída por um ponto de montagem que redirecione a cópia para um local arbitrário. Para explorar esse problema de forma útil, um atacante precisaria trocar o conteúdo do arquivo ETL antes que ele seja copiado. Isso pode ser feito vencendo a condição de corrida com um OpLock após o identificador de arquivo ter sido liberado pelo serviço.

Embora não tenhamos controle total sobre o nome do arquivo .etl que é copiado, podemos usar o truque do symlink do diretório de objetos para controlá-lo. A configuração de ponto de montagem+symlink seria algo assim:

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

Ter controle sobre o conteúdo do arquivo, o local de cópia e o nome do arquivo dá ao atacante inúmeras possibilidades de carregamento de DLL. No entanto, o PoC incluído demonstra que o controle do nome do arquivo não é necessário, pois o serviço coletor carrega alegremente uma DLL com qualquer nome, desde que esteja no diretório C:\Windows\System32 ou C:\Windows\System32\DiagSvcs. Isso é feito iniciando uma nova sessão de coleta com um agente que possui um nome de assembly correspondente ao nome da DLL copiada c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl.

O PoC incluído é uma solução VS com um projeto de DLL em C++ para o payload de abrir notepad.exe e um projeto em C# para interagir com o serviço e explorar a vulnerabilidade com a biblioteca NtApiDotNet.

Passos para reproduzir:

  1. Compilar a solução do Visual Studio
  2. Executar SystemCollector.exe como um usuário normal

Resultado Esperado:

A operação de confirmação do pacote impersona o usuário e falha ao tentar copiar o arquivo.

Resultado Observado:

O arquivo é copiado para a pasta de destino do ponto de montagem C:\Windows\System32, depois carregado como um agente coletor e, finalmente, notepad.exe é iniciado com privilégios de SYSTEM.

Referências Adicionais

  • 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
Baixar ferramenta