当前位置: 首页 > news >正文

suricata规则字段解析

一、Payload关键字

1、content

可以匹配所有字符;从a到z,大写和小写及所有特殊标志。针对一些特殊符号或中文等,需要使用十六进制进行匹配,写法:|3A|表示冒号,以此类推。|0D| -> \r,|0A| -> \n

另外,默认情况下,content中给定的值是包含运算(模糊匹配,但是不是正则表达式),同时也可以在content后面具体指定对应的字段,比如http_stat_code,http_url等。另外还可以辅助使用startswith,endswith来进行更加精准的匹配。content: "GET";startswith;http_request_line;

其中http_request_line表示请求头,http_request_body表示请求体,http_response_line表示响应头,http_response_body表示响应体

2、nocase

不区分大小写,通常放在content后面

3、dsize

有效载荷的内容的长度,基本用法如下:

dsize:[<>!]number; || dsize:min<>max;

(1)dsize:100,表示大小等于100

(2)dsize:<100 dsize:>100 dsize:!100 dize:100<>200

4、pcre

标准的正则表达式匹配,基本语法:pcre:"/<regex>/opts"; ,需要注意两点:

(1)必须使用/进行包裹,最后的位置可以设置选项

(2)通常情况下,pcre不能直接单独存在,必须依赖于content,也就是说必须现有content,再有pcre进行更精准的匹配。

二、转码关键字

1、to_md5

2、to_sha

3、url_encode

4、base64_decode

对字段的值进行base64解码,并在解码后进行匹配(前提:知道解码后具体的内容)

Buffer content:
http_uri="GET /en/somestring&dGvzdAo=&not_base64"
​
Rule:
alert http any any -> any any (msg:"base64 example"; http.url; content: "somestring"; base64_decode:bytes 8, offset 1,relative; base64_data: content:"test"; sid:10001; rev:1;)
​

三、Flow流关键字

1、flowbits

2、flow

如:flow:established,to_server;表示目标服务器方向,连接已经建立

3、flowint

(1)基本语法

flowint: name, < +,-,=,>,<,>=,<=,==, != >, value;       =号用于赋初始值  +- 数学运算  其他 数字比较判断
​
flowint: name, (isset|isnotset);    用来判断某个变量是否已经初始化

(2)用法示例:

alert http any any <> $HOME_NET 80 (msg:"web服务器出现404状态码"; content: "404"; http_stat_code; flowint:urlcount , notset; flowint: urlcount, =, 1; noalert; sid:561002;)
​
alert http any any <> $HOME_NET 80 (msg:"web服务器出现404状态码"; content: "404"; http_stat_code; flowint:urlcount , isset; flowint: urlcount, +, 1; noalert; sid:561003;)
​
alert http any any <> $HOME_NET 80 (msg:"频繁出现404状态码,疑似扫描"; content: "404"; http_stat_code; flowint: urlcount, >=5, priority: 2; sid:561004; rev: 2;)
​

4、strream_size

四、阈值关键字

1、threshold

threshold: type <threshold|limit|both>,track <by_src|by_dst|by_rule|by_both>,count <N>,seconds <T>
​
默认建议使用threshold,如果设置为limit,则会限制警告的数量
track 优先使用by_src,T秒内连续出现N次,则触发警告
​
​

2、实例

alert http any any <> $HOME_NET 80 (msg:"频繁出现404状态码,疑似扫描"; content: "404"; http_stat_code; threshold:type threshold, track by_src, count 5, seconds 20; classtype: web-url-scan; sid:561004; rev: 3;)

http://www.lryc.cn/news/148389.html

相关文章:

  • 韶音骨传导耳机好不好,韶音骨传导耳机值得入手吗
  • 【LeetCode】208.实现Trie(前缀树)
  • 多线程笔记: volatile、synchronized、Monitor等
  • shell语法--数组相关
  • AI:05 - 基于深度学习的道路交通信号灯的检测与识别
  • The Sandbox 即将参加韩国区块链周,并带来一系列独家周边活动!
  • Mysql高阶语句 (一)
  • win10 ping不通 Docker ip(解决截图)
  • 讲讲几道关于 TCP/UDP 通信的面试题
  • golang 连接 oracle 数据库 增删改查
  • Unity——音频管理器(附例子)
  • TCP协议基础
  • C# NetTopologySuite+ProjNet 任意图形类型坐标转换
  • Windows笔记本电脑开机黑屏
  • Samb共享用户的设置和修改Linux用户的id号,修改Linux组的id号,加入组,删除组成员等
  • VBA:对Excel单元格进行合并操作
  • HTML5离线储存
  • cmd: Union[List[str], str], ^ SyntaxError: invalid syntax
  • 2023高教社杯数学建模思路 - 案例:异常检测
  • FFDNet-pytorch版本代码测试教程
  • uni-app项目由hbuilder项目转化为cli项目
  • 使用SpaceDesk连接平板作为电脑副屏详细步骤教程
  • 云备份——第三方库使用介绍(下)
  • springboot实战(一)之项目搭建
  • 线性代数的学习和整理16:什么是各种空间(类型),向量空间,距离(类型)?
  • css实现文字翻转效果
  • 19 Linux之Python定制篇-apt软件管理和远程登录
  • WebDAV之π-Disk派盘 + notototo
  • _kbhit() and getch() 在小游戏中用不了。因为控制台函数,仅在控制台程序中可用
  • dayjs格式转换成日期