我正在尝试验证http响应的内容,以便在其中找到内容“abbb”。所以我的规则是
alert tcp MY_SERVER HTTP_PORTS - > any any(msg:“访问的页面有内容abbb”; to_client;已建立;内容:“abb”; sid:XXXXX; rev:x;)
不幸的是,这条规则似乎不起作用。任何人都可以告诉我的规则是否存在问题。
答案 0 :(得分:1)
对于初学者,您需要修复规则的to_client部分,因为这不是有效的语法。您需要将其更改为:
流量:to_client成立;
您可以在here上找到更多信息。
如果您只是在寻找从服务器发送到客户端的内容“abbb”,那么您只需要像您一样进行简单的内容匹配。我建议在这里使用快速模式匹配器来提高规则的效率。所以你的内容匹配看起来像是:
内容: “ABBB”; fast_pattern:仅;
将它们放在一起,您的规则可能类似于:
alert tcp MY_SERVER HTTP_PORTS - >任何任何(msg:“访问的页面有内容abbb”; 流量:to_client,建立;内容:“AB | BB”; fast_pattern:只; SID:XXXXX;启:X;)
如果仍未触发,则可能还有其他事情发生。由于您只是在内容中查找此内容,因此需要在http预处理器中检查您的检查深度。有server_flow_depth和client_flow_depth。尝试将这些设置为0(无限制)并查看您的规则是否在之后触发。例如,如果您的client_flow_depth为300且内容“abbb”直到500字节之后才会出现,则该规则永远不会触发,因为snort未配置为检查远处的有效负载。
如果启用了自适应性能分析,则需要为http添加元数据服务,否则规则将与http流量不匹配。这看起来像是:
元数据:服务http;
如果您不使用自适应性能分析,那么它将使用规则标题中的端口。