Windows高级事件日志分析

Windows高级事件日志分析

Windows中有许多没有默认开启的事件日志,比如进程创建、DNS查询、文件监控、网络连接等。开启这些高级事件的日志,有助于应急响应中狩猎更多的威胁。

进程创建

进程创建事件是一种 Windows 事件,如果启用,每当新进程启动时,都会在本地 Windows 事件查看器中记录为事件 ID 4688。它们包括时间、进程名称、父进程、命令行(可选但首选)等信息。

Windows 计算机上的进程只是一个正在运行的应用程序。在典型的工作站或服务器上,一个工作日将启动多个进程。这些进程中的大多数都是无辜的,但恶意软件通常会在其操作过程中启动其中一个或多个进程。如果攻击者获得对系统的远程访问权限,他们就可以启动多个进程与计算机交互并实现他们的目标。进程创建事件允许您记录此类恶意活动,如果记录下来,则可以对其进行识别和监控。

开启进程审计日志

开启进程审计日志有两种方式GUI和命令行。按Win+R打开运行对话框,输入 gpedit.msc 打开本地组策略编辑器。

然后转到计算机配置 > Windows 设置 > 安全设置 > 高级审核策略配置 > 审核策略 > 详细跟踪 > 审核进程创建

如果我们还想包含“CommandLine”以在进程创建时进行记录。需要在同一个组策略编辑器中,转到计算机配置 > 管理模板 > 系统 > 审核进程创建 > 将“在进程创建事件中包含命令行”设置为启用。

现在所有进程创建日志都有“CommandLine”。

通过命令的开启方式如下:

echo [version] >1.inf  && echo signature="$CHICAGO$" >>1.inf  && echo [Event Audit] >>1.inf  && echo AuditSystemEvents=3 >>1.inf && echo AuditObjectAccess=3 >>1.inf && echo AuditPrivilegeUse=3 >>1.inf && echo AuditPolicyChange=3 >>1.inf && echo AuditAccountManage=3 >>1.inf && echo AuditProcessTracking=3 >>1.inf && echo AuditDSAccess=3 >>1.inf && echo AuditAccountLogon=3 >>1.inf && echo AuditLogonEvents=3 >>1.inf && secedit /configure /db 1.sdb /cfg 1.inf /log 1.log 

分析进程审计日志

此示例事件向我们展示了进程命令行的强大功能。我们可以立即看到进程的用途,并观察到进程 net.exe 是由 cmd.exe 生成的,命令行是“net user Zgao 123456 /add”。

“net.exe 是一个本机二进制文件,用于管理系统上的用户/组。在这个例子中,很明显攻击者已经创建了一个后门用户帐户 [MITRE 策略:T1136],并且由于命令行审计,我们现在拥有后门帐户的密码,从而获得更多上下文。

网络连接

网络连接分析可以帮助您监控网络流量、识别可疑连接、跟踪应用程序行为以及调查安全事件。例如,如果我们具有日志记录功能来记录网络连接信息以及启动该信息的过程,那么如果系统上运行了信息窃取程序,我们可以轻松地关联并执行上下文分析,仅从这些日志中就可以查明可疑/恶意网络活动。

开启网络连接审计日志

要启用 Windows 过滤平台日志的审核,请转到“本地组策略编辑器 > 计算机配置 > Windows 设置 > 安全设置 > 高级审核策略配置 > 系统审核策略 > 对象访问 > 审核筛选平台连接”。

这将记录包括进程名称在内的网络连接。同样也可以用上面开启进程审计日志的命令一同开启网络连接审计日志。

分析网络连接日志

  • 应用程序名称 :正在建立连接的进程。
  • 方向 :出站/入站告诉我们连接是内部的还是外部的。
  • 源地址和端口 :本地系统IP和端口。
  • 目标地址和端口 :建立连接的远程 IP 和端口。

我们可以利用这些宝贵的信息来识别恶意网络连接,例如命令和控制活动、信息窃取者活动或僵尸网络流量。

DNS请求

启用 DNS 日志记录

要记录 DNS 查询,我们可以在事件查看器中启用“DNS 客户端事件”。打开事件查看器并转到“应用程序和服务日志 > Microsoft > Windows > DNS 客户端事件/操作”,右键单击并选择“启用日志”。

也可以通过命令行启用dns查询日志。

wevtutil sl Microsoft-Windows-DNS-Client/Operational /e:true /ms:4194304

ms是指日志文件大小,这里设置的是4Mb。

DNS日志分析

我们可以使用这些事件 ID 在恶意活动发生时找到可疑/恶意域名。假设我们通过其他方式找到了 C2 阶段的证据,可以在其他攻击发生时寻找这些事件 ID 以找到可能的恶意域名。

文件/文件夹监控

在任何使用文件服务器存储和共享数据的组织中,审核对于确保数据安全都非常重要。正确监控域中的所有文件服务器可以检测不需要的或可能造成损害的事件,包括对包含敏感数据的文件的文件访问和读取事件。这些事件可以确保适当的防御机制,以防止敏感数据泄露等恶意事件。

配置文件/文件夹监控

要审核这些事件,转到计算机配置 > Windows 设置 > 安全设置 > 本地策略 > 审核策略 > 审核对象访问。启用成功和失败事件。或者win+R打开gpedit.msc。

进入文件夹的“属性”,选择“安全”选项卡。然后进入“高级”选项卡。现在转到“审计”选项卡并单击“添加”。此操作将打开“审计”屏幕,在这里我们单击“选择主体”,然后我们可以选择我们想要监视其活动的任何特定用户或组。

我们想要监视任何人的任何活动,因此我们输入“Everyone”作为对象名称。单击“确定”后,将看到以下内容:

在这里,选择“类型”下拉菜单并将其设置为“全部”,这将审核所有活动,包括成功和失败。

文件监控日志分析

现在让我们监视此活动。目前我们需要关注事件 ID 4656 和 4663。我们在test目录中新建一个文件,我们现在将访问它。我们将首先查看事件 ID 4656。请求对象时会记录此事件 ID。

日志中突出显示的部分对我们来说很重要。首先,我们有用户帐户信息,即哪个用户帐户访问了创建事件的目标对象。其次,“对象”部分显示“对象名称”(正在访问并导致记录日志的内容)。在此示例中,对象是“D:/test”文件夹中名为“new.txt”的文件。

最后,我们有进程信息,它显示了正在访问相关对象的进程。在此示例中,它是“explorer.exe”,因为我们通过“explorer.exe”打开了文件位置。

另一个事件 ID 4663,是在访问目标对象成功或失败时生成的。仅凭事件 ID 4656 的存在并不能表明访问已经发生,但如果我们看到 4663 是审核成功的证据,那么这意味着它确实成功了。

在这里我们可以看到和之前一样的信息,唯一的区别是这个事件确认了访问确实成功了。

我们还可以通过查看关键字来确认事件 ID 4663 是否表示对象已被访问或失败。如果它显示“审核成功”,则表示对象已被访问,如果它显示“审核失败”,则表示对象已被拒绝访问。

这种在监控访问文件的进程可疑的情况下很有用,例如 cmd、PowerShell脚本的使用等。

BITS 客户端事件

后台智能传输服务 (BITS) 是 Microsoft 与 Windows XP 一起推出的,用于简化和协调大文件的下载和上传。应用程序和系统组件(包括 Windows Update)使用 BITS 以最大程度减少用户中断的方式分发操作系统和应用程序更新。

BITS 与许多其他技术一样,既可以被合法应用程序使用,也可以被攻击者使用。当恶意应用程序创建 BITS 作业时,文件会作为服务主机进程的一部分下载或上传。这可用于绕过可能阻止不安全或不熟悉的进程的防火墙,以及伪装请求传输的应用程序。BITS 传输还可以安排在特定时间进行,而不是依赖于长时间运行的进程或任务调度程序。

使用Bitsadmin下载文件

先模拟攻击者如何滥用 bitsadmin lolbin 下载恶意软件/脚本来逃避防御。

bitsadmin /create download_eventlogs
bitsadmin /list /allusers
bitsadmin /addfile download_eventlogs https://zgao.top/robots.txt %temp%\robots.txt
bitsadmin /resume download_eventlogs
bitsadmin /complete download_eventlogs
bitsadmin /list /allusers

这里使用的第一个命令是创建一个名为“download_eventlogs”的作业。接下来,设置作业参数。这些参数包括从中检索文件的远程 URL/URI 以及保存下载文件的本地路径。随后是下载目标文件的恢复标志。BITS 会话保持打开状态,直到使用 /Complete 标志完成 BITS 作业。

分析Bits-Client日志

Bits-Client 操作日志位于“应用程序和服务日志 > Microsoft > Windows > Bits-Client > Operational”下。该日志是默认开启的。

第一个事件 ID 是事件 ID 3,它是在创建 Bits 作业时生成的。

下一个事件 ID 是事件 ID 16403。请注意,当我们为作业提供其参数(例如远程 URI、本地路径等)时会生成此日志。

下一个事件 ID 是事件 ID 59 和 60。事件 59 表示作业启动的时间,事件 60 表示作业完成的时间。事件 ID 60 需要注意的一点是状态代码。0x0 状态代码表示下载成功,因此检查下载是否成功至关重要。

最后,如果已经运行/complete标志来完成作业,则会生成事件ID 4事件,表明作业已完成。文件数告诉我们整个作业期间下载/上传了多少个文件。

下面是bits常用的事件ID:

  • 事件 ID 3 :已创建 BITS 作业。
  • 事件 ID 16403 :已定义 BITS 作业参数。
  • 事件 ID 59 :BITS 作业已启动/恢复。
  • 事件 ID 60 :BITS 作业已停止。(状态代码定义是否成功)
  • 事件 ID 4 :BITS 作业已完成。

MSI 事件

MSI,以前称为 Microsoft Installer,是一种 Windows 安装包格式。它用于将必要的 Windows 应用程序或包安装和部署到最终用户的机器上。MSI 是一种标准化的安装方法,可简化用户的安装过程。

安装 MSI 文件很简单,通常不需要用户干预。使用 MSI 安装通常类似于运行可执行文件。

区分合法安装程序和恶意 MSI 文件可能非常困难。威胁者经常伪装成知名软件更新,诱骗受害者“更新”其计算机上的软件。

MSI 允许 LocalSystem 帐户 (NT AUTHORITY\SYSTEM) 运行,因此未经授权的 LocalSystem 访问可能会危害系统并导致进一步的网络危害。由于 MSI 基于 COM 结构存储,这允许威胁行为者将恶意文件存储在 MSI 文件中,并使用自定义操作控制存储的文件。该技术为威胁行为者提供了多种感染受害计算机的执行模式选择。

分析MSI 事件日志

单击“确定”,将显示与 MSI 活动有关的所有事件的列表。

事件 ID 1040 记录 MSI 安装或卸载过程的开始时间,包括 MSI 的完整路径和进程 ID 等详细信息。

下一个关键事件 ID 是事件 ID 11707。此事件 ID 与事件 ID 1040 一起告诉我们是否发生了安装或卸载。

事件 ID 1033是指是否已验证且产品是否已成功安装。它还包含产品名称、版本和制造商名称。这在恶意软件试图隐藏在伪造的 MSI 中或合法 MSI 被注入恶意代码(例如作为供应链攻击的一部分)的情况下特别有用。

状态代码表示安装是否成功。状态“0”表示安装成功,没有任何错误。

如果我们希望查看已安装的 MSI 产品是否已被删除,可以查看事件 ID 1034。恶意软件通常在完成其任务后会自行卸载,例如添加持久性例程、后门等。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论