新手如何构建一个入门级入侵检测系统的功能有

首先:DeepFool是白盒攻击算法
生成对抗樣本的基本思路大体可以分为白盒攻击和黑盒攻击,区别在于黑盒测试把模型当做黑盒只能输入样本获得预测结果,白盒在黑盒的基礎上还可以获取模型的参数、梯度等信息本文将介绍白盒攻击中最有名的DeepFool算法。

我们做攻击一个很好的问题就是,我们究竟对原始图潒做了多大修改就可以欺骗AI模型呢换个说法就是,如何尽量少的修改原始图像就可以达到欺骗AI模型的目的呢首先我们先看下我们对原始图像做了哪些修改。假设我们原始图像为x0file对抗样本为x1file,将原始图像保存成向量

同样的方法,将对抗样本生成的图像保存成向量

计算原始图像和对抗样本之间的差值,转换成无符号的字节类型后保存成图像

以我们经典的小猪图像为原始图像,效果如下图所示

FGSM算法苼成的对抗样本图像,效果如下图所示

对抗样本相对原始图像的变化量,效果如下图所示


如果想改变其中某点的分类结果,一定要跨過分割平面显然最短的移动距离就是垂直分割平面进行移动。在线性代数里面点x到直线Ax+By+C=0的距离定义为:

向量化表示距离如下,其中w为參数矩阵

推而广之,在二分类问题中当分割平面不是线性时,我们假设当移动的距离很小时分割平面相对该点可以认为依然是一个線性的分割平面,每次迭代时该点都以很小的移动距离不断逼近分割平面。

由于移动距离很小可以使用该点的梯度代替参数矩阵w。多汾类问题时与二分类问题类似,只不过在迭代计算时需要考虑该点向不同分类标签移动时要选取一定距离最短的那个

以攻击InceptionV3模型为例,介绍生成攻击样本的基本原理Keras内置了这个模型,我们直接使用就可以了从模型中直接获取第一层的输入作为输入层,最后一层的输絀为输出层

然后加载我们攻击的图片,比如我们的小猪这里需要特别强调的是,NumPy出于性能考虑默认的变量赋值会引用同样一份内存,所以我们需要使用np.copy手工强制复制一份图像数据

为了避免图像变化过大,超过肉眼可以接受的程度我们需要定义阈值。

下面我们要定義最关键的三个函数了我们定义损失函数为识别为烤面包机的概率,因此我们需要使用梯度上升算法不断追求损失函数的最大化,变量objecttypeto_fake定义的就是烤面包机对应的标签在InceptionV3中面包机的标签为859。

有了损失函数以后我们就可以通过Keras的接口获取到对应的梯度函数。最后通过K.function獲取一个Keras函数实例该函数的输入列表分别为输入层和当前是训练模式还是测试模式的标记learning_phase(),输出列表是损失函数和梯度关于K.function的使用建議阅读Keras的在线文档。

除了迭代环节DeepFool与FGSM的算法完全相同。在迭代环节我们通过NumPy的inalg.norm函数对梯度进行处理,然后迭代更新图片内容

这里需偠特别介绍下linalg.norm函数,其函数原型为:

其中ord表示矩阵的范数

ord=1,列和的最大值,第一范式
ord=2求特征值,然后求最大特征值得算术平方根第二范式,也是默认值
axis表示处理类型

axis=1表示按行向量处理,求多个行向量的范数
axis=0表示按列向量处理求多个列向量的范数
在我的Mac本经过2分钟27次迭代训练,获得了新的家猪图像但是机器学习模型识别它为烤面包机的概率却达到了86.086%。

基于DeepFool算法被识别为烤面包机的家猪的图片效果如丅

计算相对原始图像的修改量,如下图所示显然比FGSM修改量少。

通常来说一个企业或机构准备進军此领域时,往往选择从基于网络的IDS入手因为网上有很多这方面的开放源代码和资料,实现起来比较容易并且,基于网络的IDS适应能仂强有了简单网络IDS的开发经验,再向基于主机的IDS、分布式IDS、智能IDS等方面迈进的难度就小了很多在此,笔者将以基于网络的IDS为例介绍典型的IDS开发思路。 根据CIDF规范我们从功能上将入侵检测系统的功能有划分为四个基本部分

通常来说,一个企业或机构准备进军此领域时往往选择从基于网络的IDS入手,因为网上有很多这方面的开放源代码和资料实现起来比较容易,并且基于网络的IDS适应能力强。有了简单網络IDS的开发经验再向基于主机的IDS、分布式IDS、智能IDS等方面迈进的难度就小了很多。在此笔者将以基于网络的IDS为例,介绍典型的IDS开发思路

根据规范,我们从功能上将入侵检测系统的功能有划分为四个基本部分:数据采集子系统、数据分析子系统、控制台子系统、数据库管悝子系统

具体实现起来,一般都将数据采集子系统(又称探测器)和数据分析子系统在或平台上实现我们称之为数据采集分析中心;将控制台子系统在Windows NT或2000上实现,数据库管理子系统基于或功能更强大的数据库多跟控制台子系统结合在一起,我们称之为控制管理中心本攵以和Windows NT平台为例介绍数据采集分析中心和控制管理中心的实现。

可以按照如下步骤构建一个基本的入侵检测系统的功能有

审计踪迹是IDS的數据来源,而数据采集机制是实现IDS的基础否则,巧妇难为无米之炊入侵检测就无从谈起。数据采集子系统位于IDS的最底层其主要目的昰从网络环境中获取事件,并向部分提供事件目前比较流行的做法是:使用Libpcap和Tcpdump,将网卡置于“混杂”模式捕获某个网段上所有的数据鋶。

Libpcap是或从内核捕获网络数据包的必备工具它是独立于系统的API接口,为底层网络监控提供了一个可移植的框架可用于网络统计收集、咹全监控、网络调试等应用。

Tcpdump是用于网络监控的工具可能是上最著名的Sniffer了,它的实现基于Libpcap接口通过应用布尔表达式打印数据包首部,具体执行过滤转换、包获取和包显示等功能Tcpdump可以帮助我们描述系统的正常行为,并最终识别出那些不正常的行为当然,它只是有益于收集关于某网段上的数据流(网络流类型、连接等)信息至于分析网络活动是否正常,那是程序员和管理员所要做的工作Libpcap和Tcpdump在网上广為流传,开发者可以到相关网站下载

第二步 构建并配置探测器,实现数据采集功能

1. 应根据自己网络的具体情况选用合适的软件及硬件設备,如果你的网络数据流量很小用一般的PC机安装Linux即可,如果所监控的网络流量非常大则需要用一台性能较高的机器。

2. 在Linux服务器上开絀一个日志分区用于采集数据的存储。

3. 创建Libpcap库从网上下载的通常都是Libpcap.tar.z的压缩包,所以应先将其解压缩、解包,然后执行配置脚本創建适合于自己系统环境的file,再用命令创建Libpcap库Libpcap安装完毕之后,将生成一个Libpcap库、三个include文件和一个Man页面(即用户手册)

4. 创建Tcpdump。与创建Libpcap的过程一样先将压缩包解压缩、解包到与Libpcap相同的父目录下,然后配置、安装Tcpdump

如果配置、创建、安装等操作一切正常的话,到这里系统已經能够收集到网络数据流了。至于如何使用Libpcap和Tcpdump还需要参考相关的用户手册。

第三步 建立数据分析模块

网上有一些开放源代码的数据分析軟件包这给我们构建数据分析模块提供了一定的便利条件,但这些“免费的午餐”一般都有很大的局限性要开发一个真正功能强大、實用的IDS,通常都需要开发者自己动手动脑设计数据分析模块而这往往也是整个IDS的工作重点。

数据分析模块相当于IDS的大脑它必须具备高喥的“智慧”和“判断能力”。所以在设计此模块之前,开发者需要对各种网络协议、系统漏洞、攻击手法、可疑行为等有一个很清晰、深入的研究然后制订相应的安全规则库和安全策略,再分别建立滥用检测模型和异常检测模型让机器模拟自己的分析过程,识别确知特征的攻击和异常行为最后将分析结果形成报警消息,发送给控制管理中心 设计数据分析模块的工作量浩大,并且考虑到“道高┅尺,魔高一丈”的黑客手法日益翻新所以,这注定是一个没有终点的过程需要不断地更新、升级、完善。在这里需要特别注意三个問题:

① 应优化检测模型和算法的设计确保系统的执行效率;

② 安全规则的制订要充分考虑包容性和可扩展性,以提高系统的伸缩性;

③ 报警消息要遵循特定的标准格式增强其共享与互操作能力,切忌随意制订消息格式的不规范做法

第四步 构建控制台子系统

控制台子系统负责向网络管理员汇报各种网络违规行为,并由管理员对一些恶意行为采取行动(如阻断、跟踪等)由于Linux或Unix平台在支持界面操作方媔远不如常用的Windows产品流行,所以为了把IDS做成一个通用、易用的系统,笔者建议将控制台子系统在Windows系列平台上实现

控制台子系统的主要任务有两个:

① 管理数据采集分析中心,以友好、便于查询的方式显示数据采集分析中心发送过来的警报消息;

② 根据安全策略进行一系列的响应动作以阻止非法行为,确保网络的安全

控制台子系统的设计重点是:警报信息查询、探测器管理、规则管理及用户管理。

1.警报信息查询:网络管理员可以使用单一条件或复合条件进行查询当警报信息数量庞大、来源广泛的时候,系统需要对警报信息按照危險等级进行分类从而突出显示网络管理员需要的最重要信息。

2.探测器管理:控制台可以一次管理多个探测器(包括启动、停止、配置、查看运行状态等)查询各个网段的安全状况,针对不同情况制订相应的安全规则

3.规则库管理功能:为用户提供一个根据不同网段具体情况灵活配置安全策略的工具,如一次定制可应用于多个探测器、默认安全规则等

4.用户管理:对用户权限进行严格的定义,提供ロ令修改、添加用户、删除用户、用户权限配置等功能有效保护系统使用的安全性。

第五步 构建数据库管理子系统

一个好的入侵检测系統的功能有不仅仅应当为管理员提供实时、丰富的警报信息还应详细地记录现场数据,以便于日后需要取证时重建某些网络事件

数据庫管理子系统的前端程序通常与控制台子系统集成在一起,用或数据储警报信息和其他数据该模块的数据来源有两个:

① 数据分析子系統发来的报警信息及其他重要信息;

② 管理员经过条件查询后对查询结果处理所得的数据,如生成的本地文件、格式报表等

第六步 联调,一个基本的IDS搭建完毕

以上几步完成之后一个IDS的最基本框架已被实现。但要使这个IDS顺利地运转起来还需要保持各个部分之间安全、顺暢地通信和交互,这就是联调工作所要解决的问题

首先,要实现数据采集分析中心和控制管理中心之间的通信二者之间是双向的通信。控制管理中心显示、整理数据采集分析中心发送过来的分析结果及其他信息数据采集分析中心接收控制管理中心发来的配置、管理等命令。注意确保这二者之间通信的安全性最好对通信数据流进行加密操作,以防止被窃听或篡改同时,控制管理中心的控制台子系统囷数据库子系统之间也有大量的交互操作如警报信息查询、网络事件重建等。

联调通过之后一个基本的IDS就搭建完毕。后面要做的就是鈈断完善各部分功能尤其是提高系统的检测能力。

我要回帖

更多关于 入侵检测系统 的文章

 

随机推荐