【THM】Logs Fundamentals(日志基础知识)-学习

本文相关的TryHackMe实验房间链接:https://tryhackme.com/r/room/logsfundamentals

本文相关内容:了解什么是日志以及如何分析日志以进行有效调查。

image-20250107223835380

日志简介

攻击者很聪明,他们会尽量避免在受害者一侧留下最大的痕迹,以免被发现;然而,安全团队有时候能够成功地确定攻击是如何执行的,有时甚至还能够成功地找到攻击的幕后黑手。

假设几名警察正在调查一桩在雪域丛林小屋中丢失珍贵挂坠盒的案件。他们注意到小屋的木门严重受损,天花板也塌了,通往小屋的雪路上有一些脚印,最后,他们还发现了一些来自附近住宅的摄像头。通过整合所有这些痕迹,警方成功锁定了这起袭击的幕后黑手。在多起此类案件中,警方都会努力去发现各种线索(痕迹),最后将这些线索(痕迹)整合在一起,就能更加接近罪犯。

image-20250111211723096

看来这些痕迹在调查中发挥了很大的作用。

如果在数字设备内部发生了一些事情,我们应该怎么办?我们从哪里可以找到所有这些痕迹以便进行进一步调查?

在一个系统的内部有很多地方可以提取攻击痕迹。日志(Logs)将包含大部分此类痕迹。日志是任何活动所留下的一些数字足迹。这些活动可能是正常的,也可能是恶意的。通过分析日志,我们可以更加轻松地追踪活动以及追踪执行该活动的个人。

image-20250111211738246

日志的使用案例

以下是日志发挥不可或缺的作用的一些关键领域。

Use Case 使用案例/用例 Description 描述
Security Events Monitoring(安全事件监控) 在使用实时监控时,日志可以帮助我们检测异常行为
Incident Investigation and Forensics (事件调查和取证) 日志是各种活动的痕迹。它提供了安全事件发生期间的详细信息。安全团队可以利用日志来对安全事件进行根本原因分析
Troubleshooting (故障排除) 由于日志还记录了系统或应用程序中的错误,因此日志可用于诊断问题并有助于修复它们
Performance Monitoring (性能监控) 日志还可以提供有关应用程序性能的宝贵见解
Auditing and Compliance (审计与合规) 日志在审计和合规方面发挥着重要作用,它使得建立不同类型活动的跟踪变得更加容易

本文将帮助你了解不同系统中维护的各种类型的日志。此外,我们还将实际调查(作为不同攻击的痕迹)的日志。

学习目标

完成本文的学习后,你将了解以下内容:

  • 不同类型的日志;
  • 如何分析日志;
  • 分析Windows事件日志(Event logs);
  • 分析Web访问日志(Access logs)。

答题

在数字系统中,我们可以在哪里找到大多数攻击痕迹?

Logs

image-20250530005156422

日志的类型

在上一个小节中,我们看到了日志的各种用例。但这里有一个挑战,想象一下,你需要通过日志来调查系统中的问题,但是当你打开该系统中的日志文件时,你可能会在看到大量不同类别的事件之后迷失了寻找方向。

解决方案如下:日志可以根据其提供的信息类型被分为多个类别,因此,现在你只需要查看与问题相关的特定日志文件即可。

例如,你现在想要调查Windows操作系统中特定时间段内从昨天开始的成功登录活动。此时,你无需查看所有日志,只需查看系统的Security Logs(安全日志)即可找到登录信息。我们还有其他类型的日志可用于调查不同的事件,让我们来看一下。

image-20250111211937505

Log Type 日志类型 Usage用途 Example 示例
System Logs(系统日志) 系统日志有助于排除操作系统中的运行问题。这些日志可以提供有关各种操作系统活动的信息 - System Startup and shutdown events(系统启动和关闭事件 - Driver Loading events (驱动程序加载事件) - System Error events (系统错误事件) - Hardware events (硬件事件)
Security Logs(安全日志) 安全日志有助于检测和调查安全事件。这些日志能够提供有关系统中与安全相关的活动的信息 -Authentication events (身份验证事件) - Authorization events ( 授权事件) - Security Policy changes events(安全策略变更事件) - User Account changes events (用户帐户更改事件) - Abnormal Activity events (异常活动事件)
Application Logs(应用程序日志) 应用程序日志包含与应用程序相关的特定事件。应用程序内发生的任何交互式或非交互式活动都将被记录在此处 - User Interaction events(用户交互事件) - Application Changes events(应用程序更改事件) - Application Update events (应用程序更新事件) - Application Error events (应用程序错误事件)
Audit Logs(审计日志) 审计日志可以提供有关系统更改和用户事件的详细信息。这些日志有助于满足合规性要求,并且在安全监控中也能发挥至关重要的作用 - Data Access events (数据访问事件) - System Change events (系统变更事件) - User Activity events (用户活动事件) - Policy Enforcement events (策略执行事件)
Network Logs(网络日志) 网络日志将提供有关网络出站和入站流量的信息。它们在排除网络故障方面发挥着至关重要的作用,并且在安全事件调查过程中也很有帮助 - Incoming Network Traffic events (传入网络流量事件) - Outgoing Network Traffic events (传出网络流量事件) - Network Connection Logs(网络连接日志) - Network Firewall Logs (网络防火墙日志)
Access Logs(访问日志) 访问日志可以提供关于针对不同资源的访问的详细信息。这些资源可以有不同类型,能为我们提供有关其访问的信息 - Webserver Access Logs (Web服务器访问日志) - Database Access Logs(数据库访问日志) - Application Access Logs(应用程序访问日志) - API Access Logs(API访问日志)

注意:根据不同的应用程序及其所提供的服务,可能存在各种其他类型的日志。

现在我们了解了这些日志是什么,以及不同类型的日志在不同场景下如何发挥作用,接下来让我们看看如何分析这些日志并从中提取所需的有价值的信息。日志分析是一种从日志中提取有价值的数据的技术。它涉及查找任何异常或不寻常的活动的迹象。用肉眼无法高效地在日志中搜索特定的活动或异常情况,因此,我们可以了解一些手动和自动化的日志分析技术。在接下来的内容中,我们将手动对Windows 事件日志以及 Web 服务器访问日志进行日志分析。

答题

哪种类型的日志包含有关网络中传入流量和传出流量的信息?

Network Logs (网络日志)

哪种类型的日志包含身份验证事件和授权事件?

Security Logs (安全日志)

image-20250530012453995

Windows事件日志分析

与其他操作系统一样,Windows操作系统也会记录许多发生的活动,它们被存储在独立的日志文件中,每个日志文件都有其特定的日志类别。Windows操作系统中所存储的一些重要日志类型包括:

  • 应用程序日志:操作系统上运行着许多应用程序。与这些应用程序相关的任何信息都会被记录到此文件中。这些信息包括错误、警告、兼容性问题等。
  • 系统日志:操作系统本身正在运行着各种不同的操作。与这些操作相关的任何信息都会被记录在系统日志文件中。这些信息包括驱动程序问题、硬件问题、系统启动和关闭信息、服务信息等。
  • 安全日志:就安全方面而言,这是Windows操作系统中最重要的日志文件。它会记录所有与安全相关的活动,包括用户身份验证、用户帐户更改、安全策略更改等。

除此之外,Windows操作系统中还有其他几个日志文件被用于记录与特定操作和应用程序相关的活动。

与前面研究的其他日志文件不同(那些日志文件没有内置应用程序来查看它们),在Windows操作系统上有一个被称为事件查看器(Event Viewer)的实用程序,可以提供一个漂亮的图形用户界面来查看和搜索这些Windows事件日志中的任何内容。

要打开事件查看器(Event Viewer),请点击Windows的“Start-开始”按钮并输入“Event Viewer”,它将自动为你打开事件查看器(Event Viewer),如下所示。在下面的屏幕截图中突出显示的区域显示了不同的可用日志。

image-20250530013844600

你可以在上图突出显示的部分中单击“Windows Logs-Windows日志”来查看我们在本小节开始时所讨论的不同类型的日志。

如下所示,第一个突出显示的部分显示了不同的日志文件,当我们单击其中一个日志文件时,我们将看到不同的日志(如第二个突出显示部分所示),最后,在第三个突出显示的部分中,我们有不同的选项来分析日志。

image-20250111212947643

让我们双击其中一个日志来查看其内容:

image-20250530014227459

This is how a Windows event log looks. It has different fields. The major fields are discussed below:

这就是 Windows 事件日志的样子,它包含不同的字段,下面将讨论一些主要字段:

  • Description(描述):此字段包含活动的详细信息。
  • Log Name(日志名称):日志名称字段指示了日志文件的名称。
  • Logged(已记录):此字段指示了活动的时间。
  • Event ID(事件ID):事件 ID 是特定活动的唯一标识符。

Windows 事件日志中有许多可用的事件 ID 。我们可以使用这些事件 ID 来搜索任何特定的活动。例如,事件 ID 4624 唯一标识了成功登录的活动,因此在调查成功登录时,你只需搜索此事件 ID 4624 即可。

下面是 Windows 操作系统中一些重要的Event IDs(事件ID)的表格。

Event ID 事件ID Description 描述
4624 A user account successfully logged in-用户帐户已成功登录
4625 A user account failed to login-用户帐户登录失败
4634 A user account successfully logged off-用户帐户已成功注销
4720 A user account was created-用户帐户已创建
4724 An attempt was made to reset an account’s password-帐户密码重置尝试
4722 A user account was enabled-用户帐户已启用
4725 A user account was disabled-用户帐户已被禁用
4726 A user account was deleted-用户帐户已被删除

事件 ID 还有很多,我们没有必要记住所有的事件ID,但最好记住关键的一些事件ID。

Event Viewer(事件查看器)允许我们通过其“Filter Current Log-过滤当前日志”功能搜索与特定事件 ID 相关的日志,我们可以单击此功能来应用任何过滤器。

image-20250530015252703

当我们点击“Filter Current Log-过滤当前日志”选项时,系统会提示我们输入要过滤的事件 ID,在下面的屏幕截图中,我们过滤了事件ID 4624。

image-20250111213046143

一旦我们点击“OK-确定”按钮,我们就可以看到事件ID为4624的所有日志,现在我们可以通过双击来查看其中的任何一个ID为4624的日志。

image-20250111213105770

实践练习

场景:在周五,一个重要组织报告称其成为网络攻击的受害者。经调查,该组织网络中的文件服务器中的关键数据已经被窃取。安全团队成功确定了此网络中受感染的系统的用户名和 IP 地址,在攻击发生时该系统有权访问目标文件服务器。

你的任务是在攻击者访问文件服务器之前找出攻击者在此受感染系统中的活动。

首先,在与本文相关的TryHackMe实验房间页面中,让我们点击如下所示的“Start Machine”按钮来启动目标虚拟机,该目标机器将会以分屏视图启动。

image-20250111213128264

如果目标虚拟机不可见,请继续点击实验房间页面顶部的蓝色“Show Split View”按钮,目标虚拟机将会以图形用户界面(GUI)的形式打开,此外,你也可以使用下面给出的RDP凭据来远程连接到该目标机器。

image-20250111213149520

  • Username:Administrator
  • Password:logs@123
  • IP:MACHINE_IP

注意:以下所有问题都可以通过查看日志来回答。

答题

启动实验虚拟机,打开事件查看器(Event Viewer),为此我们可以点击Windows的“Start-开始”按钮并输入“Event Viewer”。在搜索特定日志时,我们先确定我们要查找的日志所属的日志类型,然后在Event Viewer最左侧选中日志类型,最后再通过Event Viewer的“Filter Current Log”功能搜索与特定事件 ID 相关的具体日志。

image-20250530161252624

image-20250530161519847

在此系统上创建的最后一个用户帐户的名称是什么?

tips:在Event Viewer中查找事件ID 4720(即与用户帐户创建相关的日志),注意此日志的类型属于安全日志。

image-20250530161655144

image-20250530162502457

hacked

哪个用户帐户创建了上述帐户?请参阅刚才打开的用户帐户创建日志(user account creation log)中的“Subject-主题”详细信息。

tips:在上一个问题的基础上继续进行探索。

image-20250530162610356

Administrator

该用户帐户(最后一个被创建的)是在哪一天启用的?日期格式:月/日/年(M/D/YYYY)。

tips:我们先记住该账户名称,然后在Event Viewer中查找事件ID 4722(即与用户帐户启用相关的日志)。

image-20250530163531903

6/7/2024

该帐户(最后一个被创建的)是否也进行过密码重置?格式:是/否, Yes/No。

tips:我们先记住该账户名称,然后在Event Viewer中查找事件ID 4724(即与帐户密码重置尝试相关的日志)。

image-20250530164101499

Yes

image-20250530164157659

Web服务器访问日志分析

我们每天都会与许多网站互动。有时我们只是想浏览网站,有时我们想登录网站或者将文件上传到任何可用的输入字段。这些操作都是我们可以向网站发出的不同类型的请求。所有这些请求都会被网站记录下来,并被存储在运行该网站的 Web 服务器上的日志文件中。

该日志文件将包含对网站发出的所有请求,以及关于时间范围、请求的 IP、请求类型和URL的信息。以下字段取自 Apache Web 服务器访问日志文件的示例日志,该文件位于以下目录中:/var/log/apache2/access.log

  • IP Address(IP地址): “172.16.0.1” - 发出请求的用户的 IP 地址。
  • Timestamp(时间戳): “[06/Jun/2024:13:58:44]” - 向网站发出请求的时间。
  • Request(请求): 关于请求的详细信息。
    • HTTP 方法:“GET”- 告诉网站要使用该请求执行什么操作。
    • URL: “/” - 所请求的资源。
  • Status Code(状态码): “200” - 来自服务器的响应,不同的数字表示不同的响应结果。
  • User-Agent(用户代理): “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36” - 在发出请求时,请求中所包含的关于用户的操作系统、浏览器等信息。

我们可以通过使用Linux操作系统中的一些命令行实用程序来执行手动日志分析,以下是一些在手动日志分析期间可能有用的命令。

cat是一个常用的显示文本文件内容的实用程序,我们可以使用 cat 命令来显示日志文件的内容,因为日志文件通常会采用文本格式进行存储。

root@kali$ cat access.log
172.16.0.1 - - [06/Jun/2024:13:58:44] "GET /products HTTP/1.1" 404 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
10.0.0.1 - - [06/Jun/2024:13:57:44] "GET / HTTP/1.1" 404 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
192.168.1.1 - - [06/Jun/2024:13:56:44] "GET /about HTTP/1.1" 500 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"

大多数系统会定期轮换日志。这种轮换有助于系统为特定时间段创建单独的日志文件,而不是将所有特定信息都保存在一个日志文件中。但有时,我们可能需要合并两个日志文件。在这种情况下,cat 命令行实用程序也能派上用场,我们可以将多个文件的结果合并到一个文件中,如下所示:

root@kali$ cat access1.log access2.log > combined_access.log

grep是一个非常有用的命令行实用程序,它允许你在一个日志文件中搜索字符串和模式。例如,你可能需要搜索日志文件中是否存在某个特定的 IP 地址。你可以使用以下命令来执行此操作:

tips:以下命令将在 access.log 文件中搜索字符串“192.168.1.1”,并显示包含该字符串的所有行。

root@kali$ grep "192.168.1.1" access.log
192.168.1.1 - - [06/Jun/2024:13:56:44] "GET /about HTTP/1.1" 500 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
192.168.1.1 - - [06/Jun/2024:13:53:44] "GET /products HTTP/1.1" 404 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
192.168.1.1 - - [06/Jun/2024:13:46:44] "GET /about HTTP/1.1" 200 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"

less命令对于处理多个日志文件很有帮助。有时,你可能需要逐个分析特定的块。为此,你可以使用 less 命令行实用程序,它可以帮助你一次查看一页。

root@kali$ less access.log
172.16.0.1 - - [06/Jun/2024:13:52:44] "GET /products HTTP/1.1" 404 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
10.0.0.1 - - [06/Jun/2024:13:48:44] "GET /about HTTP/1.1" 404 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
192.168.1.1 - - [06/Jun/2024:13:46:44] "GET /about HTTP/1.1" 200 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
:

tips:使用spacebar(空格)键移动到下一页,使用b键移动到上一页。

执行此命令后,日志内容将分页显示,方便我们进行手动分析。如果你想在日志中搜索某些内容,你可以输入/然后提供你要搜索的模式,然后按 Enter 键。

使用n可以导航到下一个搜索结果,使用N能够导航到上一个搜索结果。

本小节提供了一个Web服务器访问日志文件示例,我们可以在实验房间页面单击“Download Task Files-下载任务文件”按钮来下载示例文件。

image-20250111213432213

为了方便起见,TryHackMe已经将该日志文件示例添加到了AttackBox中。你可以点击实验房间页面顶部的Start AttackBox按钮启动攻击机。AttackBox将会以分屏视图打开。如果未成功显示,你可以继续点击实验房间页面顶部的“Show Split View-显示拆分视图”按钮。

在AttackBox中,你可以在以下目录中找到“access.log”文件:/root/Rooms/logs

接下来请使用上面所讨论的手动日志分析命令来回答下面给出的问题。

注意:如果你想下载日志文件示例进行分析,那么需要注意,某些浏览器(例如Chrome)可能会阻止你的下载行为,因为该日志文件的内容中包含了可能会被浏览器安全机制标记为恶意的 IP 地址、URL和用户代理(User-Agent)字符串。在浏览器阻止你进行文件下载之后,你可以选择单击“Keep file-保留文件”或者单击浏览器中任何其他可用的相同选项来尝试获取此日志文件示例。

答题

我们可以直接下载并查看与本小节相关的任务文件:

image-20250530154326662

或者,我们也可以启动AttackBox,打开终端界面,在/root/Rooms/logs目录中找到“access.log”文件,然后使用本小节中提及的命令来进行手动日志分析。

cd /root/Rooms/logs
ls -l

image-20250530164903212

最后一次向 URL“/contact”发出 GET 请求的相关 IP 是什么?

tips:分析日志文件示例。

#grep "contact" access.log
grep "GET /contact" access.log

image-20250530165235204

10.0.0.1

“172.16.0.1”IP地址最后一次发出 POST 请求是什么时候?

tips:分析日志文件示例。

grep "172\.16\.0\.1" access.log | grep "POST"

image-20250530170053110

06/Jun/2024:13:55:44

基于刚才的问题 2 的答案,此POST请求是向哪个 URL 发出的?

tips:继续查看与上一个问题相关的终端输出界面即可。

image-20250530170215597

/contact

image-20250530170248838

本文小结

在本文的内容中,我们了解了日志如何成为调查过程中重要的信息来源,我们研究了不同类型的日志及其使用案例,并学习了如何手动和自动分析它们。

上文中的 Windows 事件日志分析和 Web 服务器访问日志分析的实践练习让我们有机会尝试处理不同安全事件场景中的日志文件。

posted @ 2025-05-30 17:07  Hekeatsll  阅读(74)  评论(0)    收藏  举报