解析Windows事件日志,可能吗?
我正在研究一个项目的可行性,这个项目涉及对硬盘图像进行一些取证工作。我在寻找关于如何分析保存的Windows事件日志文件的信息。
我并不需要监控当前的事件,我只是想查看已经创建的事件,并记录下这些事件的时间和是哪个应用程序或进程创建的。不过,我对Windows系统的内部工作原理了解不多,所以我在想这是否可能实现?
我的计划是先创建硬盘的图像,然后在另一台机器上进行分析。理想情况下,我希望使用Java或Python来完成,因为这两种语言是我最熟悉的。
我主要关心以下几个问题:
这些信息是否以某种方式被加密?
有没有现成的API可以直接解析这些数据?
关于这些日志存储的格式是否有相关信息?不同版本的Windows之间又有什么区别?
从分析硬盘本身来看,这应该是可行的,因为理想情况下,硬盘上的Windows安装不会在运行中(因为它会是挂载在另一台系统上的镜像)。
我在搜索中找到的最接近的东西是http://www.j-interop.org/,但这似乎是针对远程客户端的。理想情况下,不需要在镜像硬盘上安装任何东西。另一个似乎也出现的解决方案是JNI库,但这似乎更多是用于监控正在运行的系统。
任何帮助都非常感谢。:)
2 个回答
0
保存的Windows事件日志文件被称为备份。你可以使用JNA来打开和读取这些文件。可以先看看这篇文章,里面讲了如何在Java中读取事件日志。
EventLogIterator iter = new EventLogIterator("Application");
while(iter.hasNext()) {
EventLogRecord record = iter.next();
System.out.println(record.getRecordNumber()
+ ": Event ID: " + record.getEventId()
+ ", Event Type: " + record.getType()
+ ", Event Source: " + record.getSource());
}
3
你可以使用微软的LogParser,这是一款命令行工具,可以从事件日志中提取数据,输出为CSV或其他多种格式。默认情况下,它会从正在运行的系统的事件日志中提取数据,但根据说明书,你也可以让它查询一组EVT文件。在你的情况下,你可以把它指向正在调查的系统的EVT文件。