6.14. 文件关键字

Suricata提供了几个规则关键字来匹配各种文件属性。它们依赖于正确配置 文件提取 .

6.14.1. 文件名

与文件名匹配。

语法::

filename:<string>;

例子::

filename:"secret";

6.14.2. 文件外文

与文件名的扩展名匹配。

语法::

fileext:<string>;

例子::

fileext:"jpg";

6.14.3. 文件魔术

与libmagic返回的有关文件的信息匹配。

语法::

filemagic:<string>;

例子::

filemagic:"executable for MS Windows";

注意:由于libmagic版本在安装之间有所不同,返回的信息也可能略有变化。另见437。

6.14.4. 文件存储器

如果签名匹配,则将文件存储到磁盘。

语法::

filestore:<direction>,<scope>;

方向可以是:

  • 请求/到服务器:在请求/到服务器方向存储文件

  • 响应/对客户机:在响应/对客户机方向存储文件

  • 两者:存储两个方向

范围可以是:

  • 文件:仅存储匹配的文件(用于文件名、文件扩展名、文件魔力匹配项)

  • Tx:存储匹配HTTP事务中的所有文件

  • ssn/flow:存储TCP会话/流中的所有文件。

如果省略了方向和作用域,则方向将与规则相同,作用域将以每个文件为单位。

6.14.5. 文件MD5

匹配文件 MD5 对照MD5校验和列表。

语法::

filemd5:[!]filename;

扩展文件名以包含规则目录。在默认情况下,它将变为/etc/suricata/rules/filename。使用感叹号得到否定的匹配。这允许白名单。

实例:

filemd5:md5-blacklist;
filemd5:!md5-whitelist;

文件格式

文件格式很简单。它是一个文本文件,每行有一个MD5,在行首,以十六进制表示。如果行中有额外信息,则忽略该信息。

MD5SUM输出正常:

2f8d0355f0032c3e6311c6408d7c2dc2  util-path.c
b9cf5cf347a70e02fde975fc4e117760  util-pidfile.c
02aaa6c3f4dbae65f5889eeb8f2bbb8d  util-pool.c
dd5fc1ee7f2f96b5f12d1a854007a818  util-print.c

只有MD5也很好:

2f8d0355f0032c3e6311c6408d7c2dc2
b9cf5cf347a70e02fde975fc4e117760
02aaa6c3f4dbae65f5889eeb8f2bbb8d
dd5fc1ee7f2f96b5f12d1a854007a818

内存需求

每个MD5使用16个字节的内存。2000万MD5使用约310兆字节的内存。

另请参见:https://blog.inliniac.net/2012/06/09/suricata-md5-blacklisting/

6.14.6. 文件ha1

将文件sha1与sha1校验和列表匹配。

语法::

filesha1:[!]filename;

扩展文件名以包含规则目录。在默认情况下,它将变为/etc/suricata/rules/filename。使用感叹号得到否定的匹配。这允许白名单。

实例:

filesha1:sha1-blacklist;
filesha1:!sha1-whitelist;

文件格式

与MD5文件格式相同。

6.14.7. 文件ha256

将文件sha256与sha256校验和列表匹配。

语法::

filesha256:[!]filename;

扩展文件名以包含规则目录。在默认情况下,它将变为/etc/suricata/rules/filename。使用感叹号得到否定的匹配。这允许白名单。

实例:

filesha256:sha256-blacklist;
filesha256:!sha256-whitelist;

文件格式

与MD5文件格式相同。

6.14.8. 文件大小

传输文件时与文件大小匹配。

语法::

filesize:<value>;

可能的单位是KB、MB和GB,如果没有任何单位,则默认为字节。

实例:

filesize:100; # exactly 100 bytes
filesize:100<>200; # greater than 100 and smaller than 200
filesize:>100MB; # greater than 100 megabytes
filesize:<100MB; # smaller than 100 megabytes

Note :对于由于数据包丢失或流。重组。深度在“大于”时被选中。这是因为Suricata可以知道一个文件大于一个值(它已经看到了一些),但它不知道最终大小是否在一个范围内,一个精确的值还是小于一个值。