python读取windows日志_Python取证技术(3): Windows 事件日志分析

Windows的事件日志都存放在 C:WindowsSystem32winevtLogs

目录下。以evtx后缀结尾。

事件日志是在windows上记录重要事件发生的特殊文件,当用户登录系统或者程序报错时,就会被记录。对 我的电脑右键菜单管理→事件查看器可以查看

安装python_Evtx

直接使用如下命令安装即可。

pip install python-evtx

如果没有安装pip,下载 get-pip.py

运行后,在python安装目录有个script目录,里面有安装好后的脚本,将该目录设为环境变量,就可以直接使用pip命令。

python_Evtx 解析日志文件

python_Evtx能够Evtx格式的日志文件解析成可读的XML文件

import mmap

import contextlib

from Evtx.Evtx import FileHeader

from Evtx.Views import evtx_file_xml_view

def MyFun():

EvtxPath = "D:Application.evtx" #日志文件的路径

with open(EvtxPath,'r') as f:

with contextlib.closing(mmap.mmap(f.fileno(),0,access=mmap.ACCESS_READ)) as buf:

fh = FileHeader(buf,0)

# 构建一个xml文件,根元素是Events

print ""

print ""

# 遍历事件

for xml, record in evtx_file_xml_view(fh):

print xml

print ""

if __name__ == '__main__':

MyFun()

输出的事件如下(只取了其中一个),有很多节点:

4625

0

4

0

0

0x0080000000000000

1

Application

KEN-PC

86400

SuppressDuplicateDuration

SoftwareMicrosoftEventSystemEventLog

我们需要着重关注的是EventID、EventData、TimeCreated。

这段脚本运行完毕后会将该文件所有的事件日志信息输出,但我们并不需要如此对所有的事件分析,只分析我们感兴趣的部分。下面就是我改进后的代码:

import mmap

import contextlib

from Evtx.Evtx import FileHeader

from Evtx.Views import evtx_file_xml_view

from xml.dom import minidom

def MyFun():

EvtxPath = "D:Application.evtx"

with open(EvtxPath,'r') as f:

with contextlib.closing(mmap.mmap(f.fileno(),0,access=mmap.ACCESS_READ)) as buf:

fh = FileHeader(buf,0)

print ""

print ""

for xml, record in evtx_file_xml_view(fh):

#只输出事件ID为16384的内容

InterestEvent(xml,16384)

print ""

# 过滤掉不需要的事件,输出感兴趣的事件

def InterestEvent(xml,EventID):

xmldoc = minidom.parseString(xml)

# 获取EventID节点的事件ID

eventID = xmldoc.getElementsByTagName('EventID')[0]

if EventID == eventID:

print xml

if __name__ == '__main__':

MyFun()

常见的一些事件ID

事件ID

名称

描述

20, 24, 25, 31, 34, 35

Windows-Update-Failure

windows更新失败

104, 1102

Microsoft-Windows-Eventlog

正常情况下是不可能被清除的,除非是攻击者为了清除痕迹。

106

Microsoft-Windows-TaskScheduler

显示最新注册的计划任务

1014

Microsoft-Windows-DNS-Client

DNS解析超时。这个也是非常有用的,恶意程序经常用来测试是否连接到目标网站。

2004, 2005, 2006, 2033

Firewall-Rule-Add/Change/Delete

正常用户一般不会修改防火墙规则

3004

Microsoft-Windows-Windows Defender

WD杀毒检测日志

4720, 4724, 4725, 4728, 4732, 4635,4740, 4748, 4756

Microsoft-Windows-Security-Auditing

能够找到远程登录信息,以及用户提权等相关信息

7030, 7045

Service-Control-Manager

监视服务是配置成与桌面交互还是安装在系统中。

8003, 8004, 8006, 8007

App-Locker-Block/Warning

记录被阻止运行或警告的程序信息

注意:本文来源网络/媒体,本站无法对本文内容的真实性、完整性、及时性、原创性提供任何保证,

请您自行验证核实并承担相关的风险与后果!

CoLaBug.com遵循[CC BY-SA 4.0]分享并保持客观立场,本站不承担此类作品侵权行为的直接责任及连带责任。

如您有版权、意见、投诉等问题,请通过[eMail]联系我们处理,如需商业授权请联系原作者/原网站。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要分析Gerrit日志,可以使用Python的正则表达式模块和日志解析库。 首先,我们需要读取Gerrit服务器的日志文件。可以使用Python内置的`open()`函数来打开日志文件,例如: ```python with open('/var/log/gerrit/error_log') as f: log_data = f.read() ``` 接下来,我们可以使用正则表达式模块来提取有用的信息。例如,假设我们要提取所有提交的ID,可以使用以下代码: ```python import re commit_regex = re.compile(r'commit ([0-9a-f]{40})') commits = commit_regex.findall(log_data) ``` 这将在日志数据中查找所有40个字符长的十六进制字符串,并将其存储在`commits`列表中。 如果我们想要更复杂的分析,例如查找特定日期范围内的提交,我们可能需要使用一个更高级的日志解析库。Python中有很多这样的库,例如`apache-log-parser`和`logstash`等。 使用日志解析库,我们可以轻松地将日志数据转换为Python对象,并在其中执行查询。例如,使用`apache-log-parser`,以下代码将提取所有提交日期在2019年1月1日至1月31日期间的提交: ```python from apache_log_parser import make_parser from datetime import datetime parser = make_parser('%t') commits = [] for line in log_data.splitlines(): parsed_line = parser(line) commit_date = datetime.strptime(parsed_line['time_received_isoformat'], '%Y-%m-%dT%H:%M:%S.%f') if commit_date.year == 2019 and commit_date.month == 1: commits.append(parsed_line['request_url'].split('/')[-1]) ``` 这将使用日志解析器将日志数据转换为Python对象,并将所有在2019年1月份提交的提交ID存储在`commits`列表中。 无论你选择使用哪种方法,分析Gerrit日志都需要小心处理敏感信息,例如用户凭据和其他敏感数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值