大柚子

这世界不过如此

前言

logparser的语法其实挺简单,但是重点在于要获取什么信息?获取的信息代表什么含义?故此文重点在于日志字段代表含义。

基本介绍

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

常见的事件ID(系统日志及安全日志)

Event ID(2000/XP/2003)Event ID(Vista/7/8/2008/2012)描述日志名称
5171102日志清除安全
5284624用户成功登录,比如用户输错密码安全
5294625用户失败登录安全
5524648试图使用显式凭据登录 ,我用账户密码使用远程桌面登陆的时候就会出现这个日志安全
5764672给新登录分配特权,例如管理员登录会被分配特权安全
5924688进程创建安全
6244720已创建用户帐户,当创建一个用户账户的时候就会记录这个日志安全
6264722已启用用户帐户,当创建一个用户的时候,就会记录这个日志,因为创建用户后默认都是启用,不会有人勾选不启用吧……安全
6284724试图重置帐户密码,比如在域控中重置账户密码安全
6324728成员已添加至全局组。安全
6364732成员已添加至本地组。安全
6424738已更改用户帐户,具体更改了用户的哪些信息,比如重置密码,用户登录名安全
6724768请求了Kerberos身份验证票证(TGT)[备注:已成功颁发和验证身份验证服务 (AS) 票证。]安全
6734769请求了Kerberos服务票证 [备注:授权票证服务 (TGS) 票证已授权。TGS 是由 Kerberos v5 票证授权服务 (TGS) 颁发的票证,允许用户对域中的特定服务进行身份验证。]安全
6804776验证帐户的凭据,比如登陆用户账户的时候就会有4776安全
5140网络共享对象被访问安全
5145具体访问了哪些文件安全
104日志清除系统
6005EventLog事件日志服务已启动。(当事件日志服务正常启动的时候电脑肯定开机)系统
6006EventLog事件日志服务已停止。(当事件日志服务正常停止的时候电脑肯定关机)系统
6009懒得找了,意会吧,当电脑非正常关机,比如直接拔电源,就会出现6009系统

基本使用

注:以下操作是针对以下操作是针对Windows server 2019 datacenter,不同系统的日志字段内容值会有所不同

1、logparser的参数

: \Progra111 Files (x86) \Log Parser 2. 2>LogParser. exe —h 
i crosoft (R) Log Parser Version 2. 2. 10 
pyright (C) 2004 Microsoft Corporation. All rights reserved. 
sage: LogParser (SQL query> 
file : 
C<input format_options>] C<output_format options>] 
c-qC:0NTOFF]] C-iwC:ONTOFF]] 
C—saveDefaults] C—querylnfo] 
LogParser —c —i —o: <from_entity> 
<into_entity> C<input_format_options>] 
C<output_format_options>] C 
c-qC:0N10FF]] C-iwC:ONiOFF]] 
C —stats C:ON'OFF]] C —query Info] 
—i : <input_format> 
—o : <output_format> 
-qC:ONLOFF] 
—e: (max errors> 
-iwC:ON'OFF] 
—stats C: ON 'OFF] 
—multiSiteC:0N'0FF] 
—saveDefaults 
—restoreDefau1ts 
—querylnfo 
xamples : 
one of IISW3C, NCSA, IIS, IISODBC, BIN, IISMSID, 
HTTPERR, URLSCAN, CSV, Tsv, W3C, XML, EVT, ETW, 
NETMON, REG, ADS, TEXTLINE, TEXTWORD, FS, COM (if 
omitted, will guess from the FROM clause) 
one of CSV, Tsv, XML, DATAGRID, CHART, SYSLOG, 
NEUROVIEW, NAT, wgc, IIS, SQL, TPL, NULL (if omitted, 
will guess from the INTO clause) 
quiet mode; default is OFF 
max # of parse errors before aborting; default is —l 
(ignore all) 
ignore warnings; default is OFF 
display statistics after executing query; default is 
ON 
use built—in conversion query 
send BIN conversion output to multiple files 
depending on the SiteID value; default is OFF 
save specified options as default values 
restore factory defaults 
display query processing information (does not 
execute the query) 
LogParser "SELECT date, REVERSEDNS(c-ip) AS Client, FROM file. log 
WHERE sc—status<>200 GROUP BY date, Client" 
-e: 10 
LogParser file:myquery. sq1?myInput=C: log+my0utput=resu1ts. csv 
LogParser —c —i :BIN —o:W3C filel. log file2. log "ComputerName IS NOT NULL" 
elp: 
-h GRAWAR 
FUNCTIONS C <function> I 
-h 
-h EXAMPLES 
-h 
—h 
—o : <output_format> 
-h 
SQL Language Grammar 
: Functions Syntax 
Example queries and commands 
. Help on <input_format> 
. Help on <output_format> 
. Conversion help

logparser的使用过程简单,总结就是一个公式:

logparser -i:输入文件的格式 -o:输出文件的格式 “SQL语句”

譬如:查询4624登录成功的安全日志,并且输出为网格模式:


LogParser.exe -i:evt -o:datagrid "select * from C:\Security.evtx where eventid=4624"
-9ΙΤΙΙ 
ηηΓΙΝ 
ηηΓΙΝ 
elea 
”'.ΗοςαΙ0'Λ.. 
'.ΗοςαΙ0'Λ.. 
”'.ΗοςαΙ0'Λ.. 
' '.ΗοςαΙ0'Λ.. 
”'.ΗοεαΙ0'Λ.. 
aalnos αι uo!ldllosap al.ll 
αι al.ll 
αι al.ll 
αι al.ll 
αι al.ll 
αι al.ll 
αι al.ll 
αι al.ll 
αι al.ll 
αι al.ll 
91 -ιε 
91 -ιε 
91 -ιε 
91 -ιε 
91 -ιε 
91 -ιε 
91 -ιε 
91 -ιε 
91 -ιε 
91 -ιε 
' Ι.μΝ,.Ηοςα.ιοψΙ, 
' Ι.μΝ,.Ηοςα.ιοψΙ, 
aa.mos aq.l 
. a:unos I K106aF•o 'o' all*ll 
. a:a.mos I K106aF•o 'o' all*ll 
. a:a.mos I K106aF•o 'o' all*ll 
. a:unos I K106aF•o 'o' all*ll 
. a:unos I K106aF•o 'o' all*ll 
. a:a.mos I K106aF•o 'o' all*ll 
. a:a.mos I K106aF•o 'o' all*ll 
. a:unos I K106aF•o 'o' all*ll 
aa.mos K106aF•o all*ll 
8 
•ΙΙOΖ 
'197 
"11:90 
•••τι:εο 
οοεεκει 
ιεςΙ3ιει 
εεςΙ3ιει 
16899161 
61139161 
%999Ι6Ι 
Ι9ξ99Ι6Ι 
αις 
e N“lndllle.s 
allleN aa.mos

总体来说就是通过控制sql语句来查询我们想要的信息,在security.evtx日志中,总共包含的字段有:eventlog、recordNumber、timegenerated、timewritten、eventid、enenttype、eventtypename、eventcategory、eventcategoryname、sourcename、strings、computername、id、message、data。不过平常应急分析的时候所用的信息就是timegenerated、strings、message。其中strings和message又比较特殊,需要从中筛选部分信息,下面详细分析这两个字段的内容。

2、Strings字段分析

在上述查询中,系统安全日志有两个参数比较特殊,“strings” 和“message”,这两个列中包含有很多的信息,如源IP、登录用户名、登录类型、登录进程名、登录进程名、登录进程id、网络空间等。

strings的值表现形式如下,在查询过程中,我们可以使用extract_token(索引从0开始)函数,以‘|’符号作为分割符。考虑到通用性问题,因为不同事件ID的日志中strings内容顺序是不一样的,所以整理了4624和4625事件id中strings中每个字段中含义,我们可以根据索引获取我们下那个要的值。

注:strings的值和日志中XML视图的是Event Data一一对应。

(1)4624事件日志

string字段值内容及含义如下:

0S-1-0-1用户id
1账户名称
2账户域
30x0登录ID(使用者)
4S-1-5-21-3860493963-3742860931-3732056798-1009安全ID(新登录)
5xxxx账户名称
6172_16_32_16账户域
70x4f41a6cd登录ID(新登录)
83登录类型
9NtLmSsp登录进程
10NTLM身份验证数据包
11xxxx工作站名称
12{00000000-0000-0000-0000-000000000000}登录GUID
13传输的服务
14NTLM V2数据包名(仅限NTLM)
15128密钥长度
160x0进程ID
17进程名称
18xx.xx.xx.xx源网络地址
190源端口
20%%1833模拟级别
21受限制的管理员模式
22网络账户名称
23网络账号域
24%%1843虚拟账户
250x0链接的登录ID
26%%1843提升的令牌

对应的XML视图如下:

(2)4625事件日志

string字段值内容及含义如下:

0S-1-0-0用户id
1账户名称
2账户域
30x0登录ID(使用者)
4S-1-0-0安全ID(新登录)
5ADMINISTRATOR账户名称
6 账户域
70xc000006d状态(失败信息)
8%%2313失败原因(失败信息)
90xc000006a子状态(失败信息)
103登录类型
11NtLmSsp登录进程名
12NTLM身份验证数据包
13工作站名称
14传输的服务
15数据包名(仅限NTLM)
160密钥长度
170x0进程ID
18进程名称
1918.119.138.40源网络地址
200源网络端口

XML对应视图如下:

3、SQL语句实现提取日志信息

有了上述信息,我们可以通过logparser查询我们需要的信息了。

关于其中exracct_token函数用法:extract_token(字段名,索引,分隔符)


LogParser -i:EVT -o:DATAGRID "select TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as username,  EXTRACT_TOKEN(Strings, 13, '|') as Workstation, EXTRACT_TOKEN(Strings,10,'|') as LogonType, EXTRACT_TOKEN(Strings, 19, '|') as SourceIP, EXTRACT_TOKEN(Strings, 20, '|') as SourcePort,EXTRACT_TOKEN(Strings, 12, '|') as AuthenticationMethod,EXTRACT_TOKEN(Strings, 17, '|') as ProcessRequestID,EXTRACT_TOKEN(Strings, 18, '|') as ProcessRequestName from yours.evtx where eventid=4625 and username not like '%$'"

Print Friendly, PDF & Email

发表回复

您的电子邮箱地址不会被公开。