日志分析工具 LogParser 学习笔记

 

1.LogParser是什么?

官方文档解释:log Parser是一款功能强大的多功能工具,可提供对基于文本的数据(例如日志文件,XML文件和CSV文件)以及Windows®操作系统上的关键数据源(例如事件日志,注册表, 文件系统和ActiveDirectory®的查询以及输出。

您可以告诉Log Parser所需的信息以及处理方式。 查询结果可以在基于文本的自定义格式中输出,也可以持久保存到SQL,SYSLOG或图表等更特殊的目标中。

 

2.LogParser的组成部分

日志解析器由三个组件组成:输入格式,类似SQL的核心查询引擎,输出格式

 

输入格式:是通用日志或记录提供者;日志等同于SQL表中的行,并且输入格式可以认为是包含要处理的数据的SQL表。

Log Parser的内置输入格式文件可以从以下数据中检索或处理指定数据:

  • IIS日志文件(W3C,IIS,NCSA,集中式二进制日志,HTTP错误日志,URLScan日志,ODBC日志)
  • Windows事件日志
  • 通用XML,CSV,TSV和W3C-格式化的文本文件(例如,Exchange跟踪日志文件,个人防火墙日志文件,WindowsMedia®Services日志文件,FTP日志文件,SMTP日志文件等)
  • Windows注册表
  • 活动目录对象
  • 文件和目录信息
  • NetMon .cap捕获文件
  • 扩展/合并的NCSA日志文件
  • ETW痕迹
  • 自定义插件(通过公共COM界面)

 

类似SQL的核心引擎:使用包含通用SQL语句(SELECT,WHERE,GROUP BY,HAVING,ORDER BY),聚合函数(SUM,COUNT,AVG, MAX,MIN)和丰富的功能集(例如SUBSTR,CASE,COALESCE,REVERSEDNS等)

 

输出格式: 它们可以被视为接收数据处理结果的SQL表。

Log Parser的内置输出格式可以:

  • 将数据以不同格式(CSV,TSV,XML,W3C,用户定义的等)写入文本文件
  • 将数据显示到控制台或屏幕
  • 创建图表并将其保存为GIF或JPG图像文件
  • 将数据发送到SYSLOG服务器
  • 将数据发送到SQL数据库

3.常用输入格式

  • Windows事件日志
  • IIS日志文件
  • Windows注册表
  • XML,CSV等数据文件格式

(1)Windows事件日志EVT 文件格式字段:

EVT输入格式生成的输入记录包含以下15列:

Name

Type

Description

EventLog

STRING

Name of the Event Log or Event Log backup file containing this event

RecordNumber

INTEGER

Index of this event in the Event Log or Event Log backup file containing this event

TimeGenerated

TIMESTAMP

The date and time at which the event was generated (local time) (日志产生事件)

TimeWritten

TIMESTAMP

The date and time at which the event was logged (local time)

(日志记录事件)

EventID

INTEGER

The ID of the event

(事件ID)

EventType

INTEGER

The numeric type of the event

(事件类型号)

EventTypeName

STRING

The descriptive type of the event

(事件类型名)

EventCategory

INTEGER

The numeric category of the event

EventCategoryName

STRING

The descriptive category of the event

SourceName

STRING

The source that generated the event

( 源名称)

Strings

STRING

The textual data associated with the event

(文本数据集)

ComputerName

STRING

The name of the computer on which the event was generated

(生成日志的计算机名称)

SID

STRING

The Security Identifier associated with the event

SID(安全ID)

Message

STRING

The full event message

(全文消息)

Data

STRING

The binary data associated with the event

(2)IIS 日志格式字段

IIS生成的日志文件记录包含以下列:

Name

Type

Description

LogFilename

STRING

Full path of the log file containing this entry

LogRow

INTEGER

Line in the log file containing this entry

UserIP

STRING

The IP address of the client that made the request

UserName

STRING

The name of the authenticated user that made the request, or NULL if the request was from an anonymous user

Date

TIMESTAMP

The date on which the request was served (local time)

Time

TIMESTAMP

The time at which the request was served (local time)

ServiceInstance

STRING

The IIS service name and site instance number that served the request

HostName

STRING

The name of the server that served the request

ServerIP

STRING

The IP address of the server that served the request

TimeTaken

INTEGER

The number of milliseconds elapsed since the moment the server received the request to the moment the server sent the last response chunk to the client

BytesSent

INTEGER

The number of bytes in the request sent by the client

BytesReceived

INTEGER

The number of bytes in the response sent by the server

StatusCode

INTEGER

The response HTTP or FTP status code

Win32StatusCode

INTEGER

The Windows status code associated with the response HTTP or FTP status code

RequestType

STRING

The HTTP request verb or FTP operation

Target

STRING

The HTTP request uri-stem or FTP operation target

Parameters

STRING

The HTTP request uri-query, or NULL if the requested URI did not include a uri-query

 

4.Windows登录类型

安全日志登录部分的事件 ID 和登录类型代码都具有一定含义:

(1)事件 ID(Event ID)

Event ID(2000/XP/2003)

Event ID(Vista/7/8/2008/2012)

描述

528

4624

成功登录

529

4625

失败登录

680

4776

成功/失败的账户认证

624

4720

创建用户

636

4732

添加用户到启用安全性的本地组中

632

4728

添加用户到启用安全性的全局组中

2934

7030

服务创建错误

2944

7040

IPSEC服务服务的启动类型已从禁用更改为自动启动

2949

7045

服务创建

 

(2)事件类型(EventType)

登录类型

登录类型

描述

2

Interactive

用户登录到本机

3

Network

用户或计算手机从网络登录到本机,如果网络共享,或使用 net use 访问网络共享,net view 查看网络共享

4

Batch

批处理登录类型,无需用户干预

5

Service

服务控制管理器登录

7

Unlock

用户解锁主机

8

NetworkCleartext

用户从网络登录到此计算机,用户密码用非哈希的形式传递

9

NewCredentials

进程或线程克隆了其当前令牌,但为出站连接指定了新凭据

10

Remotelnteractive

使用终端服务或远程桌面连接登录

11

Cachedlnteractive

用户使用本地存储在计算机上的凭据登录到计算机(域控制器可能无法验证凭据),如主机不能连接域控,以前使用域账户登录过这台主机,再登录就会产生这样日志

12

CachedRemotelnteractive

与 Remotelnteractive 相同,内部用于审计目的

13

CachedUnlock

登录尝试解锁

 

5.基本语法

logparser -i:输入文件格式 [-输入文件参数] -o:输出文件格式 [-输出格式参数] "SQL 查询语句"

(1)EVT 日志格式中重要的列Strings文本数据集

字段号

字段名称

0

安全IP(SID)

1

账号名称

2

账户域

3

登录ID

4

安全ID

5

账户名

6

账户域

7

登录ID

8

登录类型

9

登录进程

10

身份验证数据包

11

网络账户名称

12

账号GUID

13

网络账户域

14

数据包名

15

密钥长度

16

进程ID

17

进程路径

18

源网络地址

19

源端口

20

模拟级别

21

 

22

 

23

 

24

虚拟账户

25

 

26

提升的令牌

  • 分组别名显示
字段名 as 别名
LogParser.exe -i:EVT -o:DATAGRID "SELECT TimeGenerated as LoginTime FROM Security.evtx where EventID=4624"
  • 按年月日筛选

使用timestamp('年-月-日', 'yyyy-MM-dd')函数

LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM Security.evtx where TO_DATE(TimeGenerated) between timestamp('2020-03-17', 'yyyy-MM-dd') and timestamp('2020-03-27', 'yyyy-MM-dd')" -rtp:-1

 

  • 按时间筛选
LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM Security.evtx where to_time(TimeGenerated) between timestamp('13:33:00', 'hh:mm:ss') and timestamp('13:35:00', 'hh:mm:ss')" -rtp:-1 

 

  • 通过函数EXTRACT_TOKEN()来截取Strings文本数据集的字段
EXTRACT_TOKEN(EVT日志文件列,字段号,'分隔符')
比如:
EXTRACT_TOKEN(Strings, 8, '|') 截取String列8个值,以‘|’分隔

输出格式:

LogParser.exe -i:输入格式 -o:输出格式 “SQL语句”

(1)通用文本文件输出格式
NAT:将输出记录格式化为可读的列表列。
CSV:将输出记录格式化为以逗号分隔的值文本。
TSV:将输出记录格式化为制表符分隔或空格分隔的文本。
XML:将输出记录格式化为XML文档。
W3C:以W3C扩展日志文件格式格式化输出记录。
TPL:按照用户定义的模板格式化输出记录。
IIS:以Microsoft IIS日志文件格式格式化输出记录

(2)专用输出格式
SQL:将输出记录上载到SQL数据库中的表。
SYSLOG:将输出记录发送到Syslog服务器。
DATAGRID:在图形用户界面中显示输出记录。
CHART:创建包含图表的图像文件。

比如:LogParser.exe -i:EVT -o:DATAGRID

 

(1)网格

成功登录用户信息以网格的形式展示

LogParser.exe -i:EVT -o:DATAGRID "SELECT  TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,8,'|') AS LoginType,EXTRACT_TOKEN(Strings,5,'|') AS user_name,EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM Security WHERE EventID=4624"

 

(2)CSV

LogParser.exe -i:EVT -o:CSV "SELECT  TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,8,'|') AS LoginType,EXTRACT_TOKEN(Strings,5,'|') AS user_name,EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP INTO loginData.csv FROM Security WHERE EventID=4624"

 

 

 

6.日志分析实例

(1)远程登录成功日志:

LogParser.exe -i:EVT -o:DATAGRID "SELECT TimeGenerated as LoginTime, EXTRACT_TOKEN(Strings,5,'|') as username, EXTRACT_TOKEN(Strings, 8, '|') as LogonType, EXTRACT_TOKEN(Strings, 17, '|') AS ProcessName, EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM Security where EventID=4624"

 

远程登录失败日志:

同上,改事件ID为4625

(2)筛选指定日期之内成功登录的用户信息:

(登录时间,登录类型,用户名,源IP)

LogParser.exe -i:EVT -o:DATAGRID "SELECT TimeGenerated as LoginTime, EXTRACT_TOKEN(Strings,8,'|') AS LoginType, EXTRACT_TOKEN(Strings,5,'|') AS user_name, EXTRACT_TOKEN(Strings, 18, '|') AS SourceIP FROM Security WHERE EventID=4624 AND TO_DATE(TimeGenerated) BETWEEN timestamp('2020-04-01', 'yyyy-MM-dd') AND timestamp('2020-04-04', 'yyyy-MM-dd')" -rtp:-1

(3)IIS服务器日志

安装IIS服务器核心组件(包括日志)

选择日志进行配置

 

设置日志文件格式以及字段

 

多访问几次就生成日志信息

IIS日志通过Logparser 筛选指定字段的值进行网格输出

logparser "select date,time,c-ip,cs-method,cs-uri-stem,cs-uri-query,sc-status,sc-bytes,cs-bytes,time-taken from D:\IIS\u_ex200405.log" -o:DATAGRID

很清晰的看到时间,客户端IP,接受流量,发送流量(这两项由于没有实际网站为NULL) 以及响应状态,相应时间等

 总之,logparser对于任何一个文本格式的日志信息提供了非常方便的处理方式。以上是我自己学习Logparser过程中写出来的学习笔记。

 

参考:

1.Log Parser 2.2 Documentation

2.事件ID表,事件类型表,部分筛选代码: https://blog.csdn.net/weixin_30663471/article/details/98886535

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值