10.28. SMB关键词¶
适用于SMB1和SMB2协议的SMB关键词。
10.28.1. 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
使用。
10.28.3. 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
使用。
10.28.4. 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
使用。
10.28.5. smb.version¶
用于匹配SMB事务中出现的SMB版本的关键词。
签名示例:
alert smb $HOME_NET any -> any any (msg:"SMBv1版本规则";
sid:1;)alert smb $HOME_NET any -> any any (msg:"SMBv2版本规则";
sid:2;)10.28.5.1. 从SMBv1过渡到SMBv2的匹配¶
在初始协议协商请求中,支持SMBv1和SMBv2的客户端可以发送初始SMBv1请求,并从服务器接收SMBv2响应,表明将使用SMBv2。
服务器发出的第一个SMBv2响应将被视为SMBv1,因为整个事务将被视为SMBv1事务。
10.28.5.2. smb.version
能否匹配SMBv3流量?¶
可以,它将使用 smb.version:2; 匹配SMBv3消息,这会匹配SMBv2和SMBv3,因为它们在SMB头中使用相同的版本标识符。
此关键词将使用SMB头中指定的协议ID来确定版本。以下是协议ID代码的摘要:
头中的协议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。目前无法通过关键词指定方言。
10.28.6. file.name¶
file.name
关键词可在SMB应用层使用。
签名示例:
alert smb any any -> any any (msg:"SMB file.name使用";
classtype:bad-unknown; sid:1; rev:1;)有关 file.name
关键词的更多信息,请参阅 文件关键词。