Exportando o nome da conta, domínio e registro de data e hora do log de eventos de auditoria de segurança

1

No momento, estou exportando os últimos 7 dias de logs de auditoria de segurança do Microsoft Windows Security via powershell para csv.

Funciona, mas com muitos detalhes e também não é formatado corretamente. Por exemplo, do csv, a célula 'message' tem isso em

"An account was successfully logged on.

Subject: Security ID: X Account Name: - Account Domain: - Logon ID: 0x0

Logon Type: 3

Impersonation Level: Impersonation

New Logon: Security ID: X Account Name: XXX Account Domain: XXX Logon ID: XXX Logon GUID: {XXX}

Process Information: Process ID: 0x0 Process Name: -

Network Information: Workstation Name: - Source Network Address: XXX.XXX Source Port: XXX ............

Agora, para obter o acima em csv eu estou usando este script powershell

[xml]$CustomView = @"
<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">*[System[(EventID=4624 or EventID=4672 or EventID=4648 or EventID=463) and TimeCreated[timediff(@SystemTime) &lt;= 604800000]]] </Select>
  </Query>
</QueryList>
"@

Get-WinEvent -FilterXML $CustomView | Export-CSV "C:\CustomView_$(Get-Date -format "yyyy-MM-DD").csv"

Como é possível exportar um csv com as seguintes colunas?

ID do evento, ID de segurança, Nome da conta, Domínio da conta, ID de logon, Logon, TempoCriado

    
por SK2017 09.04.2018 / 10:47

1 resposta

3

Os detalhes do corpo da mensagem do evento são armazenados no XML do evento. Você pode converter o evento em XML e extrair cada um dos campos XML. O principal a ter em mente é que você deve consultar somente vários IDs de eventos quando eles compartilham um esquema comum, caso contrário, as propriedades do evento podem não ser consistentes na saída. Há um bom artigo explicando o processo e o problema do esquema de evento aqui .

Há um cmdlet no GitHub chamado Get-WinEventData que faz todo o trabalho pesado levantando para você. A saída contém propriedades para todos os campos do evento principal, como nome da máquina, nome do provedor e mensagem. Também contém propriedades para todos os dados do evento XML. Para usá-lo, basta enviar seu comando Get-WinEvent para Get-WinEventData, selecionar as propriedades desejadas e exportar para CSV. Claro que você precisará importar a função Get-WinEventData antecipadamente.

Exemplo de uso:

Get-WinEvent -FilterHashtable @{LogName="Security";Id=4624,4672;StartTime=(Get-Date).AddDays(-1)} | Get-WinEventData | Select-Object TimeCreated,Id,EventDataSubjectUserSid,EventDataSubjectUserName,EventDataSubjectDomainName,EventDataSubjectLogonId | Export-CSV "Output.csv" -NoTypeInformation
    
por 09.04.2018 / 17:39