我想在有人访问结构化的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)
(稍微疯狂)的语法是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
标志不区分大小写吗?