Windows日志的保护与伪造方法介绍

发布时间:2020-05-28编辑:脚本学堂
本文介绍下如何保护windows日志,以及windows日志的伪造方法,有需要的朋友,可以参考下。

  一、概述
  Windows 2000/2003的系统日志文件有应用程序日志,安全日志、系统日志、DNS服务器日志等,应用程序日志、安全日志、系统日志、DNS日志默认位置:%systemroot%system32config,默认文件大小512KB。

  安全日志文件:%systemroot%system32configSecEvent.EVT
  系统日志文件:%systemroot%system32configSysEvent.EVT
  应用程序日志文件:%systemroot%system32configAppEvent.EVT

  这些LOG文件在注册表中的:HKEY_LOCAL_MACHINESystemCurrentControlSetServicesEventlog,根据实际需要,可以将这些日志重定位。
    其中EVENTLOG下面有很多的子表,里面可查到以上日志的定位目录。

  二、作为网络管理员
  1.日志的安全配置:
  默认的条件下,日志的大小为512KB大小,如果超出则会报错,并且不会再记录任何日志。所以首要任务是更改默认大小,具体方法:注册表中HKEY_LOCAL_MACHINESystemCurrentControlSetServicesEventlog对应的每个日志如系统,安全,应用程序等均有一个maxsize子键,修改即可。

  下面的脚本,利用VMI来设定日志最大25MB,并允许日志自行覆盖14天前的日志:
  该脚本利用的是WMI对象, WMI(Windows Management Instrumentation)技术是微软提供的Windows下的系统管理工具。通过该工具可以在本地或者管理客户端系统中几乎一切的信息。很多专业的网络管理工具都是基于WMI开发的。该工具在Win2000以及WinNT下是标准工具,在Win9X下是扩展安装选项。以下的代码在2000以上均可运行成功。
 

复制代码 代码示例:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Security)}!" & _
strComputer & "rootcimv2") ''获得VMI对象
Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile")
For each objLogfile in colLogFiles
strLogFileName = objLogfile.Name
Set wmiSWbemObject = GetObject _
("winmgmts:{impersonationLevel=Impersonate}!.rootcimv2:" _
& "Win32_NTEventlogFile.Name=''" & strLogFileName & "''")
wmiSWbemObject.MaxFileSize = 2500000000
wmiSWbemObject.OverwriteOutdated = 14
wmiSWbemObject.Put_
Next

  将上述脚本用记事本存盘为vbs为后缀的即可使用。

  注意,代码中的strComputer="."在Windows脚本中的含义相当于localhost,如果要在远程主机上执行代码,只需要把"."改动为主机名,当然首先得拥有对方主机的管理员权限并建立IPC连接。本文中的代码所出现的strComputer均可作如此改动。

  2. 日志的查询与备份:
  这里推荐微软的resourceKit工具箱中的dumpel.exe,他的常用方法:
  dumpel -f filename -s server -l log
  -f filename 输出日志的位置和文件名
  -s server 输出远程计算机日志
  -l log log 可选的为system,security,application,可能还有别的如DNS等.

  如要把目标服务器server上的系统日志转存为backupsystem.log可以用以下格式:
  dumpel server -l system -f backupsystem.log
  再利用计划任务可以实现定期备份系统日志。

  另外利用脚本编程的VMI对象也可以轻而易举的实现日志备份:
  一个备份application日志的代码:
 

复制代码 代码示例:
backuplog.vbs
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Backup)}!" & _
strComputer & "rootcimv2") ''获得 VMI对象
Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile where LogFileName=''Application''") ''获取日志对象中的应用程序日志
For Each objLogfile in colLogFiles
errBackupLog = objLogFile.BackupEventLog("f:application.evt") ''将日志备份为f:application.evt
If errBackupLog <> 0 Then
Wscript.Echo "The Application event log could not be backed up."
else Wscript.Echo "success backup log"
End If
Next
 

程序注释:
如果备份成功将窗口提示:"success backup log" 否则提示:"The Application event log could not be backed up",此处备份的日志为application,备份位置为f:application.evt,可以自行修改,此处备份的格式为evt的原始格式,用记事本打开则为乱码,这一点不如dumpel用得方便。

就是这些了,平时一定要注意windows日志的安全配置与保护,有经验的管理员定会养成定期分析日志的习惯,但有经验的黑客也会利用日志进行破坏,所以关于日志这块,大家务必注意,搞好日志的存储规划,有经常查看日志的意识与习惯,防患于未然吧。