【问题标题】:What does /R mean in snort's pcre rule option?/R 在 snort 的 pcre 规则选项中是什么意思?
【发布时间】:2019-09-01 14:13:35
【问题描述】:

我正在尝试生成一些可以触发 snort 警报的跟踪,以测试 snort 的性能。但是有些规则中有一些pcre选项包含/R,我看不懂。

例如,一个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 andx 无效的服务器名称共享访问”; 内容:“|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,relative;内容:“u”,深度1,偏移量39; byte_jump:2,0,little,relative; byte_jump:2,7,little,relative; 内容:“|5C 00 5C 00|”,距离 2,nocase; pcre:!"/^([^\x5C\x00].|[\x5c\x00][^\x00])+\x5C\x00/sR"; 元数据:策略 max-detect-ips 丢弃;参考:cve,2010-0022; 参考:url,technet.microsoft.com/en-us/security/bulletin/MS10-012; 类类型:协议命令解码;西德:16403;版本:12; )

【问题讨论】:

    标签: pcre snort


    【解决方案1】:

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

    Snort3 "3.5.26.1 Format" documentation:

    R            相对于最后一个模式匹配的结尾进行匹配。 (类似于距离:0;)
    ...
    修饰符 R(相对)和 B(原始字节)不允许与任何 HTTP 修饰符一起使用,例如 U、I、P、H、D、M、C、K、S 和 Y。

    请注意,acc。给Rules Authors Introduction to Writing Snort 3 Rules

    在 Snort 2 中,post-re 修饰符(BUPHMCIDK、@ 987654333@, Y) 为正则表达式设置编译时间标志。例如,pcre U 的 Snort 特定修饰符用于匹配解码的 URI 缓冲区。

    在 Snort 3 中,一些 post-re 修饰符(BUPHMCIIDK、@987 , Y) 已被删除以支持置顶 缓冲区。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 2019-09-27
      • 2021-09-11
      • 1970-01-01
      • 2014-03-10
      • 2018-11-23
      相关资源
      最近更新 更多