CN105956468B - 一种基于文件访问动态监控的Android恶意应用检测方法及系统 - Google Patents
一种基于文件访问动态监控的Android恶意应用检测方法及系统 Download PDFInfo
- Publication number
- CN105956468B CN105956468B CN201610256541.XA CN201610256541A CN105956468B CN 105956468 B CN105956468 B CN 105956468B CN 201610256541 A CN201610256541 A CN 201610256541A CN 105956468 B CN105956468 B CN 105956468B
- Authority
- CN
- China
- Prior art keywords
- file
- access
- application
- indicates
- android
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于文件访问动态监控的Android恶意应用检测方法及系统,利用动态加载内核模块技术修改Android内核;点击应用的不同组件,收集运行过程中的所有文件访问操作,形成原始文件访问记录INI及其属性值;以文件访问周期为单位做整理,形成整理后的文件PRE及其属性值;定制文件访问策略集S,Q,U,S表示无时序策略集,Q表示单文件时序策略集,U表示多文件时序策略集,判别是否触发敏感行为,最终判断是否为恶意应用。
Description
技术领域
本发明涉及一种Android恶意应用动态检测方法,确切的说,涉及一种基于Linux内核文件访问规则的恶意行为检测方法,属于信息安全技术领域。
背景技术
随着现有的Android智能终端的普及,人们对Android智能终端的依赖性快速增强,基于终端的应用日益多样化同时也更加难以掌控。大量的终端软件和应用也意味着大量的安全风险,针对终端设备的各类攻击从2004年之后就开始出现。目前Android智能终端面临的安全威胁和安全风险主要包括三个方面:一是自身系统和软件的漏洞;二是恶意软件(病毒,木马等);三是出现违反国家法律的内容和服务。具体可能存在的安全隐患包括:个人隐私泄露,个人身份盗用,应用程序安全,位置定位,手机病毒,信息窃取,存在安全漏洞的业务等。
国内外针对Android系统恶意程序的检测跟防护主要有两种,即静态代码分析和动态行为分析。其中静态代码分析主要是通过Google等提供的开源工具,从恶意程序中提取若干具有特征性的代码作为描述恶意行为的表现形式,并依靠该方法构建起病毒库来防范恶意程序。静态代码分析虽然简单高效,但是具有较大滞后性,并且要鉴别隐藏或者尚未发作的恶意程序无能为力。动态行为分析方面,国内的联想的乐安全以及LBE团队研发的LBE手机安全大师通过研究Android系统的组织架构和应用程序行为特征,实现API拦截的主动防御功能,是目前动态行为分析方面的佼佼者,但监控和防御的方位也仅限于对应用的进程外部行为监控,并且对于更改so库的文件与更改执行时更改.dex文件的恶意应用无可奈何。
综上所述,Android应用在人们的生活中发挥着重要的作用,而Android恶意应用软件检测的方法还不够成熟,为此,如何全面有效的对Android恶意应用软件进行检测就成为业内科研人员所关注的新课题。
发明内容
鉴于此,本发明的一个目的是提供一种基于文件访问动态监控的Android恶意应用检测方法,通过修改Android内核源码使得应用在Android手机上运行时可以输出相应的文件访问信息列表,将该列表与策略集相比对最终判断是否触发敏感行为,进而判断是否为恶意应用。从而达到监控敏感文件的修改,删除,以及各种敏感行为所涉及到的文件操作。
本发明的另一个目的在于提供一种细粒度的Android恶意应用检测系统。该系统主要对目前Android应用动态检测方法做功能以及能力上的补充增强,弥补其不能检测.dex文件修改以及so库文件恶意代码注入的不足。将监控点部署在内核层的文件操作相关的系统调用上,使得恶意代码利用代码混淆,重打包以及恶意代码注入等方式都无法逃过内核层的检测,从而提高检出率。
为了达到上述目的,本发明采用如下技术方案——基于文件访问动态监控的Android恶意应用检测方法,包括如下步骤:
步骤S01:基于Android内核结构,利用动态加载内核模块技术(Loadable KernelModule,LKM)加载修改过的文件系统,更换原系统调用列表,使待测应用在运行过程受到监控,得到修改过的Android内核;
步骤S02:定制文件访问策略集S,Q,U,S表示无时序策略集,Q表示单文件访问时序策略集,U表示多文件访问时序策略集;
步骤S03:在步骤S01修改过的Android内核上运行待测应用,点击应用的不同组件,收集运行过程中的所有文件访问操作,形成原始文件访问记录INI及其属性值;
步骤S04:对形成的原始文件访问记录INI,进行初步的数据清洗,将无用的文件操作去除,得到去噪后的INI’文件,以保证文件系统的运行效率;
步骤S05:将去噪后的INI’按照文件访问周期整理,形成新的记录文件PRE及其属性值;
步骤S06:将步骤S05整理后的记录文件PRE与步骤S02制定的文件访问策略集S,Q,U匹配,判别是否触发敏感行为,最终判断是否为恶意应用,若判定文件PRE匹配文件访问策略集S,Q,U中的任意一条,则认为该应用触发了敏感行为,为恶意应用,否则认为该应用为安全应用。
所述步骤S01中动态加载内核模块技术的步骤如下:
(1.1)找到
sys_open(),sys_close(),sys_read(),sys_write(),sys_unlink()这五个系统调用在原系统调用列表中的入口地址;sys_open(),sys_close(),sys_read(),sys_write(),sys_unlink()分别表示打开文件,关闭文件,读文件,写文件,删除文件;
(1.2)将步骤(1.1)所找到的入口地址保存,即为这五个系统调用的旧入口地址;
(1.3)将自定义新的函数所对应的入口地址写入原系统调用列表中步骤(1.2)所保存的位置处。至此原系统调用列表就被替换。
所述步骤S02中定制的文件访问策略集S,Q,U如下:
(2.1)无时序策略集S
S={s1,s2,...sm...}
其中任意策略sm表示为如下二元组形式:
sm=<MalBehaviorName,Rules>
MalBehaviorName为策略匹配成功后,待测应用携带的恶意行为的名称,Rules为原子级匹配规则r的无序集合,其中r可表示为如下三元组形式:
r=<SubjectProcess,ObjectFile,OpTypes>
其中SubjectProcess为进程主体,代表某一进程名,ObjectFile为文件客体,代表文件名称的正则表达式,可与android文件系统中的各文件绝对路径匹配,代表一个文件集,OpType为文件访问操作集合,其形式为{create,touch,modify,delete}四种操作集合的一个非空子集,其中create表示新建一个文件目录,touch表示打开已有文件但未更改,modify表示打开已有文件并更改,delete表示删除文件。
每一条规则r表示的意思为,待测应用执行期间,根据底层监控,如果发现存在某个进程主体SubjectProcess采用OpTypes中的任意一种操作方式,操作了ObjectFiles对应的文件集合中的任意一个文件,则认为该应用触发了规则r。
策略sm表示的意思为,待测应用执行期间,触发了其规则集合Rules中的每一条规则r,则认为该应用携带了恶意行为MalBehaviorName.
(2.2)单文件时序策略集Q
Q={q1,q2,...qm,...}
其中任意策略qm表示为一个二元组,形式化如下:
qm=<MalBehaviorName,Qrules>
MalBehaviorName为策略匹配成功后,认为待测应用携带的恶意行为的名称,Qrules为原子级时序规则qr的集合,其中qr由四元组形式化表示:
qr=<SubjectProcess,ObjectFile,OpTypes,Pset>
其中SubjectProcess为进程主体,ObjectFile为文件客体,OpType为文件访问操作集合,定义同S中的原子级匹配规则r。Pset为一个谓词集合,其中的每一个谓词P(opduration,t)为关于操作持续时间opduration和某个时间常量t的谓词,表示操作持续时间的一个时间约束。如Pset={opdurations>5us,opduration<10us}中的两个谓词公式opdurations>5us opduration<10us都为真时表示操作持续时间opduration大于5微秒,且小于10微秒。
每一条规则qr表示的意思为,待测应用执行期间,根据底层监控,如果发现存在某个进程主体SubjectProcess采用opTypes中的任意一种操作方式,操作了ObjectFiles对应的文件集合中的任意一个文件,且操作持续时间满足Pset中的所有谓词公式约束,则认为该应用触发了规则qr。
单文件时序策略qm表示的意思为,待测应用执行期间,触发了其规则集合qrules中的每一条规则qr,则认为该应用携带了恶意行为MalBehaviorName.
(2.3)多文件时序策略集U
U={u1,u2,...um...}
其中任意策略um表示为二元组形式:
um=<MalBehaviorName,Urules>
MalBehaviorName为策略匹配成功后,认为待测应用携带的恶意行为的名称,Urules为一条原子级多文件时序匹配规则的集合{ur1,ur2,...uri,...},Urules中的任意一条原子级多文件时序匹配规则形式化表示为一个三元组:
uri=<r1,r2,DPset>
其中r1,r2为两条原子级匹配规则,其定义同S中原子级匹配规则r。DPset为一个谓词集合,其中的每一个谓词P为关于操作持续时间opduration1,opduration2,操作开始时间opstart1,opstart2,操作结束时间opstop1,opstop2中的一个或多个变量与某个时间常量t的谓词,表示r1,r2相关操作持续时间之间的一个时间约束。
如:DPset={opstart1<opstart2,opclose1>opclose2,opstart2-opstart1<10us,
opclose2-opclose1<10us,opduration1>20us,opduration>20us}中含有6个谓词公式其都为真时表示存在某一r1类型操作,和一个r2类型操作,满足以下约束:
opstart1<opstart2:r1文件操作开始的时间opstart1早于r2文件操作开始时间opstart2
opclose1>opclose2:r1文件操作结束的时间opstart1早于r2文件操作结束时间opstart2
opstart2-opstart1<10us:r1文件操作开始后10us内r2文件操作才开始
opclose2-opclose1<10us:r1文件操作结束后10us内r2文件操作便结束
opduration1>5s:r1文件操作持续时间长于5s
opduration2>5s:r2文件操作持续时间长于5s
每一条规则uri表示的意思为,待测应用执行期间,根据底层监控,如果发现存在某个r1类型操作,和一个r2类型操作,他们各自的操作持续时间满足DPset中的所有谓词公式约束,则认为该应用触发了规则uri。
策略um表示的意思为,待测应用执行期间,触发了其规则集合Urules中的每一条规则uri,则认为该应用携带了恶意行为MalBehaviorName。
所述步骤S03中原始文件访问记录INI的过程如下:
(3.1)原始文件访问记录INI的基本形式如下:
INI={T1,T2...Ti...}
其中Ti为任意一条文件操作记录;
(3.2)为步骤(1.1)中形成的原始文件访问记录INI基本形式配置属性,Ti是一个八元组形式,表示如下:
Ti=<Type,FileName,Time,Pid,PidName,Mode,Fd,Md5>
其中Type为文件操作类型,其语法可表示为如下形式:
Type={Open|Close|Read|Write|Delete|Create}
选择五种操作中的任意一个,Open表示打开文件,Close表示关闭文件,Read表示读取文件,Write表示写文件,Delete表示删除文件,Create表示创建新文件。
FileName表示被访问的文件名称,形式为/一级目录/二级目录/...
Time表示访问时间,精确到秒
Pid表示操作文件的进程号
PidName表示进程名称,指某一进程号对应的进程名称
Mode表示文件打开方式,语法形式如下:Mode={0|!0}其中mode=0表示该文件为已有文件,mode=!0时表示该文件为新建文件
Fd表示文件描述符,是文件操作过程中的唯一标识
Md5表示当前文件对应的一个哈希值。
所述步骤S05中周期文件PRE,形式化如下:其中Pi表示任意一条周期记录:
PRE={P1,P2...Pi...}
对周期文件PRE配置属性:
其中Pi表示任意一条周期记录,其具体内容可以表示为一个六元组,如下:
Pi={cPidName,cFileName,cType,cStart,cStop,cDuration}
cPidName表示进程名称
cFileName表示被访问的文件名称
cType={delete|create|mod ify|touch}表示在这个文件访问周期中涉及的文件操作。create表示在文件访问周期内某进程新建了一个文件,touch表示在文件访问周期内,某进程打开一个已有的文件但未做修改,modify表示在文件访问周期内,某进程打开一个已有文件并做了修改,可通过判断该周期中open与close操作时文件的MD5值是否相同来判定是否修改,若不同认为进程更改了该文件.delete表示在文件访问周期内,某进程删除了文件。
cStart表示文访问件周期开始的时间,即该周期中open操作的时间
cStop表示文件访问周期结束的时间,即该周期中close操作的时间
cDuration表示该进程对某一文件操作的持续时间,即cStop-cStart
本发明还提出了基于文件访问动态监控的Android恶意应用检测系统,如图1所示,包括:
内核加载模块,用于将修改过的文件模块加载到内核,为运行待测应用准备测试环境,即基于Android内核结构,利用动态加载内核模块技术(Loadable Kernel Module,LKM)加载修改过的文件系统,更换原系统调用列表,使待测应用在运行过程受到监控,得到修改过的Android内核;
策略定制模块,用于定制文件操作策略集S,Q,U,S表示无时序策略集,Q表示单文件时序策略集,U表示多文件时序策略集。
数据分析模块,在内核加载模块修改过的手机上运行待测应用,记录待测应用运行过程中的所有文件操作记录,整理,形成INI文件与PRE文件,包括数据收集,数据清洗,数据规整三个步骤;将在内核加载模块修改过的Android内核上运行待测应用,点击应用的不同组件,收集运行过程中的所有文件访问操作,形成原始文件访问记录INI及其属性值;对形成的原始文件访问记录INI,进行初步的数据清洗,将无用的文件操作去除,得到去噪后的原始文件访问记录INI,以保证文件系统的运行效率;将去噪后的原始文件访问记录INI记录以文件访问周期为单位做整理,形成整理后的文件PRE及其属性值;
策略判定模块,将数据分析模块形成整理后的文件PRE与策略定制模块所制定的文件访问策略集S,Q,U匹配,判别是否触发敏感行为,最终判断是否为恶意应用,若判定文件PRE匹配文件访问策略集S,Q,U中的任意一条,则认为该应用触发了敏感行为,为恶意应用,否则认为该应用为安全应用。
所述INI与PRE是Android系统维护在内存的数据结构,会随着组件的运行动态变化,除了记录文件操作自身结构之外,还记录文件操作的访问时间、打开方式各项属性值。
本发明与现有技术相比的优点在于:
(1)本发明中修改了内核文件操作相关的系统调用,使得任何形式恶意代码注入(如SO库注入等)都无法绕过该方法的监控。与传统技术相比,这种方法可以更加全面,准确的检测是否有恶意行为触发。从而提高检出率
(2)在数据分析模块中,本发明以文件访问周期作为单位对文件记录进行整理,可以快速有效的将凌乱的文件记录做整合,从而提高检测效率,来保证测试的完整性。
附图说明
图1为本发明实施例基于文件访问动态监控的Android恶意应用检测系统示意图;
图2为本发明实施例中基于文件访问动态监控的Android恶意应用检测方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图2所示,是本发明实施例基于文件访问动态监控的Android恶意应用检测方法流程示意图。现将例举实施例,对本发明的方法进行详细的说明,本发明的基于文件访问动态监控的Android恶意应用检测方法主要涉及以下六个环节:
步骤S01:基于Android内核结构,利用动态加载内核模块(Loadable KernelModule,LKM)技术加载修改过的文件系统,更换系统调用列表,使待测在应用运行过程受到监控。因为Android内核是基于Linux设计的所以可以借用已经成熟的Linux动态加载模块的方法为Android内核加载所需的内核模块.而sys_open(),sys_close(),sys_read(),sys_write(),sys_unlink()这五个系统调用作为访问文件资源的唯一入口,如果被截获将对判断待测应用的文件访问行为其着重要的作用。1.在include/sys/syscall.h文件中找到以上五个函数对应的入口地址。2.保存sys_call_table[x]的旧入口指针(x代表所想要截获的系统调用号)。3.将自定义的新的函数指针存入sys_call_table[x]。至此原系统调用就被目标系统调用替代。4.利用make命令编译新模块,产生编译完会产生若干新的文件:module.ko module.mod.c module.mod.o module_hello.o modules。其中module_hello.ko即为所需。5.用命令sudo insmod module.ko插入模块,用命令dmesg可以查看内核环缓冲.
步骤S02:定制文件访问策略集S,Q,U
下面对目前收集到的策略集S做简单介绍,同时策略集不仅限于此。
表1原子级匹配规则r
其中数据窃取类还包括窃取手机版本号,apk列表信息,银行卡账号等信息,恶意传输类还包括连接网络,更改网络配置等此处不一一列举。
表2策略集S
对于单文件时序策略集Q,以获取蓝牙信息与GPS信息举例。
表3原子级时序规则qr
表4单文件时序策略集Q
多文件时序策略集U
表5原子级多文件时序匹配规则uri
表6多文件时序策略集
此策略中还包含获取各种隐私信息,如通话记录,联系人号码等信息后,通过短信,邮件等方式发送出去。此处不一一列举。
步骤S03:在步骤S01修改过的Android内核上运行待测应用,点击应用不同组件,收集运行过程中的所有文件访问操作,形成原始文件访问记录INI。如表7所示:
表7 INI文件示例
步骤S04:基于步骤S03形成的原始文件访问记录INI,进行初步的数据清洗,将无用的文件操作去除,以保证系统的运行效率形成文件INI’。根据实验,以及查阅资料,可以去除的文件有:Filename=/dev/urandom/%”,“Finename=/usb/%”,“Finename=/battery/%”,“Finename=/acct/uid/%”,“Finename=/dev/ashmen/%”,“Finename=/lib/%”。
对比表7发现文件记录T6属于噪声,需要被删除。
步骤S05:基于步骤S04去噪后的文件,将文件记录以文件访问周期为单位做整理,在文件访问周期中,Fd,FileName,PidName三个参数相同。形成整理后的文件PRE。
整理INI文件发现T1与T4打开的是同一个文件且fd相同,T2,T3,T5操作的是同一个文件且fd相同。同时比较T1与T4对应的MD5值发现相同,T2与T5对应的MD5值发现不相同,则形成原始文件访问记录PRE,如下:
表8 PRE文件示例
步骤S06:将步骤S05新形成的PRE文本与步骤S02制定的策略集S,Q,U匹配,判别是否触发敏感行为,最终判断是否为恶意应用。若判定PRE文件匹配策略集S,Q,U中的任意一条,则认为该应用触发了敏感行为,为恶意应用。否则认为其为安全应用。
将PRE与策略集S,Q,U匹配发现P1触发了S策略集中的敏感行为:上传信息。因此,该应用为恶意应用。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (8)
1.一种基于文件访问动态监控的Android恶意应用检测方法,其特征在于包括如下步骤:
步骤S01:基于Android内核结构,利用动态加载内核模块技术(Loadable KernelModule,LKM)加载修改过的文件系统,更改Android原生系统的系统调用列表,使待测应用在运行过程受到监控,得到修改过的Android内核;
步骤S02:定制文件访问策略集S,Q,U,其中S表示无时序策略集,Q表示单文件访问时序策略集,U表示多文件访问时序策略集;
步骤S03:在步骤S01修改过的Android内核上运行待测应用,点击应用的不同组件,收集运行过程中的所有文件访问操作,形成原始文件访问记录INI及其属性值;
步骤S04:对形成的原始文件访问记录INI,进行初步的数据清洗,将无用的文件操作去除,得到去噪后的INI’文件,以保证文件系统的运行效率;
步骤S05:将去噪后的INI’按照文件访问周期整理,形成整理后的记录文件PRE及其属性值;
步骤S06:将步骤S05整理后的记录文件PRE与步骤S02制定的文件访问策略集S,Q,U匹配,判别是否触发敏感行为,最终判断是否为恶意应用,若判定文件PRE匹配文件访问策略集S,Q,U中的任意一条,则认为该应用触发了敏感行为,为恶意应用,否则认为该应用为安全应用。
2.根据权利要求1所述的基于文件访问动态监控的Android恶意应用检测方法,其特征在于:所述步骤S01中动态加载内核模块技术的实现步骤如下:
(11)找到
sys_open(),sys_close(),sys_read(),sys_write(),sys_unlink()这五个系统调用函数在原系统调用列表中的入口地址;sys_open(),sys_close(),sys_read(),sys_write(),sys_unlink()分别表示打开文件,关闭文件,读文件,写文件,删除文件;
(12)将步骤(11)所找到的入口地址保存,即为这五个系统调用的旧入口地址;
(13)将自定义新的函数所对应的入口地址写入原系统调用列表中步骤(12)所保存的位置处,至此原系统调用列表就被替换。
3.根据权利要求1所述的基于文件访问动态监控的Android恶意应用检测方法,其特征在于:所述步骤S02中定制的文件访问策略集S,Q,U如下:
(21)无时序策略集S
S={s1,s2,...sm...}
其中任意策略sm表示为如下二元组形式:
sm=<MalBehaviorName,Rules>
MalBehaviorName为策略匹配成功后,待测应用携带的恶意行为的名称,Rules为原子级匹配规则r的无序集合,其中r表示为如下三元组形式:
r=<SubjectProcess,ObjectFile,OpTypes>
其中SubjectProcess为进程主体,代表某一进程名,ObjectFile为文件客体,代表文件名称的正则表达式,可与android文件系统中的各文件绝对路径匹配,代表一个文件集,OpType为文件访问操作集合,其形式为{create,touch,modify,delete}四种操作集合的一个非空子集,其中create表示新建一个文件目录,touch表示打开已有文件但未更改,modify表示打开已有文件并更改,delete表示删除文件;
每一条规则r表示的意思为,待测应用执行期间,根据底层监控,如果发现存在某个进程主体SubjectProcess采用OpTypes中的任意一种操作方式,操作了ObjectFiles对应的文件集合中的任意一个文件,则认为该应用触发了规则r;
策略sm表示的意思为,待测应用执行期间,触发了其规则集合Rules中的每一条规则r,则认为该应用携带了恶意行为MalBehaviorName;
(22)单文件时序策略集Q
Q={q1,q2,...qm,...}
其中任意策略qm表示为一个二元组,形式化如下:
qm=<MalBehaviorName,Qrules>
MalBehaviorName为策略匹配成功后,认为待测应用携带的恶意行为的名称,Qrules为原子级时序规则qr的集合,其中qr由四元组形式化表示:
qr=<SubjectProcess,ObjectFile,OpTypes,Pset>
其中SubjectProcess为进程主体,ObjectFile为文件客体,OpType为文件访问操作集合,定义同S中的原子级匹配规则r;Pset为一个谓词集合,其中的每一个谓词P(opduration,t)为关于操作持续时间opduration和某个时间常量t的谓词,表示操作持续时间的一个时间约束;
每一条规则qr表示的意思为,待测应用执行期间,根据底层监控,如果发现存在某个进程主体SubjectProcess采用opTypes中的任意一种操作方式,操作了ObjectFiles对应的文件集合中的任意一个文件,且操作持续时间满足Pset中的所有谓词公式约束,则认为该应用触发了规则qr;
单文件时序策略qm表示的意思为,待测应用执行期间,触发了其规则集合qrules中的每一条规则qr,则认为该应用携带了恶意行为MalBehaviorName;
(23)多文件时序策略集U
U={u1,u2,...um...}
其中任意策略um表示为二元组形式:
um=<MalBehaviorName,Urules>
MalBehaviorName为策略匹配成功后,认为待测应用携带的恶意行为的名称,Urules为一条原子级多文件时序匹配规则的集合{ur1,ur2,...uri,...},Urules中的任意一条原子级多文件时序匹配规则形式化表示为一个三元组:
uri=<r1,r2,DPset>
其中r1,r2为两条原子级匹配规则,其定义同S中原子级匹配规则r,DPset为一个谓词集合,其中的每一个谓词P为关于操作持续时间opduration1,opduration2,操作开始时间opstart1,opstart2,操作结束时间opstop1,opstop2中的一个或多个变量与某个时间常量t的谓词,表示r1,r2相关操作持续时间之间的一个时间约束;
每一条规则uri表示的意思为,待测应用执行期间,根据底层监控,如果发现存在某个r1类型操作,和一个r2类型操作,他们各自的操作持续时间满足DPset中的所有谓词公式约束,则认为该应用触发了规则uri;
策略um表示的意思为,待测应用执行期间,触发了其规则集合Urules中的每一条规则uri,则认为该应用携带了恶意行为MalBehaviorName。
4.根据权利要求1所述的基于文件访问动态监控的Android恶意应用检测方法,其特征在于:所述步骤S03中原始文件访问记录INI的过程如下:
(31)原始文件访问记录INI的基本形式如下:
INI={T1,T2...Ti...}
其中Ti为任意一条文件操作记录;
(32)为步骤(31)中形成的原始文件访问记录INI基本形式配置属性,Ti是一个八元组形式,表示如下:
Ti=<Type,FileName,Time,Pid,PidName,Mode,Fd,Md5>
其中Type为文件操作类型,其语法可表示为如下形式:
Type={Open|Close|Read|Write|Delete}
选择五种操作中的任意一个,Open表示打开文件,Close表示关闭文件,Read表示读取文件,Write表示写文件,Delete表示删除文件;
FileName表示被访问的文件名称,形式为/一级目录/二级目录/...;
Time表示访问时间,精确到秒;
Pid表示操作文件的进程号;
PidName表示进程名称,指某一进程号对应的进程名称;
Mode表示文件打开方式,语法形式如下:Mode={0|!0}其中mode=0表示该文件为已有文件,mode=!0时表示该文件为新建文件;
Fd表示文件描述符,是文件操作过程中的唯一标识;
Md5表示当前文件对应的一个哈希值。
5.根据权利要求1所述的基于文件访问动态监控的Android恶意应用检测方法,其特征在于:所述步骤S05中周期文件PRE,形式化如下:所述步骤S05中周期文件PRE,形式化如下:其中Pi表示任意一条周期记录
PRE={P1,P2...Pi...}
对周期文件PRE配置属性:
其中Pi表示任意一条周期记录,其具体内容可以表示为一个六元组,如下:
Pi={cPidName,cFileName,cType,cStart,cStop,cDuration}
cPidName表示进程名称;
cFileName表示被访问的文件名称;
cType={delete|create|mod ify|touch}表示在这个文件访问周期中涉及的文件操作,create表示在文件访问周期内某进程新建了一个文件,touch表示在文件访问周期内,某进程打开一个已有的文件但未做修改,modify表示在文件访问周期内,某进程打开一个已有文件并做了修改,可通过判断该周期中open与close操作时文件的MD5值是否相同来判定是否修改,若不同认为进程更改了该文件,delete表示在文件访问周期内,某进程删除了文件;
cStart表示文访问件周期开始的时间,即该周期中open操作的时间;
cStop表示文件访问周期结束的时间,即该周期中close操作的时间;
cDuration表示该进程对某一文件操作的持续时间,即cStop-cStart。
6.一种基于文件访问动态监控的Android恶意应用检测系统,其特征在于包括:
内核加载模块,用于将修改过的文件模块加载到内核,为运行待测应用准备测试环境,即基于Android内核结构,利用动态加载内核模块技术(Loadable Kernel Module,LKM)加载修改过的文件系统,更换原系统调用列表,使待测应用在运行过程受到监控,得到修改过的Android内核;
策略定制模块,用于定制文件操作策略集S,Q,U,S表示无时序策略集,Q表示单文件时序策略集,U表示多文件时序策略集;
数据分析模块,在内核加载模块修改过的手机上运行待测应用,记录待测应用运行过程中的所有文件操作记录,整理,形成INI文件与PRE文件,包括数据收集,数据清洗,数据规整三个步骤;将在内核加载模块修改过的Android内核上运行待测应用,点击应用的不同组件,收集运行过程中的所有文件访问操作,形成原始文件访问记录INI及其属性值;对形成的原始文件访问记录INI,进行初步的数据清洗,将无用的文件操作去除,得到去噪后的原始文件访问记录INI,以保证文件系统的运行效率;将去噪后的原始文件访问记录INI记录以文件访问周期为单位做整理,形成整理后的文件PRE及其属性值;
策略判定模块,将数据分析模块形成整理后的文件PRE与策略定制模块所制定的文件访问策略集S,Q,U匹配,判别是否触发敏感行为,最终判断是否为恶意应用,若判定文件PRE匹配文件访问策略集S,Q,U中的任意一条,则认为该应用触发了敏感行为,为恶意应用,否则认为该应用为安全应用。
7.根据权利要求6所述的基于文件访问动态监控的Android恶意应用检测系统,其特征在于:所述策略集S,Q,U是存储在硬盘上的策略文件,在所述策略判定模块进行操作时会读取相应的策略文件至内存中。
8.根据权利要求6所述的基于文件访问动态监控的Android恶意应用检测系统,其特征在于:所述INI与PRE是Android系统维护在内存的数据结构,会随着组件的运行动态变化,除了记录文件操作自身结构之外,还记录文件操作的访问时间、打开方式各项属性值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610256541.XA CN105956468B (zh) | 2016-04-22 | 2016-04-22 | 一种基于文件访问动态监控的Android恶意应用检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610256541.XA CN105956468B (zh) | 2016-04-22 | 2016-04-22 | 一种基于文件访问动态监控的Android恶意应用检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105956468A CN105956468A (zh) | 2016-09-21 |
CN105956468B true CN105956468B (zh) | 2018-12-28 |
Family
ID=56915478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610256541.XA Expired - Fee Related CN105956468B (zh) | 2016-04-22 | 2016-04-22 | 一种基于文件访问动态监控的Android恶意应用检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105956468B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107169351A (zh) * | 2017-05-11 | 2017-09-15 | 北京理工大学 | 结合动态行为特征的Android未知恶意软件检测方法 |
CN109388538B (zh) * | 2018-09-13 | 2020-12-08 | 西安交通大学 | 一种基于内核的文件操作行为监控方法及装置 |
CN109800207B (zh) * | 2019-01-14 | 2021-05-28 | 深圳前海微众银行股份有限公司 | 日志解析方法、装置、设备及计算机可读存储介质 |
CN111143848A (zh) * | 2019-12-31 | 2020-05-12 | 成都科来软件有限公司 | 一种记录样本行为及制定病毒规则的系统 |
CN112346792B (zh) * | 2020-06-11 | 2021-09-21 | 广州锦行网络科技有限公司 | 一种基于Linux系统的端口复用方法 |
CN112199195B (zh) * | 2020-10-16 | 2023-10-27 | 新华三信息安全技术有限公司 | 进程资源处理方法及装置 |
CN113051034B (zh) * | 2021-03-30 | 2023-04-07 | 四川大学 | 一种基于kprobes的容器访问控制方法与系统 |
CN117407118A (zh) * | 2022-07-08 | 2024-01-16 | 北京火山引擎科技有限公司 | 容器运行控制方法、装置、电子设备及可读存储介质 |
CN117077207A (zh) * | 2023-09-01 | 2023-11-17 | 广州世安智慧科技有限公司 | 一种敏感信息检测方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN104182688A (zh) * | 2014-08-26 | 2014-12-03 | 北京软安科技有限公司 | 基于动态激活及行为监测的Android恶意代码检测装置和方法 |
CN105488390A (zh) * | 2014-12-13 | 2016-04-13 | 哈尔滨安天科技股份有限公司 | 一种Linux下的可疑文件发现方法及系统 |
CN105760773A (zh) * | 2015-07-06 | 2016-07-13 | 卡巴斯基实验室股份制公司 | 通过易受攻击的应用控制打开文件的系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9245114B2 (en) * | 2010-08-26 | 2016-01-26 | Verisign, Inc. | Method and system for automatic detection and analysis of malware |
-
2016
- 2016-04-22 CN CN201610256541.XA patent/CN105956468B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN104182688A (zh) * | 2014-08-26 | 2014-12-03 | 北京软安科技有限公司 | 基于动态激活及行为监测的Android恶意代码检测装置和方法 |
CN105488390A (zh) * | 2014-12-13 | 2016-04-13 | 哈尔滨安天科技股份有限公司 | 一种Linux下的可疑文件发现方法及系统 |
CN105760773A (zh) * | 2015-07-06 | 2016-07-13 | 卡巴斯基实验室股份制公司 | 通过易受攻击的应用控制打开文件的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105956468A (zh) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105956468B (zh) | 一种基于文件访问动态监控的Android恶意应用检测方法及系统 | |
Moonsamy et al. | Mining permission patterns for contrasting clean and malicious android applications | |
Sharma et al. | Malicious application detection in android—a systematic literature review | |
CN104598824B (zh) | 一种恶意程序检测方法及其装置 | |
Lin et al. | Identifying android malicious repackaged applications by thread-grained system call sequences | |
Alazab et al. | Analysis of malicious and benign android applications | |
US20160021174A1 (en) | Computer implemented method for classifying mobile applications and computer programs thereof | |
KR101260028B1 (ko) | 악성코드 그룹 및 변종 자동 관리 시스템 | |
CN104598823A (zh) | 一种安卓系统中内核级rootkit检测方法及其系统 | |
CN108133139A (zh) | 一种基于多运行环境行为比对的安卓恶意应用检测系统 | |
CN109388538A (zh) | 一种基于内核的文件操作行为监控方法及装置 | |
CN105760787B (zh) | 用于检测随机存取存储器中的恶意代码的系统及方法 | |
CN101183414A (zh) | 一种程序检测的方法、装置及程序分析的方法 | |
Yang et al. | Detection of malicious behavior in android apps through API calls and permission uses analysis | |
CN106228067A (zh) | 恶意代码动态检测方法及装置 | |
CN113312615B (zh) | 一种终端检测与响应系统 | |
Abela et al. | An automated malware detection system for android using behavior-based analysis AMDA | |
Park et al. | API and permission-based classification system for Android malware analysis | |
Bae et al. | A collaborative approach on host and network level android malware detection | |
Sun et al. | Malware detection on Android smartphones using keywords vector and SVM | |
Fu et al. | Data correlation‐based analysis methods for automatic memory forensic | |
Da et al. | Detection of Android malware security on system calls | |
Stirparo et al. | In-memory credentials robbery on android phones | |
Kate et al. | Two phase static analysis technique for Android malware detection | |
US20160092313A1 (en) | Application Copy Counting Using Snapshot Backups For Licensing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181228 Termination date: 20200422 |