模式匹配可以跨越 TCP 数据包吗?

Can pattern matching go across TCP packets?

我是入侵检测系统的新手。据我所知,模式匹配(例如 Snort 中的 PCRE)似乎只在数据包内搜索匹配。

模式匹配可以跨数据包吗?

实际上,人们关心交叉数据包模式吗?

如果您正在进行流重组(在标准 snort.conf 中应该默认启用),那么可以。这被称为伪数据包(或重组数据包),它是 snort 从多个数据包构建并重新组装的。您可以阅读有关此功能和配置的信息 here。这可能是 snort 最重要的部分(也是最昂贵的部分),如果不进行流重组,许多漏洞将被遗漏。如果不重新组装,snort 将只能检查原始数据包。例如:

TCP数据包包含2000字节的数据,网络上的MTU是1500,所以这个数据包必须被切碎成单独的数据包发送。假设 1400 字节在数据包 1 中发送,其他 600 字节在数据包 2 中发送。如果此数据包中存在漏洞利用并且 snort 正在寻找的内容包含在字节 1360-1500 中,则 snort 将错过漏洞利用并且不会发出警报.使用流重组,snort 将重组数据包:

假设您有一条查找内容 "THIS IS AN EXPLOIT".

的 snort 规则

原始数据包 1:....数据...这是一个
原始数据包 2:利用....数据...

如果没有流重组,snort 将错过此漏洞。使用流重组,snort 将重建伪数据包,并且它将 运行 规则内容反对它,因此它将看到:

伪数据包:...数据...这是一个漏洞...数据...

规则将匹配。