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.
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.
Da Microsoft
O Event Log Remoting Protocol é um protocolo baseado em RPC que expõe métodos de chamada de procedimento remoto (RPC) para leitura de eventos em logs ao vivo e de backup em computadores remotos.
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.
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.
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.
O impacto está no fato de que muitos controles de segurança dependem da operação normal do serviço de log de eventos.
Interrupção da verificação do PowerShell do log de eventos.
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.
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:
Da Microsoft
Salva o log de eventos especificado em um arquivo de backup. A função não limpa o log de eventos.
...A função BackupEventLog falha com o erro ERROR_PRIVILEGE_NOT_HELD se o usuário não tiver o privilégio SE_BACKUP_NAME.
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.
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.
As vulnerabilidades informam a linha do tempo que contém a correspondência relevante:
As vulnerabilidades “OverLog” e “LogCrusher” foram enviadas ao Microsoft Security Response Center (MSRC).
O MSRC confirmou “OverLog” e mudou seu status para “develop”.
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.
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.
Patch Tuesday — As vulnerabilidades foram nomeadas CVE-2022-37981 e corrigidas.
Post publicado no blog.