我在阅读规则时遇到了麻烦。具体来说,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 的更多信息,请访问这里