Share via


LogParser and Powershell- LOGPOWER

I was going through my last post, where I have shared log parser queries to analyze data using log parser tool. Good news is ,if you are familiar with power shell then life becomes even more exciting and easy ,so all the  queries I have shown there you can use them with power shell as below

Pre-requisites following wont make much sense if you haven't gone through my previous post on logparser, so before you proceed any further, I recommend you to read that post first.

You can see I have a function below, where you can pass input file path along with file name, output file  path and file name where you want to store the output or result. You also pass on the event id as parameter here as well as the logon type. Following example is for event id's 4624 and 4625.

You can build your Log_queries as below  and automate this process. Why following example is only for 4624 and 4625, because you will notice the string field values vary for each event id, so the extract token for other event values may give you different values for different positions within the string field of the event. I have even notice variations in 4624 and 4625 positions in the string field.

Again, following is an example to show case that you can change the Log_query variable as per the event id. I have also given function call example below to explain how you can call this function with different values.


function log_power($inFilePath,$outFilePath,$eventid,$logontype)

{

$Log_query= @"

SELECT distinct extract_token(strings, 5, '|') AS account,extract_token(strings, 8, '|') AS logontype,extract_token(strings,18, '|') as source_ip,extract_token(strings, 11, '|') as computer,Timegenerated as Time INTO $outFilePath

FROM $inFilePath where EventId = $eventid and extract_token(strings, 8, '|')= '$logontype'

"@

& C:\Logparser\Logparser.exe $Log_query -i:evt -o:csv

}

log_power -inFilePath 'drive:\pathofLogs\security.evt' -outFilePath 'drive:\pathofLogs\outputfile.csv' -eventid 4624 -logontype 3


so after you make the function call log parser will put the parsed output at the outfile location. If needed I can add Log_query string for other event ids ,if I see that users are not able to use the Log_query variable with strings field effectively.

In my upcoming posts I will also share few Power shell utilities and tools I have created to ease the work a little bit. Meanwhile play with above if you haven't done this before.

Have fun with this new combination.

Reference : I thought of sharing the string positions for 4625 and 4624 below , which will help in building the queries to get the precise information

String position information for 4625 event


String Position What it gives us
3 Account SID
5 Account
10 Logon type e.g. 3 for network logon
11 Security support provider/auth provider e.g . NtLmSsp
12 Auth Method e.g. NTLM
18 Process name
19 Source IP

 

String position information for 4624 event


String Position What it gives us
4 Account SID
5 Account
6 Domain
8 Logon type e.g. 3 for network logon
10 Auth Method
11 computer name
17 Process name
18 Source IP

I will also add String positions for other events either here or in new post.

String Position for event ID 4648 : event that's generated when explicit credentials are used.


String Position What it gives us
2 base account
3 base domain
6 explicit account
7 explicit domain
9 target server
11 Process name