当前位置: 代码迷 >> 综合 >> 系统实训
  详细解决方案

系统实训

热度:51   发布时间:2023-10-26 23:07:21.0

Windows系统日志简介

Windows操作系统在其运行的生命周期中会记录其大量的日志信息,这些日志信息包括:Windows事件日志(Event Log),Windows服务器系统的IIS日志,FTP日志,Exchange Server邮件服务,MS SQL Server数据库日志等。处理应急事件时,客户提出需要为其提供溯源,这些日志信息在取证和溯源中扮演着重要的角色。

Windows事件日志文件实际上是以特定的数据结构的方式存储内容,其中包括有关系统,安全,应用程序的记录。每个记录事件的数据结构中包含了9个元素(可以理解成数据库中的字段):日期/时间、事件类型、用户、计算机、事件ID、来源、类别、描述、数据等信息。应急响应工程师可以根据日志取证,了解计算机上上发生的具体行为。

查看系统日志方法,Windows系统中自带了一个叫做事件查看器的工具,它可以用来查看分析所有的Windows系统日志。打开事件查看器方法:开始->运行->输入eventvwr->回车的方式快速打开该工具。使用该工具可以看到系统日志被分为了两大类:Windows日志和应用程序和服务日志。早期版本中Windows日志只有,应用程序,安全,系统和Setup,新的版本中增加了设置及转发事件日志(默认禁用)。

系统内置的三个核心日志文件(System,Security和Application)默认大小均为20480KB(20MB),记录事件数据超过20MB时,默认系统将优先覆盖过期的日志记录。其它应用程序及服务日志默认最大为1024KB,超过最大限制也优先覆盖过期的日志记录。

Windows事件日志中共有五种事件类型,所有的事件必须拥有五种事件类型中的一种,且只可以有一种。五种事件类型分为:

1.     信息(Information)

信息事件指应用程序、驱动程序或服务的成功操作的事件。

2.     警告(Warning)

警告事件指不是直接的、主要的,但是会导致将来问题发生的问题。例如,当磁盘空间不足或未找到打印机时,都会记录一个“警告”事件。

3.     错误(Error)

错误事件指用户应该知道的重要的问题。错误事件通常指功能和数据的丢失。例如,如果一个服务不能作为系统引导被加载,那么它会产生一个错误事件。

4.     成功审核(Success audit)

成功的审核安全访问尝试,主要是指安全性日志,这里记录着用户登录/注销、对象访问、特权使用、账户管理、策略更改、详细跟踪、目录服务访问、账户登录等事件,例如所有的成功登录系统都会被记录为“ 成功审核”事件。

5.     失败审核(Failure audit)

失败的审核安全登录尝试,例如用户试图访问网络驱动器失败,则该尝试会被作为失败审核事件记录下来。

事件日志文件存储位置(Vista/Win7/Win8/Win10/Server2008/Server 2012及之后的版本)

类型 事件类型 描述 文件名
Windows日志 系统 包含系统进程,设备磁盘活动等。事件记录了设备驱动无法正常启动或停止,硬件失败,重复IP地址,系统进程的启动,停止及暂停等行为。 System.evtx
安全 包含安全性相关的事件,如用户权限变更,登录及注销,文件及文件夹访问,打印等信息。 Security.evtx
应用程序 包含操作系统安装的应用程序软件相关的事件。事件包括了错误、警告及任何应用程序需要报告的信息,应用程序开发人员可以决定记录哪些信息。 Application.evtx
应用程序及服务日志 Microsoft Microsoft文件夹下包含了200多个微软内置的事件日志分类,只有部分类型默认启用记录功能,如远程桌面客户端连接、无线网络、有线网路、设备安装等相关日志。 详见日志存储目录对应文件
Microsoft Office Alerts 微软Office应用程序(包括Word/Excel/PowerPoint等)的各种警告信息,其中包含用户对文档操作过程中出现的各种行为,记录有文件名、路径等信息。 OAerts.evtx
Windows PowerShell Windows自带的PowerShell应用的日志信息。 Windows PowerShell.evtx
Internet Explorer IE浏览器应用程序的日志信息,默认未启用,需要通过组策略进行配置。 Internet Explorer.evtx

ReadEventLogA函数

  • 2018年12月5日
  • 2分钟阅读时长

从指定的事件日志中读取指定数量的条目。该函数可用于按时间顺序或反向时间顺序读取日志条目。

句法

C ++复制

BOOL ReadEventLogA(HANDLE hEventLog,DWORD dwReadFlags,DWORD dwRecordOffset,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,DWORD *pnBytesRead,DWORD *pnMinNumberOfBytesNeeded ); 

参数

hEventLog

要读取的事件日志的句柄。该 OpenEventLog函数返回该句柄。

dwReadFlags

使用以下标志值指示如何读取日志文件。此参数必须包含以下值之一(标志是互斥的)。

含义

EVENTLOG_SEEK_READ

0×0002

dwRecordOffset参数中指定的记录开始读取。

如果函数无法确定日志文件的大小,则此选项可能无法用于大型日志文件。有关详细信息,请参阅知识库文章,177199。

EVENTLOG_SEQUENTIAL_READ

0×0001

按顺序读取记录。

复制

 If this is the first read operation, the EVENTLOG_FORWARDS_READ EVENTLOG_BACKWARDS_READ flags determines which record is read first. 

 

您必须指定以下标志之一以指示连续读取操作的方向(标志是互斥的)。

含义

EVENTLOG_FORWARDS_READ

0x0004

按时间顺序(从最旧到最新)读取日志。

复制

 The default. 

EVENTLOG_BACKWARDS_READ

×0008

按相反的时间顺序(从最新到最旧)读取日志。

dwRecordOffset

应该开始读取操作的日志条目的记录号。除非dwReadFlags包含EVENTLOG_SEEK_READ标志,否则将忽略此参数。

lpBuffer

应用程序分配的缓冲区,它将接收一个或多个EVENTLOGRECORD结构。即使nNumberOfBytesToRead参数为零,此参数也不能为NULL

此缓冲区的最大大小为0x7ffff字节。

nNumberOfBytesToRead

lpBuffer缓冲区的大小,以字节为单位。此函数将读取适合缓冲区的任意数量的日志条目; 该函数不会返回部分条目。

pnBytesRead

指向变量的指针,该变量接收函数读取的字节数。

pnMinNumberOfBytesNeeded

指向接收lpBuffer缓冲区所需大小的变量的指针。此值仅在此函数返回零时有效, GetLastError返回ERROR_INSUFFICIENT_BUFFER

回报价值

如果函数成功,则返回值为非零。

如果函数失败,则返回值为零。要获取扩展错误信息,请调用 GetLastError。

备注

当此函数成功返回时,事件日志中的读取位置将根据读取的记录数进行调整。

注意   此源的已配置文件名也可能是其他源的已配置文件名(多个源可作为单个日志下的子项存在)。因此,此函数可能会返回由多个源记录的事件。

 

  相关解决方案