由于质量标准,在 Snort 中添加了 flowbits

由于质量标准,在 Snort 中添加了 flowbits

我在阅读规则时遇到了麻烦。具体来说,flowbits GROUP_NAME 在哪里定义?

我正在检查 securityonion 上的 squert 屏幕并注意到以下情况:

3618 ET TROJAN 后门家族 PCRat/Gh0st CnC 流量(出站) 12

其 SID 为 2017936

规则是:

警报 tcp $HOME_NET any -> $EXTERNAL_NET any(msg:“ET TROJAN 后门家族 PCRat/Gh0st CnC 流量(OUTBOUND)12”;流:to_server,已建立;流位:isset,ET.gh0stFmly;内容:“|78 9c|”;深度:2;参考:url,www.securelist.com/en/descriptions/10155706/Trojan-GameThief.Win32.Magania.eogz;参考:url,www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?Name=Backdoor%3AWin32%2FPcClient.ZR&;ThreatID=-2147325231;参考:md5,3b1abb60bafbab204aeddf8acdf58ac9;类类型:trojan-activity; sid:2017936;修订版:4;)

但是,除了在 downloaded.rules 中之外,我无法在 /etc 或 /nsm 中 grep 任何字符串“ET.gh0stFmly”。

进一步回顾“流位”的想法,我认为我的问题在于对“流位”的基本误解。

流位是否是针对给定规则即时“创建”的?还是在某个地方全局预定义?如果是,在哪里?

例如,给定规则:

alert tcp any 143 -> any any (msg:"IMAP login"; content:"OK LOGIN"; flowbits:set,logged_in)  

流位“logged_in”是先创建然后设置的吗?还是流位“logged_in”是预定义的,而流位片段只是在设置它?如果“logged_in”是预定义的,那么在哪里完成的?

作为对 flowbit GROUP_NAME 参数的后续,假设 flowbit 是动态创建的,那么 GROUP_NAME 是否是一种“分组”相关 flowbit 的方式?如果是这样,是否可以在不同的 GROUP_NAME 中使用相同的 flowbit 名称?

那么,回到我关于 SID:2017936 的问题。在 flowbit 代码片段“flowbits:isset,ET.gh0stFmly”中,‘ET.gh0stFmly’ 是 flowbit 名称吗?还是 GROUP_NAME?

我希望这一点很清楚,如果不是,我很乐意澄清。

谢谢

答案1

您的第一个假设是正确的。流位由 Snort 规则动态设置,并且未在任何其他配置文件中预定义。设置后,它们将跟踪 TCP 流,直到其结束或直到它们被规则集中的另一条规则取消设置或清除。

GROUP_NAME 参数是一种对 flowbits 进行分组的方法。此外,flowbits 关键字还有一些选项,用于对组中设置的所有 flowbits 采取行动。例如,flowbits: setx, bit1, doc 将设置 bit1 并清除 doc 组中的任何其他 flowbit。在您的规则中,flowbits:isset,ET.gh0stFmly, ET 与 gh0stFmly 之间用句号而不是逗号分隔,因此这只是 flowbits 的名称,并且此 flowbits 未设置为组的一部分,而是设置在默认组中。

您的规则集中应该有另一条 Snort 规则,其中包含类似 flowbits: set,ET.gh0stFmly 的内容。如果您没有包含此信息的规则,则上面列出的规则标准将永远不会得到满足,并且您将永远不会收到来自规则的警报。

有关 Flowbits 的更多信息,请访问这里

相关内容