我大约一周前开始与 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 。有人可以帮忙吗?我们将不胜感激。
希望您已经找到了答案,但是对于任何可能来这里寻找答案的人......
app-layer-event
字段。更重要的是,以防 SMB 应用层检测协议引发某些特定事件(参见 [1])。SMB
关键字部分(参见 [2]),但我们的 Suricata 验证工具有一个测试,其中包含 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 关键字的文档,例如
content
cf. [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 中的 SMB 规则 - 使用
smb.share
进行验证:https://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