任何警告tcp任何 - > any any(msg:“来自IRC频道的PRIVMSG可疑行为”;内容:“PRIVMSG”;偏移量:0;深度:7; nocase; dsize:< 64; flow:to_server,已建立;标签:会话,300,秒; classtype:bad-unknown; sid:2000346; rev:4;)
上述规则用于监控机器人响应给botmaster的消息。规则工作正常,但只有当一个机器人做出响应时,并且当多个主机同时响应时,一个主机没有警报或甚至一个警报。我已将会话时间更改为30或150但没有运气。
提高效率的任何提示或技巧?
感谢。
-Aymen
答案 0 :(得分:2)
我认为我并没有完全理解你要对这条规则做些什么。您是否可以澄清为什么您在没有频道名称(或者甚至是机器人的昵称)的情况下只寻找一个PRIVMSG的具体细节?
尽管如此,一些关于使规则更有效的快速建议。根据需要进行调整:
dsize
和flow
被视为“离散”选项,应在任何有效内容选项(例如content
及其修饰符等)之前指定。离散选项通常检查特定于协议的字段,并且从不接触有效负载,因此它们非常快(仅次于快速模式匹配器)。即,您应该flow
msg
之后,dsize
flow
后tag
。
接下来,您可能会将tag
的计时器设置得太高。 tagged_packet_limit
有一个内置的截止值,称为seconds
,默认为256个数据包。因此,您的规则将停止在三种可能条件中的一种上标记(以先发生者为准):
packets
指标可能会根据传感器上的其他因素(例如链接速度,系统负载等)而略微波动。因此,规则可能会在297秒或303秒后停止标记数据包。最好使用1000
指标并将其设置为非常高的值,例如tagged_packet_limit
。这具有覆盖tag:session,240,seconds,8000,bytes,1000,packets;
的额外好处。您甚至可以同时指定多个指标:
flowbits
您应该考虑使用一对<discrete options>; flowbits:isnotset,botnet.tagged; <payload options>; flowbits:set,botnet.tagged;
来控制标记操作的开始和结束时间:
src/pcrm.c
这可以防止当与规则匹配的另一个数据包通过网络时标记操作被中断,因为flowbits将强制规则已经警告过一次,并且当前正在标记感兴趣的流量。
您应该为常见的IRC端口定义一个变量,并在目标端口字段中使用它。 Snort将目标端口字段与快速模式匹配器结合使用,以优化检查数据包的规则(即,不应通过针对IRC的规则检查HTTP流量)。代替目标端口,它将尝试使用源端口(源代码中any
顶部的注释中提供了此端口的详细信息)。如果目标IRC服务器仅使用单个端口,则使用该端口。单个端口优于一组端口,但是一组端口比portvar IRC_PORTS [6666:6669]
更好:
PRIVMSG
最后,您需要使用唯一的字符串来真正利用快速模式匹配器。 content:"PRIVMSG #foobar:"; fast_pattern:only;
在IRC协议中非常常见,因此如果您尝试将规则限制为特定频道,请考虑以下内容:
fast_pattern:only;
在snort-2.9.0及更高版本中可用的fast_pattern:only;
位仅使用快速模式匹配器中的内容匹配,并且不重新使用它在实际的有效载荷搜索中。副作用:您无法使用与此内容匹配相关的其他内容匹配项。并且这种匹配是以不区分大小写的方式执行的!
当从2.8.6开始时很难围绕这个小小的变化,但是知道它是否适合你的快速方法是,“我是否只关心在包中找到这个字符串?” ,如果是,那么fast_pattern;
将完全相同,并为您节省几个处理器周期。否则,如果您需要确保字符串不仅存在于数据包中,而且存在于非常特定的深度或偏移量,那么您可以完全省略该行。 Snort仍将使用规则中最长的内容匹配作为快速模式匹配(但是这可以通过仅使用content
而不是alert tcp any any -> any $IRC_PORTS (msg:"PRIVMSG from #foobar on IRC"; flow:established,to_server; dsize:<64; flowbits:isnotset,botnet.tagged; content:"PRIVMSG #foobar:"; flowbits:set,botnet.tagged; tag:session,1000,packets; classtype:bad-unknown; sid:2000346; rev:4;)
上的参数来覆盖,您知道这是最独特的字符串在一个包中。
将所有这些结合在一起:
{{1}}