В настоящее время я экспортирую журналы аудита безопасности 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) <= 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