利用powershell進行windows日誌分析
0x00 前言
Windows 中提供了 2 個分析事件日誌的 PowerShell cmdlet:一個是Get-WinEvent,超級強大,但使用起來比較麻煩;另一個是Get-EventLog,使得起來相當簡單,可以實時篩選,接下來,我們利用PowerShell 來自動篩選 Windows 事件日誌。
0x01 Get-WinEvent
A、XML編寫
假設有這樣一個需求:windows server2008 R2環境,需要統計一下近7天使用者登入次數。
我們可以直接利用事件檢視器裡面篩選日誌,如下圖:
通過檢視登入日誌,發現在真正的登入時間,是這條日誌,去其他不同的是,此條日誌記錄的程序名是winlogon.exe 要實現比較精確的篩選,需要從這裡入手,
進一步篩選 點選“事件屬性”裡面的“詳細資訊”中,可以看見一條資訊,後面會用到:
在“篩選當前日誌”中,選擇“XML”,勾選“手動編輯查詢”,並確認,在手動編輯中加入以下設定 *[EventData[Data[@Name='ProcessName'] and (Data='c:\windows\system32\winlogon.exe')]] and 如圖(裡面的PrcessName和winlogon.exe就是前面在“事件屬性”裡面的“詳細資訊”中看到的):
*[EventData[Data[@Name='ProcessName'] and (Data='c:\windows\system32\winlogon.exe ')]] and
點選確認,可以精確的篩選使用者登入事件。
windows server 2012的登入篩選 在windows server2012中,可能會有一些小變化,但是也沒關係,按照之前的解決思路即可。下面可做參考:
*[EventData[Data[@Name='ProcessName'] and (Data='c:\windows\system32\winlogon.exe')]] and
*[EventData[Data[@Name='LogonType'] and (Data='10')]] and
B、Get-WinEvent使用
Get-WinEvent -FilterHashtable @{Logname='system';Id='6006','6005'}
0x02 Get-EventLog
Get-EventLog Security -InstanceId 4624,4625
$xml='<QueryList> <Query Id="0" Path="Security"> <Select Path="Security">*[System[(EventID=4624)]]</Select> </Query> </QueryList>' $events = Get-WinEvent -FilterXml $xml $i=0 #Write-Host '登入時間','登入型別','登入賬號','登入IP地址' while ($i -lt $events.length) { $time=$events[$i].TimeCreated $type=[regex]::matches($events[$i].Message, '登入型別:(.+)') | %{$_.Groups[1].Value.Trim()} $user=([regex]::matches($events[$i].Message, '帳戶名:(.+)') | %{$_.Groups[1].Value.Trim()})[1] $IP=[regex]::matches($events[$i].Message, '源網路地址:(.+)') | %{$_.Groups[1].Value.Trim()} Write-Host $time,$user,$type,$IP $i++ }
指令碼執行:
檢視使用者登入事件、登入使用者名稱、登入型別、登入IP地址
參考連結:
Get-EventLog 使用
https://www.cnblogs.com/brooks-dotnet/archive/2010/08/24/1807615.html
https://www.cnblogs.com/fuhj02/archive/2011/01/03/1924339.html
Get-EventLog使用
https://docs.microsoft.com/zh-cn/powershell/module/Microsoft.PowerShell.Management/Get-EventLog?view=powershell-5.1
精準的篩選windows使用者登入事件
https://www.iyunv.com/thread-525384-1-1.html