网络流量分析 | Snort
Snort 是一个基于规则的开源网络入侵检测和防御系统(NIDS/NIPS),它由 Martin Roesch、开源贡献者以及 Cisco Talos 团队共同开发和维护。
然而在认识 Snort 并使用它之前,我们需要了解一下什么是 IDS/IPS。
IDS/IPS
IDS
IDS,全称为 Intrusion Detection System,入侵检测系统,它是被动检测的。它会检测出恶意行为、异常事件和违反策略的行为,并对这些可疑行为做出警报。
IDS 可被分为以下两种:
- NIDS(Network Intrusion Detection System),网络入侵检测系统。它会检测网络中所有子网的流量,如果有流量对应上了检测规则,那就会发起警报。
- HIDS(Host-based Intrusion Detection System),基于主机的入侵检测系统。它只会检测特定终端设备的流量,如果有流量对应上了检测规则,那就会发起警报。
IPS
IPS,全称为 Intrusion Prevention System,入侵防御系统。与IDS不同,IPS是主动防御的。它们会预防恶意行为、异常事件和违反策略的行为,将可疑事件的连接终止。
IPS 可以被分为四种:
- NIPS(Network Intrusion Prevention System),网络入侵防御系统。它会检测网络中所有子网的流量,如果有流量对应上了检测规则,那就会断开这个连接。
- NBA (Network Behaviour Analysis,也叫 Behaviour-based Intrusion Prevention System),基于行为的入侵防御系统。它会检测网络中所有子网的流量,如果发生有异常,那就会断开这个连接。
乍一看 NIPS 和 NBA 非常类似,但是后者需要训练期(也被称为“baseline”),这使得 NBA 可以学习正常流量并区分开恶意流量和行为,NBA 能够更有效地应对未知的新威胁。所以为了避免NBA误报,训练期将至关重要。
- WIPS(Wireless Intrusion Prevention System),无线入侵防御系统。顾名思义,它用于监控和保护无线网络,如果有流量对应上了检测规则,那就会断开这个连接。
- HIPS(Host-based Intrusion Prevention System),基于主机的入侵防御系统。它只会保护特定终端设备的流量,如果有流量对应上了检测规则,那就会断开这个连接。
检测/防御技术
在 IDS/IPS 中使用到的检测/防御技术,无外乎这三种:
技术 | 简介 |
---|---|
基于签名 | 这种技术依赖于识别已知恶意行为特定模式的规则。这种模式有助于检测已知威胁。 |
基于行为 | 该技术可通过签名识别出具有新模式的新威胁。该模式将已知/正常行为与未知/异常行为进行比较。这种模式有助于检测以前未知的或新的威胁。 |
基于策略 | 该技术将检测到的活动与系统配置和安全策略进行比较。该模型有助于检测违反策略的行为。 |
小结
IDS 主要用于检测威胁,但具体如何处理威胁需要用户自己操作。
IPS 可以检测威胁并且阻挡威胁,较少依靠用户自己处理。
Snort
转回 Snort,前文提到Snort是开源的NIDS/NIPS工具,实际上它还拥有其他功能:嗅探网络流量、记录日志、PCAP包分析等。要想使用这些功能也非常简易,只需要执行snort [对应参数]
即可。
下面将逐一对其使用到的参数进行简单介绍。
嗅探网络流量
与嗅探网络流量相关的参数如下表所示:
参数 | 介绍 |
---|---|
-v | 在控制台展示TCP/IP协议的输出 |
-d | 展示应用层数据的输出 |
-e | 展示链路层的头信息(TCP/IP/UDP/ICMP) |
-X | 以十六进制展示数据包的所有内容 |
-i | 指定要嗅探的网络接口 |
记录日志
此处需要先讲一讲Linux文件的所有权和权限。Linux的文件所有权的基本规则是:谁创建了文件,谁就是相应文件的所有者。而 Snort 需要 root 权限才能嗅探流量,因此Snort生成的日志也是在root权限下生成的。因此,我们需要拥有root权限才可以调查日志文件。
与记录日志相关的参数如下表所示:
参数 | 介绍 |
---|---|
-l | 日志模式,指定警报和日志输出的路径。默认输出路径是/var/log/snort |
-K ASCII | 以 ASCII 格式记录日志,使人类可读 |
-r | 阅读模式,阅读由 Snort 生成的日志 |
-n | 指定要处理/读取的数据包数量,Snort 将在读取指定数量的数据包后停止 |
IDS/IPS
Snort 可以根据配置的规则来管理流量。
与 IDS/IPS 相关的参数如下表所示:
参数 | 介绍 |
---|---|
-c | 定义配置文件/规则文件 |
-T | 测试配置文件/规则文件 |
-N | 禁用日志模式 |
-D | 置于后台运行 |
-A | 指定“警报”的模式 - full:完全警报模式,提供警报的所有可能信息。这也是默认模式;一旦使用 -A 且未指定任何模式,Snort 就会使用这种模式 - fast:快速模式显示警报信息、时间戳、源IP、目标IP以及端口号 - console:在控制台展示“fast”模式的警报输出 - cmg:CMG 模式,在控制台显示完整的包信息,包括包的头部信息和十六进制、文本格式的包体内容 - none:停用警报 |
-Q --daq afpacket | 启用 IPS 模式 |
PCAP包分析
还可以利用 Snort 对 pcap 文件进行处理,一旦有了 pcap 文件并用 Snort 对其进行处理,就会收到默认的流量统计,并根据规则集发出警报。
pcap 包分析的相关参数如下表所示:
参数 | 介绍 |
---|---|
-r / --pcap-single= | 读取单个 pcap 文件 |
–pcap-list=" " | 读取多个 pcap 文件(以空格分隔) |
–pcap-show | 处理过程中在控制台显示 pcap 文件名 |
Snort 规则结构
Snort 的规则分为两个部分:规则头和规则选项
规则头由七个部分组成:
- Action:对符合规则的流量作何处理
- Protocol:定义要捕获的流量的协议
- Source IP:定义要捕获的流量的源IP地址
- Source Port:定义要捕获的流量的源端口
- Direction:定义要捕获的流量的流向
- Destination IP:定义要捕获的流量的目标IP地址
- Destination Port:定义要捕获的流量的目标端口
而规则选项则有三大类:
- 常规规则选项:Snort 的基本规则选项
- 有效载荷(Payload)检测规则选项:用于检测带有特定 Payload 的流量
- 非有效载荷检测规则选项:有助于创建特定模式以及识别网络问题
接下来简单讲讲这三类规则选项中包含的内容。
常规规则选项
常规规则选项是 Snort 的基本规则选项,其包含的内容如下表所示:
选项 | 介绍 |
---|---|
msg | 触发规则后,这个选项中的字段会显示在控制台或日志中。通常,这部分是对事件进行总结的单行文字 |
sid | Snort 规则的 id。sid有三种不同范围: - < 100:保留规则 - 100 - 999,999:内置规则 - >= 1,000,000:用户创建的规则 我们创建的规则的sid都应该大于1,000,000,且每个规则的sid是不同的,都是唯一的 |
reference | 每条规则都可以有附加信息或参考,以解释规则或威胁模式的目的。这可以是 CVE ID 或外部信息。在警报和事件调查过程中,为规则提供参考始终会对分析人员有所帮助 |
rev | Snort 规则可针对性能和效率问题进行修改和更新。该选项可帮助分析人员获得每条规则的修订信息。因此,很容易理解规则的改进。每条规则都有唯一的修订号,规则历史没有自动备份功能。分析员应自行保存规则历史。该选项是唯一指示规则修订次数的指标 |
Payload检测规则选项
Payload 检测规则选项是用来检测带有特定 Payload 的流量的,其包含的内容除了常规规则选项,还包含了以下内容:
选项 | 介绍 |
---|---|
content | Payload 数据。它通过 ASCII、HEX 或两者皆可的方式匹配特定的Payload数据。可以在一条规则中多次使用该选项。不过,创建的特定模式匹配功能越多,调查数据包所需的时间就越长 |
nocase | 禁用大小写敏感性,用于加强内容搜索 |
fast_pattern | 指定优先搜索内容,加快Payload的搜索操作。默认情况下,Snort 使用最大的内容并根据规则进行评估。该选项不区分大小写,每条规则可使用一次。请注意,在使用多个 "content "选项时,必须使用该选项。 |
Non-Payload 检测规则选项
有一些规则选项侧重于non-payload数据。这些选项有助于创建特定模式和识别网络问题,其包含的内容除了常规规则选项,还包含了以下内容:
选项 | 介绍 |
---|---|
id | 过滤 IP 的 id 字段 |
flags | 过滤了 TCP flags - F:FIN - S:SYN - R:RST - P:PSH - A:ACK - U:URG |
dsize | 过滤包的大小,有三种: - dsize:[min]<>[max] - dsize:>[some_number] - dsize:<[some_number] |
sameip | 过滤重复的源 IP 地址和目标 IP 地址 |
小结
通过上面的介绍,可以将 Snort 的使用总结为以下两张图。这两张图由 TryHackMe 总结得到: