SSH关键词 ============ Suricata提供了多个规则关键词来匹配SSH连接中的不同元素。 .. _ssh-hooks: 钩子函数 ----- SSH可用的钩子函数包括: 请求端(``to_server``): * ``request_in_progress`` * ``request_banner_wait_eol`` * ``request_banner_done`` * ``request_finished`` 响应端(``to_client``): * ``response_in_progress`` * ``response_banner_wait_eol`` * ``response_banner_done`` * ``response_finished`` 帧结构 ------ SSH解析器支持以下帧类型: * ssh.record_hdr * ssh.record_data * ssh.record_pdu 这些帧表示SSH记录在横幅之后、加密之前的头部+数据=协议数据单元(PDU)。SSH记录头部长度为6字节:4字节长度,1字节填充,1字节消息代码。 示例: .. container:: example-rule alert ssh any any -> any any (msg:"hdr帧新密钥"; :example-rule-emphasis:`frame:ssh.record.hdr; content: "|15|"; endswith;` bsize: 6; sid:2;) 此规则匹配效果等同于Wireshark的``ssh.message_code == 0x15``。 ssh.proto --------- 匹配使用的SSH协议版本。``ssh.proto``是粘性缓冲区,可用作快速模式。``ssh.proto``取代了先前的缓冲区名称``ssh_proto``。虽然旧名称仍可使用,但建议将现有规则转换为使用新名称。 格式:: ssh.proto; 示例: .. container:: example-rule alert ssh any any -> any any (msg:"匹配SSH协议版本"; :example-rule-emphasis:`ssh.proto;` content:"2.0"; sid:1000010;) 上例匹配SSH版本为2.0的连接。 ssh.software ------------ 匹配SSH横幅中的软件字符串。``ssh.software``是粘性缓冲区,可用作快速模式。 格式:: ssh.software; 示例: .. container:: example-rule alert ssh any any -> any any (msg:"匹配SSH软件字符串"; :example-rule-emphasis:`ssh.software;` content:"openssh"; nocase; sid:1000020;) 上例匹配软件字符串包含"openssh"的SSH连接。 ssh.hassh --------- 匹配客户端的hassh值(客户端算法组合的MD5哈希)。 示例:: alert ssh any any -> any any (msg:"匹配hassh"; \ ssh.hassh; content:"ec7378c1a92f5a8dde7e8b7a1ddf33d1";\ sid:1000010;) ``ssh.hassh``属于'粘性缓冲区'。 ``ssh.hassh``可用作``fast_pattern``。 ssh.hassh.string ---------------- 匹配Hassh字符串(客户端的算法组合)。 示例:: alert ssh any any -> any any (msg:"匹配hassh字符串"; \ ssh.hassh.string; content:"none,zlib@openssh.com,zlib"; \ sid:1000030;) ``ssh.hassh.string``属于'粘性缓冲区'。 ``ssh.hassh.string``可用作``fast_pattern``。 ssh.hassh.server ---------------- 匹配服务端的hassh值(服务端算法组合的MD5哈希)。 示例:: alert ssh any any -> any any (msg:"匹配SSH服务端哈希"; \ ssh.hassh.server; content:"b12d2871a1189eff20364cf5333619ee"; \ sid:1000020;) ``ssh.hassh.server``属于'粘性缓冲区'。 ``ssh.hassh.server``可用作``fast_pattern``。 ssh.hassh.server.string ----------------------- 匹配服务端的hassh字符串(服务端算法组合)。 示例:: alert ssh any any -> any any (msg:"匹配SSH服务端哈希字符串"; \ ssh.hassh.server.string; content:"umac-64-etm@openssh.com,umac-128-etm@openssh.com"; \ sid:1000040;) ``ssh.hassh.server.string``属于'粘性缓冲区'。 ``ssh.hassh.server.string``可用作``fast_pattern``。