suricata规则

Emerging威胁检测规则wiki:http://doc.emergingthreats.net/bin/view/Main/WebHome
Emerging规则文件:http://rules.emergingthreatspro.com/

 

基本语法

Snort规则与Suricata规则基本语法相同


规则结构

一、规则头部:

1. 规则行为:行为声明,用于通知IDS引擎在触发警报时该怎么做
    a. Alert  通知IDS引擎记录所有匹配的规则、与匹配规则相关的数据包数据
    b. Log    通知IDS引擎记录所有匹配的规则、不记录与匹配规则相关的数据包数据
    c. Pass   通知IDS引擎对该数据包不做任何处理
    
2. 协议:通知IDS引擎该规则适用于何种协议
    a. tcp
    b. udp
    c. icmp
    d. ip     同时适用于TCP和UDP协议时使用
    e. any

3. 源/目标 主机
    a. 可以是IP列表,也可以是CIDR形式的IP范围,可以在配置文件中指定
       来源IP:$EXTERNAL_NET
       目标IP:$HOME_NET
       Suricata配置文件:suricate.yaml
    b. 若无法将规则局限于特定类型的主机,可用关键词“any”匹配任意主机

4. 源/目标 d端口
    a. 可指定具体端口,如80
    b. 可指定任意端口,any

5. 流量方向
    a. ->   从源到目标地址的单向流量
    b. <>  双向流量

二、规则选项:

1. 事件信息选项

1. 消息(msg):对规则的描述,可以理解为规则的“名称”

2. 特征标识符(sid):用于唯一性地标识规则,sid不能重复,且只能为数值
    a. 0-10000000:为Sourcefire VRT保留
    b. 20000000-29999999:为 Emerging Threats(ET)保留
    c. 30000000+ :公用

3. 修订(rev):用于表示规则发生了修改,可以理解为规则的版本号
    a. 当创建一条新规则时,制定 rev:1; ,以表明该规则为第一版本
    b. 当规则被改变时,无需创建新规则,可保持sid不变,使rev递增

4. 引用(reference):用于链接外部信息来源,从而为规则提供附加的情景资料
   好处:保持规则整洁,减小规则长度,使其更易编辑管理
    
    a. 直接指定: reference:<reference type>,<reference>;
                reference:url,doc.emergingthreats.net/2010235

    b. 可通过在suricata.yaml配置reference.config文件来定义引用类型
       文件中使用格式:config reference:<reference type><reference prefix>;
       例如  文件中:config reference:cve http://cve.mitre.org/cgi-bin/cvename.cgi?name=
            规则中:reference:cve,2001-0414
            实际引用:reference:cve,http://cve.mitre.org/cgi-bin/cvename.cgi?name=2001-0414

5. 优先级(priority):用于手动指定规则的优先级,提升分析员查看警报的效率
   此选项可以任意整数设置,可使用0-10之间的数指定优先级,0最高,10最低

6. 类别(classtype):用于根据规则所检测的活动类型为规则分类
   规则中指定方式:classtype:<Classification Name>;
   通过在suricata.yaml配置classification .config文件来描述规则中的类别

   文件中格式:config classification: <classification name>,<classification description>,<classification privoroty>
       classification name:类别名称
       classification description:类别描述
       classification privoroty:类别指定的默认优先级,当规则使用类别时以此处优先级为准

2. 检查内容

1. 检查内容(content):检查数据包内容中是否包含某个字符串
   如:content:"evilliveshere";    
   指定多个匹配项:content:"evilliveshere";  content:"here";  
      a. 使用感叹号!对匹配项的否定:content:!"evilliveshere"; 
      b. 将字符串的十六进制用管道符(|)进行包围:content:"|FF D8|"; 
      c. 字符串与十六进制混合使用:content:"|FF D8|evilliveshere"; 
      d. 匹配内容区分大小写
      e. 保留字符(; \ ")须进行转义或十六进制转码
 
2. 检测内容修饰语:通过在匹配内容之后添加一些修饰语,可以精确控制IDS引擎在网络数据中匹配内容的方式。

        a. nocase:匹配内容不区分大小写,如 content:"root";nocase;

        b. offset:用于表示从数据包载荷的特定位置开始内容匹配,从载荷其实位置算起
                   注意载荷开始位置从0字节处开始,而不是1字节处
                   content:"root";offset:5;

        c. depth:用于限制搜索匹配内容的结束位置。若使用了offset,则开始位置为offset,否则为载荷开始位置
                  content:"root";offset:5;depth:7;

        d. distance:用于指定上一次内容匹配的结束位置距离本次内容匹配的开始位置的距离

        e. within:用于限制本次匹配必须出现在上一次匹配内容结束后的多少个字节之内

        f. distance和within的同时使用限制了第二次内容匹配的匹配范围,如下
           content:"evilliveshere";  content:"here"; distance:1;within:7;
           在匹配字符串“evilliveshere”后的1到7个字节范围内对字符串“here”进行匹配

        g. http内容修饰语:针对检测http流量的规则,Suricata提供了http流重组能力,同时提供了用于编写HTTP流量相关的更高效的规则修饰器
           例如:alert tcp any any -> any 80(msg:"Evil Doamin www.appliednsm.com"; "content:"GET";httpmethod;  content:"www.appliednsm.com";http_uri; sid:5445555; rev:1;)

        常用http内容修饰语:
        http_client_body       HTTP客户端请求的主体内容
        http_cookie         HTTP头字段的“Cookie”内容
        http_header         HTTP请求或响应头的任何内容
        http_method         客户端使用的HTTP方法(GET,POST等)
        http_uri               HTTP客户端请求的URI内容
        http_stat_code       服务器响应的HTTP状态字段内容
        http_stat_message     服务器响应的HTTP状态消息内容
        http_encode         在HTTP传输过程中所使用的编码类型
    ``` 

    3. 兼容Perl语法的正则表达式(PCRE):通过正则表达式对内容进行匹配
       匹配信用卡号码: pcre:"/([0-6]\d\d|7[0-256]\d|73[0-3]|77[0-2])-\d{2} - \d{4}  /";      

######3. 通信流量
    通信流量:根据TCP协议网络流量状态编写规则
        三次握手:
        1. 客户端向服务器的监听端口发送SYN包来发起连接
        2. 此时,服务器需要向客户端回复一个SYN/ACK包
        3. 一旦收到该包,客户端会回复给服务器一个ACK包

    数据流规则有一些专用选项,分为三类:
        1. 状态选项
        2. 定向选项
        3. 流量模式状态
    
    配置格式:flow:<option>,<option>,<option>
    
    有效声明选项分别为
        1.  established:只匹配已经建立TCP会话连接的流量
        2. stateless:不论是否已建立TCP会话连接均匹配
        
    方向选项分别为:
        1. to_server:从客户端到服务端的流量
        2. from_server:从服务端到客户端的流量
        3. to_client:从服务端到客户端的流量
        4. from _client:从客户端到服务端的流量

    no_stream:待匹配数据是重组后的流
    only_stream:待匹配数据是单独的数据包    

    协议头检测
        1. TTL:匹配指定的TTL指,可使用关系运算符(< , <=,  >=,  >),可以用来识别操作系统类型
        2. dsize:匹配一个指定payload大小的数据包,可使用关系运算符(< , <=,  >=,  >)
        3. itype:匹配指定的ICMP类型值
        4. icode:匹配指定的ICMP代码值
        5. ip_proto:匹配指定的IP协议,如IGMP、GRE

 

规则用途

==botcc.portgrouped.rules botcc.rules==

这些是已知和确认的活动僵尸网络和其C&C(command and control)服务器。由一些组织生成,每日更新。

==ciarmy.rules==

封锁被ciArmy.com标记出来的Top Attackers

==compromised.rules==

这是一个已知的受影响的主机列表,每天更新。

decoder-events.rules

解码器事件,里面包含了对解码器解码所产生的事件,比如包无效、包过大、过小等

dnp3-events.rules

包含对dnp3(分布式网络协议)的一些规则,不多,只有几条

dns-events.rules

包含对dns协议的一些规则,比如dnsflooded事件等,不多,只有几条

==drop.rules==

每天更新的Spamhaus DROP(Don't Route or Peer)列表。列出了著名的、专业的垃圾邮件发送者。

==dshield.rules==

每天更新的DShield top attackers。十分可靠。

emerging-activex.rules

主要用来检测与ActiveX控件有关的攻击

==emerging-attack_response.rules==

这些规则是为了捕获成功攻击的结果,诸如“id=root”之类的东西,或者表示可能发生妥协的错误消息(即虽然产生了错误消息,但是攻击已经成功)。

emerging-chat.rules

主要检测聊天软件、即时通讯软件的攻击,大部分是国外的一些软件,比如facebook,雅虎,msn

==emerging-current_events.rules==

这些规则是不打算在规则集中长期保存的,或者是在被包含之前进行测试。大多数情况下,这些都是针对当天的大量二进制URL的简单sigs,用来捕获CLSID新发现的易受攻击的应用程序,我们没有这些漏洞的任何细节。这些sigs很有用,却不是长期有效的。

emerging-deleted.rules

里面都是被注释掉的规则,可能删除后的规则放在这里

emerging-dns.rules

检测dns协议相关的攻击

==emerging-dos.rules==

目的是捕获入站的DOS(拒绝服务)活动和出站指示。

emerging-ftp.rules

检测ftp协议相关的攻击

==emerging-games.rules==

魔兽世界、星际争霸和其他流行的在线游戏都在这里。我们不打算把这些东西贴上邪恶的标签,只是它们不适合所有的攻击环境,所以将它们放在了这里。

emerging-icmp_info.rules emerging-icmp.rules

检测与icmp协议相关的攻击

==emerging-exploit.rules==

直接检测exploits(漏洞)的规则。如果你在寻找windows的漏洞等,他们会在这里被列出。就像sql注入一样,exploits有着自己的体系。

总之就是用来检测exploits漏洞的。

emerging-imap.rules

检测与imap相关的攻击

==emerging-inappropriate.rules==

色情、儿童色情,你不应该在工作中访问的网站等等。WARNING:这些都大量使用了正则表达式,因此存在高负荷和频繁的误报问题。只有当你真正对这些规则感兴趣时才去运行这些规则。

emerging-info.rules

看了一些规则后,似乎是检测与信息泄露、信息盗取等事件的规则,里面会检测后门、特洛伊木马等与info相关的攻击

==emerging-malware.rules==

我个人最喜欢的。这一套最初只是间谍软件,这就足够了。间谍软件和恶意软件之间的界限已经很模糊了。这里不仅仅是间谍软件,但是请放心,这里没有任何东西是你想在自己的网络或者PC上运行的。已知的更新模式、已知的恶意软件的UserAgent字符串和大量的其它有用的东西。如果你只准备运行一个规则集来保证安全性,这个规则集是首选。

emerging-misc.rules

检测混杂的攻击,这种攻击一般没有确切的分类,或者使用了多种技术

emerging-mobile_malware.rules

检测移动设备上的恶意软件

emerging-netbios.rules

检测与netbios有关的攻击

==emerging-p2p.rules==

P2P(Peer to Peer)之类的。我们并不想将它定义为有害的,只是不适合出现在IPS/IDS的网络环境中。

==emerging-policy.rules==

对于经常被公司或组织政策禁止的事务的规则。Myspace、Ebay之类的东西。

emerging-pop3.rules

检测与pop3协议有关的攻击

emerging-rpc.rules

检测与rpc(远程过程调用协议)有关的攻击

emerging-scada.rules

检测与SCADA(数据采集与监控系统)相关的攻击

==emerging-scan.rules==

检测探测行为。Nessus,Nikto,端口扫描等这样的活动。这是攻击前准备时期的警告。

emerging-shellcode.rules

检测shellcode,shellcode是一段用于利用软件漏洞而执行的代码,以其经常让攻击者获得shell而得名。

emerging-smtp.rules

检测与smtp协议相关的攻击

emerging-snmp.rules

检测与snmp协议相关的攻击

==emerging-sql.rules==

这是一个巨大的规则集,用于捕获在特殊应用程序上的特殊攻击。这里面有一些普遍的SQL注入攻击规则,效果很好,可以捕获大多数攻击。

但是这些规则根据不同的app和不同的web服务器,有很大的差别。如果你需要运行非常严格的web服务或者很重视信息的安全性,请使用这个规则集。

emerging-telnet.rules

检测与telnet协议相关的攻击

emerging-tftp.rules

检测与tftp协议相关的攻击

emerging-trojan.rules

检测trojan木马

emerging-user_agents.rules

检测异常的user-agents

==emerging-voip.rules==

检测voip相关的异常,它是一个新兴的规则集,目前还很小,但是我们预计它很快就会增长。

emerging-web_client.rules

检测web客户端的攻击

emerging-web_server.rules

检测web服务端的攻击

emerging-web_specific_apps.rules

检测特殊的web应用程序的异常

emerging-worm.rules

检测蠕虫

modbus-events.rules

检测modbus事件

smtp-events.rulse

检测smtp事件

stream-events.rules

检测stream事件

tls-events.rules

检测tls事件

==tor.rules==

检测使用tor进行匿名通信的流量,tor本身没有威胁,但却是很可以的行为

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值