分享

『工具使用』日志分析工具之 LogParser

 冲天香阵 2024-05-14 发布于甘肃

日期:2024.05.14
作者:nothing
介绍:本文介绍了windows日志分析工具-LogParser的基础用法。

0x00 前言

前段时间遇到几次windows的应急响应,主要是病毒类事件,且时间过长,病毒已不再运行,无法提取到实时的信息,于是只能从windows日志中分析入侵痕迹。

windows日志文件一般比较大,如果人工分析的话,效率太低,且容易忽略细节,那么高效分析windows安全日志,提取出我们想要的有用信息,就显得尤为关键,分析过程中使用到了微软官方出的LogParser工具,下面介绍一些基础使用方法。

图片

0x01 windows日志基础知识

1.1 日志位置及基本类型

系统日志

记录系统中硬件、软件和系统问题的信息,用户可以通过它来检查错误发生的原因或者寻找受到攻击时攻击者留下的痕迹。

日志的默认位置为:

C:\Windows\System32\winevt\Logs\System.evtx

应用程序日志

记录程序在运行过程中的日志信息。

日志的默认位置为

C:\Windows\System32\winevt\Logs\Application.evtx

安全日志

登录日志、对象访问日志、进程追踪日志、特权使用、账号管理、策略变更、系统事件。

日志的默认位置为:

C:\Windows\System32\winevt\Logs\Security.evtx

同时在默认路径下,还包含很多其他的日志,用来记录机器运行期间一些软件、服务等运行事件。

图片

1.2 常见事件类型

windows日志中,使用Event ID来表示发生事件的类型,任务类别表示类型概要,下面是一些常见事件的说明:

事件ID事件说明
4624登录成功
4625登录失败
4634注销成功
4720创建用户
4726删除用户
4732用户组属变更
1102安全日志清除
104其他日志清除

其中登录成功的Event ID中,还有一个LogonType状态属性,代表了不同的登录类型。

登录类型描述说明
2交互式登录(Interactive)用户在本地进行登录。
3网络(Network)最常见的情况就是连接到共享文件夹或共享打印机时。
4批处理(Batch)通常表明某计划任务启动。
5服务(Service)每种服务都被配置在某个特定的用户账号下运行。
7解锁(Unlock)屏保解锁。
8网络明文(NetworkCleartext)登录的密码在网络上是通过明文传输的,如FTP。
9新凭证(NewCredentials)使用带/Netonly参数的RUNAS命令运行一个程序。
10远程交互,(RemoteInteractive)通过终端服务、远程桌面或远程协助访问计算机。
11缓存交互(CachedInteractive)以一个域用户登录而又没有域控制器可用

关于更多的Event ID的说明,在微软官网上有相关的资料,链接如下:

https://learn.microsoft.com/zh-cn/windows-server/identity/ad-ds/plan/appendix-l--events-to-monitor

1.3 如何查看

一般来讲,使用系统自带的事件管理器即可查看日志,打开事件管理器一般有两种方式:

1、开始>windows管理工具>事件查看器

图片

2、win r打开运行窗口,输入eventvwr.msc即可打开

打开以后是如下界面:

图片

日志的数量相对较多,可以使用自带的筛选功能,对想要查看的Event ID进行筛选。

例如想要查看下登录成功的事件,输入ID 4624即可查看。

图片

图片

登录类型为5,就表明该次登录为服务程序进行的登录认证,无用户交互,一般来讲是比较安全的。

0x02 LogParser

如上面的案例,用windwos自带的事件查看器进行筛选时,无法精准地筛选出具体登录类型的事件,这时就需要额外的辅助工具来对日志进行筛选辅助分析。

2.1 安装

Log Parser(是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它可以像使用SQL语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。

下载地址:

https://www.microsoft.com/en-us/download/details.aspx?id=24659

安装完成后的路径如下:

C:\Program Files (x86)\Log Parser 2.2

将该路径添加到环境变量中。

图片

添加完成后打开powershell,输入LogParser.exe,输出如下结果,证明添加成功。

图片

2.2 基础用法及常用语句

LogParser基本的查询语句如下:

LogParser.exei:EVTo:DATAGRID 'SELECT * FROM c:\xx.evtx'

LogParser的优势在于,可以采用SQL语句的形式对日志内容进行精确分割查询,相比于自带的事件查看器使用XML格式的语句进行精确查询来说,学习难度更低,速度也相对更快,也可同时查询多个log

以下是在应急响应过程中常用的集中查询语句。

2.2.1 登录

登录失败

Security日志中Event ID4625代表身份验证失败,类型3代表从网络登录。但Logon Type 3并不一定是RDP登录失败日志,可能是共享资源或打印机之类的网络登录,并且一些该类型的日志并不能获取到源IP

LogParser -i:EVT -o:DATAGRID 'SELECT TimeGenerated AS 登录时间    , EXTRACT_TOKEN(Strings, 5, '|') AS 用户名    , EXTRACT_TOKEN(Strings, 13, '|') AS 计算机名    , EXTRACT_TOKEN(Strings, 10, '|') AS 登录类型    , EXTRACT_TOKEN(Strings, 19, '|') AS 源IP    , EXTRACT_TOKEN(Strings, 17, '|') AS 请求进程ID    , EXTRACT_TOKEN(Strings, 18, '|') AS 请求进程名FROM SecurityWHERE eventid = 4625    AND 登录类型 LIKE '3'    OR 登录类型 LIKE '10''

图片

登录成功

Security日志中Event ID4624,类型为10 或 7,其中7代表会话重连(锁屏状态下重新登录)。

LogParser -i:EVT -o:DATAGRID 'SELECT TimeGenerated AS 登录时间 , EXTRACT_TOKEN(Strings, 5, '|') AS 用户名 , EXTRACT_TOKEN(Strings, 11, '|') AS 计算机名 , EXTRACT_TOKEN(Strings, 8, '|') AS 登录类型 , EXTRACT_TOKEN(Strings, 18, '|') AS 登录源IP , EXTRACT_TOKEN(Strings, 16, '|') AS 请求进程ID , EXTRACT_TOKEN(Strings, 17, '|') AS 请求进程名FROM SecurityWHERE eventid = 4624 AND 用户名 NOT LIKE '%$' AND 登录类型 LIKE '3' OR 登录类型 LIKE '10''
图片

2.2.2 powershell执行

>>  执行程序

日志文件名:Microsoft-Windows-PowerShell%4Operational.evtx

注意:针对程序的操作日志,无法直接查询,需要将文件复制到别处,修改名称后进行查询。

LogParser.exe -i:evt -o:DATAGRID 'SELECT TimeGenerated AS 时间, ComputerName AS 计算机名, Sid    , EXTRACT_TOKEN(Strings, 2, '|') AS 命令行, EXTRACT_TOKEN(Strings, -1, '|') AS pathFROM your.evtxWHERE eventid = 4104'
图片

其中,命令行部分为执行的具体命令,path为执行的文件路径,若直接在命令行中执行,则无文件路径。

需要注意的是,由于切割部分使用的是管道符'|',执行的代码中也可能存在此符号,所以可能会出现命令行部分复制出来的代码不完整的情况,在此情况下,若想获得完整的powershell执行代码,修改语句为:

LogParser.exe -i:evt -o:DATAGRID 'SELECT TimeGenerated AS 时间, ComputerName AS 计算机名, Sid , StringsFROM your.evtxWHERE eventid = 4104'

自行从Strings中提取第三部分的代码即可。

2.2.3 用户相关

>>  用户创建
LogParser.exe -i:EVT -o:datagrid '   select TimeGenerated  as 创建时间   ,extract_token(Strings,0,'|') as 被创建用户名   ,extract_token(Strings,4,'|') as 创建者   from Security where eventid=4720'

图片

>>  用户删除
LogParser.exe -i:EVT -o:datagrid ' select TimeGenerated as 删除时间 ,extract_token(Strings,0,'|') as 被删除用户名 ,extract_token(Strings,4,'|') as 删除者 from Security where eventid=4726'
图片

0x03 总结

本文只是简单介绍了一些用法,网上还有很多人在应急响应过程中总结提炼出来的语句。在真实应急响应中,熟练地使用一些工具,可以提高应急效率,更快更准确地定位问题,才能更好地发现系统防护中的薄弱点。

参考链接:
https://bypass007./Emergency-Response-Notes/LogAnalysis/%E7%AC%AC1%E7%AF%87%EF%BC%9AWindow%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90.html
https:///LogParser%E8%A7%A3%E6%9E%90windows%E7%B3%BB%E7%BB%9F%E6%97%A5%E5%BF%97%E5%B8%B8%E7%94%A8sql%E5%90%88%E9%9B%86/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多