掌桥专利:专业的专利平台
掌桥专利
首页

应用程序的入侵检测方法

文献发布时间:2023-06-19 10:54:12


应用程序的入侵检测方法

技术领域

本发明涉及计算机领域,特别涉及一种应用程序的入侵检测方法。

背景技术

容器是将进程和文件系统抽象为独立与内核的单个单元的方法,它提供一个 轻量级的虚拟环境,将一组进程和资源(如内存、CPU、磁盘等)与主机和任何 其他容器进行分组和隔离。Docker是容器技术的一个例子。通过使用控制组和安 全组件,可以最小化攻击面,但是,对容器中运行的应用程序的攻击仍然有可能 发生,随着容器在个人和工业用途中的吸引力越来越大,越来越多的关键任务集 成到了容器中,因此恶意攻击的实时检测显得尤为重要。

现有的对系统调用的异常检测常用两种基本方法:基于序列的方法和基于频 率的方法。前者要求系统调用序列完全有序,有较差的准确率和较高的存储要求, 后者忽略系统的调用顺序,使得基于频率的技术需要更少的存储空间和更好的性 能,但也使得误报率大大增加。

发明内容

发明目的:本发明的目的是提出一种应用程序的入侵检测方法,可以在保证 需要较少的存储空间的同时,具有较高的准确率及误报率。

技术方案:本发明所述的应用程序的入侵检测方法,包括如下步骤:

步骤100:有序调取系统调用记录,生成实时系统调用列表;

步骤200:采用N-Gram算法将实时系统调用列表分成多个字节片段,并根 据每条系统调用记录中出现的字节片段的种类及频次生成系统调用包;

步骤300:根据正常行为数据库和异常行为数据库,通过分类算法对系统调 用包进行预分类,统计每个属于异常行为的系统调用包的频次是否超过规定值, 并根据统计结果更新正常行为数据库及异常行为数据库。

进一步的,所述步骤300中的正常行为数据库和异常行为数据库,由以下步 骤训练生成:

步骤400:当操作执行完毕,系统调用停止新增时,调取所有的系统调用记 录并生成系统调用列表副本;

步骤410:采用N-Gram算法将系统调用列表副本分成多个字节片段,并统 计每个字节片段的出现频次;

步骤420:取所有字节片段中出现频次排名前N的字节片段,依据出现频次 为每个字节片段标记索引1至N生成字节片段索引表,在字节片段索引表的末尾 增加索引N+1用于对应所有未出现在字节片段索引表内的字节片段,其中N为 大于0的自然数;

步骤430:根据已知的正常行为及异常行为将系统调用列表副本分为正常行 为样本及异常行为样本,并根据正常行为样本及异常行为样本中每条调用记录中 出现的字节片段的种类及频次生成系统调用包,统计正常行为样本中的调用记录 生成的系统调用包及其出现频次构建正常行为数据库,统计异常行为样本中的调 用记录生成的系统调用包的种类及频次构建异常行为数据库。

进一步的,所述步骤200及所述步骤430中的系统调用包都根据所述步骤420 中的字节片段索引表生成,系统调用包的结构为<k

进一步的,所述步骤300包括:

步骤310:根据正常行为数据库和异常行为数据库,通过分类算法对系统调 用包进行预分类;

步骤320:将属于正常行为的系统调用包直接存入到正常行为数据库中,将 属于异常行为的系统调用包暂存;

步骤330:统计每个属于异常行为的系统调用包的出现频次,将出现频次高 于规定值的属于异常行为的系统调用包存入到异常行为数据库,并发出异常提醒, 将出现频次等于或低于规定值的属于异常行为的系统调用包存入到正常行为数据 库。

进一步的,所述步骤300中的分类算法包括K最近邻算法。

进一步的,所述步骤300中的正常行为数据库及异常行为数据库的数据格式 为,其中BoSC表示系统调用包,value表示该系统调用包的出现频 次。

有益效果:与现有技术相比,本发明具有如下优点:

1、采用N-Gram算法对系统调用记录进行分组,降低算法对存储空间的要求。

2、检测过程中不断更新正常行为数据库及异常行为数据库,提高检测准确率。

3、采用K最近邻算法作为分类算法,训练时间复杂度低。

附图说明

图1为本发明的第一实施例的应用程序的入侵检测方法的流程图;

图2为本发明的实施例的数据库的训练过程的流程图;

图3为本发明的第二实施例的应用程序的入侵检测方法的流程图。

具体实施方式

下面结合附图对本发明的技术方案作进一步说明。

参照图1,根据本发明实施例的应用程序的入侵检测方法,具体包括如下步 骤:

步骤100:有序调取系统调用记录,生成实时系统调用列表;

步骤200:采用N-Gram算法将实时系统调用列表分成多个字节片段,并根 据每条系统调用记录中出现的字节片段的种类及频次生成系统调用包;

步骤300:根据正常行为数据库和异常行为数据库,通过分类算法对系统调 用包进行预分类,统计每个属于异常行为的系统调用包的频次是否超过规定值, 并根据统计结果更新正常行为数据库及异常行为数据库。

根据上述技术方案的应用程序的入侵检测方法,通过N-Gram算法将调取了 的有序系统调用记录分成多个字节片段,并统计每种字节片段出现的频次,根据 每条系统调用记录中每种字节片段出现的频次生成系统调用包,降低了算法对存 储空间的要求。同时在每次检测后,根据检测结果将本次检测中的属于正常行为 的系统调用包及属于异常行为的系统调用包分别存储到正常行为数据库及异常行 为数据库,对正常行为数据库及异常行为数据库进行更新。这样经过多次上述检 测过程后,根据正常行为数据库和异常行为数据库通过分类算法对系统调用包的 分类会越来越准确,是上述入侵检测方法再对存储空间有较小的要求的同时还能 具有较高的准确率。

在本实施例中,以检测Linux系统中的Docker应用程序为例,每次检测时, 使用Linux系统自带的系统调用跟踪命令strace跟踪Docker进程产生的系统调用, 过滤掉参数,返回值,执行消耗的时间等,生成系统调用记录。并对系统调用记 录采用N-Gram算法中的Bi-Gram算法对系统调用记录进行分组,即分成的每个 字节片段均包含两个有序的系统调用。可以理解的是,实际使用时,可以根据实 际情况选择其他N-Gram算法,如Tri-Gram等,每次检测调用的系统调用的条数 也应根据实际情况选取合适的值。

参照图2,在一些实施例中,分类算法使用的正常行为数据库和异常行为数 据库由以下步骤训练生成:

步骤400:当操作执行完毕,系统调用停止新增时,调取所有的系统调用记 录并生成系统调用列表副本;

步骤410:采用N-Gram算法将系统调用列表副本分成多个字节片段,并统 计每个字节片段的出现频次;

步骤420:取所有字节片段中出现频次排名前N的字节片段,依据出现频次 为每个字节片段标记索引1至N生成字节片段索引表,在字节片段索引表的末尾 增加索引N+1用于对应所有未出现在字节片段索引表内的字节片段,其中N为 大于0的自然数;

步骤430:根据已知的正常行为及异常行为将系统调用列表副本分为正常行 为样本及异常行为样本,并根据正常行为样本及异常行为样本中每条调用记录中 出现的字节片段的种类及频次生成系统调用包,统计正常行为样本中的调用记录 生成的系统调用包及其出现频次构建正常行为数据库,统计异常行为样本中的调 用记录生成的系统调用包的种类及频次构建异常行为数据库。

可以理解的是,在训练正常行为数据库及异常行为数据库时,是采用N-Gram 算法对截止至某次系统调用停止时的所有系统调用进行分组,而在检测过程中则 是对实时调取的一定数量的系统调用记录进行分组。

在本实施例中,字节片段索引表中N为19,即表中共有20条记录,前19 条为系统调用记录中出现频次排名前19的系统调用包,第20条则表示其余的所 有不包括于上面19个系统调用包的系统调用包。的结构如表1所示。

以系统调用序列[access,access,openat,fstat,mmap,close,access,open at,read,fstat,mmap,mmap]、[access,openat,fstat,mmap,close,access,o penat,read,fstat,mmap,mmap,close]、[openat,fstat,mmap,close,acces s,openat,read,fstat,mmap,mmap,close,access]、[fstat,mmap,close,a ccess,openat,read,fstat,mmap,mmap,close,access,openat]、N-gram中 N取值为2为例,可得表1字节片段索引。

表1字节片段索引表

在一些实施例中,步骤200及步骤430中的系统调用包都根据步骤420中的 字节片段索引表生成,系统调用包的具体结构为<k

参照表2,在一些实施例中,正常行为数据库及异常行为数据库中的数据结 构包为,其中BoSC表示系统调用包,value表示该系统调用包的出 现频次。

表2行为数据库结构

参照图3,在一些实施例中,步骤300包括如下步骤:

步骤310:根据正常行为数据库和异常行为数据库,通过分类算法对系统调 用包进行预分类;

步骤320:将属于正常行为的系统调用包直接存入到正常行为数据库中,将 属于异常行为的系统调用包暂存;

步骤330:统计每个属于异常行为的系统调用包的出现频次,将出现频次高 于规定值的属于异常行为的系统调用包存入到异常行为数据库,并发出异常提醒, 将出现频次等于或低于规定值的属于异常行为的系统调用包存入到正常行为数据 库。

可以理解的是,在步骤330中,当本次检测过程中调取的200条系统调用序 列中,某一属于异常行为的系统调用包出现的频次高于预设的规定值,就发出异 常提醒,并将该系统调用包存入到异常行为数据库中。若该系统调用包已经存在 于异常行为数据库中,则将本次检测过程出现的频次加到异常行为数据库中该系 统调用包对应的value值上。若该系统调用包不存在于异常行为数据库内,则以 的形式存于异常行为数据库中,并赋值value为1。正常行为数据库 的更新同理。通过上述行为数据库的更新方法,随着检测次数的增多,行为数据 库会越来越完善,检测方法的准确率也会越来越高。

在一些实施例中,步骤300中的分类算法采用K最近邻算法,即从正常行为 数据库及异常行为数据库中选择出与被分类的系统调用包结构最相似的K条数 据,若这K条数据中属于正常行为数据库的较多则该系统调用包属于正常行为, 若这K条数据中属于异常行为数据库的较多则该系统调用包属于异常行为。可以 理解的是,从正常行为数据库及异常行为数据库中选取的数据条数K应为奇数。 K最近邻算法属于基于实例的学习的分类算法,没有显示的学习过程,训练时间 复杂度低且准确率高。

相关技术
  • 应用程序的入侵检测方法
  • 入侵识别模型生成方法、入侵识别模型、入侵检测方法
技术分类

06120112722312