Windows

從安全審核事件日誌中導出帳戶名稱、域和時間戳

  • April 9, 2018

我目前正在通過 powershell 將最近 7 天的 Security microsoft windows 安全審計日誌導出到 csv。

它可以工作,但有很多細節,而且格式不正確。例如,在 csv 中,“消息”單元格中有這個

“一個帳戶已成功登錄。

主題:安全 ID:X 帳戶名稱:- 帳戶域:- 登錄 ID:0x0

登錄類型:3

模仿級別:模仿

新登錄:安全 ID:X 帳戶名稱:XXX 帳戶域:XXX 登錄 ID: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?

事件 ID、安全 ID、帳戶名稱、帳戶域、登錄 ID、登錄、時間創建

事件消息正文中的詳細資訊儲存在事件 XML 中。您可以將事件轉換為 XML,然後提取每個 XML 欄位。要記住的是,您應該只在多個事件 ID 共享一個公共架構時才查詢它們,否則輸出中的事件屬性可能不一致。有一篇很好的文章解釋了這裡的過程和事件模式問題。

GitHub 上有一個名為Get-WinEventData的 cmdlet ,可以為您完成所有繁重的工作。輸出包含所有主要事件欄位的屬性,例如機器名稱、提供程序名稱和消息。它還包含所有 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

引用自:https://serverfault.com/questions/906706