分析工具
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
最后更新于
这有帮助吗?