Suricata规则-关键字
本次写的目的是作为笔记去学习这个软件,如果有不足的地方可以纠正,这个现在是第四部分,如何编写规则选项部分。需要说明的一点是签名和规则是一个意思在这里。
规则选项
规则选项被包括在括号内,括号内可以有多个选项,选项的格式如下:
<keyword>: <settings>;
<keyword>;
通过上面的代码,可以清楚的知道。规则选项有两种形式,第一种是有后面的设置选项里,第二种是没有设置选项。且需要注意的一点就是规则选项有特定的顺序,改变它们的顺序会改变规则的含义。
注意:
;\"是有着特殊的含义,需要转义符\进行转义。
下面将介绍不同的关键字;
修饰关键字
这个是通用的关键字,在不同协议中都可以是使用。一些关键字功能充当修饰符。有两种类型的修饰符。
- 第一种是老的风格:content modifier看下面的例子:
alert http any any -> any any (content:"index.php"; http_uri; sid:1;)
在上面的示例中,修改了模式“index.php”以检查 HTTP uri 缓冲区。 - 第二中较新的类型称为“粘性缓冲区”。它将缓冲区名称放在首位,其后的所有关键字都适用于该缓冲区,例如:
alert http any any -> any any (http_response_line; content:"403 Forbidden"; sid:1;)
在上面的示例中,针对 HTTP 响应行检查了模式“403 Forbidden”,因为它跟在 http_response_line 关键字之后。
标准缓存区(?)
A packet consists of raw data. HTTP and reassembly make a copy of those kinds of packets data. They erase anomalous content, combine packets etcetera. What remains is a called the ‘normalized buffer’:
Because the data is being normalized, it is not what it used to be; it is an interpretation. Normalized buffers are: all HTTP-keywords, reassembled streams, TLS-, SSL-, SSH-, FTP- and dcerpc-buffers.
Note that there are some exceptions, e.g. the http_raw_uri keyword.
通用关键字
元关键字不影响Suricata的检查,但是会影响Suricata报告事件,也就是日志输出的信息。
1.msg(message信息)
说明和作用:关键字 msg 提供有关签名和可能的警报的文本信息。
格式:
msg: "some description";
例子:
msg:"ATTACK-RESPONSES 403 Forbidden";
msg:"ET EXPLOIT SMB-DS DCERPC PnP bind attempt";
tip:有一个约定好的,第一约定签名的第一部分大写并显示签名的类。约定签名的第一部分大写并显示签名的类。第二:在整个签名选项在第一位置。
2.sid 规则ID
说明和作用:关键字 sid 为每个签名提供了自己的 id。这个 id 用一个数字表示。
格式:sid:123
tip:约定将签名 sid 提供为签名的最后一个关键字(如果有 rev,则为倒数第二个关键字)。
3.rev(revision调整)
说明和作用:sid 关键字几乎每次都伴随着 rev。 Rev 代表签名的版本。如果修改了签名,则签名作者将增加 rev 的数量。
格式:rev:123
tip:作为位于最后位置一个规则选项的关键字。
4. gid(group ID)组ID
说明和作用:gid 关键字可用于为不同的签名组提供另一个 id 值(如在 sid 中)。 Suricata 默认使用 gid 1。可以修改它。不常改,并且改变他没有任何规则上的影响,只会在警告中提到他。
格式:
fast.log 警报中的 gid 示例。在部分 [1:2008124:2] 中,1 是 gid(2008124 是 sid,2 是 rev)
5. classtype 类别
说明和作用:classtype 关键字提供有关规则和警报分类的信息。它由一个短名称组成、一个很长的名字和一个优先级。例如,它可以判断规则是仅提供信息还是关于黑客攻击等。对于每个classtype,将在classification.config 定义使用。 示例类类型定义:
config classification: web-application-attack,Web Application Attack,1
config classification: not-suspicious,Not Suspicious Traffic,3
现在,当我们在配置中定义了它时,我们就可以在我们的规则中使用classtype。具有classtype web-application-attack 的规则将被分配优先级 1,警报将包含“Web Application Attack”:
| classtype | Alert(警告) | Priority(优先级) |
|---|---|---|
| web-application-attack | Web Application Attack | 1 |
| not-suspicious | Not Suspicious Traffic | 3 |
我们继续的例子也有一个类类型,这是木马活动之一:
drop tcp $HOME_NET any -> $EXTERNAL_NET any (msg:”ET TROJAN Likely Bot Nick in IRC (USA +..)”; flow:established,to_server; flowbits:isset,is_proto_irc; content:”NICK “; pcre:”/NICK .*USA.*[0-9]{3,}/i”; reference:url,doc.emergingthreats.net/2008124;
[classtype:trojan-activity;] sid:2008124; rev:2;)
tip:按照惯例,classtype 出现在 sid 和 rev 之前以及其余关键字之后。
6. reference参考
说明和作用:reference关键字可以帮助用户找到有关签名和签名试图解决的问题的信息。reference关键字可以在签名中多次出现。此关键字用于查找签名规则匹配原因和签名作者。
格式: reference: type, reference
例子:
reference: url, www.info.com
这个关键字为了防止一遍遍输入相同的内容,可以在reference.config 配置文件内配置信息,在规则制定过程中使用其中的配置信息。
例子:
reference: cve, CVE-2014-1234 - cve.mitre.org/cgi-bin/cve….
配置文件截图:
7. priority优先级
说明和作用:优先级越高的规则越先被检查,通常规则的优先级已经被classtype定义啦,但是使用这个可以作废classtype的优先级,优先级的范围1-255,但是常用的只有1-4。
格式:priority:1;
8. metadata元信息
说明和作用:元数据关键字允许将附加的非功能性信息添加到签名中。虽然格式是自由格式,但建议坚持使用键值对,因为 Suricata 可以将这些信息包含在 eve 警报中。格式为:
metadata: key value;
metadata: key value, key value;
9. target目标
说明和作用:target 关键字允许规则编写者指定警报的哪一侧是攻击的目标。如果指定,警报事件将被增强以包含有关源和目标的信息,如果值为 src_ip,则生成事件中的源 IP(JSON 中的 src_ip 字段)是攻击的目标。如果目标设置为 dest_ip,则目标是生成事件中的目标 IP。。如果值为 src_ip,则生成事件中的源 IP(JSON 中的 src_ip 字段)是攻击的目标。如果目标设置为 dest_ip,则目标是生成事件中的目标 IP。
格式:
target:[src_ip|dest_ip]