Snort规则正则表达式匹配

Bab*_*bar 1 regex pcre snort

我想在有人访问结构化的URL时在snort中生成一个事件

site/year2015.pdf
site/year2014.pdf
:
:
site/year2000.pdf
Run Code Online (Sandbox Code Playgroud)

由于多年来会添加更多的URL,而不是编写多个snort规则,我想到了使用PERC.规则写成.

alert tcp any any -> any any(msg:"PDF is being downloaded"; pcre:"(/.*site\/year\d\d\d\d\.pdf)/i"; sid: 100003; rev:3;)
Run Code Online (Sandbox Code Playgroud)

我在上面的规则中尝试了许多不同的方法来插入正则表达式,但总是无法解析它.正则表达式做得很好我想要它在这里做.整个事情开始失败,因为它没有启动规则未被解析的原因.

收到的错误是

Error: /etc/snort/rules/assignment.rules Line 3 => unable to parse pcre regex "(/.*site\/year\d\d\d\d\.pdf)/i"
Fatal Error Quitting..
Run Code Online (Sandbox Code Playgroud)

tri*_*eee 7

(稍微疯狂)的语法是pcre:"/regex/flags".无论如何,你想要放在那里的括号是多余的.您还需要转义任何斜杠,它是实际正则表达式的一部分,如示例中所示.

alert tcp any any -> any any(msg:"PDF is being downloaded"; pcre:"/.*site\/year\d\d\d\d.pdf/i"; sid: 100003; rev:3;)
Run Code Online (Sandbox Code Playgroud)

...虽然可能你应该删除多余的通配符.*$在最后添加一个锚点,并且还要转义点以使其成为文字.您可能还想使用量词来精确指定数字的四次重复.

alert tcp any any -> any any(msg:"PDF is being downloaded"; pcre:"/site\/year\d{4}\.pdf$/i"; sid: 100003; rev:3;)
Run Code Online (Sandbox Code Playgroud)

你真的确定你想让这个/i标志不区分大小写吗?