SMTP 关键词 ============= .. role:: example-rule-options file.name --------- ``file.name`` 关键词可用于 SMTP 应用层。 签名示例: .. container:: example-rule alert smtp any any -> any any (msg:"SMTP file.name 使用"; \ :example-rule-options:`file.name; content:"winmail.dat";` \ classtype:bad-unknown; sid:1; rev:1;) 关于 ``file.name`` 关键词的更多信息,请参阅 :doc:`file-keywords`。 smtp.helo --------- SMTP helo 是客户端传递给第一个 HELO 命令的参数。 该关键词按事务匹配,因此即使 helo 仅在流开始时出现一次,它也可能在单个流中多次匹配。 语法:: smtp.helo; content:"localhost"; 签名示例:: alert smtp any any -> any any (msg:"SMTP helo localhost"; smtp.helo; content:"localhost"; sid:2; rev:1;) ``smtp.helo`` 是一个 'sticky buffer'。 ``smtp.helo`` 可用作 ``fast_pattern``。 该关键词映射到 eve.json 日志字段 ``smtp.helo`` smtp.mail_from -------------- SMTP mail from 是客户端传递给第一个 MAIL FROM 命令的参数。 语法:: smtp.mail_from; content:"spam"; 签名示例:: alert smtp any any -> any any (msg:"SMTP mail from spam"; smtp.mail_from; content:"spam"; sid:2; rev:1;) ``smtp.mail_from`` 是一个 'sticky buffer'。 ``smtp.mail_from`` 可用作 ``fast_pattern``。 该关键词映射到 eve.json 日志字段 ``smtp.mail_from`` smtp.rcpt_to ------------ SMTP rcpt to 是客户端传递给某个 RCPT TO 命令的参数之一。 语法:: smtp.rcpt_to; content:"sensitive@target"; 签名示例:: alert smtp any any -> any any (msg:"SMTP rcpt to sensitive"; smtp.rcpt_to; content:"sensitive@target"; sid:2; rev:1;) ``smtp.rcpt_to`` 是一个 'sticky buffer'。 ``smtp.rcpt_to`` 是一个 'multi buffer'。 ``smtp.rcpt_to`` 可用作 ``fast_pattern``。 该关键词映射到 eve.json 日志字段 ``smtp.rcpt_to[]`` 帧结构 ------ SMTP 解析器支持以下帧: * smtp.command_line * smtp.response_line * smtp.data * smtp.stream smtp.command_line ~~~~~~~~~~~~~~~~~ 从客户端到服务器的单行命令。多行命令将每行生成一个帧。SMTP DATA 传输中的行会被排除。 .. container:: example-rule alert smtp any any -> any any ( \ :example-rule-options:`frame:smtp.command_line; content:"MAIL|20|FROM:"; startswith;` \ sid:1;) smtp.response_line ~~~~~~~~~~~~~~~~~~ 从服务器到客户端的单行响应。多行响应将每行生成一个帧。 .. container:: example-rule alert smtp any any -> any any ( \ :example-rule-options:`frame:smtp.response_line; content:"354 go ahead"; startswith;` \ sid:1;) smtp.data ~~~~~~~~~ 包含从客户端发送到服务器的 DATA 字节的流式缓冲区。 .. container:: example-rule alert smtp any any -> any any ( \ :example-rule-options:`frame:smtp.data; content:"Reply-To:"; startswith; content:"Subject"; distance:0;` \ sid:1;) smtp.stream ~~~~~~~~~~~ 整个 SMTP 会话 TCP 数据的流式缓冲区。 .. container:: example-rule alert smtp any any -> any any (flow:to_client; \ :example-rule-options:`frame:smtp.stream; content:"250 ok|0d 0a|354 go ahead";` \ sid:1;)