Kali渗透测试:Windows事件管理工具wevtutil使用方法
渗透测试者发现可以利用事件日志(event logging)的方式来启动某一个程序。Windows系统对事件操作的工具就是Windows系统自带的wevtutil.exe(windows event utility),使您能够检索有关事件日志和发布者的信息。您还可以使用此命令安装和卸载事件清单、运行查询以及导出、存档和清除日志。
1. 语法(Syntax)
wevtutil [{
el | enum-logs}] [{
gl | get-log} <Logname> [/f:<Format>]]
[{
sl | set-log} <Logname> [/e:<Enabled>] [/i:<Isolation>] [/lfn:<Logpath>] [/rt:<Retention>] [/ab:<Auto>] [/ms:<MaxSize>] [/l:<Level>] [/k:<Keywords>] [/ca:<Channel>] [/c:<Config>]]
[{
ep | enum-publishers}]
[{
gp | get-publisher} <Publishername> [/ge:<Metadata>] [/gm:<Message>] [/f:<Format>]] [{
im | install-manifest} <Manifest>]
[{
um | uninstall-manifest} <Manifest>] [{
qe | query-events} <Path> [/lf:<Logfile>] [/sq:<Structquery>] [/q:<Query>] [/bm:<Bookmark>] [/sbm:<Savebm>] [/rd:<Direction>] [/f:<Format>] [/l:<Locale>] [/c:<Count>] [/e:<Element>]]
[{
gli | get-loginfo} <Logname> [/lf:<Logfile>]]
[{
epl | export-log} <Path> <Exportfile> [/lf:<Logfile>] [/sq:<Structquery>] [/q:<Query>] [/ow:<Overwrite>]]
[{
al | archive-log} <Logpath> [/l:<Locale>]]
[{
cl | clear-log} <Logname> [/bu:<Backup>]] [/r:<Remote>] [/u:<Username>] [/p:<Password>] [/a:<Auth>] [/uni:<Unicode>]
2. 参数(Parameters)
Parameter | Description |
---|---|
{el | enum-logs} | 显示所有日志名称 |
{gl | get-log} [/f:] | 显示指定日志的配置信息,包括是否启用日志、当前日志的最大限制以及存储日志的文件路径。 |
{sl | set-log} [/e:] [/i:] [/lfn:] [/rt:] [/ab:] [/ms:] [/l:] [/k:] [/ca:] [/c:] | 修改指定日志的配置 |
{ep | enum-publishers} | 显示本地计算机上的事件发布者 |
{gp | get-publisher} [/ge:
|
显示指定事件发布者的配置信息 |
{im | install-manifest} | 从清单安装事件发布者和日志。有关事件清单和使用此参数的详细信息,请参阅 Microsoft Developers Network (MSDN) 网站 (https://msdn.microsoft.com) 上的 Windows 事件日志 SDK。 |
{um | uninstall-manifest} | 从清单中卸载所有发布者和日志。有关事件清单和使用此参数的详细信息,请参阅 Microsoft Developers Network (MSDN) 网站 (https://msdn.microsoft.com) 上的 Windows 事件日志 SDK。 |
{qe | query-events}
|
从事件日志、日志文件或使用结构化查询读取事件。默认情况下,您为
|
{gli | get-loginfo} [/lf:] | 显示有关事件日志或日志文件的状态信息。如果使用 /lf 选项, 是日志文件的路径。您可以运行 wevtutil el 来获取日志名称列表。 |
{epl | export-log}
|
从事件日志、日志文件或使用结构化查询将事件导出到指定文件。默认情况下,您为
|
{al | archive-log} [/l:] | 将创建具有区域设置名称的子目录,并且所有特定于区域设置的信息都保存在该子目录中。通过运行 wevtutil al 创建目录和日志文件后,无论发布者是否安装,都可以读取文件中的事件。 |
{cl | clear-log} [/bu:] | 从指定的事件日志中清除事件。 /bu 选项可用于备份已清除的事件。 |
3. 选项(Options)
Option | Description |
---|---|
/f: | 指定输出应该是 XML 或文本格式。如果 为 XML,则输出以 XML 格式显示。如果 为 Text,则显示的输出不带 XML 标记。默认值为文本。 |
/e: | 启用或禁用日志。 可以是真或假。 |
/i: | 设置日志隔离模式。 可以是系统、应用程序或自定义。日志的隔离模式决定了一个日志是否与同一隔离类的其他日志共享一个会话。如果指定系统隔离,目标日志将至少与系统日志共享写权限。如果指定应用程序隔离,则目标日志将至少与应用程序日志共享写权限。如果您指定自定义隔离,您还必须使用 /ca 选项提供安全描述符。 |
/lfn: | 定义日志文件名。 是事件日志服务存储此日志事件的文件的完整路径。 |
/rt: | 设置日志保留模式。 <保留> 可以是真或假。日志保留模式决定了日志达到其最大大小时事件日志服务的行为。如果事件日志达到其最大大小并且日志保留模式为真,则保留现有事件并丢弃传入事件。如果日志保留模式为 false,传入事件将覆盖日志中最旧的事件。 |
/ab: | 指定日志自动备份策略。 可以为真或假。如果此值为 true,则日志将在达到最大大小时自动备份。如果此值为 true,则保留(使用 /rt 选项指定)也必须设置为 true。 |
/ms: | 设置日志的最大大小(以字节为单位)。最小日志大小为 1048576 字节 (1024KB),日志文件始终为 64KB 的倍数,因此您输入的值将相应四舍五入。 |
/l: | 定义日志的级别过滤器。 可以是任何有效的级别值。此选项仅适用于具有专用会话的日志。您可以通过将 设置为 0 来删除级别过滤器。 |
/k: | 指定日志的关键字过滤器。 可以是任何有效的 64 位关键字掩码。此选项仅适用于具有专用会话的日志 |
/ca: | 设置事件日志的访问权限。 是使用安全描述符定义语言 (SDDL) 的安全描述符。有关 SDDL 格式的详细信息,请参阅 Microsoft Developers Network (MSDN) 网站 (https://msdn.microsoft.com)。 |
/c: | 指定配置文件的路径。此选项将导致从 中定义的配置文件中读取日志属性。如果使用此选项,则不得指定 参数。日志名称将从配置文件中读取。 |
/ge:
|
获取此发布者可以引发的事件的元数据信息。 <元数据> 可以是真或假。 |
/gm: | 显示实际消息而不是数字消息 ID。 可以为真或假。 |
/lf: | 指定应从日志或日志文件中读取事件。 可以为真或假。如果为 true,则命令的参数是日志文件的路径。 |
/sq: | 指定应使用结构化查询获取事件。 可以为真或假。如果为真,
|
/q: | 定义 XPath 查询以过滤读取或导出的事件。如果未指定此选项,则将返回或导出所有事件。当 /sq 为真时,此选项不可用。 |
/bm: | 指定包含来自先前查询的书签的文件的路径。 |
/sbm: | 指定用于保存此查询的书签的文件的路径。文件扩展名应为 .xml。 |
/rd: | 指定读取事件的方向。 可以为真或假。如果为真,则首先返回最近的事件。 |
/l: | 定义用于在特定语言环境中打印事件文本的语言环境字符串。仅在使用 /f 选项以文本格式打印事件时可用。 |
/c: | 设置要读取的最大事件数。 |
/e: | 在 XML 中显示事件时包括根元素。 是您想要在根元素中的字符串。例如,/e:root 将生成包含根元素对 的 XML。 |
/ow: | 指定应覆盖导出文件。 <覆盖> 可以是真或假。如果为 true,并且在 中指定的导出文件已经存在,它将被覆盖而无需确认。 |
/bu: | 指定将存储已清除事件的文件的路径。在备份文件的名称中包含 .evtx 扩展名。 |
/r: | 在远程计算机上运行命令。 是远程计算机的名称。 im 和 um 参数不支持远程操作。 |
/u: | 指定不同的用户登录到远程计算机。 <用户名> 是域\用户或用户形式的用户名。此选项仅在指定 /r 选项时适用。 |
/p: | 指定用户的密码。如果使用 /u 选项且未指定此选项或 为 *,将提示用户输入密码。此选项仅在指定 /u 选项时适用 |
/a: | 定义用于连接到远程计算机的身份验证类型。 可以是默认、协商、Kerberos 或 NTLM。默认值为协商 |
/uni: | 以 Unicode 显示输出。 可以是真或假。如果 为真,则输出为 Unicode。 |
4. 备注(Remarks)
-
使用带有 sl 参数的配置文件
配置文件是一个 XML 文件,与 wevtutil gl /f:xml 的输出格式相同。显示启用保留、启用自动备份并在应用程序日志上设置最大日志大小的配置文件的格式如下:
<?xml version=1.0 encoding=UTF-8?>
<channel name=Application isolation=Application
xmlns=https://schemas.microsoft.com/win/2004/08/events>
<logging>
<retention>true</retention>
<autoBackup>true</autoBackup>
<maxSize>9000000</maxSize>
</logging>
<publishing>
</publishing>
</channel>
5. 举例说明 (Examples)
1. 列出所有日志的名称
wevtutil el
2. 以 XML 格式显示本地计算机上系统日志的配置信息
wevtutil gl System /f:xml
3. 使用配置文件设置事件日志属性(请参阅备注以获取配置文件的示例)
wevtutil sl /c:config.xml
4. 显示有关 Microsoft-Windows-Eventlog 事件发布者的信息,包括有关发布者可以引发的事件的元数据
wevtutil gp Microsoft-Windows-Eventlog /ge:true
5. 从 myManifest.xml 清单文件安装发布者和日志
wevtutil im myManifest.xml
6. 从 myManifest.xml 清单文件中卸载发布者和日志
wevtutil um myManifest.xml
7. 以文本格式显示应用程序日志中的三个最新事件
wevtutil qe Application /c:3 /rd:true /f:text
备注: 如果本命令后面加上 >
8. 显示应用程序日志的状态
wevtutil gli Application
9. 将系统日志中的事件导出到 C:\backup\system0506.evtx
wevtutil epl System C:\backup\system0506.evtx
10. 将应用程序日志中的所有事件保存到 D:\admin\backups\a10306.evtx 后清除它们
wevtutil cl Application /bu:C:\admin\backups\a10306.evtx
11. 以独立格式归档指定的 (.evtx) 日志文件。创建了一个子目录 (LocaleMetaData),所有特定于语言环境的信息都保存在该子目录中
wevtutil archive-log "D:\backup\system0506.evtx" /locale:en-us