ESP数据包的Snort规则

时间:2019-04-13 12:06:13

标签: security snort

我想知道是否可以编写与SPI值欺骗的ESP数据包匹配的snort规则。

我要提醒的数据包:
00:00:00.000000 IP x.x.x.x> x.x.x.x:ESP(spi = 0x00000000,seq = 0x29)

原始数据包看起来像这样:

4500 XXXX XXXX XXXX XXXX-> 20个字节的IP标头
0000 0000 XXXX XXXX XXXX->以4个字节的零开头的ESP标头
XXXX ...

这就是为什么我最好的猜测是尝试匹配:
1)IP Proto等于ESP
2)ESP标头开头的原始字节等于0x00000000

到目前为止,我想到了这个:

alert ip any any -> any any \  
(ip_proto:esp; content: "|00 00 00 00|"; offset:0; depth: 4;)  

不幸的是,这不起作用。我相信这是因为Snort开始查看有效负载中的“ content:”。我尝试使用pkt_data选项将检测光标重置为传输层的开始。每本手册: “ pkt_data:此选项将用于检测的光标设置为原始传输有效负载”

我认为在IP标头之后立即检查“内容:”会很愚蠢。不幸的是,没有结果。

我在这里某个地方犯错了吗?还是Snort无法通过ESP标头中的原始字节进行匹配?任何帮助/意见将不胜感激!

1 个答案:

答案 0 :(得分:0)

除了编写自己的预处理器外,没有其他好的方法。 Snort当前没有任何东西可以将ESP spi值暴露给规则配置语言。

虽然确实支持对ESP数据进行解码,但这仍然只会将解密后的有效载荷暴露给您的规则。

为避免麻烦,byte_test似乎是一种可能,但它特别允许您仅 操纵有效载荷。例如,以下不会允许您检查2049标头中的UDP目标端口:

 ...byte_test:2,=,2049,-2,big;