Parse WinEvent Log as XML

Merhabalar,

Yine bir eventlog macerası ile karşınızdayım, eğer ki yapınızda SİEM tarafı iyi kurgulanmamış ve birazcık zayıfsa veya çok spesifik ihtiyaçlar karşınıza geliyorsa benim gibi windows event’leri ile çokça içli dışı olabilirsiniz 🙂

Buradaki scriptimizin görevi 4624(Login event) XML formatına çevirerek içerisindeki özellikle de Message kısmındaki verileri kullanabilmek. Get-EventLog ile parse etmeye çalıştığınızda Message kısmındaki verileri kullanmanız çokça zor durum haline geliyor. 4624 event id nezdinde bu script’i gerçekleştirsekte diğer event id’ler için de kullanım gerçekleştirebilirsiniz.
Özellikle bir keresinde de Print Server’larımda Microsoft-Windows-PrintService/Operational yolundaki 307 event id’sini parse ederek kim, nereden, kaç sayfa ve dosya ismi bilgilerini çekerek rapor oluşturabilmiştim. Şirketin bir PrintServer log ürününe para yığmasının da önüne geçmiştim 🙂 Bazen çok etkili olabiliyor bu sebeple paylaşmak istedim.

$comp = 'TEST1','TEST2'
$filterxml = '<QueryList>
                    <Query Id="0" Path="Security">
                    <Select Path="Security">*[System[(EventID=4624)]]</Select>
                    </Query>
                 </QueryList>'


foreach($c in $comp){

$EventLog = Get-WinEvent -ea SilentlyContinue -ComputerName $c -Filterxml $filterXml

ForEach ($LogEntry in $EventLog)
		{ 
        $u=" "
        $ip=" "
        $time=" "

		#Get log details
		$entry = [xml]$LogEntry.ToXml() 
		$userName = $entry.Event.Eventdata.Data
        $time = $entry.Event.System.TimeCreated.SystemTime
		$u = $userName.Item(1) | Select InnerText
        $ip = $userName.Item(18) | Select InnerText
        
		#$Write Log to CSV file
		$strOutput = $c+ "," +$u.InnerText+ "," +$ip.InnerText+ "," +$time
		write-output $strOutput | Out-File C:\TEMP\LogonInfo.csv -append  
		}
}

Teşekkürler.

About the Author

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir