首页 > 解决方案 > 访问 SMB 共享的 Suricata 规则?

问题描述

大约一周前,我开始与 Suricata 合作,到目前为止一切进展顺利。但是,我现在正在尝试编写自己的规则,并尝试提出一个简单的规则,该规则在任何 IP 地址尝试访问我的 SMB 共享时都会引发警报。

看看其他SMB规则是怎么写的,我发现这个

alert smb any any -> any any (msg:"SURICATA SMB internal parser error"; flow:to_client; app-layer-event:smb.internal_error; classtype:protocol-command-decode; sid:2225001; rev:1;)

按照这种模式,我的规则应该是这样的:

alert smb any any -> any any (msg:"Attempt to gain access to SMB Share"; flow:to_server; app-layer-event:smb.???; classtype:protocol-command-decode; sid:1234567; rev:1)

但是,我无法弄清楚(或找到有关)要设置哪个 app_layer_event 的任何信息。有人可以在这里帮忙吗?这将不胜感激。

标签: detectionrulessmbsuricata

解决方案


希望您已经找到了答案,但是对于任何可能来这里寻找答案的人...

  • 我会说您不需要app-layer-event规则签名中的字段。如果 SBM 应用层检测协议抛出了一些特定的事件(参见[1]),则更是如此。
  • 我们的文档缺少SMB关键字部分(参见[2]),但我们的 Suricata-verify 工具有一个使用示例的测试smb.share[ 3]
    alert smb any any -> any any (smb.share; content:"|5C 5C|10.0.0.12|5C|smb2"; sid:2;)

该内容字符串表示smb.share: "\\\\10.0.0.12\\smb2". 如果您查看其他 Suricata-Verify 测试,您会发现 smb.share 内容的其他示例:

    tests/smb2-05/test.yaml:22:        smb.share: "\\\\admin-pc\\c$"
    tests/smb2-05/test.yaml:87:        smb.share: "\\\\admin-pc\\c$"
    tests/smb2-07/test.yaml:69:        smb.share: "\\\\dc1\\ADMIN$"
    tests/smb3-01/test.yaml:27:        smb.share: "\\\\WS2016\\encrypted"

要了解如何将这些示例转换为您在上述规则中看到的内容,可以查看 Payload 关键字的文档,如contentcf. [4])。

最后但并非最不重要的一点是,Suricata 社区论坛更有可能为您提供及时的答案,因为我们不仅有活跃的社区成员,还有 OISF 团队成员通常在:https ://forum.suricata.io 。

资料来源:

1:应用层事件关键字:https ://suricata.readthedocs.io/en/latest/rules/app-layer.html#app-layer-event

2:向 Suricata 文档添加 SMB 检测关键字的公开票:https ://redmine.openinfosecfoundation.org/issues/3030

3:Suricata-verify 中的 SMB 规则smb.sharehttps ://github.com/OISF/suricata-verify/blob/master/tests/smb2-03-rule/filedata.rules

4:Suricata 规则 - 有效负载关键字 - 内容:https ://suricata.readthedocs.io/en/latest/rules/payload-keywords.html#content


推荐阅读