SMB关键词 ============== .. role:: example-rule-options 适用于SMB1和SMB2协议的SMB关键词。 smb.named_pipe -------------- 匹配树连接中的SMB命名管道。 示例:: smb.named_pipe; content:"IPC"; endswith; smb.named_pipe; content:"strange"; nocase; pcre:"/really$/"; ``smb.named_pipe`` 是'sticky buffer'。 ``smb.named_pipe`` 可作为 ``fast_pattern`` 使用。 smb.share --------- 匹配树连接中的SMB共享名。 示例:: smb.share; content:"shared"; endswith; smb.share; content:"strange"; nocase; pcre:"/really$/"; ``smb.share`` 是'sticky buffer'。 ``smb.share`` 可作为 ``fast_pattern`` 使用。 smb.ntlmssp_user ---------------- 匹配会话建立中的SMB ntlmssp用户。 示例:: smb.ntlmssp_user; content:"doe"; endswith; smb.ntlmssp_user; content:"doe"; nocase; pcre:"/j(ohn|ane).*doe$/"; ``smb.ntlmssp_user`` 是'sticky buffer'。 ``smb.ntlmssp_user`` 可作为 ``fast_pattern`` 使用。 smb.ntlmssp_domain ------------------ 匹配会话建立中的SMB ntlmssp域。 示例:: smb.ntlmssp_domain; content:"home"; endswith; smb.ntlmssp_domain; content:"home"; nocase; pcre:"/home(sweet)*$/"; ``smb.ntlmssp_domain`` 是'sticky buffer'。 ``smb.ntlmssp_domain`` 可作为 ``fast_pattern`` 使用。 smb.version ------------ 用于匹配SMB事务中出现的SMB版本的关键词。 签名示例: .. container:: example-rule alert smb $HOME_NET any -> any any (msg:"SMBv1版本规则"; \ :example-rule-options:`smb.version:1;` sid:1;) alert smb $HOME_NET any -> any any (msg:"SMBv2版本规则"; \ :example-rule-options:`smb.version:2;` sid:2;) 从SMBv1过渡到SMBv2的匹配 ****************************************** 在初始协议协商请求中,支持SMBv1和SMBv2的客户端可以发送初始SMBv1请求,并从服务器接收SMBv2响应,表明将使用SMBv2。 服务器发出的第一个SMBv2响应将被视为SMBv1,因为整个事务将被视为SMBv1事务。 ``smb.version`` 能否匹配SMBv3流量? ***************************************** 可以,它将使用 `smb.version:2;` 匹配SMBv3消息,这会匹配SMBv2和SMBv3,因为它们在SMB头中使用相同的版本标识符。 此关键词将使用SMB头中指定的协议ID来确定版本。以下是协议ID代码的摘要: - 0xffSMB是SMBv1 `头 `_ - 0xfeSMB是SMBv2 `普通头 `_ (可以是 `同步 `_ 或 `异步 `_) - 0xfdSMB是SMBv2 `转换头 `_。这仅对SMB 3.x方言家族有效。 - 0xfcSMB是SMBv2 `转换压缩头 `_ (可以是 `链式 `_ 或 `非链式 `_)。这些需要使用3.1.1方言。 头中的协议ID仅区分SMBv1和SMBv2,因为它们是具有完全不同消息格式、类型和实现的完全不同的协议。 另一方面,SMBv3更像是SMBv2的扩展。使用SMBv2时,我们可以为客户端和服务器之间的对话选择以下方言之一: - 2.0.2 - 2.1 - 3.0 - 3.0.2 - 3.1.1 当我们为对话选择3.x方言时,我们说我们正在使用SMBv3,因此您可以使用SMB 3.0、SMB 3.0.2或SMB 3.1.1。选择越高,功能越多,但消息语法和消息命令号保持不变。 SMB版本和方言是独立的组件。例如,在SMBv3的情况下,SMB版本将为2,但方言将为3.x。目前无法通过关键词指定方言。 file.name --------- ``file.name`` 关键词可在SMB应用层使用。 签名示例: .. container:: example-rule alert smb any any -> any any (msg:"SMB file.name使用"; \ :example-rule-options:`file.name; content:"file.txt";` \ classtype:bad-unknown; sid:1; rev:1;) 有关 ``file.name`` 关键词的更多信息,请参阅 :doc:`file-keywords`。