广告位联系
返回顶部
分享到

Snort中pcre和正则表达式的使用介绍

正则表达式 来源:互联网 作者:秩名 发布时间:2022-04-01 19:08:43 人浏览
摘要

1. 题目描述 If snort see two packets in a TCP flow with first packet has login or Initial in payload, destination port is 3399;and second packet has a IPv4Address:Portstring(E.g. 123.45.6.7:8080) in payload. destination port is 3399;out

1. 题目描述

If snort see two packets in a TCP flow with

first packet has “login” or “Initial” in payload, destination port is 3399;and second packet has a “IPv4Address:Port”string(E.g. 123.45.6.7:8080) in payload. destination port is 3399;output an alert with msg “bot founded” and sid 1000001

2. 解决方案

题目要求检测包含两个包的特定流,需要通过设置标记位,即flowbits来实现。另外,题目中均要求检测特定的字符串或模式,所以还需要在pcre字段中通过正则表达式实现。

2.1 第一条检测规则

匹配特定字符串

1

pcre:"/login|Initial/";

正则表达式的两端需要加上限界符/。

设置标志位,同时不发出警报。

1

flowbits:set,login_Initial;flowsbits:noalert;

2.2 第二条检测规则

2.2.1 匹配模式IPv4Address:Port

IPv4Address

IPv4地址使用点分十进制表示时,分为4组,每组的范围均为[0,255]。即从0.0.0.0到255.255.255.255。

我们先分析单独一组的特点:

区间 限制 表示
0~99 没有任何限制 \d{1,2}
100~199 后两位也没有任何限制 1\d{2}
200~249 十位限制在0~4,个位没有限制 2[0-4]\d
250~255 个位限制在0~5 25[0-5]

可以发现表格中前两种情况可以合并为1?\d{1,2},所以可以用25[0-5]|2[0-4]\d|1?\d{1,2}来匹配0~255;

将其作为一个分组,再考虑到.,我们可以写出如下正则表达式匹配IPv4地址:

((25[0-5]|2[0-4]\d|1?\d{1,2})\.){3}(25[0-5]|2[0-4]\d|1?\d{1,2})

值得说明的是:

这里我们认为数字前出现填充0的情况与非填充状态等价:

如:192.01.00.1等价于192.1.0.1。

这种情况下才能使用\d{1,2},因为可能会出现00的情况。

正则表达式的短路性质:

当|运算符分隔的多个表达式有一个匹配成功时,该表达式之后的表达式将不会继续匹配。

如:A|B|C|D,B匹配成功了,将不会再看C和D。

所以上面匹配IPv4地址时,我们单独一个分组写成25[0-5]|2[0-4]\d|1?\d{1,2}而不是1?\d{1,2}|2[0-4]\d|25[0-5]。

后者匹配255时,只会匹配到25和5,而不会匹配到255:

同样后者构造的正则表达式去匹配255.255.255.255,只会匹配到255.255.255.25,缺少最后一个5:

因为它匹配到最后一组的25时就判定匹配成功,直接跳到末尾,结束匹配。而前面几组255正确匹配的原因是:如果只匹配25,发现剩下的5和.不匹配,之后会进行回溯,继续检查后面的条件,发现255匹配成功且.也匹配成功,不再回溯。

  • Port

端口号的范围是0~65535,我们同样可以分成不同的区间来匹配端口号。

区间 限制 表示
0~9999 没有任何限制 \d{1,4}
10000~59999 后四位没有任何限制 [1-5]\d{4}
60000~64999 千位限制在0~4,后三位没有任何限制 6[0-4]\d{3}
65000~65499 百位限制在0~4,后两位没有任何限制 65[0-4]\d{2}
65500~65529 十位限制在0~4,个位没有任何限制 655[0-2]\d
65530~65535 个位限制在0~5 6553[0~5]

同样,我们可以将表格前两种情况合并为[1-5]?\d{1,4}。结合上面提到的短路性质,我们可以写出最终用于匹配端口号的正则表达式:

6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]?\d{1,4}

2.2.2 检查标志位

1

flowbits:isset,bot_founded;

3. 检测规则

通过上述分析,我们可以写出如下检测规则:

1

2

alert tcp any any -> any 3399 (pcre:"/login|Initial/";flowbits:set,login_Initial;flowbits:noalert;sid:1000000)

alert tcp any any -> any 3399 (msg:"bot founded";pcre:"/((25[0-5]|2[0-4]\d|1?\d{1,2})\.){3}(25[0-5]|2[0-4]\d|1?\d{1,2}):(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]?\d{1,4})/";flowbits:isset,bot_founded;sid:1000001)


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://www.cnblogs.com/c0ver1/p/idshwk2.html
    Tag :
相关文章
  • 正则表达式校验日期时间格式的方法
    日期部分校验 概念 首先,我们先了解2个概念: 1、合法的日期范围: DateTime值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12
  • 如何使用正则表达式对输入数字进行匹配

    如何使用正则表达式对输入数字进行匹配
    最近有一个区间范围限制,一般255数字以下的都能在网上薅到,但是需要弄一个int16、int32、int64范围的输入限制......在网上逛了很久都没找
  • 最实用的正则表达式的整理

    最实用的正则表达式的整理
    想要白嫖正则是吧?本篇就一次给你个够!先冲 100 个!(如果还觉得不够就评论反馈后再加,本篇持续更新加码!!) 点赞再看,养成好
  • 停止编写API函数原因介绍
    RESTFUL API 通常提供在不同实体上执行增删改查(CRUD)操作的一组接口。我们通常在我们的前端项目中为这些每一个接口提供一个函数,这些
  • 正则表达式的基本语法汇总介绍

    正则表达式的基本语法汇总介绍
    1.正则表达式的基本语法 1.1两个特殊符号 ^ 和 $ ^ 正则表达式的起始符 ^tom 表示所有以tom开头的字符串 $ 正则表达式的结束符 lucy$ 表示所有
  • 正则表达式基础语法以及应用介绍

    正则表达式基础语法以及应用介绍
    一、正则表达式 1、基本介绍 ? 概述 一个正则表达式,就是用某种模式去匹配字符串的一个公式。很多人因为它们看上去比较古怪而且复杂
  • 正则表达式从HTML中匹配img标签的图片地址

    正则表达式从HTML中匹配img标签的图片地址
    前言 有玩过爬虫的人应该都有过在又臭又长的HTML中找寻信息的经历,虽然有各种工具和各种框架可以辅助查找,但是解析HTML的规则也是人
  • Snort中pcre和正则表达式的使用介绍

    Snort中pcre和正则表达式的使用介绍
    1. 题目描述 If snort see two packets in a TCP flow with first packet has login or Initial in payload, destination port is 3399;and second packet has a IPv4Address:Portstring(E.g
  • 在nest.js中通过正则表达式正确设置验证的方法

    在nest.js中通过正则表达式正确设置验证的方法
    下面看下nest.js正则表达式设置验证的方法,代码如下所示: 1 2 3 4 import { IsNotEmpty, Length, Matches, Max, Min } from class-validator; const phoneReg = /^1(3
  • shell脚本中的正则表达式介绍
    正则表达式的概念及特点: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计