在应急响应初步阶段,我们会对系统日志、中间件安全日志、恶意文件等进行收集。接下来便是要进一步对这些文件进行分析:对恶意文件逆向、日志文件分析、梳理入侵时间线和入侵路径等。本文主要对Windows安全日志进行举例分析。
环境信息:
系统版本:Windows Server 2008 R2
IP地址:192.168.64.140
用户名:win-92uodoq3eg2\administrator
Windows的日志文件主要有系统日志、应用程序日志、安全日志这三类,另外,根据不同的系统服务配置可能还会产生其他的日志文件,如Powershell日志、WWW日志、FTP日志、DNS服务器日志等。这些日志文件由Windows的EventLog服务生成并记录,EventLog服务由Windows服务管理器(%SystemRoot%\system32\services.exe)启动并管理。
在默认情况下, Windows日志仅仅记录一些特定日志,因为Windows日志中每种日志的大小默认为20M,超过大小之后会覆盖最早的日志记录。如果我们需要记录详细的安全日志,则需要通过修改本地策略或者在高级审核策略配置(gpedit.msc)中来启用其他项的日志记录功能。
Windows安全日志存储在C:\Windows\System32\winevt\Logs
,该目录下存在许多evtx日志文件,windows安全日志文件主要记录在Security.etvx中,双击即可打开该文件查看windows安全日志。(Windows 2000 / Server2003 / Windows XP 安全日志默认位置在C:\WINDOWS\System32\config\SecEvent.Evt
)
通过WIN+R键调出运行界面后,在界面中执行eventvwr
,可打开windows日志管理器,选择安全项即可查看windows系统安全日志。
右键单击计算机,点击管理打开服务器管理器,诊断-事件查看器-Windows日志-安全
Windows 2000 / Server2003 / Windows XP :%SystemRoot%\System32\Winevt\Logs\*.evt
Windows Vista / 7 / 10 / Server2008 及以上版本:%SystemRoot%\System32\Config\*.evtx
Windows主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志。每种日志默认大小20M,超过大小后会覆盖最早的日志记录
应用程序日志、系统日志,存储着故障排除信息,对于系统管理员更为有用;安全日志,记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么,对于应急响应来说,更有帮助,本文主要对安全日志进行分析研究。
系统日志:系统日志包含由Windows系统组件记录的事件,记录系统进程和设备驱动程序的活动。由它审核的系统事件包括启动失败的设备驱动程序、硬件错误、重复的IP地址以及服务启动、暂停和停止。系统日志也记录启动期间要加载的驱动程序或其他系统组件的故障,记录的事件类型也是预先确定的。
默认位置:
%SystemRoot%\System32\Winevt\Logs\System.evtx
安全日志:安全日志记录各种系统审核和安全处理,包括用户权限的变化、文件和目录的访问、打印以及用户系统登陆和注销,如有效或无效的登陆尝试、与资源使用有关的事件。管理员有按需要指定安全日志中要记录的事件类型,安全日志只有系统管理员可以访问。
默认位置:
%SystemRoot%\System32\Winevt\Logs\Security.evtx
应用程序日志:应用程序日志包含计算机系统中的用户程序和商业程序在运行时出现的错误活动,它审核的事件包括所有应用程序产生的错误以及其他报告的信息,如性能监视审核的事件或一般程序事件。记录事件的种类大致有:硬盘使用情况、数据库文件的文件错误、设备驱动程序加载失败、用户登录系统失败计数等。
默认位置:
%SystemRoot%\System32\Winevt\Logs\Application.evtx
其他日志
Windows PowerShell.evtx
Microsoft-Windows-PowerShell/Operational.evtx
Microsoft-Windows-PowerShell/Analytic.etl
Microsoft-Windows-WinRM/Operational.evtx
Microsoft-Windows-WinRM/Analytic.etl
Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/perational.evtx
Microsoft-Windows-TerminalServices-RemoteConnectionManager/perational.evtx
Microsoft-Windows-TerminalServices-LocalSessionManager/perational.evtx
每条安全日志由以下结构组成:
关键字(审核成功/审核失败) | 日期和时间(事件发生的时间) | 来源 | 事件ID | 任务类别 |
---|
在事件管理器 “查看”菜单上,单击“添加/删除列”。可显示或隐藏事件属性。
下表列出常见的事件属性。
属性名 | 描述 |
---|---|
源 | 记录事件的软件,可以是程序名(如“SQL Server”),也可以是系统或大型程序的组件(如驱动程序名)。例如,“Elnkii”表示 EtherLink II 驱动程序。 |
事件 ID | 标识特定事件类型的编号。描述的第一行通常包含事件类型的名称。例如,6005 是在启动事件日志服务时所发生事件的 ID。此类事件的描述的第一行是“事件日志服务已启动”。产品支持代表可以使用事件 ID 和来源来解决系统问题。 |
级别 | 以下事件严重性级别可能出现在安全日志中: 审核成功。指明用户权限操作成功。 审核失败。指明用户权限操作失败。 在事件查看器的正常列表视图中,这些分类都由符号表示。 |
用户 | 事件发生所代表的用户的名称。如果事件实际上是由服务器进程所引起的,则此名称为客户端 ID;如果没有发生模仿的情况,则为主 ID。如果适用,安全日志项同时包含主 ID 和模仿 ID。当服务器允许一个进程采用另一个进程的安全属性时就会发生模拟的情况。 |
操作代码 | 包含标识活动或应用程序引起事件时正在执行的活动中的点的数字值。例如,初始化或关闭。 |
日志 | 已记录事件的日志的名称。 |
任务类别 | 用于表示事件发布者的子组件或活动。 |
关键字 | 可用于筛选或搜索事件的一组类别或标记。示例包括“网络”、“安全”或“未找到资源”。 |
计算机 | 发生事件的计算机的名称。该计算机名称通常为本地计算机的名称,但是它可能是已转发事件的计算机的名称,或者可能是名称更改之前的本地计算机的名称。 |
日期和时间 | 记录事件的日期和时间。 |
当我们分析用户登录记录的时候就会发现,在Windows系统的安全日志中,有一个“登录类型”的说明。其实这个登陆类型就是记录了用户登录到Windows系统的方式,以下简单介绍几种常见的:
登录类型 | 描述 | 说明 |
---|---|---|
2 | 交互式登录(Interactive) | 用户在本地进行登录。 |
3 | 网络(Network) | 最常见的情况就是连接到共享文件夹或共享打印机时。 |
4 | 批处理(Batch) | 通常表明某计划任务启动。 |
5 | 服务(Service) | 每种服务都被配置在某个特定的用户账号下运行。 |
7 | 解锁(Unlock) | 屏保解锁。 |
8 | 网络明文(NetworkCleartext) | 登录的密码在网络上是通过明文传输的,如FTP。 |
9 | 新凭证(NewCredentials) | 使用带/Netonly参数的RUNAS命令运行一个程序。 |
10 | 远程交互,(RemoteInteractive) | 通过终端服务、远程桌面或远程协助访问计算机。 |
11 | 缓存交互(CachedInteractive) | 以一个域用户登录而又没有域控制器可用。 |
如下图 为Administrator用户 通过键盘输入密码正常登录到windows的日志,登录类型为 2
一般登录的进程名为
C:\Windows\System32\winlogon.exe
这里使用IPC连接方式
使用192.168.64.1 IPC连接 192.168.64.140
net use \\192.168.64.140\ipc$ "1" /user:"administrator"
从安全日志可看到源IP,登录用户等信息
以下是一个服务启动后的日志,登录类型为 5
服务启动进程名为
C:\Windows\System32\services.exe
锁屏后尝试解锁
通过Win 10(192.168.64.1)使用safefox账户对Win 2008进行远程桌面连接(192.168.64.140)
4625登录失败日志会存在子状态码的属性,通过改属性,我们可以对登录失败原因进行分析
地位和子状态码 | 描述(针对失败的原因的检查) |
---|---|
0xc0000064 | 用户名不存在 |
0xc000006a | 用户名是正确的,但密码是错误的 |
0xc0000234 | 用户当前锁定 |
0xc0000072 | 帐户目前禁用 |
0xc000006f | 用户试图登录天的外周或时间限制 |
0xc0000070 | 工作站的限制 |
0xc0000193 | 帐号过期 |
0xc0000071 | 过期的密码 |
0xc0000133 | 时钟之间的直流和其他电脑太不同步 |
0xc0000224 | 在下次登录用户需要更改密码 |
0xc0000225 | 显然一个缺陷在Windows和不是一个风险 |
0xc000015b | 没有被授予该用户请求登录类型(又名登录正确的)在这台机器 |
0xc000006d | 似乎是由于系统问题和不安全 |
例如下图中,通过子状态码0xc000006a可以的得知,登录失败的具体原因是用户名是正确的,但密码是错误的
事件ID是Windows日志的基本属性之一,通过事件ID可以分析事件类型,以下是常见的几种事件ID
事件ID | 说明 | 事件ID | 说明 |
---|---|---|---|
1102 | 清理审计日志 | 4720 | 创建用户 |
4624 | 账号成功登录 | 4726 | 删除用户 |
4625 | 账户登录失败 | 4728 | 一个成员被添加到启用安全的全局组中。 |
4768 | 已请求 Kerberos 身份验证票证 (TGT)。 | 4729 | 成员已从启用安全的全局组中删除。 |
4771 | Kerberos 预身份验证失败。 | 4732 | 一个成员被添加到启用安全的本地组。 |
4772 | Kerberos 身份验证票证请求失败。 | 4733 | 成员已从启用安全的本地组中删除。 |
4769 | 已请求 Kerberos 服务票证。 | 4634 | 帐户已注销。 |
4776 | 域控制器尝试验证帐户的凭据。 | 4756 | 一个成员被添加到启用安全的通用组。 |
4770 | 更新了 Kerberos 服务票证。 | 4672 | 分配给新登录的特殊权限。 |
4672 | 分配给新登录的特殊权限。 | 4757 | 成员已从启用安全的通用组中删除。 |
5156 | 出站连接记录 | 4719 | 系统审核策略已更改。 |
4698 | 已创建计划任务。 | 5158 | 入站连接记录 |
4699 | 计划任务被删除。 | 4702 | 已更新计划任务。 |
4700 | 已启用计划任务。 | 4688 | 已创建新进程。 |
4701 | 计划任务被禁用。 | 4689 | 一个进程已经退出。 |
其中需要重点关注的有4624,4625,4720,4726,4700,1102等。
主机开机时,常常会产生大量的安全日志:
其中,【事件ID 4608】表示Windows正在启动。之后伴随着一条特殊的登陆成功记录,为什么说特殊呢?因为这一条【事件ID 4624】登陆成功记录中的登陆类型为:0
之后便是许多登陆类型为5的登陆成功记录。
这个很好理解,上面说到登陆类型5,代表是服务账户登陆,而我们的Windows系统启动时,就会有许多服务启动,因此会有许多服务账户登陆记录。然后是启动防火墙驱动、启动防火墙等其他系统事件。
当Windows系统初始化完成后,就到我们的登陆界面了。当我们通过登陆界面登陆时,会产生4条记录如下:
【事件ID 4776】计算机试图验证帐户的凭据。记录了登陆用户名、来源机器名。
【事件ID 4648】试图使用显式凭据登录。同样记录了登陆用户名、来源机器名、来源地址。进程名为:C:\Windows\System32\winlogon.exe
【事件ID 4624】登陆成功。登陆类型2,也就是在本地键盘上进行的登录。
【事件ID 4672】为新登录分配了特殊权限。记录了登陆用户名、登陆用户权限。
其中,4648表示我们是通过登陆界面登陆的。而其他三条,是正常使用账号密码进行登陆都会产生的。也就是说,登录一次产生3条日志:验证凭据、登陆成功、分配权限。
总结:4608启动-4624(0)首次-4624(5)服务启动-4624(5)-4624(5)-4776登录-4648-4624-4672
在安全日志4720中可以查看攻击者创建的用户,即使是隐藏用户都可以查看到。4726则是可以查看到被删除的用户。该事件日志中还可以查看该任务的发起者。
创建普通账户xiansec
创建新账户会有以下日志生成,其中4720创建用户帐户是创建新账户产生的日志
4728 已向启用了安全性的全局组中添加某个成员。
4720 已创建用户帐户。
4722 已启用用户帐户。
4738 已更改用户帐户。
4732 已向启用了安全性的本地组中添加某个成员。
通过4720日志可以查看创建新账户的发起人信息
删除普通账户xiansec
删除账户会有以下日志生成,其中4726日志是删除账户产生的日志
4733 已从启用了安全性的本地组中删除某个成员。
4729 已从启用了安全性的全局组中删除某个成员。
4726 已删除用户帐户。
通过4726日志可以查看删除账户的发起人信息
连接成功
查看安全日志:
和5.1 系统正常启动一样有4条日志信息,只有登陆类型不一样,为10
【事件ID 4776】计算机试图验证帐户的凭据。记录了登陆用户名、来源机器名。
【事件ID 4648】试图使用显式凭据登录。同样记录了登陆用户名、来源机器名、来源地址。进程名为:C:\Windows\System32\winlogon.exe
【事件ID 4624】登陆成功。登陆类型10,远程桌面登录。
【事件ID 4672】为新登录分配了特殊权限。记录了登陆用户名、登陆用户权限。
故意输错密码
查看日志
只有一条审核失败日志4625
使用超级弱口令检查工具V1.0 Beta28进行爆破 这里故意将线程调低 方便日志分析
爆破成功
使用字典共15条密码,正确密码在最后一条,爆破15次,最后一次成功,完成4个日志动作 4624登录-4672-4776-4648
执行命令如下:
net use \\192.168.64.140 /u:admin 123 #密码错误
net use \\192.168.64.140 /u:admin 12 #密码错误
net use \\192.168.64.140 /u:admin 1 #密码正确
分析日志
两次4625 审核失败日志 4624(3)登录成功 记录了来源IP,来源主机名,登陆的用户名等信息。
使用超级弱口令检查工具V1.0 Beta28模拟进行爆破
分析日志
存在大量4625的登录失败日志 且登录类型为3,登录进程:为NtLmSsp
登录成功会产生一条登录类型为3的4624登录成功日志,同时会有4672,4776事件ID日志生成
在windows中,若运维人员开启了记录所有安全日志项,那么攻击者在拿到该服务器权限后 的所有操作都可以在该安全日志中被记录到。所以清空该Security日志肯定是一个善后的必然选择。如果
打开windows日志 清除日志
清除日志会生成一条事件ID为1102 日志清除的日志
日志详情
此条日志会记录清除日志操作的账户名
本文主要对Windows安全日志进行了分析与研究,从日志的分类、登录事件分析以及场景日志分析等方面进行了研究。总的来说,windows安全日志对于应急人员是重要且基础的分析项,对其进行深入学习研究有助于应急排查工作。