Suricata附带了几个规则关键字,以匹配各种文件属性。它们依赖于正确配置的 文件提取。
1.filename
匹配文件名
语法:filename:<string>;
示例:filename:"secret";
2.fileext
匹配文件名的扩展名
语法:fileext:<string>;
示例:fileext:"jpg";
3.filemagic
匹配关于文件的信息libmagic的返回
语法:filemagic:<string>;
示例:filemagic:"executable for MS Windows";
注意:由于libmagic版本在安装之间有所不同,因此返回的信息也可能略有变化。
4.filestore
如果签名匹配,则将文件存储到磁盘
语法:filestore:<direction>,<scope>;
说明:
a. direction可以是:
request/to_server: 在request/to_server方向存储文件
response/to_client:在response/to_client方向存储文件
both:在两个方向存储文件
b.scope可以是:
file:仅存储匹配的文件(对于filename,fileext,filemagic匹配)
tx: 存储匹配的HTTP事务中的所有文件
ssn/flow: 存储来自TCP会话/流的所有文件
如果省略方向和范围,则方向将与规则相同,范围将是每个文件。
5.filemd5
将文件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 MiB的内存。
suricataMAD5可以查看:https://blog.inliniac.net/2012/06/09/suricata-md5-blacklisting/
6.filesha1
将文件SHA1与SHA1校验和列表进行匹配。
语法:
filesha1:[!]filename;
文件名已扩展为包含规则目录。在默认情况下,它将变为/etc/suricata/rules/ filename。使用感叹号获得否定匹配。这允许白名单。
示例:
filesha1:sha1-blacklist;
filesha1:!sha1-whitelist;
文件格式:与MD5文件格式相同
7.filesha256
将SHA256与SHA256校验和列表进行匹配
语法:
filesha256:[!]filename;
文件名已扩展为包含规则目录。在默认情况下,它将变为/etc/suricata/rules/ filename。使用感叹号获得否定匹配。这允许白名单。
示例:
filesha256:sha256-blacklist;
filesha256:!sha256-whitelist;
文件格式:与MD5文件格式相同
8. filesize
在传输文件时匹配文件的大小
语法:filesize:<value>;
可能的单位是KB,MB和GB,没有任何单位,默认值是字节。
示例:
filesize:100;
filesize:100<>200;
filesize:>100MB;
filesize:<100MB;
注意:对于因数据包丢失或达到stream.depth设置而未完全跟踪的文件不能完整检测。这是因为Suricata可以知道文件大于某个值(它已经看到了一些),但它无法知道最终大小是否在一个范围内,一个精确值或小于一个值。
网友评论