CN102831059A - 基于状态层的软件行为建模方法 - Google Patents
基于状态层的软件行为建模方法 Download PDFInfo
- Publication number
- CN102831059A CN102831059A CN2012103035874A CN201210303587A CN102831059A CN 102831059 A CN102831059 A CN 102831059A CN 2012103035874 A CN2012103035874 A CN 2012103035874A CN 201210303587 A CN201210303587 A CN 201210303587A CN 102831059 A CN102831059 A CN 102831059A
- Authority
- CN
- China
- Prior art keywords
- state
- limit
- degree
- sequence
- weights
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明是一种基于状态层的软件行为建模方法。首先,截获软件正常执行时的系统调用序列,利用隐马尔科夫模型(以下简称隐马模型)将系统调用序列转化为状态序列;然后,根据状态序列建立状态转移图;最后,根据软件自身功能,抽取出敏感功能的状态序列,建立局部敏感功能图。该模型从系统调用的基础上抽取出更高层的行为模式,并根据软件的实际执行过程和功能建图,因此对软件行为的描述更加准确完备,存储更加简单,并对图赋予了实际的语义。该模型对软件行为的描述更加准确,隐马判断状态的正确率高达95%以上。
Description
技术领域:
本发明旨在建立软件行为模型,保证行为安全,属于信息安全领域。
背景技术:
软件行为是指软件运行时的表现形态和状态演变过程。软件行为模型就是指根据软件的行为信息建立的行为状态序列以及状态的变迁,可以表征软件的正常行为特征,并用于异常检测。
目前,软件行为的建模方法有静态和动态两种。针对软件行为的静态分析多集中在代码层,直接对源代码进行分析,可以把握程序的循环跳转分支,但静态分析并不能反映软件的真实运行状态,并受到源码不可得和软件抗逆向分析技术等限制。动态分析多集中于系统层的系统调用,是主机入侵检测的研究热点。大部分动态建模从系统调用入手是因为:1)系统调用是操作系统提供给应用程序访问系统资源的接口,所以调用状况在一定程度上能够反映程序的行为特征;2)系统调用序列及其片段数量有限,分析起来比较简便;3)各操作系统的系统调用函数版本间变化非常小,比较稳定。所以目前看来,其为描述软件行为最合适的对象。因此现有研究对软件行为的定义大都围绕系统调用展开,并引申出行为轨迹和功能轨迹的定义来描述软件行为。软件的行为轨迹即系统调用序列。功能轨迹的定义各不相同,但基本上集中于检查点场景和时间戳,有些还会附加内存占用率和CPU使用率。建模的方式大多借鉴入侵检测的建模方法,基于统计学、机器学习、数据挖掘、文本分类、有限状态自动机等方法。动静结合的混合模型越来越多,分析的因素也越来越全面。
现有的建模方法虽然看似全面,但都没有从软件的实际功能出发,不能准确的描述软件行为;过于全面的分析会导致模型复杂,实用性不强,例如动静结合的Dyck模型和HFA模型,包含了控制流分析,数据流分析,上下文和环境变量分析,使得模型过于复杂,实用性不强。
发明内容:
针对上述问题,本发明提出了在系统调用序列的基础上,抽象出状态层,再根据软件的执行过程和自身功能建立状态转移图的建模方法。模型的建立只需截获系统调用序列,简单易行,实用性强。
本发明包括以下步骤:
首先截获软件正常执行时的系统调用序列,本专利借鉴TERESIAS算法和Apriori算法的思想,先对序列进行分组,然后开始第一次扫描,找到出现次数最多的序列模式,记录并将其从序列中删除,之后序列自然分组,继续扫描剩余序列中的频繁序列模式,直到所有序列模式都被找到为止。
然后将找到的序列模式定义为状态,比如序列模式1定义为状态1,具体的对应工作由隐马模型完成。先利用隐马的学习问题为每个序列模式建立一个隐马模型,再利用隐马的评估问题判定状态。
最后根据状态序列建立状态转移图,在建图之前,先给出相关概念和定义。
定义1STG(State transition graph)是一个三元组,STG-{V,E,W}。
■V是图中的节点,即已知状态集。
■E是连接图中节点的有向边的集合,表示任意两个相邻元素之间的关系。
■W是权值,表示某条边出现次数与所有边出现总次数的比值,和集合E中的向量一一对应。
定义2状态距离D(distance)为两个不同状态之间的距离,用以判断两个状态的相似程度。这里比较的是两状态分别对应的系统调用序列,设短的序列为lmin,序列长度为l1,长的序列为lmax,序列长度为l2,先将lmin的第一位与lmax的第一位对齐,处在相同位置的数值如果相同记为0,不同记为1,将记录的值相加之后除以短的序列长度l1,记为R1。然后lmin向后滑动一位,也就是将lmin的第一位与lmax的第二位对齐,再进行一次上述操作,记录R2,直到lmin的末尾与lmax的末尾对齐为止,然后计算
定义3入度in+STG中终止于某顶点的边的权值之和称为该顶点的入度。
定义4出度out-STG中起始于某顶点的边的权值之和称为该顶点的出度。
建图的方法和图论里的方法类似,还要满足以下两条规则:
规则1小概率分支删除规则
建图的时候,删除权值小于0.08的边,如果某个顶点的出度和入度都没有达到0.08,此顶点也一并删除。小概率状态和边的出现可能是由于隐马的误判或者是windows时间片轮转的操作系统导致的,由于其出现的概率非常小,不具有稳定性,不适合用来描述软件行为,其也与异常入侵和病毒的特征不符,不会对检测造成影响,所以将其删除。
规则2等价状态合并规则
两状态之间如果存在边,且距离D小于0.5可以合并。合并过程如下:
■顶点:顶点由两个变成一个
■边:两状态之间的边直接删除,两状态与其他状态之间的边保留。
■权值:因其与边相对应,所以如果保留了两条相同的边,则将其权值相加,只保留一条同样的边即可。
■入度:为合并之前两状态的入度之和减去两状态之间的边的权值。
■出度:为合并之前两状态的出度之和减去两状态之间的边的权值。
状态图根据推导出的状态序列以及规则1和2直接生成,其中包括状态和状态之间的路径,不用记录权值。局部敏感功能是指类似于建立连接或者是登陆这些特殊的功能。这种功能本身并无异常,但是大量的操作就可能是攻击或者恶意行为。所以局部敏感功能图单独建立,建图方法与状态转移图的建立方法一样,需要记录权值,其中包括状态、路径和权值。
本文从实用性的角度出发,描述软件行为的实际运行流程,并结合软件自身功能,实现软件局部敏感行为图的提取。优点如下:
1.状态层的抽象和提取使得软件行为的描述更加准确,存储更加简洁;图的建立准确完备地再现了软件行为的执行过程,可以有效的检测异常行为。
2.只需从实际运行的软件中获取系统调用,操作简单,实用性强。
3.结合软件实际功能建图,可以有效的防止Dos攻击和一些非法输入攻击。
附图说明
图1是本发明实现基于状态层的软件行为建模方法的流程图。
图2是本发明建图过程。
具体实施方式
下面结合附图1具体介绍本发明的实现方法的步骤:
参见附图1,本发明是一种基于软件行为状态和状态转移规则的建模方案。该方案包含三个模块,即1序列模式挖掘模块、2隐马状态判定模块、3状态转移图生成模块。具体实现方法和步骤如下:
首先进入序列模式挖掘模块。在正常状态下大量运行该软件,截获系统调用,将其数值化,对数值化后的序列进行序列模式挖掘。该挖掘算法借鉴Teresias算法和Apriori算法的思想,第一遍扫描时找到出现次数最多的序列模式,将其删除,剩下的序列自然分组,再找出余下序列中出现次数最多的序列,直到所有的序列模式都被找到为止。比如,一串序列123435563512345635123456351234。第一遍扫描,找到1234出现4次,将其删除,剩下355635|5635|5635,第二次扫描找到5635出现3次,将其删除,最后剩下35。因此得到三个序列模式1234、5635、35。
将序列模式1234定义为状态1,5635定义为状态2,35定义为状态3。然后进入隐马状态判定模块,该模块是一个先学习后判定的过程。学习时将序列模式作为观测序列训练隐马模型,例如序列模式1234为观测序列1,相应的状态1为隐状态1,训练生成隐马模型HMM1,同样的方法利用序列模式5635和35训练出HMM2和HMM3。然后将待判定系统调用分组送入HMM模型进行评估,比如一组待判定序列1234,HMM1的评估值为-0.85,HMM2的评估值为-15.52,HMM3的评估值为-9.49,由于HMM1的评估值最大,序列1234被判为状态1。
系统调用序列转化为状态序列后,就进入了状态图生成模块。利用图论的建图方法和既定规则生成状态图,例如一串状态序列13434521343453134345134345134345134345134345,建图过程如图2所示,该序列共包含5个状态,所以顶点集V={1,2,3,4,5},共包含9条边,所有边出现的总次数为43,其中状态1到状态3出现了7次,因此状态1到状态3 对应边的权值为7/43=0.16,由此生成第一幅图,然后执行规则1,删除权值小于0.08的边,从第一幅图上可以看出,有四条边被删除,得到第二幅图,继而执行规则2,我们发现状态4对应的序列为12343423,状态5对应的序列为1234323,如表1所示,计算状态距离,开始时相同位置有2处不同数值,记录2/7,状态5后移一位,相同的位置有5处不同数值,记录5/7,最后计算 两状态之间的距离D=0.38<0.5,所以将状态4和状态5合并,首先是顶点的合并,只保留一个状态,然后删除两状态之间的路径,没有发现要合并的权值,继而得到第三幅图,这时合并后的顶点出度为0.32+0.12-0.16=0.28,入度为0.32+0.16-0.16=0.32,最后删除第三幅图中的权值,状态图就建好了。建立局部敏感功能图时,先截获程序执行敏感功能时的系统调用序列,然后生成状态序列,之后的建图方法和图2中的方法一样,该图保留权值。
图建好后,模型建立完毕。该模型存储非常简洁,无论处理的数据量有多大,最终需要存储在txt文档里的每张图的大小只有1-2kb。该模型对软件行为的描述非常准确,隐马判断状态的正确率高达95%以上。
表1
Claims (1)
1.基于状态层的软件行为建模方法,其特征在于;包括以下步骤:
首先进行序列模式的提取:截获软件正常执行时的系统调用序列,挖掘出所有序列模式;
然后进行状态层的推导:先利用隐马模型的学习问题为每个序列模式建立一个隐马模型,再利用隐马的评估问题判定状态;
最后根据状态序列建立状态转移图:在建图之前,先给出相关概念和定义;
定义1STG是一个三元组,STG={V,E,W};
V是图中的节点,即已知状态集,
E是连接图中节点的有向边的集合,
W是权值,表示某条边出现次数与所有边出现总次数的比值,
定义2状态距离D:为两个不同状态之间的距离,用以判断两个状态的相似程度;
两状态分别对应的系统调用序列,设短的序列为lmin,序列长度为l1,长的序列为lmax,序列长度为l2,先将lmin的第一位与lmax的第一位对齐,处在相同位置的数值如果相同记为0,不同记为1,将记录的值相加之后除以短的序列长度l1,记为R;然后lmin向后滑动一位,也就是将lmin的第一位与lmax的第二位对齐,再进行一次上述操作,记录R2,直到lmin的末尾与lmax的末尾对齐为止,然后计算
定义3入度in+STG中终止于某顶点的边的权值之和称为该顶点的入度;
定义4出度out-STG中起始于某顶点的边的权值之和称为该顶点的出度;
建图的方法和图论里的方法相同,还要满足以下两条规则:
规则1小概率分支删除规则
建图的时候,删除权值小于0.08的边,如果某个顶点的出度和入度都没有达到0.08,此顶点也一并删除;
规则2等价状态合并规则
两状态之间如果存在边,且距离D小于0.5可以合并;合并过程如下:
顶点:顶点由两个变成一个
边:两状态之间的边直接删除,两状态与其他状态之间的边保留;
权值:因其与边相对应,所以如果保留了两条相同的边,则将其权值相加,只保留一条同样的边即可;
入度:为合并之前两状态的入度之和减去两状态之间的边的权值;
出度:为合并之前两状态的出度之和减去两状态之间的边的权值;
状态图根据推导出的状态序列以及规则1和2直接生成,包括状态和状态之间的路径,
局部敏感功能图单独建立,建图方法与状态转移图的建立方法一样,需要记录权值,其中包括状态、路径和权值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103035874A CN102831059A (zh) | 2012-08-23 | 2012-08-23 | 基于状态层的软件行为建模方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103035874A CN102831059A (zh) | 2012-08-23 | 2012-08-23 | 基于状态层的软件行为建模方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102831059A true CN102831059A (zh) | 2012-12-19 |
Family
ID=47334208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012103035874A Pending CN102831059A (zh) | 2012-08-23 | 2012-08-23 | 基于状态层的软件行为建模方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102831059A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744786A (zh) * | 2014-01-16 | 2014-04-23 | 北京工业大学 | 基于软件功能层对软件异常行为溯源的方法 |
CN104766016A (zh) * | 2015-04-14 | 2015-07-08 | 北京理工大学 | 一种基于系统调用短序列的软件漏洞检测方法 |
CN105528286A (zh) * | 2015-09-28 | 2016-04-27 | 北京理工大学 | 一种基于系统调用的软件行为评估方法 |
CN108268429A (zh) * | 2017-06-15 | 2018-07-10 | 广东神马搜索科技有限公司 | 网络文学章节的确定方法和装置 |
CN112256801A (zh) * | 2020-10-10 | 2021-01-22 | 深圳力维智联技术有限公司 | 抽取实体关系图中关键实体的方法、系统和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968769A (zh) * | 2010-10-22 | 2011-02-09 | 中国人民解放军理工大学 | 一种基于行为模型的软件安全性测试用例生成方法 |
CN102508645A (zh) * | 2011-09-23 | 2012-06-20 | 武汉大学 | 一种面向行为的软件需求模型可视化方法 |
CN102768638A (zh) * | 2012-05-18 | 2012-11-07 | 北京工业大学 | 基于状态转移图的软件行为可信性检测方法 |
-
2012
- 2012-08-23 CN CN2012103035874A patent/CN102831059A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968769A (zh) * | 2010-10-22 | 2011-02-09 | 中国人民解放军理工大学 | 一种基于行为模型的软件安全性测试用例生成方法 |
CN102508645A (zh) * | 2011-09-23 | 2012-06-20 | 武汉大学 | 一种面向行为的软件需求模型可视化方法 |
CN102768638A (zh) * | 2012-05-18 | 2012-11-07 | 北京工业大学 | 基于状态转移图的软件行为可信性检测方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744786A (zh) * | 2014-01-16 | 2014-04-23 | 北京工业大学 | 基于软件功能层对软件异常行为溯源的方法 |
CN104766016A (zh) * | 2015-04-14 | 2015-07-08 | 北京理工大学 | 一种基于系统调用短序列的软件漏洞检测方法 |
CN104766016B (zh) * | 2015-04-14 | 2018-01-09 | 北京理工大学 | 一种基于系统调用短序列的软件漏洞检测方法 |
CN105528286A (zh) * | 2015-09-28 | 2016-04-27 | 北京理工大学 | 一种基于系统调用的软件行为评估方法 |
CN108268429A (zh) * | 2017-06-15 | 2018-07-10 | 广东神马搜索科技有限公司 | 网络文学章节的确定方法和装置 |
CN108268429B (zh) * | 2017-06-15 | 2021-08-06 | 阿里巴巴(中国)有限公司 | 网络文学章节的确定方法和装置 |
CN112256801A (zh) * | 2020-10-10 | 2021-01-22 | 深圳力维智联技术有限公司 | 抽取实体关系图中关键实体的方法、系统和存储介质 |
CN112256801B (zh) * | 2020-10-10 | 2024-04-09 | 深圳力维智联技术有限公司 | 抽取实体关系图中关键实体的方法、系统和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhou et al. | Classification of rockburst in underground projects: comparison of ten supervised learning methods | |
Fang et al. | A deep learning-based method for detecting non-certified work on construction sites | |
Jana et al. | YOLO based Detection and Classification of Objects in video records | |
CN101359352B (zh) | 分层协同的混淆后api调用行为发现及其恶意性判定方法 | |
CN102831059A (zh) | 基于状态层的软件行为建模方法 | |
Luo et al. | A novel intrusion detection system based on feature generation with visualization strategy | |
CN102768638B (zh) | 基于状态转移图的软件行为可信性检测方法 | |
CN102682229B (zh) | 一种基于虚拟化技术的恶意代码行为检测方法 | |
CN111753303B (zh) | 一种基于深度学习和强化学习的多粒度代码漏洞检测方法 | |
CN104680557A (zh) | 视频序列图像中的异常行为智能检测方法 | |
CN111931179B (zh) | 基于深度学习的云端恶意程序检测系统及方法 | |
CN104424354A (zh) | 使用用户操作生成模型检测异常用户行为的方法和系统 | |
CN103679030B (zh) | 一种基于动态语义特征的恶意代码分析检测方法 | |
CN105550594A (zh) | 安卓应用文件的安全性检测方法 | |
CN102034042A (zh) | 基于函数调用关系图特征的恶意代码检测新方法 | |
CN101727391B (zh) | 一种软件漏洞特征操作序列的提取方法 | |
CN103116540A (zh) | 基于全局超级块支配图的动态符号执行方法及其装置 | |
CN104462979A (zh) | 一种应用程序的自动化动态检测方法及装置 | |
CN102324007B (zh) | 基于数据挖掘的异常检测方法 | |
CN113158189B (zh) | 一种恶意软件分析报告生成方法、装置、设备和介质 | |
CN115906000A (zh) | 基于多传感器融合的挖掘大块检测方法及其系统 | |
CN105787365A (zh) | 一种恶意应用程序的检测方法及装置 | |
CN105989287A (zh) | 一种海量恶意样本同源性判定方法及系统 | |
CN106650446A (zh) | 基于系统调用的恶意程序行为识别方法和系统 | |
Raffaelli et al. | Facing ADAS validation complexity with usage oriented testing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121219 |