Como obter o log de segurança com usuário não administrativo



Oi Habr! Leia em cat como acessar o log de segurança do Windows sem privilégios de administrador. Este não será o primeiro artigo sobre Habré relacionado aos logs do Windows e provavelmente não o mais original, mas, na minha opinião, passei muito tempo procurando uma solução simples para ler logs como um usuário comum, então decidi compartilhar "minha história de sucesso".

Também tive que comparar o desempenho dos cmdlets do Powershell com os cmdlets Get-WinEvent e Get-EventLog .

Tudo o que está em discussão é relevante para o Windows Server 2008R2 / 2012R2, Windows 10 Pro (1809), não verifiquei outras versões, acho que a situação é semelhante aos produtos de 2016 e 2019.

E assim, por padrão, o usuário médio não tem permissão para ler logs de segurança.
Ao tentar obter os logs, você recebe um erro.



E através do Visualizador de Eventos, o acesso também será negado.



SHOWTIME


Adicione o usuário ao grupo local de leitores de log de eventos .



Em seguida, concedemos permissões de leitura à ramificação do registro MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Security .



Sem alterar os direitos dessa ramificação do registro, você não poderá ler os parâmetros do log de segurança; portanto, não poderá descobrir o local e o nome do arquivo de log. Segurança , esta é a única seção do serviço Log de Eventos que não herda direitos de acesso da raiz.

É assim que as permissões para MACHINE \ System \ CurrentControlSet \ Services \ Eventlog se parecem.



Verifique se os cmdlets Get-WinEvent e Get-EventLog funcionam!
Mais tarde, voltando a comparar esses cmdlets ...



Gerenciar auditoria e log de segurança


Se o usuário precisar ter direitos para limpar o log, você precisará editar a política de grupo. Um usuário ou grupo de usuários precisa adicionar permissões de gerenciamento de auditoria e log de segurança .

Este grupo está localizado aqui Configuração do Computador \ Configurações do Windows \ Configurações de Segurança \ Diretivas Locais \ Atribuição de Direitos do Usuário .



Você pode ler mais sobre Gerenciar auditoria e log de segurança aqui.
Essa configuração de diretiva determina quais usuários podem especificar opções de auditoria de acesso a objetos para recursos individuais, como arquivos, objetos do Active Directory e chaves do Registro. Esses objetos especificam suas listas de controle de acesso do sistema (SACL). Um usuário a quem este direito é atribuído também pode exibir e limpar o log de segurança no Visualizador de Eventos. Para obter mais informações sobre a política de auditoria de acesso a objetos, consulte Auditar o acesso a objetos.

Verificamos, tudo funciona como prometido, os logs foram limpos ...



Não há outras lógicas para limpar direitos.



Honestamente, não consigo criar um cenário em que o usuário precise ter o direito de limpar os logs de segurança, mas existe essa oportunidade.

Get-WinEvent VS Get-EventLog


É hora de comparar esses dois cmdlets

Get-eventlog
Descrição:

O cmdlet Get-EventLog obtém eventos e logs de eventos nos computadores local e remoto.

Você pode usar os parâmetros e os valores de propriedade do cmdlet para procurar eventos. Esse cmdlet obtém eventos que correspondem aos valores de propriedade especificados.

Os cmdlets que contêm o substantivo EventLog funcionam apenas em logs de eventos clássicos. Para obter eventos de logs que usam a tecnologia Windows Event Log no Windows Vista e versões posteriores do Windows, use Get-WinEvent.

Get-WinEvent
Descrição:

O cmdlet Get-WinEvent obtém eventos de logs de eventos, incluindo logs clássicos, como os logs do sistema e de aplicativos, e os logs de eventos gerados pela tecnologia Windows Event Log introduzida no Windows Vista. Ele também obtém eventos em arquivos de log gerados pelo Event Tracing for Windows (ETW).

Sem parâmetros, um comando Get-WinEvent obtém todos os eventos de todos os logs de eventos no computador. Para interromper o comando, pressione CTRL + C.

Get-WinEvent também lista logs de eventos e provedores de log de eventos. Você pode obter eventos de logs selecionados ou de logs gerados por provedores de eventos selecionados. E você pode combinar eventos de várias fontes em um único comando. Esse cmdlet permite filtrar eventos usando consultas XPath, consultas XML estruturadas e consultas de tabela de hash simplificadas

De acordo com a descrição, o Get-WinEvent pode funcionar com um grande número de revistas que apareceram no Windows Vista .

Para maior clareza, aqui estão as listas com as quais esses cmdlets trabalham : eu parei a saída do Get-WinEvent .



Mas há uma coisa: o desempenho importa, compare o tempo de execução da consulta.



O tempo de execução do Get-WinEvent é simplesmente incrível, preste atenção ao número de entradas nos logs de Aplicação e Segurança , o número de eventos é aproximadamente o mesmo 3400-3600, mas a diferença no tempo de execução é quase 20 vezes ...

Get-WinEvent gasta 127 segundos versus 52 segundos Get-EventLog para ler eventos de aplicativos .

E xeque - mate, o Get-WinEvent gasta 2020 segundos versus 45 segundos do Get-EventLog para ler eventos de segurança .

Se você executar os mesmos comandos localmente, tudo não ficará tão ruim, mas mesmo o Get-EventLog local funcionará com logs de segurança 50 vezes mais rápido que o Get-WinEvent .



E outro exemplo, já um pouco mais significativo, de recebimento de eventos com o código 4624 Uma conta foi conectada com êxito .



O que posso dizer, os números não mentem ...

Acesso de não administrador aos logs de eventos do DC


E, para concluir, deixei o tópico de obter acesso aos logs de segurança no controlador de domínio.

Todos os itens acima também são relevantes para o controlador de domínio com algumas alterações.

1 - Você encontrará o grupo Leitores de Log de Eventos nos objetos de objetos de segurança internos .



Ao adicionar um usuário a esse grupo, você concede apenas permissões de leitura aos controladores de domínio.

E não esqueça que em cada um dos controladores de domínio você deve dar permissão para ler a ramificação do registro MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Security .

Aqui está um exemplo, não há permissão para ler o log de um servidor membro, se você precisar ler os logs de outras máquinas no domínio, use políticas de grupo para adicionar usuários ou grupos de usuários aos grupos locais de Leitores de Log de Eventos .



2 - Para adicionar direitos para limpar logs, você deve editar a Política de Controladores de Domínio Padrão .

3 - Para permitir o lançamento de tarefas em nome do usuário no controlador de domínio, você também deve editar a Política de Controladores de Domínio Padrão e conceder ao usuário Logon como permissões de trabalho em lote .

4 - Seja extremamente cuidadoso ao editar políticas de domínio padrão!

PS

Uma pequena lista de recursos que me ajudaram:


Na minha opinião, publicações úteis sobre o Habr, cujos tópicos estão relacionados aos logs do Windows:


O fim

Source: https://habr.com/ru/post/pt443386/


All Articles