Suricata默认规则集相关
Suricata规则集
Suricata 基于规则检测和控制数据流量,所有规则的配置文件保存在rules目录内

、这些是已知和确认的活动僵尸网络和其C&C(command and control)服务器。由一些组织生成,每日更新
botcc.portgrouped.rules
botcc.rules 、封锁被ciArmy.com标记出来的Top Attackers
ciarmy.rules 、这是一个已知的受影响的主机列表,每天更新
compromised.rules 、每天更新的Spamhaus DROP(Don't Route or Peer)列表。列出了著名的、专业的垃圾邮件发送者
drop.rules 、每天更新的DShield top attackers。十分可靠
dshield.rules 、主要用来检测与ActiveX控件有关的攻击
emerging-activex.rules 、这些规则是为了捕获成功攻击的结果,诸如“id=root”之类的东西,或者表示可能发生妥协的错误消息(即虽然产生了错误消息,但是攻击已经成功)
emerging-attack_response.rules 、主要检测聊天软件、即时通讯软件的攻击,大部分是国外的一些软件,比如facebook,雅虎,msn
emerging-chat.rules 、这些规则是不打算在规则集中长期保存的,或者是在被包含之前进行测试
emerging-current_events.rules 、里面都是被注释掉的规则,可能删除后的规则放在这里
emerging-deleted.rules 、检测dns协议相关的攻击
emerging-dns.rules 、目的是捕获入站的DOS(拒绝服务)活动和出站指示
emerging-dos.rules 、检测ftp协议相关的攻击
emerging-ftp.rules 、魔兽世界、星际争霸和其他流行的在线游戏都在这里。我们不打算把这些东西贴上邪恶的标签,只是它们不适合所有的攻击环境,所以将它们放在了这里。
emerging-games.rules 、检测与icmp协议相关的攻击
emerging-icmp_info.rules
emerging-icmp.rules 、直接检测exploits(漏洞)的规则
emerging-exploit.rules 、检测与imap相关的攻击
emerging-imap.rules 、色情、儿童色情,你不应该在工作中访问的网站等等。
emerging-inappropriate.rules 、似乎是检测与信息泄露、信息盗取等事件的规则
emerging-info.rules 、检测恶意软件
emerging-malware.rules 、检测混杂的攻击,这种攻击一般没有确切的分类,或者使用了多种技术
emerging-misc.rules 、检测移动设备上的恶意软件
emerging-mobile_malware.rules 、检测与netbios有关的攻击
emerging-netbios.rules 、P2P(Peer to Peer)之类的。我们并不想将它定义为有害的,只是不适合出现在IPS/IDS的网络环境中
emerging-p2p.rules 、对于经常被公司或组织政策禁止的事务的规则。Myspace、Ebay之类的东西
emerging-policy.rules 、检测与pop3协议有关的攻击
emerging-pop3.rules 、检测与rpc(远程过程调用协议)有关的攻击
emerging-rpc.rules 、检测与SCADA(数据采集与监控系统)相关的攻击
emerging-scada.rules 、检测探测行为。Nessus,Nikto,端口扫描等这样的活动。这是攻击前准备时期的警告
emerging-scan.rules 、检测shellcode,shellcode是一段用于利用软件漏洞而执行的代码,以其经常让攻击者获得shell而得名
emerging-shellcode.rules 、检测与smtp协议相关的攻击
emerging-smtp.rules 、检测与snmp协议相关的攻击
emerging-snmp.rules 、这是一个巨大的规则集,用于捕获在特殊应用程序上的特殊攻击。这里面有一些普遍的SQL注入攻击规则,效果很好,可以捕获大多数攻击
emerging-sql.rules 、检测与telnet协议相关的攻击
emerging-telnet.rules 、检测与tftp协议相关的攻击
emerging-tftp.rules 、检测trojan木马
emerging-trojan.rules 、检测异常的user-agents
emerging-user_agents.rules 、检测voip相关的异常,它是一个新兴的规则集,目前还很小,但是我们预计它很快就会增长。
emerging-voip.rules 、检测web客户端的攻击
emerging-web_client.rules 、检测web服务端的攻击
emerging-web_server.rules 、检测特殊的web应用程序的异常
emerging-web_specific_apps.rules 、检测蠕虫
emerging-worm.rules 、检测modbus事件
modbus-events.rules 、检测smtp事件
smtp-events.rulse 、检测stream事件
stream-events.rules 、检测tls事件
tls-events.rules 、检测使用tor进行匿名通信的流量
tor.rules
各规则文件的作用
规则形式
由于Suricata完全兼容snort规则,所以Suricata规则和snort相同

规则头部分
动作
当规则与包比对并符合条件是,会采取什么类型的动作
alert(使用选择的报警方法生成一个警报,然后记录这个包)
Log(记录包)
Pass(丢弃包)
Activate(告警并激活另一条dynamic规则)
Dynamic(保持空闲直到被一条activeta规则激活。)
Drop(阻止并记录数据包)
Reject(阻止并记录数据包,tcp协议包发送tcp reset,udp发送icmp端口不可带信息到主机)(只阻止不记录)
协议
TCP、UDP、ICMP和IP协议、HTTP,FTP,TLS(这包括SSL),SMB和DNS应用层协议
地址
一个表示数据包的访问的源地址,另外一个表示目的地址,关键字"any"可以被用来定义任何地址,Snort没有提供根据ip地址查询域名的 机制。地址就是由直接的数字型ip地址和一个CIDR块组成的,/24表示c类网络, /16表示b类网络,/32表示一个特定的机器的地址。详情请参照:CIDR
例如,192.168.1.0/24代表从192.168.1.1到192.168.1.255的 地址块。在这个地址范围的任何地址都匹配使用这个192.168.1.0/24标志的规则
有一个操作符可以应用在ip地址上,它是否定运算符(negation operator)。这个操作符告诉snort匹配除了列出的ip地址以外的所有ip地址。否定操作符用"!"表示,下面这条规则对任何来自本地网络以外的流都进行报警
alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 (content: "|00 01 86 a5|"; msg: "external mountd access";)
端口号
端口号可以用几种方法表示,包括"any"端口、静态端口定义、范围、以及通过否定操作符。"any"端口是一个通配符,表示任何端口。静态端口定 义表示一个单个端口号,例如111表示portmapper,23表示telnet,80表示http等等。端口范围用范围操作符":"表示。范围操作符 可以有数种使用方法,如下所示:
log udp any any -> 192.168.1.0/24 1:1024
记录来自任何端口的,目标端口范围在1到1024的udp流
log tcp any any -> 192.168.1.0/24 :6000
记录来自任何端口,目标端口小于等于6000的tcp流
log tcp any :1024 -> 192.168.1.0/24 500:
记录来自任何小于等于1024的特权端口,目标端口大于等于500的tcp流
log tcp any any -> 192.168.1.0/24 !6000:6010
端口否定操作符用"!"表示。它可以用于任何规则类型
方向操作符
方向操作符"->"表示规则所施加的流的方向。方向操作符左边的ip地址和端口号被认为是流来自的源主机,方向操作符右边的ip地址和端口信 息是目标主机,还有一个双向操作符"<>"。它告诉snort把地址/端口号对既作为源,又作为目标来考虑。这对于记录/分析双向对话很方 便,例如telnet或者pop3会话
log !192.168.1.0/24 any <> 192.168.1.0/24 23
规则选项
规则选项部分包含报警消息内容和要检查的包的具体部分规则选项包含在规则头后的‘( )’内,各规则选项以‘;’分割,规则选项和参数间用‘:’分开
snort规则关键字: msg - 在报警和包日志中打印一个消息。
logto - 把包记录到用户指定的文件中而不是记录到标准输出。
ttl - 检查ip头的ttl的值。
tos 检查IP头中TOS字段的值。
id - 检查ip头的分片id值。
ipoption 查看IP选项字段的特定编码。
fragbits 检查IP头的分段位。
dsize - 检查包的有效净荷大小的值 。净荷:指用户原始数据。
flags -检查tcp flags的值。
seq - 检查tcp顺序号的值。
ack - 检查tcp应答(acknowledgement)的值。
window -测试TCP窗口域的特殊值。
itype - 检查icmp type的值。
icode - 检查icmp code的值。
icmp_id - 检查ICMP ECHO ID的值。
icmp_seq - 检查ICMP ECHO 顺序号的值。
content - 在包的净荷中搜索指定的样式。
content-list 在数据包载荷中搜索一个模式集合。
offset - content选项的修饰符,设定开始搜索的位置 。
depth - content选项的修饰符,设定搜索的最大深度。
nocase - 指定对content字符串大小写不敏感。
session - 记录指定会话的应用层信息的内容。
rpc - 监视特定应用/进程调用的RPC服务。
resp - 主动反应(切断连接等)。
react - 响应动作(阻塞web站点)。
reference - 外部攻击参考ids。
sid - snort规则id。
rev - 规则版本号。
classtype - 规则类别标识。
priority - 规则优先级标识号。
uricontent - 在数据包的URI部分搜索一个内容。
tag - 规则的高级记录行为。
ip_proto - IP头的协议字段值。
sameip - 判定源IP和目的IP是否相等。
stateless - 忽略状态的有效性。
regex - 通配符模式匹配。
distance - 强迫关系模式匹配所跳过的距离。
within - 强迫关系模式匹配所在的范围。
byte_test - 数字模式匹配。
byte_jump - 数字模式测试和偏移量调整。
flow:这个选项要和TCP流重建联合使用。它允许规则只应用到流量流的某个方向上。这将允许规则只应用到客户端或者服务器
规则关键字
常见关键字:
、msg
在报警和包日志中打印消息。格式:(msg :”str”) 、gid
用于表示当某一触发规则的事件发生时,标识是snort的哪一部分生成。格式:(gid:)
、sid
用来做规则的唯一标识。格式:(sid:) 、rev
往往和sid字段一起使用,用于标注针对这条规则的版本,每修改一次rev数值加1,格式:(sid:; rev:;) 、classtype
用于对攻击检测的规则和产生的日志进行分类,这个定义一般是在classification.conf文件中指定 、reference
表明这条规则相关信息所在url,一条规则可以使用多次reference,定义引用的地方则是在reference.config配置文件中,格式:(reference:cve,can--;) 、priority
表示此条规则或class的匹配优先级,即使在classification.config文件中指定了每个class的priority,还是可以在规则中重新制定priority字段进行覆盖该字段的值范围从1-,
在suricata中数字越小表示优先级越高,也就是说如果两条规则都能匹配,则优先匹配priority字段小的规则 、metadata
表明此条规则生成的时间以及最后更新的时间 、Payload
所谓的有效字段关键字在英文中就是payload,因为不想翻译成难懂的载荷所以姑且暂时这个么说。说白了就是对流量数据包中的实际需要传输的内容进行检测,
比如你打开网页,数据包中的payload便是网页中看到的内容的代码 、content
content关键字在suricata规则中非常重要,大部分规则都要使用这个关键字来匹配数据包中的内容
content中的内容是按字节匹配的,能匹配ASCII码从0-255的字节,可打印字符比如a-z可以直接写,而某些特殊符号或是不可打印的字符则需要使用十六进制来表示。如下:
|0a|和|0A| 表示空格,十六进制表示时不区分大小写
|| 表示字母a
|| 表示!
b 表示字母b
B 表示字母B(直接写a-z的字符则区分大小写)
||b 表示字母ab,十六进制描述可以和字符混着写 如果没有在content后面指定其他相关的关键字,那么suricata便会在整个payload字段中搜索content的内容。比如content:"abC";会在整个payload中搜索abC字符,
而如果是像下面这么写,则表示payload字段中前三个字符为abC,前第四个字符并不是abCD,也就是第四个字符不为D:content:"abC"; content:!"abCD"; 、nocase
nocase关键字是用来修饰content字段的,在content字段后加上nocase表示content中的内容不区分大小写 、depth
depth也是修饰content的关键字,表示从payload开始多少个字节与content中的内容进行匹配 、offset
与depth不同的是offset是从payload开头先偏移指定字节再对content进行匹配 、distance
distance表示从上一个content匹配的末尾偏移指定数量字符再进行本次的content匹配 、within
within也是一个修饰content的关键字,他表示从上一个content匹配位置之后的指定字节内对当前的content进行匹配,within的值不能为0 、isdataat
isdataat关键字是用来判断指定偏移处的字符是否是数据 、dsize
dsize是用来检测数据包中的payload长度是否在符合要求的范围内,这样可以有效的组织一些缓冲区溢出的攻击 、replace
replace关键字是用来替换匹配到的content中的字符 、pcre
pcre关键字使用PCRE来匹配payload中的内容,用法一般是首先使用content匹配到指定字符串,然后根据pcre对相应的payload进行正则匹配, 、fast_pattern
suricata对只有一个content关键字的规则使用多模匹配,而对于多个content的规则就对最长对复杂的一个进行多模匹配,而fast_pattern则可以改变这个状况,
如果在较短较简单的content字段后加上fast_pattern关键字则会优先匹配这个content,有时这种方法可以有效提升效率
常用关键字
规则示例



Suricata默认规则集相关的更多相关文章
- elementUI的导航栏怎么根据路由默认选中相关项
1. <el-menu :default-active="this.$route.path.substr(1)" class="left-nav"> ...
- pfSense QoS IDS
pfSense QoS IDS 来源 https://blanboom.org/2018/pfsense-setup/ 之前我使用的无线路由器是 RT1900ac,其内置了 QoS 和 IDS/IPS ...
- Suricata的规则解读(默认和自定义)
不多说,直接上干货! 见suricata官网 https://suricata.readthedocs.io/en/latest/rules/index.html 一.Suricata的规则所放位置 ...
- Suricata配置文件说明
本系列文章是Suricata官方文档的翻译加上自己对其的理解,部分图片也是来自那篇文章,当然由于初学,很多方面的理解不够透彻,随着深入后面会对本文进行一定的修正和完善. Suricata使用Yaml作 ...
- 构建基于Suricata+Splunk的IDS入侵检测系统
一.什么是IDS和IPS? IDS(Intrusion Detection Systems):入侵检测系统,是一种网络安全设备或应用软件,可以依照一定的安全策略,对网络.系统的运行状况进行监视,尽可能 ...
- suricata抓包方式之一 AF_PACKET
1.前言 linux提供了原始套接字RAW_SOCKET,可以抓取数据链路层的报文.这样可以对报文进行深入分析.今天介绍一下AF_PACKET的用法,分为两种方式.第一种方法是通过套接字,打开指定的网 ...
- Javascript:阻止浏览器默认右键事件,并显示定制内容
在逛一些知名图片社区的时候,遇到自己心怡的图片,想要右键另存的时候,默认的浏览器菜单不见了,却出现了如:[©kevin版权所有]之类的信息: 今天在看Javascript事件默认行为相关的知识,所以, ...
- (转)打印相关_C#(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)
原文地址:http://www.cnblogs.com/smallsoftfox/archive/2012/06/25/2562718.html 参考文章:http://www.cnblogs.com ...
- CSS transition 的默认值
语法 transition: property duration timing-function delay|initial|inherit; 示例: div { width: 100px; ...
随机推荐
- DirectX:在graph自动连线中加入自定义filter(graph中遍历filter)
为客户提供的视频播放的filter的测试程序中,采用正向手动连接的方式(http://blog.csdn.net/mao0514/article/details/40535791),由于不同的视频压缩 ...
- 【原】Java学习笔记027 - 泛型
package cn.temptation.test; import java.util.ArrayList; import java.util.Iterator; public class Samp ...
- 快速开发 HTML5 交互式地铁线路图
前言 前两天在 echarts 上寻找灵感的时候,看到了很多有关地图类似的例子,地图定位等等,但是好像就是没有地铁线路图,就自己花了一些时间捣鼓出来了这个交互式地铁线路图的 Demo,地铁线路上的点是 ...
- C# 图解教程 第一章 C#和.NET框架
C#和.NET框架 在.NET之前.NET时代 .NET框架的组成大大改进的编程环境 编译成CIL编译成本机代码并执行CLR Common Language RuntimeCLI Common Lan ...
- Java中使用UDP实现简单的聊天功能
通过DatagramSocket类来实现.此类表示用来发送和接收数据报包的套接字. 发送端代码如下: import java.io.IOException; import java.net.*; im ...
- [BZOJ4195] [NOI2015] 程序自动分析 (并查集)
Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或x ...
- 网络游戏开发-服务器(01)Asp.Net Core中的websocket,并封装一个简单的中间件
先拉开MSDN的文档,大致读一遍 (https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/websockets) WebSocket 是一 ...
- java容器类2:Map及HashMap深入解读
Java的编程过程中经常会和Map打交道,现在我们来一起了解一下Map的底层实现,其中的思想结构对我们平时接口设计和编程也有一定借鉴作用.(以下接口分析都是以jdk1.8源码为参考依据) 1. Map ...
- 解决Win10下_findnext()异常
在win10中,使用文件遍历函数_findnext会报0xC0000005错误 ,发生访问冲突错误 错误定位到ntdll.dll 原因: _findnext()第一个参数"路径句柄" ...
- MSIL实用指南-局部变量的声明、保存和加载
这一篇讲解方法内的局部变量是怎么声明.怎样保存.怎样加载的. 声明局部变量声明用ILGenerator的DeclareLocal方法,参数是局部变量的数据类型,得到一个局部变量对应的创建类LocalB ...