【THM】IDS Fundamentals(IDS基础知识)-学习
本文相关的TryHackMe实验房间链接:https://tryhackme.com/r/room/idsfundamentals
本文相关内容:了解关于IDS(入侵检测系统)的基础知识并简单使用Snort。

什么是IDS(入侵检测系统)
在TryHackMe提供的“防火墙简介”实验房间中,我们研究了防火墙的作用,防火墙是一种安全解决方案,通常部署在网络边界以保护其传入和传出流量。防火墙会在连接即将建立时检查流量,如果违反了防火墙规则,则会拒绝连接。然而,还应该有一些安全措施来检测已经穿过防火墙并且已经发生的连接活动。因此,如果攻击者通过看似合法的连接成功绕过了防火墙,然后在目标网络内部执行任何恶意活动,那么应该要有某种措施能够及时检测到它们。为此,我们可以在网络内部部署一个安全解决方案,该解决方案通常被称为入侵检测系统(IDS-Intrusion Detection System)。
以建筑物的安全为例。 防火墙充当的是看门人的角色,它会检查进出的人员,但是总有一些不法分子有机会成功潜入并开始执行一些恶意活动。不法分子在通过门口时没有被看门人抓住,但如果他进来后我们还想要抓住他应该怎么办?遍布整个建筑物的监控摄像头可以帮助我们做到这一点。在网络世界中,IDS就扮演着类似于监控摄像头的角色,它会位于一个角落,通过基于签名以及基于异常的检测来监控网络流量,并可以检测出任何进出网络的异常流量。每次检测到异常流量时,它都会向安全管理员发出警报。IDS不会针对这些检测结果采取行动,它只会将恶意活动通知给安全管理员。

本文将为你提供有关IDS解决方案的基础知识。在本文接下来的内容中,我们还将探索最流行的一种开源IDS解决方案:Snort IDS。
本文学习目标
- 了解IDS的类型及其检测功能;
- 了解Snort IDS的工作原理;
- 了解Snort IDS中的默认规则和自定义规则;
- 学习如何在 Snort IDS中创建自定义规则。
答题
入侵检测系统 (IDS) 在检测到威胁后能否阻止威胁?是/否,Yea/Nay
Nay

IDS(入侵检测系统)的类型
入侵检测系统(IDS)可以根据某些因素进行不同的分类,IDS 的主要分类取决于其部署模式和检测模式。
按部署模式分类
IDS可以通过以下方式被部署:
- 主机入侵检测系统 (HIDS-Host Intrusion Detection System):基于主机的IDS解决方案会单独安装在主机上,仅负责检测与该特定主机相关的潜在安全威胁。它们提供了主机活动的详细可视性。然而,在大型网络中管理主机入侵检测系统可能具有挑战性,因为它们是资源密集型的(占用大量资源),并且需要在每台主机上进行管理。
- 网络入侵检测系统 (NIDS-Network Intrusion Detection System):基于网络的IDS解决方案对于检测整个网络中的潜在恶意活动至关重要,且无需依赖特定主机。它们通过监控所有相关主机的网络流量来检测可疑活动,并且可以提供整个网络内所有检测的集中视图。
tips:HIDS也可以称为Host-based IDS(基于主机的入侵检测系统),NIDS也可以称为Network-based IDS(基于网络的入侵检测系统)。

按检测模式分类
- 基于签名的IDS(Signature-Based IDS):每天都会发生许多攻击。每种攻击都有其独特的模式,这被称为签名。这些签名由IDS保存在其数据库中,以便将来如果发生相同的攻击时,可以通过其签名及时检测到该攻击并向安全管理员报告以采取行动。 IDS的签名数据库越强大,它检测已知威胁的效率就越高。然而,基于签名的IDS无法检测零日(0day)攻击。因为零日攻击没有事先的签名(模式),并且事先不会被保存在IDS数据库中。因此,基于签名的IDS只能检测到之前发生过的攻击,这些攻击的签名(模式)已经被保存在数据库中。在接下来的小节中,我们将探索一款名为Snort的基于签名的IDS。
- 基于异常的IDS(Anomaly-Based IDS):这种类型的IDS首先需要了解网络或系统的正常行为(baseline-基线),并在出现任何偏离正常行为的情况时执行检测。基于异常的IDS还可以检测零日攻击,因为它们不依赖于可用的签名进行检测,而是通过将当前状态与正常行为(baseline-基线)进行比较来检测网络或系统内部的异常。然而,这种类型的IDS可能会产生大量的误报(将良性活动标记为恶意),这是因为大多数合法程序的性质可能会与恶意程序相匹配,而基于异常的IDS会将它们标记为恶意,并且会认为任何异常行为都是恶意的。我们可以通过微调(手动定义IDS中的正常行为)来减少基于异常的IDS所产生的误报。
- 混合型IDS(Hybrid IDS):混合型IDS结合了基于签名的IDS和基于异常的IDS的检测方法,充分利用了每种方法的优势。一些已知的威胁可能已经在IDS数据库中拥有一些签名,在这种情况下,混合型IDS会使用基于签名的IDS的检测技术;但如果遇到一个新的威胁,混合型IDS还可以利用基于异常的IDS的检测方法来进行检测。
基于签名的IDS可以快速检测威胁,而其他类型的IDS可能具有较高的处理开销。然而,在实际情况中,我们还必须基于多种不同的因素来考虑如何选择IDS。基于签名的入侵检测系统(IDS)对于覆盖一个较小的威胁面而言,可能会是一个不错的选择;基于异常的IDS以及混合型IDS则可以帮助我们检测现代的零日攻击,这些攻击每天都在增加,并且能够对组织造成巨大损害。
答题
我们可以部署哪种类型的 IDS 来检测整个网络中的威胁?
tips:阅读本小节内容可知。
Network Intrusion Detection System(网络入侵检测系统/基于网络的入侵检测系统)
哪种 IDS 可以同时利用基于签名和基于异常的检测技术?
tips:阅读本小节内容可知。
Hybrid IDS(混合型IDS)

IDS示例:Snort
Snort 是 1998 年开发的最广泛使用的开源 IDS 解决方案之一。它使用基于签名和基于异常的检测来识别已知威胁。这些规则定义在 Snort 工具的规则文件中。此工具包中预装了几个内置规则文件。这些内置规则文件包含各种已知的攻击模式。Snort 的内置规则可以为你检测大量恶意流量。但是,你可以配置 Snort 来检测默认规则文件未涵盖的特定类型的网络流量。你也可以根据需求创建自定义规则来检测特定流量。如果内置检测规则没有指向对你的系统或网络有害的流量,你还可以禁用它们,并定义一些自定义规则。在下一个小节中,我们将探索Snort的内置规则并尝试创建自定义规则来检测特定流量。
Snort的模式

| Mode 模式 | Description 描述 | Use Case 使用案例 |
|---|---|---|
| Packet sniffer mode(数据包嗅探器模式) | 此模式可以读取并显示网络数据包,但不对其进行任何分析。 Snort的数据包嗅探器模式与IDS功能没有直接关系,但它有助于网络监控和故障排除。在某些情况下,系统管理员可能需要读取流量而不执行任何检测来诊断特定问题。在这种情况下,他们可以利用Snort的数据包嗅探器模式。此模式允许你在控制台上显示网络流量,甚至将其输出到文件中 | 网络团队观察到一些网络性能问题。为了诊断问题,他们需要详细且深入了解网络流量。为此,他们可以利用Snort的数据包嗅探器模式 |
| Packet logging mode(数据包记录模式) | Snort可以对网络流量进行实时检测,并将检测结果以警报形式显示在控制台上,以便安全管理员采取行动。然而,在某些情况下,需要记录网络流量以供日后分析。 Snort的数据包记录模式允许你将网络流量记录为PCAP (标准数据包捕获格式)文件,同时还会生成日志文件。这些文件包括了所有网络流量及其检测结果。取证调查人员可以使用这些 Snort 日志文件来对先前的攻击进行根本原因分析 | 安全团队需要对网络攻击进行取证调查。他们需要流量日志来执行根本原因分析。通过 Snort 的数据包记录模式记录的网络流量可以帮助他们 |
| Network Intrusion Detection System mode(网络入侵检测系统模式) | Snort的NIDS模式是主要模式,它能够实时监控网络流量,并会应用其规则文件来识别与已知攻击模式(以签名形式存储)匹配的情况。如果存在匹配,则会生成警报。该模式提供了一个IDS解决方案的主要功能 | 安全团队必须主动监控其网络或系统,以检测潜在威胁。他们可以利用 Snort 的NIDS 模式来实现这一点 |
Snort 作为 IDS 最相关的用途在于其NIDS(Network Intrusion Detection System-网络入侵检测系统)模式,但实际上 Snort 可以根据需求在上述任何模式下使用。
答题
哪种 Snort 模式可以帮助我们将网络流量记录在一个 PCAP 文件中?
tips:阅读本小节内容可知。
Packet logging mode(数据包记录模式)
Snort 的主要模式是什么?
tips:阅读本小节内容可知。
Network Intrusion Detection System mode(网络入侵检测系统模式)

Snort的基础用法
在Snort的安装期间,你必须提供网络接口和范围。你可以正常运行Snort,它仅会捕获你的主机的流量。但是,如果你想使用Snort来捕获和检测你的整个网络中的入侵情况,那么你必须启用主机网络接口的混合模式(promiscuous mode)。
在与本文相关的TryHackMe实验房间页面中,我们可以通过点击如下所示的 “Start Machine” 按钮来启动实验虚拟机。该实验机器将会以分割视图的形式启动。如果该实验虚拟机不可见,请尝试点击实验房间页面顶部的蓝色Show Split View按钮。

Snort有一些内置规则文件、一个配置文件和其他文件。这些文件存储在/etc/snort目录中。Snort的关键文件是其配置文件snort.conf,你可以在其中指定要启用哪些规则文件、要监控的网络范围以及启用其他设置。规则文件存储在rules文件夹中。我们可以使用ls命令列出Snort主目录中的所有文件和文件夹:
ubuntu@tryhackme:~$ ls /etc/snort
classification.config reference.config snort.debian.conf
community-sid-msg.map rules threshold.conf
gen-msg.map snort.conf unicode.map
规则格式
现在,我们来讨论一下如何在Snort中创建规则。规则的编写有特定的方法。以下是一个示例规则,它可以检测来自任意IP地址和端口、到达家庭网络(网络范围可以在Snort的配置文件中定义)的任意端口的ICMP数据包(在你ping主机时通常会使用此类数据包)。一旦Snort检测到此类流量,就会生成“Ping Detected”警报。

本规则所涉及的组成部分的详细信息如下:
-
Action(动作): 指定规则触发时要采取的动作。在本例中,当流量与此规则相匹配时,我们的动作是发出“alert-警报”。
-
Protocol(协议): 这指的是与此规则匹配的协议。在本例中,我们使用的是“ICMP”协议,此协议在我们 ping 主机时会被使用。
-
Source IP(源 IP): 这决定了流量的来源 IP。由于我们想要检测来自任何源 IP 的流量,因此我们将其设置为“any”。
-
Source port(源端口): 这决定了流量来自哪个端口。由于我们想检测来自任何源端口的流量,因此我们将其设置为“any”。
-
Destination IP(目的地 IP): 指定匹配流量将要到达的目的地 IP;它会生成警报。在本例中,我们使用了“$HOME_NET”。这是一个变量,我们在Snort的配置文件中将其值定义为整个本地网络的范围。
-
Destination port(目的地端口): 指定流量将到达的端口。由于我们想检测到达任意端口的流量,因此这里将其设置为“any”。
-
Rule metadata(规则元数据): 每条规则都有一些元数据。这些元数据可在规则末尾的括号中定义。其组成部分如下:
-
Message (msg-消息): 这描述了触发主题规则时要显示的消息。该消息应指示检测到的活动类型。在本例中,我们使用了“Ping Detected(检测到Ping)”。
-
Signature ID (sid-签名ID): 每条规则都有一个唯一的标识符,用来区别于其他规则。此标识符被称为签名 ID (sid)。在本例中,我们将 sid 设置为“10001”。
-
Rule revision (rev-规则修订): 设置规则的修订号。每次修改规则时,其修订号都会递增。这有助于跟踪任何规则的变更情况。
-
规则创建
让我们将上面解释的示例规则粘贴到 Snort 规则目录中的自定义“local.rules”文件中。
首先,在文本编辑器中打开“local.rules”文件:
#Edit Custom Rule File 编辑自定义规则文件
ubuntu@tryhackme:~$ sudo nano /etc/snort/rules/local.rules
现在,我们在文件的现有规则之后添加以下规则:
alert icmp any any -> 127.0.0.1 any (msg:"Loopback Ping Detected"; sid:10003; rev:1;)
注意:在下一个小节中我们将要用到这个local.rules中的其他已存在的规则,所以在此处请不要随意删除文件内容。
成功编辑好文件内容后,按“ctrl+x”组合键,然后系统会提示你是否要保存更改并要求你按“y”,我们按“y”保存即可。
规则测试
我们启动 snort 工具来检测规则文件中已定义的任何入侵。为此,我们可以在控制台中使用 sudo 权限执行以下命令:
#Running Snort for Detections 运行Snort进行检测
ubuntu@tryhackme:~$ sudo snort -q -l /var/log/snort -i lo -A console -c /etc/snort/snort.conf
注意:如果你的环回接口的名称不是“lo”,请将其替换为正确的接口名称。
由于此规则旨在向我们警报:有任意ICMP数据包到达我们的环回地址。因此让我们尝试 ping 一下我们的环回地址以查看该规则是否有效:
#ping Host
ubuntu@tryhackme:~$ ping 127.0.0.1
下面的终端输出显示了当我们 ping 主机的环回 IP 时,Snort将生成“Loopback Ping Detected-检测到环回Ping”警报,这意味着我们的规则运行正常。
#Running Snort for Detections 运行Snort进行检测
ubuntu@tryhackme:~$ sudo snort -q -l /var/log/snort -i lo -A console -c /etc/snort/snort.conf
07/24-10:46:52.401504 [**] [1:1000001:1] Loopback Ping Detected [**] [Priority: 0] {ICMP} 127.0.0.1 -> 127.0.0.1
07/24-10:46:53.406552 [**] [1:1000001:1] Loopback Ping Detected [**] [Priority: 0] {ICMP} 127.0.0.1 -> 127.0.0.1
07/24-10:46:54.410544 [**] [1:1000001:1] Loopback Ping Detected [**] [Priority: 0] {ICMP} 127.0.0.1 -> 127.0.0.1
针对PCAP文件运行Snort
我们了解了如何使用 Snort 对实时流量进行入侵检测。然而,有时你可能会遇到这样的情况:你有一个记录了历史网络流量的文件,你必须对该流量进行取证调查以确定是否有任何入侵迹象。此类流量通常会以标准数据包捕获格式“ PCAP ”记录,Snort可以对这些包含了历史网络流量的PCAP文件进行检测。

我们可以使用以下具有 sudo 权限的命令来执行此操作:
#Running Snort on PCAP
ubuntu@tryhackme:~$ sudo snort -q -l /var/log/snort -r Task.pcap -A console -c /etc/snort/snort.conf
注意:请将上述命令中的“Task.pcap”替换为——你想要分析的PCAP文件所在的文件路径 。
答题
阅读本小节内容并回答以下问题。
Snort存储其文件的主目录在哪里?
tips:阅读本小节内容可知。
/etc/snort
Snort 规则中的哪个字段表示规则的修订号?
tips:阅读本小节内容可知。
rev
本小节所创建的示例规则中定义了哪个协议?
tips:阅读本小节内容可知。
icmp
在本小节中,包含 Snort 自定义规则的文件相关的名称是什么?
tips:阅读本小节内容可知。
local.rules

练习示例
场景:假设你是一个第三方的取证调查人员,现在有一家公司联系你来调查最近针对其公司网络的攻击情况,他们给出了一个名为“Intro_to_IDS.pcap”的PCAP文件,其中包含了公司的安全团队在系统遭受攻击期间所捕获的相关网络流量,你的任务是对此PCAP文件运行Snort工具以进行分析,最后再回答本小节所给出的一些问题。
注意: PCAP示例文件Intro_to_IDS.pcap被放置在实验虚拟机中的/etc/snort/目录中,你必须在终端界面中将当前目录切换到/etc/snort,然后针对这个给定的PCAP示例文件运行PCAP分析命令,就像我们在第 4 小节中所做的那样。
答题
阅读本小节内容,完成相关实验操作(首先参考上一小节开头内容以启动实验虚拟机),最后回答以下问题。
尝试使用 SSH 连接到主计算机的机器的IP地址是什么?
tips:分析给定的PCAP文件。
cd /etc/snort/
ls -l
sudo snort -q -l /var/log/snort -r Intro_to_IDS.pcap -A console -c /etc/snort/snort.conf


10.11.90.211
除了 SSH 消息之外,在 PCAP 文件中还可以检测到哪些其他规则消息?
tips:在问题一的基础上继续探索。

Ping Detected
用于检测SSH的规则的sid是多少?
#查看规则文件
sudo cat /etc/snort/snort.conf | grep "rules"
#include $RULE_PATH/local.rules
cd /etc/snort/rules/
sudo cat /etc/snort/rules/local.rules


1000002


了解关于IDS(入侵检测系统)的基础知识并简单使用Snort。
浙公网安备 33010602011771号