Varonis | Segurança de dentro para fora

The Logging Dead: Duas vulnerabilidades de log de eventos que assombram o Windows

Escrito por Dolev Taler | Oct 26, 2022 7:57:00 AM

Você não precisa usar o Internet Explorer para que seu legado tenha deixado você vulnerável ao LogCrusher e OverLog, duas vulnerabilidades do Windows descobertas pela equipe do Varonis Threat Labs.

A Microsoft parou de oferecer suporte ao Internet Explorer em 15 de junho de 2022.  No entanto, a profunda integração do IE no ecossistema do Windows afeta a segurança e a estabilidade dos sistemas operacionais Windows atuais. 

Um dos recursos da integração do IE e do Windows é um log de eventos específico do Internet Explorer que está presente em todos os sistemas operacionais Windows atuais. Esse log de eventos específico do IE tem um conjunto separado de permissões que permitem duas explorações em sistemas Windows:

LogCrusher, que permite que qualquer usuário do domínio interrompa remotamente a aplicação de log de eventos de qualquer máquina com Windows no domínio.

OverLog, que causa um ataque remoto de negação de serviço (DoS), ao preencher o espaço em disco em qualquer máquina com Windows no domínio.

Neste artigo, explicaremos como essas duas explorações funcionam e detalharemos seus respectivos fluxos de ataque. Como parte da nossa pesquisa, divulgamos prontamente essas vulnerabilidades à Microsoft, que lançou um patch parcial em 11 de outubro de 2022. Pedimos a todos os usuários que corrijam seus sistemas.

Inserir MS-EVEN

Microsoft Event Log Remoting Protocol

Essas explorações (LogCrusher e OverLog) usam as funções do Microsoft Event Log Remoting Protocol (MS-EVEN), que permitem a manipulação remota dos logs de eventos de uma máquina.

Identificador de log do Internet Explorer

OpenEventLogW é uma função da API do Windows que permite que um usuário abra um identificador para um log de eventos específico em uma máquina local ou remota.

Esse recurso é útil para serviços que podem usá-lo para ler, gravar e limpar logs de eventos para máquinas remotas, sem precisar efetuar login manualmente nas próprias máquinas.

A função requer dois parâmetros:

lpUNCServerName — O nome da máquina remota ou NULL para uma conexão local

lpSourceName — O log de eventos específico para obter o identificador

Como padrão, usuários não administrativos e com pouco privilégio não podem obter um identificador para logs de eventos de outras máquinas. A única exceção é o log “Internet Explorer” legado, que existe em cada versão do Windows e tem seu próprio descritor de segurança que substitui as permissões-padrão.

O descritor de segurança do log de eventos do Internet Explorer pode ser encontrado no caminho do registro: HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Internet Explorer

Analisando a string do descritor de segurança: CustomSD = O:BAG:SYD:(A;;0x07;;;WD)S:(ML;;0x1;;;LW) 

Consegue ver? O DiscretionaryACL o especifica.

Este ACL permite que qualquer usuário leia e grave logs nele. Um invasor pode obter um identificador de log para cada máquina Windows no domínio de qualquer usuário.

Isso prepara o cenário para ambas as nossas façanhas.

LogCrusher

Um bug lógico ElfClearELFW

ElfClearELFW é uma função MS-EVEN que permite aos administradores limpar e fazer backup de logs de eventos remotamente.

A função requer dois parâmetros:

LogHandle — Identificador de log que já tem uma função OpenEventLog aberta.

BackupFileName — Um ponteiro para uma estrutura de strings Unicode que mantém o local para fazer backup do log de eventos antes de ser limpo.

Infelizmente, a função ELFClearElfw tem um bug de validação de entrada impróprio. Ele espera que a estrutura BackupFileName seja inicializada em zero, mas quando o ponteiro da estrutura é NULL, o processo falha.

Fluxo de Ataque

Ao combinar essas duas funções, é fácil entender o fluxo de ataque do LogCrusher. Chamamos a função OpenEventLog para o log de eventos do Internet Explorer na máquina da vítima:

Handle = OpenEventLog(<Victim Machine>, "internet explorer") 

Chamamos a função ElfClearELFW com o identificador que foi retornado e NULL como parâmetro BackupFileName:

ElfClearELFW(Handle, NULL)

Pronto! Assim, travamos o log de eventos na máquina da vítima.

Por padrão, o serviço de log de eventos tentará reiniciar mais duas vezes. Na terceira vez, ele ficará inativo por 24 horas.

 

 Uma demonstração do LogCrusher que trava repetidamente o serviço de log de eventos até que ele pare de reiniciar.

Isso tudo é ótimo. Mas qual é o impacto?

O impacto está no fato de que muitos controles de segurança dependem da operação normal do serviço de log de eventos.

  1. Sem logs, os controles de segurança são inúteis.
  2. Em alguns casos, os produtos de controle de segurança se conectam ao serviço. Isso significa que quando ele trava de vez, o produto também trava.
  3. Isso, por sua vez, pode permitir que um invasor use qualquer tipo de exploração ou ataque geralmente detectado sem escrúpulos, pois muitos alertas não são acionados.

Interrupção da verificação do PowerShell do log de eventos.

É um déjà vu?

Outra descoberta interessante foi que o bug na função ElfClearELFW foi encontrado há dois anos e informado à Microsoft por um pesquisador que tem o apelido de “limbenjamin”.

Na época, não foi possível explorar o bug de uma conta de usuário normal não administrador (e do Internet Explorer), então o impacto não estava claro e a Microsoft optou por não corrigi-lo.

OverLog

Com esse ataque, conseguimos usar a mesma metodologia e o identificador do log de eventos do Internet Explorer juntamente com outra vulnerabilidade na função BackupEventLogW, para causar uma DoS permanente em cada máquina Windows.

Segundo a Microsoft, a função BackupEventLogW:

 

O bug aqui é ainda mais simples, e, embora diga na documentação que o usuário de backup precisa ter o privilégio SE_BACKUP_NAME, o código não o valida. Assim, todo usuário pode fazer backup de arquivos em uma máquina remota se tiver acesso de gravação a uma pasta naquela máquina.

Fluxo de Ataque

  1. Obter um identificador para o log de eventos do Internet Explorer na máquina da vítima (mesmo que antes).
  2. Gravar alguns logs arbitrários no log de eventos (strings aleatórias; tamanhos diferentes).
  3. Fazer backup do log em uma pasta gravável na máquina (por exemplo: “c:\windows\tasks”) para a qual cada usuário de domínio tem permissão de gravação por padrão.
  4. Repetir o processo de backup até que o disco rígido esteja cheio e o computador pare de funcionar.
  5. A máquina da vítima não consegue escrever “pagefile” (memória virtual), tornando-a inutilizável.

Resposta e recomendações da Microsoft

A Microsoft optou por não corrigir totalmente a vulnerabilidade LogCrusher no Windows 10 (os sistemas operacionais mais recentes não são afetados).

A partir da atualização do Patch Tuesday de 11 de outubro de 2022 da Microsoft, a configuração de permissões padrão que permitiu aos usuários não administrativos acesso ao log de eventos do Internet Explorer em máquinas remotas foi restrita aos administradores locais, reduzindo consideravelmente o potencial de danos.

Embora isso aborde esse conjunto específico de explorações do log de eventos do Internet Explorer, ainda existe a possibilidade de outros logs de eventos de aplicativos acessíveis pelo usuário serem aproveitados de forma semelhante para ataques.

Recomendamos que todos os sistemas potencialmente vulneráveis apliquem o patch fornecido pela Microsoft e monitorem qualquer atividade suspeita.

Linha do tempo

As vulnerabilidades informam a linha do tempo que contém a correspondência relevante:

24/05/2022

As vulnerabilidades “OverLog” e “LogCrusher” foram enviadas ao Microsoft Security Response Center (MSRC).

02/06/2022

O MSRC confirmou “OverLog” e mudou seu status para “develop”.

25/07/2022

O MSRC fechou o “LogCrusher e afirmou que o classificou como gravidade moderada porque requer privilégio de administrador e interação manual para explorar.

26/07/2022

Enviamos um e-mail de volta ao MSRC, mencionando especificamente que o relatório inicial informa que a vulnerabilidade pode ser explorada a partir do usuário do domínio na configuração-padrão do Windows. Não recebemos resposta do MSRC.

11/10/2022

Patch Tuesday — As vulnerabilidades foram nomeadas CVE-2022-37981 e corrigidas.

25/10/2022

Post publicado no blog.