材料阅读:IDS的绕过(消耗资源方式)

2024-06-15 16:38

本文主要是介绍材料阅读:IDS的绕过(消耗资源方式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

20210310 -

0. 引言

今天阅读了安全客的一篇文章《我们来谈一谈IDS签名》,实际上这篇文章是作者翻译过来的,机翻的感觉很强,例如指纹,就被翻译为了签名。

1. 文章简介

这篇文章主要介绍了,IDS的主要功能以及其大致的工作方式,利用字符串指纹的模式匹配的方法,之前的时候也提到过,对于IDS来说,都是采用字符串硬匹配或者正则表达式的方法。

而本篇文章所传递的想法就是,利用IDS指纹匹配过程中,正则表达式匹配中可能出现的类DDos的漏洞,来绕过IDS,本质上就是通过构造恶意的样本,消耗IDS在匹配过程中的计算资源。

2. 读后思考

实际上,这篇文章感觉读起来比较晦涩,就是因为很多地方的翻译不够准确,而且读起来也不通顺,就给人感觉很奇怪。但是在阅读这篇文章的时候,也引起了很多我的思考。之前的时候就看到过一些安全公司招聘,需要员工维护IDS规则库。

2.1 规则的生成

研究人员对于突然出现的网络攻击威胁,首先会对其分析,得到如何检测这一攻击的规则。抽取其中的特征,并将结果转化为一个或多个签名并用IDS能够理解的语言编写出来。

在这种规则生成的过程中,很多论文都有这方面的涉及,比较有代表性的,就是利用频繁项挖掘算法。当然,我觉得比较有经验的工程师应该也能直接人眼看出来,不过这种的话,利用机器来进行学习,同时进行一些互斥性,完备性的验证,会更好。

规则生成的过程中,需要考虑一些因素,这个规则的表现形式是什么样子,是直接的某个字符串,还是利用正则表达式。这个有时候就要结合底层的模式匹配引擎来分析。

所以这方面应该考虑两个问题:1)规则如何生成,是否有现有的工具2)规则生成的形式是什么样子,是否有较为成熟的管理工具

2.2 规则的匹配过程

在我写的另外一篇文章《深度包检测(DPI)的记录》也思考过这方面的问题,今天在看这篇文章的时候,也想到了这部分。在这篇文章中,开始时提到了几个假设,这些假设在文章中也被验证。
1)找到子字符串比证明没有找到匹配的子字符串耗时更短
2)正则表达式方式比直接字符查找更耗时

而他利用这些假设进行绕过的方式,就是因为正则表达式中存在的一个问题,灾难性回溯,之前研究字符串匹配算法的时候简单了解过。

而通过这个问题让我开始思考,IDS使用的引擎,他们的底层的字符串匹配过程是什么原理,这个一定要清楚,这样才能在查看每条规则的匹配耗时时,能够更清晰的有改进方案。

这篇关于材料阅读:IDS的绕过(消耗资源方式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063999

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

Java 多线程的基本方式

Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

前端form表单+ifarme方式实现大文件下载

// main.jsimport Vue from 'vue';import App from './App.vue';import { downloadTokenFile } from '@/path/to/your/function'; // 替换为您的函数路径// 将 downloadTokenFile 添加到 Vue 原型上Vue.prototype.$downloadTokenF

软件架构模式:5 分钟阅读

原文: https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2 软件架构模式:5 分钟阅读 当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易