0x01 Windows系统日志概述
日志审计
日志审计是一种对系统日志进行监控和分析的技术,旨在发现系统中的异常行为和安全威胁。通过对日志进行审计,可以追踪系统的使用情况、检测攻击行为、识别安全漏洞等,从而提高系统的安全性和可靠性。Windows操作系统提供了多种类型的日志,包括安全日志、应用程序日志、系统日志等。这些日志记录了各种事件,如用户登录、文件访问、应用程序错误等。
Windows系统日志
Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
0x02 Windows系统日志位置
依赖的服务:EventLog服务
位置:
Windows 2000/Server2003/Windows XP :%SystemRoot%\System32\Config\*.evtx
Windows Vista/7/10/Server2008 及以上版本: %SystemRoot%\System32\Winevt\Logs\*.evtx
Windows11例图:
C:\Windows\System32\winevt\Logs
0x03 Windows日志分类
Windows主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志。
系统日志
记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型由Windows NT/2000操作系统预先定义。
默认位置: %SystemRoot%\System32\Winevt\Logs\System.evtx
应用程序日志
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于你解决问题。
默认位置:%SystemRoot%\System32\Winevt\Logs\Application.evtx
安全日志
记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。
默认位置:%SystemRoot%\System32\Winevt\Logs\Security.evtx
系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。 安全日志记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么,对于调查人员而言,更有帮助。
其他日志
PowerShell 日志
在执行任何 PowerShell 命令或脚本时,无论是本地还是通过远程处理,Windows 都会将事件写入以下三个日志文件:
Windows PowerShell.evtx
Microsoft-Windows-PowerShell/Operational.evtx
Microsoft-Windows-PowerShell/Analytic.etl
Windows 远程管理日志
Windows 远程管理(WinRM)日志记录了 Windows 远程管理服务的所有操作
Microsoft-Windows-WinRM/Operational.evtx
Microsoft-Windows-WinRM/Analytic.etl
Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/operational.evtx
Microsoft-Windows-TerminalServices-RemoteConnectionManager/operational.evtx
Microsoft-Windows-TerminalServices-LocalSessionManager/operational.evtx
0x04 Windows审核策略
在默认情况下, Windows日志仅仅记录一些特定日志,因为Windows日志中每种日志的大小默认为 20M,超过大小之后会覆盖最早的日志记录。如果我们需要记录详细的安全日志,则需要通过修改本地策略或者在高级审核策略配置中来启用其他项的日志记录功能。
Win+R --> gpedit.msc --> 组策略管理器
审核策略(需要配置)
计算机配置 --> Windows设置 --> 安全设置 --> 本地策略 --> 审核策略
可以参考如下修改
审核账户登录事件
功能:审核用户尝试登录到计算机或域的行为。
应用场景:
成功:记录用户成功登录的事件,可以帮助追踪用户活动。
失败:记录用户登录失败的事件,例如输入错误的密码或用户名,这对于检测暴力破解攻击非常有用。
审核账户管理
功能:审核对用户账户和组的管理操作,例如创建、修改或删除用户账户或组。
应用场景:
成功:记录对账户管理操作的成功执行,例如管理员创建了一个新用户账户。
失败:记录对账户管理操作的失败尝试,例如未经授权的用户试图修改账户权限。
审核目录服务访问
功能:审核对 Active Directory 目录服务的访问行为。
应用场景:
成功:记录对目录服务的正常访问,例如查询用户信息。
失败:记录对目录服务的访问失败事件,例如未经授权的访问尝试。
审核策略更改
功能:审核对系统安全策略的更改,例如修改审核策略或用户权限分配。
应用场景:
成功:记录对安全策略的正常更改,例如管理员更新了审核策略。
失败:记录对安全策略更改的失败尝试,例如未经授权的用户试图修改策略。
审核系统事件
功能:审核系统级别的事件,例如系统启动、关闭、系统时间更改等。
应用场景:
成功:记录系统正常启动或关闭的事件。
失败:记录系统启动或关闭失败的事件,例如系统崩溃或未经授权的系统时间更改。
审核对象访问
功能:审核对文件、文件夹、注册表项等对象的访问行为。
应用场景:
成功:记录对敏感文件或注册表项的正常访问。
失败:记录对敏感对象的访问失败事件,例如未经授权的用户试图访问受限文件。
审核特权使用
功能:审核用户或进程使用特权操作的行为,例如以管理员身份运行程序。
应用场景:
成功:记录正常使用的特权操作。
失败:记录未经授权的特权使用尝试。
审核登录事件
功能:审核用户登录到系统的行为,包括交互式登录、网络登录等。
应用场景:
成功:记录用户正常登录的事件。
失败:记录登录失败的事件,例如密码错误或账户锁定。
审核过程跟踪
功能:审核系统中的进程创建和终止事件。
应用场景:
成功:记录进程的正常创建和终止。
失败:记录进程创建或终止失败的事件。
详细跟踪(需要配置)
计算机配置 --> Windows设置 --> 安全设置 --> 高级审核策略配置 --> 系统审核策略 --> `详细跟踪
审核 DPAPI 活动
功能:审核数据保护 API(DPAPI)的使用情况。DPAPI 是 Windows 提供的一种加密服务,用于保护用户数据。
应用场景:如果系统中存在敏感数据加密和解密操作,启用此审核策略可以帮助追踪相关活动,确保数据保护机制的正常运行。
审核进程创建
功能:审核系统中进程的创建操作。
应用场景:通过记录进程的启动,可以检测到未经授权的程序启动,帮助识别潜在的安全威胁。
审核进程终止
功能:审核系统中进程的终止操作。
应用场景:记录进程的终止可以帮助检测异常的进程关闭行为,例如恶意软件试图关闭安全监控进程。
审核 RPC 事件
功能:审核远程过程调用(RPC)事件。
应用场景:RPC 是一种允许程序调用另一台计算机上的程序功能的技术。审核 RPC 事件可以检测到跨网络的潜在恶意通信。
0x05 Windows事件查看器
Windows 事件查看器(Event Viewer)是 Windows 操作系统中一个非常重要的工具,用于收集、显示和管理系统事件日志。它可以帮助系统管理员监控系统的运行状态、诊断问题、追踪用户活动以及分析安全事件。事件查看器是系统管理和故障排除的重要工具之一。
Win+R --> eventvwr.msc --> 事件查看器
修改日志记录最大大小(需要配置)
设置合理的日志属性,即日志最大大小、事件覆盖阀值等:
事件查看器 --> Windows日志 --> 日志属性
事件级别
0x06 Windows日志分析
常见事件ID
对于Windows事件日志分析,不同的EVENT ID代表了不同的意义,摘录一些常见的安全事件的说明:
每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式:
审核策略更改
此安全设置确定 OS 是否对尝试更改用户权限分 配策略、审核策略、帐户策略或信任策略的每 一个实例进行审核。
审核登录事件
此安全设置确定 OS 是否对尝试登录此计算机 或从中注销的用户的每个实例进行审核。
审核账户管理
此安全设置确定是否审核计算机上的每个帐户管理事件。帐户管理事件示例包括:
创建、更改或删除用户帐户或组。
重命名、禁用或启用用户帐户。
设置或更改密码。
案例分析
案例1:可以利用eventlog事件来查看系统账号登录情况:
在“开始”菜单上,依次指向“所有程序”、“管理工具”,然后单击“事件查看器”;
在事件查看器中,单击“安全”,查看安全日志;
在安全日志右侧操作中,点击“筛选当前日志”,输入事件ID进行筛选。
4624 --登录成功
4625 --登录失败
4634 -- 注销成功 4647 -- 用户启动的注销
4672 -- 使用超级用户(如管理员)进行登录
我们输入事件ID:4625进行日志筛选,发现事件ID:4625,事件数175904,即用户登录失败了175904次,那么这台服务器管理员账号可能遭遇了暴力猜解。
案例2:可以利用eventlog事件来查看计算机开关机的记录:
1、在“开始”菜单上,依次指向“所有程序”、“管理工具”,然后单击“事件查看器”;
2、在事件查看器中,单击“系统”,查看系统日志;
3、在系统日志右侧操作中,点击“筛选当前日志”,输入事件ID进行筛选。
其中事件ID 6006 ID6005、 ID 6009就表示不同状态的机器的情况(开关机)。 6005 信息 EventLog 事件日志服务已启动。(开机) 6006 信息 EventLog 事件日志服务已停止。(关机) 6009 信息 EventLog 按ctrl、alt、delete键(非正常)关机
我们输入事件ID:6005-6006进行日志筛选,发现了两条在2018/7/6 17:53:51左右的记录,也就是我刚才对系统进行重启的时间。
0x07 windows审计命令
在Windows操作系统中,可以使用命令行工具来进行日志审计配置和管理。以下是一些常用的Windows日志审计命令:
wevtutil:用于管理Windows事件日志的命令行工具。
查询可用的日志列表:wevtutil el
导出指定日志的内容到文件:wevtutil epl <log_name> <output_file>
清除指定日志的内容:wevtutil cl <log_name>
查询指定日志的详细信息:wevtutil gl <log_name>
启用或禁用指定日志的记录:wevtutil sl <log_name> /e:true|false
auditpol:用于管理Windows安全审计策略的命令行工具。
查询当前系统的安全审计策略:auditpol /get /category:*
启用或禁用特定安全审计策略:auditpol /set /subcategory:<subcategory> /success:<enabled|disabled> /failure:<enabled|disabled>
gpedit.msc:打开本地组策略编辑器,可以通过编辑组策略来配置Windows日志审计。
打开本地组策略编辑器:gpedit.msc
在“计算机配置”或“用户配置”下的“Windows设置”->“安全设置”->“本地策略”->“审核策略”中配置需要的审计策略。
上述命令需要以管理员身份运行,具体的命令和参数可能因Windows版本和配置而有所不同,建议在使用命令前查阅相应的官方文档以获取准确的命令使用说明。
0x08 日志分析工具
Log Parser
Log Parser(是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它可以像使用 SQL 语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。
Log Parser 2.2下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659
Log Parser 使用示例:https://mlichtenberg.wordpress.com/2011/02/03/log-parser-rocks-more-than-50-examples/
基本查询结构
Logparser.exe –i:EVT –o:DATAGRID "SELECT * FROM c:\xx.evtx"
使用Log Parser分析日志
1、查询登录成功的事件
登录成功的所有事件
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where EventID=4624"
指定登录时间范围的事件:
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where TimeGenerated>'2018-06-19 23:32:11' and TimeGenerated<'2018-06-20 23:34:00' and EventID=4624"
提取登录成功的用户名和IP:
LogParser.exe -i:EVT –o:DATAGRID "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as Username,EXTRACT_TOKEN(Message,38,' ') as Loginip FROM c:\Security.evtx where EventID=4624"
2、查询登录失败的事件
登录失败的所有事件:
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where EventID=4625"
提取登录失败用户名进行聚合统计:
LogParser.exe -i:EVT "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,EXTRACT_TOKEN(Message,19,' ') as user,count(EXTRACT_TOKEN(Message,19,' ')) as Times,EXTRACT_TOKEN(Message,39,' ') as Loginip FROM c:\Security.evtx where EventID=4625 GROUP BY Message"
3、系统历史开关机记录:
LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated,EventID,Message FROM c:\System.evtx where EventID=6005 or EventID=6006"
LogParser Lizard
对于GUI环境的Log Parser Lizard,其特点是比较易于使用,甚至不需要记忆繁琐的命令,只需要做好设置,写好基本的SQL语句,就可以直观的得到结果。
下载地址:http://www.lizard-labs.com/log_parser_lizard.aspx
依赖包:Microsoft .NET Framework 4 .5,下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=42642
查询最近用户登录情况:
Event Log Explorer
Event Log Explorer是一款非常好用的Windows日志分析工具。可用于查看,监视和分析跟事件记录,包括安全,系统,应用程序和其他微软Windows 的记录被记载的事件,其强大的过滤功能可以快速的过滤出有价值的信息。
下载地址:https://event-log-explorer.en.softonic.com/
参考链接:
Windows日志分析 https://mp.weixin.qq.com/s/ige5UO8WTuOOO3yRw-LeqQ
评论区