分析工具

1、LogParser

LogParser是微软自家做的工具,可以用来分析IIS日志、Windows系统日志等一些类型的日志,这里主要研究它对Windows系统日志的分析,它使用类似SQL的语法对Windows日志进行查询。最后可以将查询、筛选过的日志结果导出为CSV, XML, DATAGRID等一些格式

1、下载

LogParser

这是本节的主角,下载安装后建议将路径加入PATH变量,方便在CMD中调用。

下载:

https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=24659 LogParserStudio 这是一款界面化的辅助分析工具,可以在练习时提高语句测试的效率,解压后就可以使用(需要.NET框架),该工具依赖LogParser。

下载:

https://gallery.technet.microsoft.com/Log-Parser-Studio-cd458765

使用方法简单介绍:

2、理解字段

先收集所有字段名,并理解每个字段的含义

下表为提取的字段名与示例:两个表为1个表,上下顺序为从左往右,包括下面的MESSAGE部分。

EventLog

RecordNumber

TimeGenerated

TimeWritten

EventID

EventType

EventTypeName

EventCategory

D:\Security.evtx

2

2014/2/15 13:09:00

2014/2/15 13:09:00

4624

8

Success Audit event

12544

EventCategoryName

SourceName

Strings

ComputerName

SID

The name for category 12544 in Source "Microsoft-Windows-Security-Auditing" cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer

Microsoft-Windows-Security-Auditing

S-1-0-0|-|-|0x0|S-1-5-18|SYSTEM|NT AUTHORITY|0x3e7|0|-|-|-|{00000000-0000-0000-0000-000000000000}|-|-|0|0x4||-|-

37L425-07

NULL

MESSAGE:

对以上每个字段进行理解

字段名

解释

EventLog

Log文件名

RecordNumber

在日志文件中的序号

TimeGenerated

记录时间

TimeWritten

记录时间

EventID

事件ID

EventType

事件类型ID

EventTypeName

事件类型名称

EventCategory

事件分类ID

EventCategoryName

事件分类名称

SourceName

日志名称如:Microsoft-Windows-Security-Auditing

Strings

包含“详细信息”中的字串,使用|分割每个字段

ComputerName

本机计算机名

SID

NULL

Message

包含“常规”中的字符,其中会有中文字符

Data

NULL

3、使用

下面不写logparser参数,重点放在查询语句上。 筛选条件的内容注意区分大小写,比如:

下面是围绕Security日志进行的测试,多数没有注明的情况下,都使用eventid 4624进行测试,请悉知

1、按照事件ID筛选

和SQL查询一样,使用WHERE语法来限制

2、只查询指定字段

只查询strings字段

多字段查询也是用逗号隔开

3、限制查询数量

TOP 10 只显示前10条日志,这个TOP语法和Access语法一样

4、切割strings

Strings里包含“详细信息”中的字串,使用|分隔,包含一些重要的数据。 使用extract_token函数可以切割字符串 # EXTRACT_TOKEN ( 字符串, 索引 , '分隔字符' )

# 这是事件ID为4624的情况下

“详细信息”参考:

例子:截取用户名

索引5为 用户名,8为登录类型,11为来源主机名,18为来源主机IP,19为来源主机端口

# 这是事件ID为4625的情况下

“详细信息”参考:

例子:截取用户名

索引5为 用户名,8为登录失败原因(%%2313=未知用户名或密码错误),10为登录类型,13为来源主机名,19为来源主机IP,20为来源主机端口

以下是从网络上搜集的常见失败原因:

错误码

失败原因

%%2305

The specified user account has expired. (532)

%%2309

The specified account's password has expired. (535)

%%2310

Account currently disabled. (531)

%%2311

Account logon time restriction violation. (530)

%%2312

User not allowed to logon at this computer. (533)

%%2313

Unknown user name or bad password. (529)

5、导出文件

INTO语法导出必须使用LogParser,LPS需要用菜单选择导出。

6、只输出有主机名的记录

7、只显示登录类型3的数据

8、只显示指定主机名的数据

主机名保持大写

9、将日志整理成新的表

把strings中包含的需要的字段进行分割,使用as指定字段别名。

10、根据IP,主机名,用户名等进行排序

使用Order by 语法进行排序

11、筛选登录失败最多的IP,主机名

筛选出EventID4625结果中每个IP出现的次数

筛选出EventID4625结果中每个主机名出现的次数

这样分析不是很方便,推荐整理好字段,直接导出完整的csv文件,放在Excel中分析,整理,或转给其它工具进行分析。

12、计算文件HASH

说个不太相关的,logparser也能计算文件hash。

2、wevtutil

1、构造查询语句的方法

有人说LogParser查询命令太复杂,个人觉得使用XPath不太顺手,反而更喜欢LogParser。 查询语句的构造可以参考这个:

比如要指定登录的用户名(TargetUserName),可以这样构造语句

同时指定用户名与来源IP地址

2、用脚本导出CSV

下面使用PS脚本配合wevtutil进行日志导出,修改查询语句必须要更改代码。本想脚本修改为参数传递查询语句,无奈查询语句过于复杂导致参数传递出错。(修改位置有注释)

使用脚本导出csv

然后就可以使用excel分析了

3、LoogonTracer

LogonTracer是一个登录日志可视化工具,可用于梳理攻击路径本会有用。对本文在编写过程中曾搭建过它,测试了该工具三个版本都无法正常使用。主要呈现的问题是上传日志后,没有分析结果、报错。在上面浪费了几个小时,不建议尝试使用该工具。

这是测试过的三个版本,一个原版,Docker原版,还有一个汉化版。

https://github.com/JPCERTCC/LogonTracer https://github.com/TheKingOfDuck/logonTracer

最后更新于

这有帮助吗?