| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何只从我的事件日志检索审核失败、警告和错误?
如何只从我的事件日志检索审核失败、警告和错误?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 11:05:32
问:

您好,脚本专家!如何只从我的事件日志检索审核失败、警告和错误?

-- OG

答:

您好,OG。您知道,为避免徒劳无功,我们决定检查一下我们这里的某一台计算机上的事件日志,看看是否值得研究一番。这台计算机上的安全事件日志中有 42,815 个事件,其中,只有 286 个是失败事件。如果我们假定失败事件是我们真正关心的事件,那么在这里我们有两个选择:我们可以不辞辛劳地挨个检查这 42,815 个事件,尝试找出相对很少的失败事件,也可以编写一个仅返回失败事件的脚本。即便对于脚本专家,这也不是什么棘手的决定。

下面这个脚本可以从所有事件日志仅返回审核失败、警告和错误:

strComputer = "."



Set objWMIService = GetObject("winmgmts:" _

    & "{(Security)}//" & strComputer & "/root/cimv2")



Set colLoggedEvents = objWMIService.ExecQuery _

    ("Select * From Win32_NTLogEvent Where EventType <> 4 AND EventType <> 8")



For Each objEvent in colLoggedEvents

    Wscript.Echo "Category: " & objEvent.Category

    Wscript.Echo "Event Code: " & objEvent.EventCode

    Wscript.Echo "Message: " & objEvent.Message

    Wscript.Echo "Record Number: " & objEvent.RecordNumber

    Wscript.Echo "Source Name: " & objEvent.SourceName

    Wscript.Echo "Time Written: " & objEvent.TimeWritten

    Wscript.Echo "Event Type: " & objEvent.EventType

Next

向您展示脚本后,我们应该指出该脚本仅在 Windows XP 和 Windows Server 2003 上运行。但是不要慌:我们将马上为您介绍可以在 Windows 2000 上运行的修订版本。

嗨,不用感谢我们,这是我们的份内事。

首先,我们需要将 WMI 服务绑定到正被讨论的计算机(在此示例脚本中,指的是本地计算机)上。您可能注意到了,在进行此连接时,我们在别名字符串中包含了 (Security) 权限:

Set objWMIService = GetObject("winmgmts:" _

    & "{(Security)}//" & strComputer & "/root/cimv2")

这重要吗?嗯,我们要检索的内容之一就是审核失败。审核失败记录在安全事件日志中,如果不包含 (Security) 权限,则将不能从安全事件日志检索事件。是的,我们知道您是计算机的管理员。没关系:为了从安全事件日志检索记录,还是需要使用 (Security) 权限。

换句话说,是的,这很重要。

接下来,我们发出以下 WQL 查询,它可以将检索到的记录限制为审核失败、警告和错误:

Set colLoggedEvents = objWMIService.ExecQuery _

    ("Select * From Win32_NTLogEvent Where EventType <> 4 AND EventType <> 8")

您可能会问,该查询进行地并不明显,如何做到的?这个 – 哦,对了:的确不是非常明显,难道不是吗?嗯,我们发现,EventType 属性表示正在写入事件日志的记录的类型,而且,EventType 将始终是以下值之一:

含义

1

错误

2

警告

4

信息

8

安全审核成功

16

安全审核失败

在查询中,我们寻找 EventType 不等于 4(信息事件)以及 EventType 不等于 8(安全审核成功)的所有事件。这样就滤除了信息事件和安全审核成功事件;例如,信息等于 4 的话,该事件将从返回的数据中排除。这样,就只剩下三个事件类型要检索:审核失败、警告和错误。刚好,这些正是您感兴趣的三个事件类型。

脚本的其余部分只是一个可以回显每个事件的相关信息的 For Each 循环。正如我们经常所说的:问题得到了解决。

好了,除非您运行的是 Windows 2000,否则问题就解决了。这是因为在 Windows 2000 上找不到 EventType 属性;而 Win32_NTLogEvent 类使用 Type 属性。在 Windows 2000 上,Type 将是以下字符串值之一:

含义

error

错误

warning

警告

information

信息

audit success

安全审核成功

audit failure

安全审核失败

为使我们的脚本可以在 Windows 2000 上运行,我们需要对 Type 属性进行过滤,去掉类型为 information 和类型为 audit success 的记录。修改后的 WQL 查询如下所示:

Set colLoggedEvents = objWMIService.ExecQuery _

    ("Select * From Win32_NTLogEvent Where Type <> 'information' AND Type <> 'audit success'")

修改后的脚本如下所示:

strComputer = "."



Set objWMIService = GetObject("winmgmts:" _

    & "{(Security)}//" & strComputer & "/root/cimv2")



Set colLoggedEvents = objWMIService.ExecQuery _

    ("Select * From Win32_NTLogEvent Where Type <> 'information' AND Type <> 'audit success'")



For Each objEvent in colLoggedEvents

    Wscript.Echo "Category: " & objEvent.Category

    Wscript.Echo "Event Code: " & objEvent.EventCode

    Wscript.Echo "Message: " & objEvent.Message

    Wscript.Echo "Record Number: " & objEvent.RecordNumber

    Wscript.Echo "Source Name: " & objEvent.SourceName

    Wscript.Echo "Time Written: " & objEvent.TimeWritten

    Wscript.Echo "Event Type: " & objEvent.Type

Next

这样就可以了。

顺便说一下,有 42,815 个事件并不意味着我们没有定期备份和清除事件日志。而我们只是让这些记录累积起来,以便我们……在今天的专栏有更好的示例可以使用。现在,专栏结束了,我们也该备份和清除事件日志了,就像您应该做的一样。

不,提醒您,不是今天。但是很快,非常快……

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客
    如何在一个文件被添加到
    如何将“珊瑚虫”好友请

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览