我大约一周前开始与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
字段。在SBM应用层检测协议抛出某些特定事件的情况下更是如此(参见[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
(参见[4])。
最后但并非最不重要的是,Suricata社区论坛更有可能为您提供及时的答案,因为我们不仅有活跃的社区成员,而且OISF团队成员通常也在身边:https://forum.suricata.io.
来源:
1:应用层事件关键字:https://suricata.readthedocs.io/en/latest/rules/app-layer.html#app-分层事件
2:打开将SMB检测关键字添加到Suricata文档的票证: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