前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DOS 命令 | 每日一学,wevtutil 快速检索 Windows 系统事件日志元数据

DOS 命令 | 每日一学,wevtutil 快速检索 Windows 系统事件日志元数据

作者头像
全栈工程师修炼指南
发布2024-04-17 18:03:37
1740
发布2024-04-17 18:03:37
举报
wevtutil 命令 - 检索与设置Windows事件日志元数据

Windows 事件日志是记录系统事件和错误信息的宝库。可以帮助你识别和解决各种问题,例如应用程序崩溃、系统错误和安全审核等。

这些日志文件位于C:\windows\system32\config路径下,但不支持使用文本编辑器打开。为了方便查看,Windows 提供了多个实用工具,最常用的就是事件查看器Eventvwr.msc(界面模式)、和 wevtutil 命令(命令行模式)此文介绍。

描述: wevtutil 命令主要用于在计算机上注册提供程序的命令行实用工具, 还可以使用它来获取有关提供程序、其事件及其记录事件的通道的元数据信息,以及从通道或日志文件查询事件。

温馨提示:WevtUtil.exe 工具包含在 %windir%\System32 中, 并且 此命令仅限于 Administrators 组的成员,必须使用提升的权限运行。

温馨提示:作者最近开通的知识星球,全栈系列从门到实践教程将会逐步同步到星球内(实时更新),加入星球将获得作者在安全、运维、开发(Sec、Ops、Dev)中的所有学习实践笔记,和问题答疑以及远程技术支持,希望大家多多支持!

语法参数:

代码语言:javascript
复制
# 语法
wevtutil COMMAND [ARGUMENT [ARGUMENT] ...] [/OPTION:VALUE [/OPT]
wevtutil COMMAND /? #二级命令帮助

# 参数
el | enum-logs          列出日志名称。
gl | get-log            获取日志配置信息。
sl | set-log            修改日志配置,即为应用程序日志设置保留、自动备份和日志大小上限。
gli | get-log-info      获取日志状态信息。
epl | export-log        导出日志。
al | archive-log        存档导出的日志。
cl | clear-log          清除日志。

ep | enum-publishers    列出事件发布者。
gp | get-publisher      获取发布者配置信息。
  /{ge | getevents}:[true|false]   #获取此发布者可能引发的事件的元数据信息。
  /{gm | getmessage}:[true|false]  #显示实际消息,而不是数字消息 ID。
  /{f | format}:[XML|Text] #指定日志文件格式。默认值为 Text。如果指定 XML,则使用 XML 格式打印输出。如果指定 Text,则不使用 XML 标记打印输出。

um | uninstall-manifest 从清单中卸载事件发布者和日志。
im | install-manifest 从清单中安装事件发布者和日志。
  /resourceFilePath)形式的选项名称。 #选项及其值不区分大小写。
  /{rf | resourceFilePath}:VALUE #要替换的清单中的提供程序元素的 ResourceFileName 属性。 #VALUE 应该是资源文件的完整路径。
  /{mf | messageFilePath}:VALUE  #要替换的清单中的提供程序元素的 MessageFileName 属性。VALUE 应该是消息文件的完整路径。
  /{pf | parameterFilePath}:VALUE #要替换的清单中的提供程序元素的 ParameterFileName 属性。VALUE 应该是参数文件的完整路径。

qe | query-events 从日志或日志文件中查询事件。
    * /{rd | reversedirection}:[true|false] #事件读取方向,如果为 true,即返回最近时间节点的事件。
    * /{lf | logfile}:[true|false] #如果为 true,则 <PATH> 是日志文件的完整路径。
    * /{sq | structuredquery}:[true|false] # 如果为 true,则 <PATH> 是包含结构化查询的文件的完整路径。
    * /{q | query}:VALUE # VALUE 是用于筛选读取的事件的 XPath 查询。如果未指定,则返回所有事件。如果 /sq 为 true,则不能使用此选项。
    * /{bm | bookmark}:VALUE # VALUE 是包含上一查询的书签的文件的完整路径。
    * /{sbm | savebookmark}:VALUE #VALUE 是用于保存此查询的书签的文件的完整路径。文件扩展名应为 .xml。
    * /{f | format}:[XML|Text|RenderedXml] #默认值为 XML。如果指定 Text,则使用易于读取的文本格式打印事件,而不是使用 XML 格式。
    * #如果指定 RenderedXml,则使用 XML 格式打印事件并包含呈现信息,使用 Text 或 RenderedXml 格式打印事件,比使用 XML 格式打印慢。
    * /{l | locale}:VALUE  # VALUE 是以特定区域设置打印事件文本的区域设置字符串。只有在使用 /f 选项以文本格式打印事件时,才能使用该字符串。
    * /{c | count}:<n>  # 要读取的最大事件数。
    * /{e | element}:VALUE  #在输出事件 XML 时,包含一个根元素以生成正确格式的 XML。VALUE 是要包含在根元素中的字符串。例如指定 /e:root 将导致使用根元素对 <root></root> 输出 XML。

# 选项
/im 和 /um            # 注意,此选项是不支持远程操作。
/{r | remote}:VALUE   # 如果指定,则在远程计算机上运行该命令。VALUE 是远程计算机名称。
/{u | username}:VALUE # 指定一个不同的用户以登录到远程计算机。VALUE 是 domain\user 或 user 形式的用户名。只有在指定 /r 选项时
/{p | password}:VALUE # 指定的用户密码。如果未指定,或者 VALUE 为 "*",则会提示用户输入密码。只有在指定 /u 选项时才适用。
/{a | authentication}:[Default|Negotiate|Kerberos|NTLM] # 用于连接到远程计算机的身份验证类型。默认值为 Negotiate。
/{uni | unicode}:[true|false] # 使用 Unicode 显示输出。如果为 true,则使用 Unicode 显示输出。

使用示例:

1.列出日志名称,以及查看事件对象与自定日志对象信息。

代码语言:javascript
复制
wevtutil el          # 列出日志名称 Application / System / Secuirty
wevtutil ep          # 列出当前计算机上的事件发布者(即谁发出的)
C:\Users\Administrator>wevtutil gl System  # 获取System日志配置信息。
  # name: System
  # enabled: true
  # type: Admin
  # owningPublisher:
  # isolation: System
  # channelAccess: O:BAG:SYD:(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x3;;;BO)(A;;0x5;;;SO)(A;;0x1;;;IU)(A;;0x3;;;SU)(A;;0x1;;;S-1-5-3)(A;;0x2;;;S-1-5-33)(A;;0x1;;;S-1-5-32-573)
  # logging:
  #   logFileName: %SystemRoot%\System32\Winevt\Logs\System.evtx
  #   retention: false
  #   autoBackup: false
  #   maxSize: 20971520
  # publishing:
  #   fileMax: 1

# 使用 XML 或 Text 格式显示有关本地系统日志的配置信息。
wevtutil gl System /f:xml
wevtutil gl System /f:Text

weiyigeek.top-查询Intel-USB3.0对象提供日志配置信息

2.查询所有认证登录ID=4624特殊登录 4672注销 4634开机 12关机 13 相关的日志语法:(需查看Windows常见安全事件日志ID汇总,后续作者会在后续详细介绍Windows日志)

代码语言:javascript
复制
# 使用文本格式显示应用程序日志中的三个最近的事件。
wevtutil qe Application /c:3 /rd:true /f:text

# 查看系统关闭和开启时间日志(注意与真实时间相差+8小时),只显示前三条
wevtutil qe System /c:3 /rd:true /f:text /q:"*[System[(EventID=12 or EventID=13)]]"

# 查看远程主机日志信息
wevtutil qe security /rd:true /f:text /q:"*[System[(EventID=4624 or EventID=4634)]" /r:192.168.1.10 /u:weiyigeek /p:weiyigeek 

# 查看本地主机日志信息
wevtutil qe Security /q:"*[System[(EventID=4624 or EventID=4634)]]" /rd:true /f:text
wevtutil qe Security /q:"*[System[(EventID=4672)]]" /rd:true /f:RenderedXml

# 查询将查找最近24小时内的登录事件(EventID=4624),并将结果以文本格式显示出来,其中timediff(@SystemTime) <= 86400000表示时间差小于等于24小时(以毫秒为单位)
wevtutil qe Security /q:"*[System[(EventID=4624) and TimeCreated[timediff(@SystemTime) <= 86400000]]]" /rd:true /f:text

知识扩展:Windows 事件日志条目的示例说明

代码语言:javascript
复制
<!-- 根元素 <Event>: 指定XML文档遵循的架构或规范。-->
<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'>
<!--  <System> 元素: 提供了事件的元数据。-->
<System>
  <!-- 事件的提供者 -->
  <Provider Name='Microsoft-Windows-Security-Auditing' Guid='{54849625-5478-4994-a5ba-3e3b0328c30d}'/>
  <!-- 事件的唯一标识符,例如此处是注销 -->
  <EventID>4634</EventID>
  <Version>0</Version>
  <!-- 重要性或严重性级别 -->
  <Level>0</Level>
  <!-- 事件相关的任务或操作的标识符 -->
  <Task>12545</Task>
  <!-- 操作代码,表示事件的特定类型或子类型 -->
  <Opcode>0</Opcode>
  <!-- 与事件相关的关键字,用于过滤或搜索事件 -->
  <Keywords>0x8020000000000000</Keywords>
  <!-- 事件创建的时间 -->
  <TimeCreated SystemTime='2020-08-24T18:45:50.181682600Z'/>
  <!-- 事件的记录ID,确保事件在日志中的唯一性 -->
  <EventRecordID>138280</EventRecordID>
  <Correlation/>
  <Execution ProcessID='668' ThreadID='11916'/>
  <!-- 事件所属的主机 -->
  <Computer>WEIYIGEEK.TOP</Computer>
  <!-- 事件所属的通道 -->
  <Channel>Security</Channel>
  <!-- 通常是一个空元素,也表示事件所属的通道。 -->
  <Security/>
</System>

<!-- <EventData> 元素:包含事件的具体数据 -->
<EventData>
<!-- 如目标用户的SID、用户名、域名、登录ID和登录类型 -->
  <Data Name='TargetUserSid'>S-1-5-21-3059585724-171103038-3195841082-500</Data>
  <Data Name='TargetUserName'>weiyigeek</Data>
  <Data Name='TargetDomainName'>WEIYIGEEK.TOP</Data>
  <Data Name='TargetLogonId'>0xec6d372</Data>
  <Data Name='LogonType'>7</Data>
</EventData>

<!-- <RenderingInfo> 元素: 显示为人类可读的形式提供了事件的描述 -->
<RenderingInfo Culture='zh-CN'>
  <Message>已注销帐户.....登录 ID 是唯一的。</Message>
  <Level>信息(Info)</Level>
  <!-- 表示关机任务 -->
  <Task>Logoff</Task>
  <Opcode>信息</Opcode>
  <Channel>Security</Channel>
  <Provider>Microsoft Windows security auditing.</Provider>
  <Keywords>
    <Keyword>审核成功</Keyword>
  </Keywords>
</RenderingInfo>
</Event>

weiyigeek.top-指定实践ID查询系统登录以及注销操作图

3.清空指定日志对象的日志,例如,下面清空 SECURITY、SYSTEM、APPLICATION 等日志。

代码语言:javascript
复制
wevtutil cl security
wevtutil cl system
wevtutil cl application
wevtutil cl setup

4.设置日志记录策略以及大小。

代码语言:javascript
复制
# 例如,启用日志记录,事件日志文件的最大数为16,日志轮转覆盖旧记录,日志大小上限默认为1024KB,到达上限是否自动备份 
wevtutil sl Application /e:true /filemax:10 /retention:false /maxsize:"1048576" /autobackup: true

# 使用 /c 指定xml配置文件,为应用程序日志设置保留、自动备份和日志大小(单位字节)上限
tee config.xml <<'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<channel name="Application" isolation="Application"
         xmlns="http://schemas.microsoft.com/win/2004/08/events">
  <logging>
    <retention>true</retention>
    <autoBackup>true</autoBackup>
    <maxSize>9000000</maxSize>
  </logging>
  <publishing>
  </publishing>
</channel>
EOF
wevtutil sl /c:config.xml

5.显示信息发布者配置信息

代码语言:javascript
复制
wevtutil gp Application /ge:true /gm:true
wevtutil gp Microsoft-Windows-Eventlog /ge:true /gm:true 

#8.以下示例从 myManifest.man 清单文件中安装发布者和日志。
wevtutil im myManifest.man /rf:^%systemroot^%/System32/wevtutil.exe

weiyigeek.top-显示信息发布者配置信息

6.查看日志的大小及其建立状态信息

代码语言:javascript
复制
C:\Windows\system32>wevtutil gli System
  # creationTime: 2020-11-04T15:43:48.004Z
  # lastAccessTime: 2024-04-11T09:35:19.453Z
  # lastWriteTime: 2024-04-11T09:35:19.453Z
  # fileSize: 2101248
  # attributes: 2080
  # numberOfLogRecords: 5587
  # oldestRecordNumber: 133763

7.导出日志对象到指定日志文件

代码语言:javascript
复制
# 日志导出以下示例将系统日志中的事件导出到 C:\backup\ 目录中
wevtutil epl system /overwrite:true C:\backup\system-0506.evtx

# 要存档的日志文件
wevtutil al %SystemRoot%\System32\Winevt\Logs\System.evtx

亲,文章就要看完了,不关注一下【全栈工程师修炼指南】吗?

至此完毕,更多技术文章,请关注我获取及时文章推送!

原文地址: https://blog.weiyigeek.top

如果此篇文章对你有帮助,请你将它分享给更多的人!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈工程师修炼指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档