ESP数据包的Snort规则

问题描述 投票:0回答:1

我想知道是否有可能编写一个匹配ESP数据包的snort规则与伪造的SPI值。

我要提醒的数据包: 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 - > ESP标头以4个字节的零开头 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:此选项将用于检测的光标设置为原始传输有效负载”

我认为它会欺骗snort开始'内容:'在IP标题后立即检查。不幸的是,没有结果。

我在某处犯了错误吗?或者,Snort是否可以通过ESP头中的原始字节进行匹配?任何帮助/意见将不胜感激!

security snort
1个回答
0
投票

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

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

为了省去一些麻烦,byte_test似乎是一种可能性,但它非常明确地允许你只操纵有效载荷。例如,以下内容将不允许您检查2049标头中的UDP目标端口:

 ...byte_test:2,=,2049,-2,big;
© www.soinside.com 2019 - 2024. All rights reserved.