STATEMENT
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
LogPerser使用
分子实验室 https://molecule-labs.com/
下载安装:
微软官方链接:
https://www.microsoft.com/en-us/download/details.aspx?id=24659
直接点击exe安装即可
日志文件EVT介绍:
EVT输入格式的详细概述,包括一个描述生成记录结构的“Fields”部分:
Fields:
EventLog (S) RecordNumber (I) TimeGenerated (T)
TimeWritten (T) EventID (I) EventType (I)
EventTypeName (S) EventCategory (I) EventCategoryName (S)
SourceName (S) Strings (S) ComputerName (S)
SID (S) Message (S) Data (S)
描述如下:
LogPerser命令介绍
logperser为SQL语句, 数据将会以表的形式生成,指定执行所需任务的SQL查询;
完整命令如下所示:
LogParser -i:EVT -o:NAT "SELECT * FROM System"
即将system日志所有的信息已控制台输出
当使用NAT输出格式将结果显示到控制台窗口时,Log Parser打印10行,然后暂停打印输出,并提示用户按下一个键来显示接下来的10行。即上图中的"press a key...."
为了覆盖这个行为,你可以使用NAT输出格式的“-rtp”参数来指定暂停前打印的行数;如果想完全禁用暂停,并让日志解析器在单个打印输出中显示所有记录,请使用“-1”值。
如:LogParser -i:EVT -o:NAT "SELECT * INTO STDOUT FROM System" -rtp:-1
即可不会出现"press a key...."
需要将输出为表格文件可以将输出格式NAT改为CSV 命令为: LogParser -i:EVT -o:csv "SELECT * INTO STDOUT FROM System" >log.csv
表格内容如下:
针对事件进行检索命令
执行上面的基本查询时,Log Parser将系统事件日志中所有事件的所有字段打印到控制台窗口。
大多数时候,事件日志记录的所有14个字段的打印输出可能并不理想。例如,我们可能只想查看每个事件生成的时间、事件的类型和事件源的名称。
为此,我们必须将SELECT子句中的“*”通配符替换为希望显示的字段名称的逗号分隔列表。如希望获取TimeGenerated, EventTypeName, SourceName信息:
LogParser -i:EVT -o:NAT "SELECT TimeGenerated, EventTypeName, SourceName FROM System"
考虑前面的示例,假设对于“TimeGenerated”字段,我们只需要检索生成事件时的日期,忽略所有的时间元素。
日志解析器sql类语言支持多种函数,包括算术函数(如ADD、SUB、MUL、DIV、MOD、QUANTIZE等)、字符串操作函数(如SUBSTR、STRCAT、STRLEN、EXTRACT_TOKEN等)和时间戳操作函数(如TO_DATE、TO_TIME、TO_UTCTIME等)。
为此,我们需要使用TO_DATE函数修改“TimeGenerated”字段,该函数接受一个TIMESTAMP类型的值,并返回一个TIMESTAMP类型的新值,该值只包含年、日和月元素:
LogParser -i:EVT -o:NAT "SELECT TO_DATE(TimeGenerated), EventTypeName, SourceName FROM System"
在日志分析中,我们需要对特定事件进行进行筛选的情况, 则需要用到where命令.命令行如下:
LogParser -i:EVT -o:csv "select EventID,TimeGenerated,EXTRACT_TOKEN(Strings,5,'|') as User,EXTRACT_TOKEN(Strings,10,'|') as EventType , EventTypeName , EXTRACT_TOKEN(Strings,19,'|') as IP,EXTRACT_TOKEN(Strings,20,'|') as port from "安全.evtx" where EventID = 4625 ">%cd%\4625.csv
该命令为检索4625事件ID. 输出内容如下:
其中-o:cvs 是输出模式, 不需要-rtp:-1即可输出全部内容。
EXTRACT_TOKEN(Strings,5,'|') as User 语句中EXTRACT_TOKEN即为提取日志Strings内容,内容为XML表的第五行(从0开始计数),该列名为IP。各行信息表在日志中可查看, 例如4625事件XML表如下:
需要提取哪行数据及EXTRACT_TOKEN(Strings,X-1,'|') 即可
常见命令如下:
针对登录事件ID进行提取IP进行统计
如4624,4625
LogParser -i:EVT -o:csv "select EventID,TimeGenerated,EXTRACT_TOKEN(Strings,5,'|') as User,EXTRACT_TOKEN(Strings,10,'|') as EventType , EventTypeName , EXTRACT_TOKEN(Strings,19,'|') as IP,EXTRACT_TOKEN(Strings,20,'|') as port from "安全.evtx" where EventID = 4625 ">%cd%\4625.csv
LogParser -i:EVT -o:csv "select EventID,TimeGenerated,EXTRACT_TOKEN(Strings,5,'|') as User,EXTRACT_TOKEN(Strings,8 ,'|') as EventType , EventTypeName , EXTRACT_TOKEN(Strings,18,'|') as IP,EXTRACT_TOKEN(Strings,19,'|') as port from "安全.evtx" where EventID = 4624 ">%cd%\4624.csv
指定登录时间范围的事件:
LogParser.exe -i:EVT -o:csv "SELECT * FROM [日志名].evtx where TimeGenerated>'2018-06-19 23:32:11' and TimeGenerated<'2018-06-20 23:34:00' and EventID=4624"
参考LogParser官方文档
RECRUITMENT
招聘启事
END
长按识别二维码关注我们
本文始发于微信公众号(雷神众测):日志分析工具-LogPerser
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论