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