Windows
從安全審核事件日誌中導出帳戶名稱、域和時間戳
我目前正在通過 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