流量分析Suricata规则编写

admin 2022年3月1日10:14:17评论269 views字数 2593阅读8分38秒阅读模式

1

什么是Suricata规则

Suricata是高性能的网络IDS,IPS和网络安全监视引擎。它是开源的,并由社区运营的非营利基金会开放信息安全基金会(OISF)拥有。Suricata由OISF开发。


2

 规则格式

签名在Suricata中扮演着非常重要的角色。在大多数情况下,人们使用的是现有规则集。使用Suricata-Update进行规则管理中介绍了安装规则集的正式方法。规则包括以下内容:

The action:确定发生了什么签名匹配(红色字体)。

The header:限定规则的协议,IP地址,端口和方向(绿色字体)。

The rule options:定义规则的细节(蓝色字体)。

规则的示例如下:

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;)


3

 常用关键字

3.1

 Msg


关键字msg提供有关签名和可能的警报的文本信息。

格式:msg: "some description";

实际规则中使用:

tcp $ HOME_NET any-> $ EXTERNAL_NET any(msg:“在IRC(美国+ ..)中的ET TROJAN可能是Bot Nick”;流:已建立,到服务器;flowbits:isset,is_proto_irc;内容:“ NICK”;pcre:/ NICK。* USA。* [0-9] {3,} / i“;参考:url,doc.emergingthreats.net / 2008124; classtype:trojan-activity; sid:2008124; rev:2;)


3.2

 Sid

关键字sid为每个签名提供自己的ID。此ID用数字表示。

格式:sid:123;

实际规则中使用:

tcp $ HOME_NET any-> $ EXTERNAL_NET any(msg:“在IRC(美国+ ..)中的ET TROJAN可能是Bot Nick”;流:已建立,到服务器;flowbits:isset,is_proto_irc;内容:“ NICK”;pcre:/ NICK。* USA。* [0-9] {3,} / i“;参考:url,doc.emergingthreats.net / 2008124; classtype:trojan-activity; sid:2008124; rev:2;)


3.3

 Classtype

classtype关键字提供有关规则和警报分类的信息。它由短名称,长名称和优先级组成。例如,它可以告诉你规则是仅供参考还是与黑客等有关。对于每个类类型,classification.config具有优先级,该优先级将在规则中使用。

示例类定义:

config classification: web-application-attack,Web Application Attack,1config classification: not-suspicious,Not Suspicious Traffic,3

现在,当我们在配置中定义了它时,我们可以在规则中使用类类型。类别类型为web-application-attack的规则将被分配优先级1,并且警报将包含“ Web应用程序攻击”。


3.4

 Content

content关键字在签名中非常重要。在引号之间,你可以写上你希望签名匹配的内容。

最简单的内容格式是:content: ”............”;

你可以在签名中使用多个内容。内容按字节匹配。一个字节有256个不同的值(0-255)。你可以匹配所有字符;从直到Z,大写和小写以及所有特殊符号开始。但并非所有字节都是可打印字符。对于这些字节,使用十六进制表示法。许多编程语言都将0x00用作表示法,其中0x表示它涉及二进制值,但是规则语言将其 |00|用作表示法。这种符号也可以用于可打印字符。

例:

|61| is a

|61 61| is aa

|41| is A

|21| is !

|0D| is carriage return

|0A| is line feed

你无法在内容中使用某些字符,因为它们在签名中已经很重要。为了匹配这些字符,你应该使用十六进制表示法。这些是:习惯上用大写字母写十六进制符号。例如http://,要在签名的内容中进行写,应该这样写:如果在签名中使用十六进制符号,请确保始终将其放在管道之间。否则,该符号将按字面意义作为内容的一部分。content: “http|3A|//”;

一些例子:

content:“a|0D|bc”;

content:”|61 0D 62 63|";

content:”a|0D|b|63|”;

可以让签名检查整个有效负载是否与内容匹配,或者让它检查有效负载的特定部分。我们稍后再说。如果没有为签名添加任何特殊内容,它将尝试在有效负载的所有字节中找到匹配项。

tcp $ HOME_NET any-> $ EXTERNAL_NET any(msg:“ ET TROJAN可能是IRC中的Bot Nick(美国+ ..)””;flow:建立,to_server;flowbits:isset,is_proto_irc;内容:“ NICK”;pcre:/ NICK。* USA。* [0-9] {3,} / i“;参考:url,doc.emergingthreats.net / 2008124; classtype:trojan-activity; sid:2008124; rev:2;)

默认情况下,content匹配区分大小写。内容必须准确,否则将不匹配。


4

 小结

本文内容比较基础,意在了解Suricata规则的基本知识。更多关于Suricata规则知识请参考官方文档:

https://suricata.readthedocs.io/en/suricata-4.1.4/what-is-suricata.html




本文始发于微信公众号(凌晨安全):流量分析------Suricata规则编写

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月1日10:14:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   流量分析Suricata规则编写http://cn-sec.com/archives/497506.html

发表评论

匿名网友 填写信息