日志概述
在windows系统中,日志文件包括:系统日志、安全性日志及应用程序日志,对于应急响应工程师来说这三类日志需要熟练掌握,其位置如下。
- 在windows 2000专业版/windows XP/Windows Server 200(注意日志文件的后缀名是evt)系统中:
-
- 系统日志的位置为C:\WINDOWS\System32\config\SysEvent.evt;
- 安全性日志的位置为C:\WINDOWS\System32\config\SecEvent.evt;
- 应用程序日志的位置为:C:\WINNT\System32\config\AppEvent.evt。
- 在Windows Vista/Windwos 7/Windwos 8/Windows 10/Windows Server 2008及以上版本系统中:
-
- 系统日志的位置为%SystemRoot%\System32\Winevt\Logs\System.evtx
- 安全性日志的位置为%SystemRoot%\System32\Winevt\Logs\Security.evtx
- 应用程序日志的位置为%SystemRoot%\System32\Winevt\Logs\Application.evtx
系统日志
- 系统日志主要是指Windows系统中的各个组件在运行中产生的各种事件。这些事件一般分为:系统中各种驱动程序在运行中出现的重大问题、操作系统的多种组件在运行中出现的重大问题及应用软件在运行中出现的重大问题等。这些重大问题主要包括重要数据的丢失、错误,以及系统产生的崩溃行为等。事件ID为8033的系统日志详情如图所示。
安全性日志
- 安全性日志与系统日志不同,安全性日志主要记录了各种与安全相关的事件。构成该日志的内容主要包括:各种登录与退出系统的成功或不成功的信息;对系统中各种重要资源进行的各种操作,如对系统文件进行的创建、删除、更改等操作。事件ID为513的安全性日志详情如图所示。(主要:由于吸引版本不同,部分"安全性"日志也可以写为“安全”日志)。
应用程序日志
- 应用程序日志主要记录各种应用程序所产生的各类事件。如,系统中SQLServer程序在受到暴力破解工具时,日志中会有相关记录,该记录中包含与对应事件相关的详细信息。事件ID为18456的应用程序日志详情如图所示。
- 除了上述日志,Windwos系统还有其他日志,在进行应急响应和溯源时也有可能用到。
2000专业版/XP/Server2003
- 在Windows 2000专业版/Windows XP/Windows Server 2003系统中,只有应用程序、安全性及系统三类日志,如图所示
8/10/Server 2008/Server2012
- 在Windows 7/Windwos 8/Windwos 10/Windwos Server 2008/Windwos Server 2012等系统中进行应急响应时,除了会用到应用程序、安全性及系统三类日志,还会用到其他日志,如Dhcp、Bits-Client等,这些日志存储在“%SystemRoot%\System32\Winevt\Logs”
eventvwr命令
- 还可以在【运行】对话框中输入【eventvwr】命令,打开【事件查看器】窗口,查看相关的日志,如图所示;
PowerShell日志
- 在应急响应还经常使用PowerShell日志,图是典型的PowerShell日志详细情况。(需要先打开PowerShell日志记录)
日志常用事件ID
常见的事件ID
Windwos系统中的每个事件都有其对应的事件ID,表是应急响应中常见的事件ID,其中旧版本值Windwos 2000专业版/Windows XP/Windwos Server 2003,新版本指Windwos Vista/Windows 7/Windwos 8/Windwos 10/Windwos Server 2008等。
事件ID(旧版本) | 事件ID(新版本) | 描述 | 事件日志 |
528 | 4624 | 成功登录 | 安全 |
529 | 4625 | 失败登录 | 安全 |
680 | 4776 | 成功/失败的账户认证 | 安全 |
624 | 4720 | 创建用户 | 安全 |
636 | 4732 | 添加用户到启用安全性的本地组中 | 安全 |
632 | 4728 | 添加用户到启用安全性的全局组中 | 安全 |
2934 | 7030 | 服务创建错误 | 系统 |
2944 | 7040 | IPSEC服务的启动类型已从禁用改为自动启动 | 系统 |
2949 | 7045 | 服务创建 | 系统 |
登录进程事件ID
- 成功/失败登录事件提供的有用信息之一是用户/进程尝试登录(登录类型),windows系统将此信息显示为数字,图是数字及其对应说明。
数字 | 登录类型 | 描述 |
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 | 登录尝试解锁 |
登录日志事件ID
表是登录相关日志事件ID对应的描述
事件ID | 名称 | 描述 |
4624 | 用户登录成功 | 大部分登录事件成功时会产生的日志 |
4625 | 用户登录失败 | 大部分登录事件失败时会产生的日志(解锁屏幕并不会产生这个日志) |
4672 | 特殊权限用户登录 | 特殊权限用户登录成功时会产生的日志,如,登录Administrator,一般会看到4624和4672日志一起出现 |
4648 | 显式凭证登录 | 一些其他的登录情况,如使用runas/user以其他用户身份运行程序时会产生的日志(不过在使用runas时,也会产生一条4624日志) |
常用启动事件日志
事件 | 事件ID | 事件级别 | 事件日志 | 事件来源 |
关机初始化失败 | 1074 | 警告 | User32 | User32 |
Windows | 12 | 信息 | 系统 | Microsoft-Windows-Kernel-General |
Windows | 13 | 信息 | 系统 | Microsoft-Windows-Kernel-General |
清除相关日志事件ID
事件 | 事件ID | 事件级别 | 事件日志 | 事件来源 |
事件日志服务关闭 | 1100 | 信息 | 安全 | Microsoft-Windows-EventLog |
事件日志被清除 | 104 | 信息 | 安全 | Microsoft-Windows-EventLog |
事件日志被清除 | 1102 | 信息 | 安全 | Microsoft-Windows-EventLog |
日志分析
日志分析就是在众多的日志中找到自己需要的日志,一般Windwos系统中的日志的分析方法主要有以下几种方法。
通过内置的日志筛选器进行分析
- 使用日志筛选器可以对记录时间、事件级别、任务类别、关键字等信息进行筛选,如图所示
PowerShell对日志进行分析
- 在使用PowerShell进行日志分析时,需要有管理员权限才可以对日志进行操作。
- 通过PowerShell进行查询最常用的两个命令是【Get-EventLog】和【Get-WinEvent】,两者的区别是【Get-EventLog】只获取传统的事件日志,而【Get-WinEvent】是从传统的事件日志(如系统日志和应用程序日志)和新Windows事件日志技术生成的事件日志中获取事件,其还会获取Windows事件跟踪(ETW)生成的日志文件中事件。注意,【Get-WinEvent】需要Windows Vista、Windows Server 2008或更高版本的Windows系统,还需要Microsoft .NET Framework 3.5及以上的版本。总体来说,【Get-WinEvent】功能更强大,但是对系统和.NET的版本有更多要求。
- 以下列举部分实例
- 使用【Get-EventLog Security -Instancedld 4625】命令,可获取安全性日志下事件ID为4625(失败登录)的所有日志信息,如图所示。
- 注意,使用【Get-WinEvent】和【Get-EventLog】命令的查询语句是不同的。使用【Get-WinEvent -FilterHashtable @{LogName='Security';ID='4625'}】命令,也可以获取安全性日志下事件ID为4625的所有日志信息。
- 通过设置起始时间和终止时间变量,可查询指定时间内的事件。先设置起始时间变量StartTime和终止时间变量EndTime,在使用【Get-WinEvent】命令,可查询这段时间内的系统日志情况,如图所示。
- $StartTime=Get-Date -Year 2023 -Month 12 -Day 1 -Hour 15 -Minute 30
- $EndTime=Get-Date -Year 2024 -Month 1 -Day 3 -Hour 20 -Minute 00
- Get-WinEvent -FilterHashtable @{LogName='System';StartTime=$StartTime;EndTime=$EndTime}
- 通过逻辑连接符可对多种指定日志ID进行联合查询。如,使用【Get-WinEvent -LogName system | Where-Object {$_.ID -eq "12" -or $_.ID -eq "13"}】命令,可对Windows启动和关闭日志进行查询,如图所示。
相关的日志分析工具
- 常用的工具有(参考链接:“网络安全应急响应-常用工具_winprefetchview-CSDN博客”)
FullEventLogView
- FullEventLogView:FullEventLogView是一个轻量级的日志检索工具,其是绿色版、免安装版,检索舒服比Windows系统自带的检索工具要快,展示效果更好,如图所示
Event Log Explorer
- Event Log Explorer:Event Log Explorer是一个检测系统安全的软件,可查看、监视和分析事件记录,包括安全性、系统、应用程序和其Windows系统事件记录,如图所示。
Log Parser
- Log Parser:Log Parser是微软公司推出的日志分析工具,其功能强大,使用简单,可以分析基于文本的日志文件、XML文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory 等。其可以像使用SQL语句一样查询分析数据,甚至可以把分析结果以各种图表的形式展现出来。
登录成功的事件
- 查看登录成功的所有事件:使用【 LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM C:\Security.evtx where EventID=4624"】命令,可查看事件ID为4624,即登录成功的所有事件,如图所示。
指定事件范围事件
- 指定时间范围的事件:使用【LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM C:\Security.evtx where TimeGenerated>'2018-01-01 23:59:59' and TimeGenerated<'2019-06-01 23:59:59' and EventID=4625"】命令,可查看从2018年1月1日23时59分59秒到2019年6月1日23时59分59秒,事件ID为4625,即登录失败的所有事件,如图所示。
提取登录成功的用户名和IP地址
- 提取登录成功用户的用户名和IP地址:使用【LogParser.exe -i:EVT -o:DATAGRID "SELECT EXTRACT_TOKEN(Message,13, ' ') as EventType, TimeGenerated as LoginTime, EXTRACT_TOKEN(Strings,5, '|') as Username, EXTRACT_TOKEN (Message,38,' ') as Loginip FROM c:\Security.evtx where EventID=4624"】可以查看事件ID为4624(即登录成功的用户)的用户名和信息,如图所示。
查看系统历史开关机记录
- 使用【LogParser.exe -i:EVT -o:DATAGRID "SELECT TimeGenerated,EventID,Message FROM C:\System.evtx where EventID=12 or EventID=13"】命令,可查看系统历史开关机记录,如图所示。