Windows系统日志分析
一、前言
本文将对常见的日志类型,利用微软日志分析工具(LogParser)结合已经掌握的恶意代码分析Windows系统日志,关联出系统的异常。
数据来源于Windows的事件查看器中的*.evtx文件,eventvwr.msc。
- System日志
- Security日志
- Setup日志
除此之外还要关注木马病毒的信息
- 注册表日志
- 文件修改时间
二、Windows登录类型
安全日志登录部分的事件 ID 和登录类型代码都具有一定含义:
事件 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 | 服务创建 |
事件类型(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 | 登录尝试解锁 |
三、分析思路
关注节点
- 入侵时间段
- IP(外网IP选取攻击者IP、监控到有被远控的内网IP)
- 登录成功类型、尝试登录类型
关联分析
1、得到已经发现WEBSHELL、远控木马的创建时间
2、搜索注册表信息,通过注册表信息获取注册表键值创建时间再找出同一时间创建的文件。
3、整合文件创建的时间、注册表键值创建时间找出的新文件时间整合分析系统日志,把整个行为关联起来。
四、LogParse分析语法
显示方式
-i:EVT是指定分析的日志,也可以分析CSV 、IISW3C 等日志格式。
# 网格显示
Logparser.exe –i:EVT –o:DATAGRID “SELECT * FROM Security.evtx”
# CSV显示
Logparser.exe –i:EVT –o:DATAGRID “SELECT * FROM Security.evtx”
筛选语句
LogParse直接SQL语句,详细SQL语句使用说明在自带的CHM说明里。结合分组、提取语句就可以统计出源IP,时间,用户名。
只需要取出关键列进行判断或者比对,就可以从庞大的windows安全日志中提取出安全事件发生后想要关联的信息。
- EXTRACT_TOKEN()
EXTRACT_TOKEN(列名,字段数,‘分隔符’)
EXTRACT_TOKEN(Strings, 8, '|')
输出结果:
- 分组别名显示
字段名 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('2018-10-17', 'yyyy-MM-dd') and timestamp('2018-10-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
- 按照事件ID分析
4624是登录成功的ID信息,指定某个关键列中的事件ID显示出结果。
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.evtx where EventID=4624“
五、Windows日志分析
Security日志
筛选出登录成功的事件(4624)中的登录时间、用户名、登录类型、进程名、源IP。
关注点:
1、管理员登录时间段是不是正常时间
2、木马运行的时间和管理员登录时间对不对应
语句:
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.evtx where EventID=4624 AND TO_DATE(TimeGenerated) between timestamp('2018-10-17', 'yyyy-MM-dd') and timestamp('2018-10-27', 'yyyy-MM-dd')" -rtp:-1
System日志
关注点:
1、时间段
2、服务名、服务路径
语句:
LogParser.exe -i:EVT -o:DATAGRID "SELECT TimeWritten,EventID,EventType,EventTypeName,SourceName,EXTRACT_TOKEN(Strings,0,'|') as service_name,EXTRACT_TOKEN(Strings,1,'|') as service_path,Message from system.evtx where TO_DATE(TimeGenerated) between timestamp('2018-10-19', 'yyyy-MM-dd') and timestamp('2018-10-20', 'yyyy-MM-dd')" -rtp:-1"
Application日志
关注点:
1、程序运行时间
语句:
LogParser.exe -i:EVT -o:DATAGRID "SELECT * from Application.evtx where TO_DATE(TimeGenerated) between timestamp('2018-10-17', 'yyyy-MM-dd') and timestamp('2018-10-27', 'yyyy-MM-dd')" -rtp:-1"
参考
用LogParser分析Windows日志
https://yq.aliyun.com/articles/404198
Windows 系统安全事件应急响应
https://xz.aliyun.com/t/2524#toc-5
LogParser: Filter records for specific time frame/date