Назад | Перейти на главную страницу

Экспорт имени учетной записи, домена и метки времени из журнала событий аудита безопасности

В настоящее время я экспортирую журналы аудита безопасности Microsoft Windows за последние 7 дней через PowerShell в CSV.

Он работает, но с большим количеством деталей, а также неправильно отформатирован. Например, из csv ячейка "сообщение" содержит это в

"Аккаунт успешно вошел в систему.

Тема: Идентификатор безопасности: X Имя учетной записи: - Домен учетной записи: - Идентификатор входа: 0x0

Тип входа: 3

Уровень олицетворения: олицетворение

Новый вход: идентификатор безопасности: X Имя учетной записи: XXX Домен учетной записи: XXX Идентификатор входа: XXX GUID входа в систему: {XXX}

Информация о процессе: ID процесса: 0x0 Имя процесса: -

Сетевая информация: Имя рабочей станции: - Сетевой адрес источника: XXX.XXX Порт источника: XXX ............

Теперь, чтобы получить вышеуказанное в csv, я использую этот сценарий 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"

Как можно экспортировать CSV со следующими столбцами?

Идентификатор события, идентификатор безопасности, имя учетной записи, домен учетной записи, идентификатор входа, вход в систему, время создания

Детали из тела сообщения о событии хранятся в XML-файле события. Вы можете преобразовать событие в XML, а затем извлечь каждое из полей XML. Следует иметь в виду, что вы должны запрашивать несколько идентификаторов событий только в том случае, если они используют общую схему, в противном случае свойства события могут не совпадать в выводе. Есть хорошая статья, объясняющая проблему схемы процесса и события. Вот.

На GitHub есть командлет под названием Get-WinEventData это делает всю тяжелую работу за вас. Выходные данные содержат свойства для всех полей основных событий, таких как имя компьютера, имя поставщика и сообщение. Он также содержит свойства для всех данных события XML. Чтобы использовать это, просто передайте команду Get-WinEvent в Get-WinEventData, выберите нужные свойства и экспортируйте в CSV. Конечно, вам нужно будет заранее импортировать функцию Get-WinEventData.

Пример использования:

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