Snort Rule body
概述
参考:
Snort Rule body 由很多的 Options 组成,Options 是 Snort 规则的核心和灵魂,这些 Options 决定了被 Snort 规则影响的数据包是否应该通过并发往目的地,或是还是应该应该就此停止。
其中最关键的就是 Payload Detection(载荷监测) 选项,Payload 检测是对 Payload 进行匹配的核心规则,只要满足了匹配规则,就可以对匹配到的数据包进行一系列操作。
每个 Options 都有一个 name(名称),关键字后面跟 :
,冒号后面时 Options 的具体内容(也可以成为 Options 的条件),最后每个 Options 都要以 ;
结尾。有的选项带有 arguments(参数),可以在 ;
之间用 ,
分割 Options 和 Option arguments。
比如: content:" pizza", within 6;
content
是 Option 的名称,表示这是一个名为 content 的选项。"pizza"
是 Option 的内容, within 6
是 Option 的参数
Rule Options 总共分为 4 类:
- General(常规) # 添加一些自定义的信息,以便程序可以方便的集成 Snort 规则。
- Payload Detection(Payload 检测) # 根据 Payload 的内容进行匹配
- Non-Payload Detection(非 Payload 检测) # 根据非 Payload 的其他信息进行配置,e.g. 各种协议的 Header(TCP 的 Flags、etc.)、etc.
- Post-Detection(监测后) # 指定的规则触发后要对数据包采取的操作
常规
sid
Snort ID(简称 sid) 是 Snort 规则的唯一标识符
Payload 检测
https://docs.snort.org/rules/options/payload/
content
https://docs.snort.org/rules/options/payload/content
Syntax(语法): content:[!]"content_modifer"[,content_modifer_argument];
- content_modifer 是要匹配的数据内容
- content_modifer_argument (可选的)修饰符,用来对要匹配的内容进行额外的评估要求。
content 用于执行 基本字符串 和/或 十六进制 模式匹配。十六进制表示法必须使用 | |
包裹起来
比如:
content:"|61 62 63|"
表示 Playload 中要包含 abc 这三个字符
offset, depth, distance, within
这四个选项是对匹配内容的修饰符,用以指定如何对 Payload 进行查找,比如: 从 Payload 何处开始查找、查找 Payload 的前多少个字节、etc.
depth 选项允许规则编写者指定在 Snort 数据包或缓冲区中查找指定模式的深度。例如,将 depth 设置为 5 将告诉 Snort 仅查找 Payload 的前 5 个字节内的模式。
pcre
https://docs.snort.org/rules/options/payload/pcre
pcre 选项可以根据 Perl 兼容的 Regular Expression(正则表达式) 对数据包进行匹配。
Notes: 由于从性能角度来看,正则表达式的成本相对较高,因此使用 PCRE 的选项还应该至少有一个 content 选项,以利用 Snort 的快速模式引擎。
非 Payload 检测
flags
flags 选项用于检查 TCP Header 中是否设置了指定的 Flag
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.