/R 在 snort 的 pcre 规则选项中是什么意思?



我正在尝试生成一些可以触发snort警报的痕迹来测试snort的性能。但是在某些包含/R 的规则中有一些 pcre 选项,我不明白。

例如,在一个snort规则pcre中有一个pcre选项:"/^(x75|x2d|x2f|x73|xa2|x2e|x24|x74)/sR",我不知道"R">是什么意思。我知道"s">是一个可以设置PCRE_DOTALL的 pcre 修饰符。但是"R">呢?它也是一个修饰符还是别的什么?

我已经搜索了pcre文档,但没有找到"R"修饰符。所以我认为它不是一个修饰符。

这是一个包含/R 的 pcre 选项的示例规则,我从 snort3 的社区规则中得到了这个规则。

alert udp $EXTERNAL_NET any -> $HOME_NET 138 ( msg:"OS-WINDOWS Microsoft Windows SMB Unicode 和 x 无效的服务器名称共享访问"; 内容:"|11|",深度 1;内容:"|00|",距离 13; 内容:"|00|",距离 0;内容:"|FF|SMB",4以内,距离3; pcre:"/^(\x75|\x2d|\x2f|\x73|\xa2|\x2e|\x24|\x74(/sR"; byte_test:1,&,128,6,相对;内容:"U",深度1,偏移量39; byte_jump:2,0,小,相对;byte_jump:2,7,小,相对; 内容:"|5C 00 5C 00|",距离2,无大小写; 哎呀:!"/^([^\x5C\x00].|[\x5c\x00][^\x00](+\x5C\x00/sR"; 元数据:策略最大检测 IP 丢弃;编号:CVE,2010-0022; 参考:url,technet.microsoft.com/en-us/security/bulletin/MS10-012; 类类型:协议命令解码;SID:16403;修订版:12;)

R修饰符不是原生的 PCRE 修饰符,它是 PCRE 正则表达式的 Snort 特定修饰符,使 Snort3能够强制特定的模式行为。

请参阅 Snort3">3.5.26.1 格式"文档:

R 相对于最后一个模式匹配的末尾的匹配。(类似于距离:0;(

任何 HTTP 修饰符(如 U、I、P、H、D、M、C、K、S 和 Y(都不允许使用修饰符 R(相对(和 B(原始字节(。

请注意,根据规则作者简介写作Snort 3规则

在Snort 2中,后置修饰符(BUPHMCIDKSY(为正则表达式设置编译时标志。例如,pcre U 的 Snort 特定修饰符用于匹配解码的 URI 缓冲区。

在Snort 3中,一些后修饰符(BUPHMCIDKSY(已被删除,取而代之的是粘性 缓冲区。

最新更新