CN105184166B - 基于内核的安卓程序实时行为分析方法及系统 - Google Patents
基于内核的安卓程序实时行为分析方法及系统 Download PDFInfo
- Publication number
- CN105184166B CN105184166B CN201510682288.XA CN201510682288A CN105184166B CN 105184166 B CN105184166 B CN 105184166B CN 201510682288 A CN201510682288 A CN 201510682288A CN 105184166 B CN105184166 B CN 105184166B
- Authority
- CN
- China
- Prior art keywords
- node
- behavior
- information
- android
- log
- 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
- 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/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了基于内核的安卓程序实时行为分析方法以及能够实现该方法的行为分析系统,其中方法包括系统调用监控初始化步骤;内核系统调用拦截监控与解析步骤;基于解析结果生成信息日志步骤;基于信息日志的应用程序行为重构步骤。本发明通过在内核中拦截并解析系统调用,重构出应用程序的文件,网络以及安卓特有的进程间同行等行为,整个过程在内核中进行实时监控,保证行为获取的准确性,同时内核拥有最高的权限,恶意软件难以进行规避。本方法不修改安卓系统的任何代码,性能损耗低,实践证明本方法所产生的结果能作为取证的关键证据,以及提供恶意软件检测的依据。
Description
技术领域
本发明属于数据处理技术领域,具体涉及基于内核的安卓程序实时行为分析方法及系统。
背景技术
随着智能移动设备的普及,针对这些设备的恶意软件也越来越多。安卓作为一个开源的平台,已经成为全球范围内具有广泛影响力的操作系统,目前占有80%的市场份额,也正因此,针对安卓平台的恶意软件数目也是十分巨大的,同时这些恶意软件具有快速增长的趋势。安卓设备上拥有大量的重要用户隐私信息,因此此类恶意软件给手机安全带来了巨大的威胁。
针对上述情况,检测和甄别恶意软件是十分必要的。这需要了解恶意软件的行为,在近几年,针对应用程序的行为分析方法被人们广泛研究并且已成为目前处理恶意软件的热门技术方法。当前的行为分析方法主要由两类方法组成,一类是静态行为分析,另一类是动态行为分析。针对动态行为分析,目前的方法大多数是建立在安卓Dalvik虚拟机之上以及在虚拟环境中实行分析应用程序。但是这些应用程序分析方法都有各自的不足之处。基于Dalvik虚拟机的技术方案不能检测出本地代码中的行为,同时由于和应用程序处于同一层次,容易被恶意软件检测并规避。基于虚拟机自省方法的技术方案可以检测本地代码中的行为,但由于这类方法运行在一个虚拟环境中,因此恶意软件会因为执行环境的差异表现出不同的行为,现有恶意软件可以检测出它们的运行环境,并使用反取证技术进行规避,这就使得虚拟机自省方案下的行为分析的准确性得不到保证。
发明内容
为解决上述问题,本发明公开了基于内核的安卓程序实时行为分析方法以及能够实现该方法的行为分析系统,通过在内核中拦截并解析系统调用,重构出应用程序的文件,网络以及安卓特有的进程间同行等行为,整个过程在内核中进行实时监控,保证行为获取的准确性,同时内核拥有最高的权限,恶意软件难以进行规避。
为了达到上述目的,本发明提供如下技术方案:
一种基于内核的安卓程序实时行为分析方法,包括如下步骤:
步骤一,系统调用监控初始化:
在内核内存中,搜索系统调用表的加载指令,通过该条指令,找到系统调用表的地址;备份系统调用表中的关于文件系统调用方法地址,网络系统调用方法地址,进程复制系统调用方法地址和安卓进程间交互行为所关联的对设备的设备I/O通道管理的系统调用方法地址,并使用自定义的方法替换这些地址;将所需的安卓接口定义语言文件的内容加载入内存中;添加安卓进程间交互行为方法的过滤器;
步骤二,内核系统调用拦截监控与解析:
在步骤一中经过地址替换后的系统调用方法被调用时,掌握系统控制权,当系统调用为安卓进程间交互行为所关联的对设备的设备I/O通道管理的系统调用方法时,采用安卓进程间通信解析方法对系统调用进行解析,当系统调用为文件系统调用方法、网络系统调用方法或是进程复制系统调用方法时,采用系统调用解析方法对系统调用进行解析,解析完成后将系统控制权归还系统;
步骤三,基于解析结果生成信息日志:
根据解析后的系统调用信息,将解析结果写入到日志文件中;
步骤四,基于信息日志,重构应用程序行为,生成行为活动图:
根据信息日志中的信息,将日志组织成为初级行为活动图,针对初级行为活动图进一步采用活动生命周期识别以及广播匹配算法来进行处理,形成具有丰富语义的行为活动图;针对行为活动图,根据各个广播活动事件,抽象出其中的关键行为,形成高可读性的抽象行为活动图。
进一步的,所述步骤一中找到系统调用表的地址的过程如下:
定位整个异常向量处理例程地址,在整个异常向量处理例程地址中找到软件中断异常处理例程地址,根据软件中断异常处理例程地址找到软件中断异常处理例程,在软件中断异常处理例程所处在的内存中,搜索一条将系统调用表加载入寄存器的指令,根据这条指令,得到系统调用表的地址。
进一步的,所述步骤一中加载的所需的安卓接口定义语言文件的内容为哈希表形式。
进一步的,所述步骤二中的安卓进程间通信解析方法用于获取进程间通信行为的读写结构体,根据读写结构体获得进程标识符、用户标识符,并从数据缓冲区中获取传输数据结构体,根据传输数据结构体获得高层进程间通信方法参数。
进一步的,所述步骤二中的系统调用方法根据不同的系统调用类型采用不同的系统调用解析方法:
当系统调用为文件类型时,将未解析过的文件描述符以及对应文件的绝对路径存入文件哈希表中;
当系统调用为网络类型时,获取并解析系统调用参数中的数据缓冲区参数和数据项长度参数,得到网络操作中的数据信息;
当系统调用为进程复制类型时,获取进程标识符和用户标识符。
进一步的,所述步骤三中日志文件中包括以下信息:进程标识符,用户标识符,系统调用对应的高层或者底层方法名以及参数。
进一步的,所述步骤三中在记录日志前,获取并备份当前内核对内存地址检查的处理方式,在记录日志之后还原当前内核对内存地址检查的处理方式。
进一步的,所述步骤四中生成行为活动图的过程包括:
根据记录好的信息日志文件,采用初级行为图重构算法生成初级行为图;
采用广播生命周期匹配算法,识别出初级行为图中的活动生命周期,以及广播事件生命周期,丰富初级行为图中的语义信息,生成具有丰富语义的行为图;
针对已经识别出来的广播时间生命周期,将其中的行为节点信息进行提炼,文件操作的节点统一成为文件访问信息,网络操作的节点统一成为网络访问信息,安卓进程间通信行为根据进行进程间通信时的权限检查,提炼出各个进程间通信所需的权限信息,提炼后的信息统一到广播时间生命周期开始节点,形成高可读性的抽象行为活动图。
本发明还提供了能够实现上述分析方法的基于内核的安卓程序实时行为分析系统,包括:初始化模块、监控解析模块、信息日志记录模块、行为重构模块;
所述初始化模块用于加载解析安卓进程间通信所需的安卓接口定义语言文件的信息到内存中,备份系统调用表中的关于文件系统调用方法地址,网络系统调用方法地址,进程复制系统调用方法地址和安卓进程间交互行为所关联的对设备的设备I/O通道管理的系统调用方法地址,并使用自定义的方法替换这些地址;
所述监控解析模块用于在系统内核中,根据用户定义的配置文件实时解析系统调用,根据系统调用方法类型,采用相应的程间通信解析方法对系统调用进行解析,来获取行为重构中所需的信息,解析完成后将系统控制权归还系统,
所述信息日志记录模块用于在在内核中解析完毕系统调用后,将解析出来的信息按照约定格式记录记录在日志文件中;
所述行为重构模块用于根据信息日志中的信息,将日志组织成为初级行为活动图,并进一步采用活动生命周期识别以及广播匹配算法来进行处理,形成具有丰富语义的行为活动图,最后根据各个广播活动事件,抽象出其中的关键行为,形成高可读性的抽象行为活动图。
进一步的,所述监控解析模块中还包括安卓进程间通信解析器和系统调用解析器,安卓进程间通信解析器用于解析设备I/O通道管理的系统调用方法,系统调用解析器用于解析文件,网络以及进程复制的系统调用。
与现有技术相比,本发明具有如下优点和有益效果:
1.本发明方法运行在系统内核层中,通过对文件,网络以及安卓特有的系统调用的拦截与解析,来实时地重构应用程序的底层与高层行为,无论这些行为是来自Java语言,本地代码还是Linux的可执行与可链接格式,都可以进行解析与重构。
2.与现有的动态行为分析方法相比,由于本方法运行在内核层中,而内核是整个安卓系统的最低层级,所以本发明拥有系统中最高的权限,难以被恶意软件检测和规避,这使得本发明具有较高的准确性。
3.本发明具有真实设备上的实时监控能力,因此能更好地捕获应用程序真实的行为。本方法重构后的结果不仅仅能揭示单个应用程序的行为,还能同时监控多个应用程序的行为,并且能够以隐私数据为中心,展现这些数据如何被系统以及各个应用程式所使用。同时,允许用户自定义需要监控的敏感数据。
4.采用了生命周期模型和广播事件匹配来更好的反应应用程序的行为过程,本方法的重构结果呈现为一个简明易懂的行为图,使得行为重构的结果具有较好的可读性。行为图能作为取证的关键证据,以及提供恶意软件检测的依据。
5.本方法不修改安卓系统的任何代码,性能损耗低。
附图说明
图1为本发明提供的基于内核的安卓程序实时行为分析系统的系统架构图;
图2为系统调用监控初始化步骤和内核系统调用拦截监控与解析步骤中内核系统钩子的安装以及实际系统调用拦截过程;
图3为安卓进程间通信方法的结构体以及解析过程;
图4为初级行为图的重构流程图;
图5为广播事件生命周期的匹配过程。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
图1为本发明提供的基于内核的安卓程序实时行为分析系统的整体架构,系统主要由四个模块组成——初始化模块、监控解析模块、信息日志记录模块、行为重构模块。首先,初始化模块会加载解析安卓进程间通信所需的安卓接口定义语言文件的信息到内存中,在内存中该信息以哈希表的形式存在,同时,初始化模块使用可加载模块技术,在内核中安装一个钩子,用来拦截和解析所需要的系统调用方法。随后,监控解析模块在系统内核中,根据用户定义的配置文件实时解析系统调用,来获取行为重构中所需的信息。在这个模块中,有两个组建负责处理不同类型的系统调用方法,分别为安卓进程间通信解析器与系统调用解析器。安卓进程间通信解析器负责解析设备I/O通道管理的系统调用方法,来重构应用程序层面的安卓行为。系统调用解析器用来解析文件,网络以及进程复制的系统调用,来解释底层的操作系统行为。信息日志记录模块用于当一个系统调用在内核中的监控与解析完毕后,将解析出来的信息按照约定格式记录记录在日志文件中。最后,行为重构模块根据信息日志文件,来重构应用程序的行为活动,生成行为活动图,行为重构模块首先根据信息日志中的信息,将日志组织成为初级行为活动图。初级行为图进一步采用活动生命周期识别以及广播匹配算法来进行处理,形成具有丰富语义的行为活动图。最后根据各个广播活动事件,抽象出其中的关键行为,形成高可读性的抽象行为活动图。
以下将从步骤流程的角度来描述上述系统的执行过程,即基于内核的安卓程序实时行为分析方法,该方法具体包括如下步骤:
步骤一,系统调用监控初始化:
首先,在内核内存中,安装一个钩子,能够搜索到系统调用表的加载指令,找到系统调用表的地址,替换相应地址,以便在后续的监控解析过程中拦截和解析所需要的系统调用方法,具体包括以下步骤:
步骤(1):定位整个异常向量处理例程地址;
步骤(2):在整个异常向量处理例程地址,找到软件中断异常处理例程地址;
步骤(3):根据软件中断异常处理例程地址,找到软件中断异常处理例程;
步骤(4):在软件中断异常处理例程所处在的内存中,搜索一条将系统调用表加载入寄存器的指令,根据这条指令,得到系统调用表的地址;
步骤(5):在系统调用表中,定位文件系统调用方法地址,备份原文件系统调用方法地址,并使用自定义的系统调用解析方法地址替换原文件系统调用方法地址;
步骤(6):在系统调用表中,定位进程复制系统调用方法地址,备份原进程复制系统调用方法地址,并使用自定义的系统调用解析方法地址替换原进程复制系统调用方法地址。
步骤(7):在系统调用表中,定位网络系统调用方法地址,备份原网络系统调用方法地址,并使用自定义的系统调用解析方法地址替换原网络系统调用方法地址。
步骤(8):在系统调用表中,定位安卓进程间交互行为所关联的对设备的设备I/O通道管理的系统调用方法地址,备份原安卓进程间交互行为所关联的对设备的设备I/O通道管理的系统调用方法地址,并使用自定义的系统调用解析方法地址替换原安卓进程间交互行为所关联的对设备的设备I/O通道管理的系统调用方法地址。
步骤(9):加载所需的安卓接口定义语言文件,并将其格式化为哈希表,存入内存中。
步骤(10):添加安卓进程间交互行为方法的过滤器。该过滤器用于滤除本发明不需要监控的那部分安卓进程间交互行为方法,具体滤除的内容可以根据需要进行设定。通过过滤,只留下需要进行解析的安卓进程间交互行为方法,能够减少本发明分析的进程间交互行为数量,提升分析效率。
需要说明的是,上述步骤(5)-(8)实际上并无时间上的顺序关系,实际执行时可以按照任意顺序完成或同时完成。
步骤二:内核系统调用拦截监控与解析
由于在步骤一中,几种系统调用方法用我们自定义的系统调用解析方法(下称拦截方法)替换,在实际执行过程中,当上述替换后的系统调用被请求时,系统会产生软中断,根据中断向量号去系统调用表中找到对应的系统调用。此时因为源系统调用方法被替换为了拦截方法,系统的控制权会转移给拦截解析方法,拦截解析方法开始执行。在拦截解析方法的内部,会请求源系统调用,保证系统的正常运行以及对于调用者的透明性。源系统调用执行完毕后,会返回拦截解析方法,拦截解析方法此时可以解析源系统调用的参数以及返回值。拦截解析方法执行完毕后,会将系统控制权归还系统。这样每次系统调用都被拦截,使得本发明具有内核级别的监控权限。
步骤一和步骤二的实现过程请参阅图2。
拦截解析方法执行时,根据系统调用的不同类型,使用不同的解析方法进行系统调用解析,当系统调用为安卓进程间交互行为所关联的对设备的设备I/O通道管理的系统调用方法时,采用安卓进程间通信解析器进行解析,当系统调用为文件系统调用方法、网络系统调用方法或是进程复制系统调用方法时,采用系统调用解析器进行解析。
安卓进程间通信解析器进行解析的过程如图3所示,具体解析步骤如下:
步骤(1):在设备I/O通道管理的系统调用方法参数中获取I/O控制命令;
步骤(2):判断I/O控制命令是否为进程间通信行为的读写命令,若I/O控制命令为进程间通信行为的读写命令,则进入步骤(3),否则进入步骤(9);
步骤(3):在设备I/O通道管理的系统调用方法参数中获取进程间通信行为的读写结构体,从该结构体中,取出存储传输的数据的写缓冲区;
步骤(4):在数据写缓冲区中,获取命令协议码。若命令协议码为通信传输码,则进入步骤(5),否则进入步骤(9);
步骤(5):通过全局的任务结构体指针获取进程标识符和用户标识符;
步骤(6):在数据缓冲区中,获取传输数据结构体;
步骤(7):在传输数据结构体中,获取高层进程间通信方法的特征码。在预先存储在内存中的安卓接口定义语言文件的哈希表中查找该特征码对应的高层进程间通信方法;
步骤(8):在传输数据结构体中,获取存储高层进程间通信方法参数的数据缓冲区,在该缓冲区中,根据调用者定义的参数存储格式,解析该缓冲区中的内容,得到具体的参数信息;
步骤(9):解析完毕,将系统控制权重新归还系统。
系统调用解析器的解析过程包括如下步骤:
步骤(1):执行原系统调用;
步骤(2):根据不同的系统调用类型,进入不同的系统调用解析方法。若是文件类型的系统调用,则进入步骤(3),若是网络类型的系统调用,则进入步骤(6),若是进程复制的系统调用,则进入步骤(8);
步骤(3):针对文件类型的系统调用,初始化一个文件描述符对应具体文件路径的文件哈希表;
步骤(4):在文件类型的系统调用参数中,取出其文件描述符参数,在文件哈希表中查询该文件描述符是否已经解析过了。若该文件描述符未被解析,则进入步骤(5),否则进入步骤(9);
步骤(5):从系统中获取该文件描述符所对应的文件的绝对路径,并将该文件描述符以及对应文件的绝对路径作为键值对存入文件哈希表中,进入步骤(9);
步骤(6):针对网络类型的系统调用,取出其文件描述符参数,从系统中获取该文件描述符对应的网络套接字结构体。在网络套接字结构体中,获取该套接字的IP地址和端口号;
步骤(7):在网络类型的系统调用参数中,获取一个数据缓冲区参数,以及该数据项长度的参数,解析上述两个参数,得到网络操作中的数据信息,之后进入步骤(9);
步骤(8):针对进程复制的系统调用,通过全局的任务结构体指针获取进程标识符和用户标识符;
步骤(9):解析完毕,将系统控制权重新归还系统。
步骤三:基于解析结果生成信息日志
步骤(1):获取并备份当前内核对内存地址检查的处理方式,之后当前内核对内存地址检查的处理方式设置为内核空间地址模式。
步骤(2):根据解析后的系统调用信息,将解析结果按照进程标识符,用户标识符,系统调用对应的高层或者底层方法名以及参数这样的格式,写入到日志文件中;各条日志按照其系统调用的先后顺序,依次记录于日志文件中。日志文件的格式如下:
[过滤标识]:(进程标识符)(用户标识符)系统调用对应的高层或者底层方法名(参数)
以下为日志格式的一个样例:
[Rootkit]:(1031)(10053)com.android.internal.telephony.ITelephony.getCallState()
[Rootkit]:(1031)(10053)open(/data/data/hww.com.tanker/files/zjphonecall.txt, 0x20441, 0x180)
步骤(3):还原当前内核对内存地址检查的处理方式。
步骤四:基于信息日志的应用程序行为重构
行为重构模块根据记录好的信息日志统一进行应用程序的行为重构,行为重构模块根据信息日志文件,来重构应用程序的行为活动,生成行为活动图,具体的过程为先根据生成初级行为图,再形成具有丰富语义的行为活动图。最后根据各个广播活动事件,抽象出其中的关键行为,形成高可读性的抽象行为活动图。
步骤1.生成初级行为活动图:初级行为图的重构流程是采用初级行为图重构算法,将信息日志重构成为初级行为图,如图4所示,其具体步骤如下:
步骤(1):从信息日志文件中,依照日志记录顺序读取一条日志信息,若没有日志记录可以读取,则进入步骤(10);
步骤(2):针对每条日志信息,提取出进程标识符,用户标识符,调用方法名以及方法的参数信息,将这些信息存入行为节点中,若调用方法为进程复制系统调用,需要额外存储子进程标识符;
针对存储有日志信息的各行为节点,进行以下判断,以将它们依次添加入初级行为图中。
步骤(3):若用户标识符在图(初级行为活动图,步骤1中下同)中存在,则进入步骤(4),否则进入步骤(9);
步骤(4):若进程标识符在图中存在,则进入步骤(5),否则进入步骤(8);
步骤(5):若调用方法为进程复制系统调用,则进入步骤(6),否则进入步骤(7)
步骤(6):当前行为节点成为用户标识符和进程标识符所指向的节点的孩子,用户标识符和子进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(7):当前行为节点成为用户标识符和进程标识符所指向的节点的孩子,用户标识符和进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(8):当前行为节点成为应用程序节点的孩子,用户标识符和进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(9):创建一个应用程序节点,这个应用程序节点成为根节点的孩子,当前行为节点成为应用程序节点的孩子,用户标识符和进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(10):初级行为图重构完毕,生成初级行为图。
步骤2.生成行为活动图:在初级行为图构建完毕后,采用广播生命周期匹配算法,识别出初级行为图中的活动生命周期,以及广播事件生命周期,丰富初级行为图中的语义信息,从而生成具有丰富语义的行为图。广播事件生命周期的匹配流程图如图5所示,其具体步骤如下:
步骤(1):按照日志顺序读取行为图中的行为节点,一次获取一个行为节点,若无行为节点可以获取,则进入步骤(10);
步骤(2):判断当前行为节点的方法是否为广播事件生命周期调度方法,若是,则进入步骤(3),否则进入步骤(4)
步骤(3):当前行为节点加入队列中,返回步骤(1)
步骤(4):判断当前行为节点的方法是否为广播事件生命周期结束方法,若是,则进入步骤(5),否则返回步骤(1);
步骤(5):访问队列中的下一个节点,标记为队列节点,若队列中的节点均被访问过,返回步骤(1);
步骤(6):判断当前行为节点的方法是否与队列节点的方法匹配。广播事件有两类调度方法——动态和静态方法,动态广播生命周期匹配中,需根据动态广播调度方法中,其参数获取到的进程标识符,与广播事件生命周期结束方法的进程标识符相匹配;静态广播生命周期匹配中,需根据静态广播调度方法中,其参数获取到的用户标识符,与广播事件生命周期结束方法的用户标识符相匹配。若前述进程标识符或用户标识符一致,则表示当前行为节点的方法与队列节点的方法相匹配,则进入步骤(7),否则返回步骤(5);
步骤(7):在初级行为图中,从当前行为节点,也就是广播事件生命周期结束方法节点开始向上遍历,遍历过程中,保证遍历到的行为节点在信息日志中出现的时间晚于当前行为节点的时间;
步骤(8):遍历停止时,遍历停止处的节点和当前行为节点成为队列节点,也就是广播事件生命周期调度方法节点的孩子;
步骤(9):从队列中移除队列节点,返回步骤(1);
步骤(10):广播生命周期匹配完毕,生成具有丰富语义的行为图。
步骤3.生成抽象行为活动图:针对已经识别出来的广播时间生命周期,将其中的行为节点信息进行提炼,文件操作的节点统一成为文件访问信息,网络操作的节点统一成为网络访问信息,安卓进程间通信行为根据进行进程间通信时的权限检查,提炼出各个进程间通信所需的权限信息,提炼后的信息统一到广播时间生命周期开始节点,提高行为图的可读性。其具体实现过程如下:
步骤(1):处理当前节点。
步骤(2):若当前节点是广播事件生命周期结束方法,则需要将抽象信息集合清空。
步骤(3):若当前节点为广播事件生命周期调度方法的子节点且,当前节点不是广播事件生命周期调度方法和广播事件生命周期结束方法,设置内部节点标识,并深度遍历当前节点的子节点,进入步骤(1)。深度遍历完成后,进入步骤(6)。否则进入步骤(4)。
步骤(4):深度遍历当前节点的子节点,进入步骤(1)。深度遍历完成后,进入步骤(5)。
步骤(5):对当前节点的每个子节点,提取抽象信息加入抽象信息集合。若没有设置内部节点标识,则将当前节点与其子节点连接起来。
步骤(6):若当前节点为广播事件生命周期调度方法的子节点且,当前节点不是广播事件生命周期调度方法和广播事件生命周期结束方法,则当前节点的信息设为抽象信息集合中的所有信息,清空抽象信息集合,内部节点标识清空。
步骤(7)当前节点深度遍历完成,返回,得到抽象行为活动图。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.基于内核的安卓程序实时行为分析方法,其特征在于,包括如下步骤:
步骤一,系统调用监控初始化:
在内核内存中,搜索系统调用表的加载指令,通过该条指令,找到系统调用表的地址;备份系统调用表中的关于文件系统调用方法地址,网络系统调用方法地址,进程复制系统调用方法地址和安卓进程间交互行为所关联的对设备的设备I/O通道管理的系统调用方法地址,并使用自定义的方法替换这些地址;将所需的安卓接口定义语言文件的内容加载入内存中;添加安卓进程间交互行为方法的过滤器;
步骤二,内核系统调用拦截监控与解析:
在步骤一中经过地址替换后的系统调用方法被调用时,掌握系统控制权,当系统调用为安卓进程间交互行为所关联的对设备的设备I/O通道管理的系统调用方法时,采用安卓进程间通信解析方法对系统调用进行解析,当系统调用为文件系统调用方法、网络系统调用方法或是进程复制系统调用方法时,采用系统调用解析方法对系统调用进行解析,解析完成后将系统控制权归还系统;
步骤三,基于解析结果生成信息日志:
根据解析后的系统调用信息,将解析结果写入到日志文件中;
步骤四,基于信息日志,重构应用程序行为,生成行为活动图:
根据信息日志中的信息,将日志组织成为初级行为活动图,其过程包括:
步骤(1):从信息日志文件中,依照日志记录顺序读取一条日志信息,若没有日志记录可以读取,则进入步骤(10);
步骤(2):针对每条日志信息,提取出进程标识符,用户标识符,调用方法名以及方法的参数信息,将这些信息存入行为节点中,若调用方法为进程复制系统调用,需要额外存储子进程标识符;
针对存储有日志信息的各行为节点,进行以下判断,以将它们依次添加入初级行为图中:
步骤(3):若用户标识符在初级行为活动图中存在,则进入步骤(4),否则进入步骤(9);
步骤(4):若进程标识符在初级行为活动图中存在,则进入步骤(5),否则进入步骤(8);
步骤(5):若调用方法为进程复制系统调用,则进入步骤(6),否则进入步骤(7)
步骤(6):当前行为节点成为用户标识符和进程标识符所指向的节点的孩子,用户标识符和子进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(7):当前行为节点成为用户标识符和进程标识符所指向的节点的孩子,用户标识符和进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(8):当前行为节点成为应用程序节点的孩子,用户标识符和进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(9):创建一个应用程序节点,这个应用程序节点成为根节点的孩子,当前行为节点成为应用程序节点的孩子,用户标识符和进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(10):初级行为图重构完毕,生成初级行为图;
针对初级行为活动图进一步采用活动生命周期识别以及广播匹配算法来进行处理,形成具有丰富语义的行为活动图,其过程包括:
步骤(1):按照日志顺序读取行为图中的行为节点,一次获取一个行为节点,若无行为节点可以获取,则进入步骤(10);
步骤(2):判断当前行为节点的方法是否为广播事件生命周期调度方法,若是,则进入步骤(3),否则进入步骤(4)
步骤(3):当前行为节点加入队列中,返回步骤(1);
步骤(4):判断当前行为节点的方法是否为广播事件生命周期结束方法,若是,则进入步骤(5),否则返回步骤(1);
步骤(5):访问队列中的下一个节点,标记为队列节点,若队列中的节点均被访问过,返回步骤(1);
步骤(6):判断当前行为节点的方法是否与队列节点的方法匹配;若前述进程标识符或用户标识符一致,则表示当前行为节点的方法与队列节点的方法相匹配,则进入步骤(7),否则返回步骤(5);
步骤(7):在初级行为图中,从当前行为节点,也就是广播事件生命周期结束方法节点开始向上遍历,遍历过程中,保证遍历到的行为节点在信息日志中出现的时间晚于当前行为节点的时间;
步骤(8):遍历停止时,遍历停止处的节点和当前行为节点成为队列节点,也就是广播事件生命周期调度方法节点的孩子;
步骤(9):从队列中移除队列节点,返回步骤(1);
步骤(10):广播生命周期匹配完毕,生成具有丰富语义的行为图;
针对行为活动图,根据各个广播活动事件,抽象出其中的关键行为,形成高可读性的抽象行为活动图。
2.根据权利要求1所述的基于内核的安卓程序实时行为分析方法,其特征在于,所述步骤一中找到系统调用表的地址的过程如下:
定位整个异常向量处理例程地址,在整个异常向量处理例程地址中找到软件中断异常处理例程地址,根据软件中断异常处理例程地址找到软件中断异常处理例程,在软件中断异常处理例程所处在的内存中,搜索一条将系统调用表加载入寄存器的指令,根据这条指令,得到系统调用表的地址。
3.根据权利要求1或2所述的基于内核的安卓程序实时行为分析方法,其特征在于,所述步骤一中加载的所需的安卓接口定义语言文件的内容为哈希表形式。
4.根据权利要求1所述的基于内核的安卓程序实时行为分析方法,其特征在于:所述步骤二中的安卓进程间通信解析方法用于获得进程标识符、用户标识符,并获得高层进程间通信方法参数。
5.根据权利要求1所述的基于内核的安卓程序实时行为分析方法,其特征在于:所述步骤二中的系统调用方法根据不同的系统调用类型采用不同的系统调用解析方法:
当系统调用为文件类型时,将未解析过的文件描述符以及对应文件的绝对路径存入文件哈希表中;
当系统调用为网络类型时,获取并解析系统调用参数中的数据缓冲区参数和数据项长度参数,得到网络操作中的数据信息;
当系统调用为进程复制类型时,获取进程标识符和用户标识符。
6.根据权利要求1所述的基于内核的安卓程序实时行为分析方法,其特征在于:所述步骤三中日志文件中包括以下信息:进程标识符,用户标识符,系统调用对应的高层或者底层方法名以及参数。
7.根据权利要求1或6所述的基于内核的安卓程序实时行为分析方法,其特征在于:所述步骤三中在记录日志前,获取并备份当前内核对内存地址检查的处理方式,在记录日志之后还原当前内核对内存地址检查的处理方式。
8.根据权利要求1所述的基于内核的安卓程序实时行为分析方法,其特征在于:所述步骤四中生成行为活动图的过程包括:
根据记录好的信息日志文件,采用初级行为图重构算法生成初级行为图;
采用广播生命周期匹配算法,识别出初级行为图中的活动生命周期,以及广播事件生命周期,丰富初级行为图中的语义信息,生成具有丰富语义的行为图;
针对已经识别出来的广播时间生命周期,将其中的行为节点信息进行提炼,文件操作的节点统一成为文件访问信息,网络操作的节点统一成为网络访问信息,安卓进程间通信行为根据进行进程间通信时的权限检查,提炼出各个进程间通信所需的权限信息,提炼后的信息统一到广播时间生命周期开始节点,形成高可读性的抽象行为活动图。
9.基于内核的安卓程序实时行为分析系统,其特征在于:包括初始化模块、监控解析模块、信息日志记录模块、行为重构模块;
所述初始化模块用于加载解析安卓进程间通信所需的安卓接口定义语言文件的信息到内存中,备份系统调用表中的关于文件系统调用方法地址,网络系统调用方法地址,进程复制系统调用方法地址和安卓进程间交互行为所关联的对设备的设备I/O通道管理的系统调用方法地址,并使用自定义的方法替换这些地址;
所述监控解析模块用于在系统内核中,根据用户定义的配置文件实时解析系统调用,根据系统调用方法类型,采用相应的程间通信解析方法对系统调用进行解析,来获取行为重构中所需的信息,解析完成后将系统控制权归还系统,
所述信息日志记录模块用于在在内核中解析完毕系统调用后,将解析出来的信息按照约定格式记录记录在日志文件中;
所述行为重构模块用于根据信息日志中的信息,将日志组织成为初级行为活动图,并进一步采用活动生命周期识别以及广播匹配算法来进行处理,形成具有丰富语义的行为活动图,最后根据各个广播活动事件,抽象出其中的关键行为,形成高可读性的抽象行为活动图;
所述根据信息日志中的信息,将日志组织成为初级行为活动图的过程包括:
步骤(1):从信息日志文件中,依照日志记录顺序读取一条日志信息,若没有日志记录可以读取,则进入步骤(10);
步骤(2):针对每条日志信息,提取出进程标识符,用户标识符,调用方法名以及方法的参数信息,将这些信息存入行为节点中,若调用方法为进程复制系统调用,需要额外存储子进程标识符;
针对存储有日志信息的各行为节点,进行以下判断,以将它们依次添加入初级行为图中:
步骤(3):若用户标识符在初级行为活动图中存在,则进入步骤(4),否则进入步骤(9);
步骤(4):若进程标识符在初级行为活动图中存在,则进入步骤(5),否则进入步骤(8);
步骤(5):若调用方法为进程复制系统调用,则进入步骤(6),否则进入步骤(7)
步骤(6):当前行为节点成为用户标识符和进程标识符所指向的节点的孩子,用户标识符和子进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(7):当前行为节点成为用户标识符和进程标识符所指向的节点的孩子,用户标识符和进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(8):当前行为节点成为应用程序节点的孩子,用户标识符和进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(9):创建一个应用程序节点,这个应用程序节点成为根节点的孩子,当前行为节点成为应用程序节点的孩子,用户标识符和进程标识符所指向的节点设置为该节点,返回步骤(1);
步骤(10):初级行为图重构完毕,生成初级行为图;
所述采用活动生命周期识别以及广播匹配算法来进行处理,形成具有丰富语义的行为活动图的过程包括:
步骤(1):按照日志顺序读取行为图中的行为节点,一次获取一个行为节点,若无行为节点可以获取,则进入步骤(10);
步骤(2):判断当前行为节点的方法是否为广播事件生命周期调度方法,若是,则进入步骤(3),否则进入步骤(4)
步骤(3):当前行为节点加入队列中,返回步骤(1);
步骤(4):判断当前行为节点的方法是否为广播事件生命周期结束方法,若是,则进入步骤(5),否则返回步骤(1);
步骤(5):访问队列中的下一个节点,标记为队列节点,若队列中的节点均被访问过,返回步骤(1);
步骤(6):判断当前行为节点的方法是否与队列节点的方法匹配;若前述进程标识符或用户标识符一致,则表示当前行为节点的方法与队列节点的方法相匹配,则进入步骤(7),否则返回步骤(5);
步骤(7):在初级行为图中,从当前行为节点,也就是广播事件生命周期结束方法节点开始向上遍历,遍历过程中,保证遍历到的行为节点在信息日志中出现的时间晚于当前行为节点的时间;
步骤(8):遍历停止时,遍历停止处的节点和当前行为节点成为队列节点,也就是广播事件生命周期调度方法节点的孩子;
步骤(9):从队列中移除队列节点,返回步骤(1);
步骤(10):广播生命周期匹配完毕,生成具有丰富语义的行为图。
10.根据权利要求9所述的基于内核的安卓程序实时行为分析系统,其特征在于:所述监控解析模块中还包括安卓进程间通信解析器和系统调用解析器,安卓进程间通信解析器用于解析设备I/O通道管理的系统调用方法,系统调用解析器用于解析文件,网络以及进程复制的系统调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510682288.XA CN105184166B (zh) | 2015-10-21 | 2015-10-21 | 基于内核的安卓程序实时行为分析方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510682288.XA CN105184166B (zh) | 2015-10-21 | 2015-10-21 | 基于内核的安卓程序实时行为分析方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105184166A CN105184166A (zh) | 2015-12-23 |
CN105184166B true CN105184166B (zh) | 2018-02-13 |
Family
ID=54906240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510682288.XA Expired - Fee Related CN105184166B (zh) | 2015-10-21 | 2015-10-21 | 基于内核的安卓程序实时行为分析方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105184166B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095593B (zh) | 2016-05-31 | 2019-04-16 | Oppo广东移动通信有限公司 | 一种前、后景应用程序行为同步方法及装置 |
CN106055453A (zh) * | 2016-06-01 | 2016-10-26 | 北京百度网讯科技有限公司 | 设备监测方法和装置 |
CN106203077B (zh) * | 2016-06-28 | 2019-06-07 | 珠海豹趣科技有限公司 | 一种复制信息的处理方法、装置及电子设备 |
CN106228066B (zh) * | 2016-07-13 | 2019-12-03 | 珠海豹趣科技有限公司 | 进程地址空间防止恶意修改方法、装置以及终端 |
CN106326745A (zh) * | 2016-08-22 | 2017-01-11 | 浪潮电子信息产业股份有限公司 | 一种Linux系统下防止系统调用劫持的方法 |
CN108229161A (zh) * | 2016-12-15 | 2018-06-29 | 中国电信股份有限公司 | 应用监控方法、装置和终端 |
CN106845228A (zh) * | 2016-12-28 | 2017-06-13 | 微梦创科网络科技(中国)有限公司 | 一种检测恶意程序的方法和装置 |
CN106980564A (zh) * | 2017-03-16 | 2017-07-25 | 北京科皓世纪科技有限公司 | 基于内核hook的进程行为监控方法 |
CN108009073A (zh) * | 2017-12-21 | 2018-05-08 | 深圳市金立通信设备有限公司 | 由日志复现触控轨迹的方法、终端及计算机可读存储介质 |
CN109344028B (zh) * | 2018-09-13 | 2020-09-15 | 西安交通大学 | 一种免超级用户权限的进程行为监控装置与方法 |
CN109271781B (zh) * | 2018-09-13 | 2020-11-17 | 西安交通大学 | 一种基于内核的应用程序获取超级权限行为检测方法与系统 |
CN109784054B (zh) * | 2018-12-29 | 2021-01-15 | 360企业安全技术(珠海)有限公司 | 行为堆栈信息获取方法及装置 |
CN110633568B (zh) * | 2019-09-19 | 2021-03-30 | 北京广成同泰科技有限公司 | 用于主机的监控系统及其方法 |
CN111966491B (zh) * | 2020-08-04 | 2023-07-21 | Oppo广东移动通信有限公司 | 统计占用内存的方法及终端设备 |
CN113569234B (zh) * | 2021-06-17 | 2023-11-03 | 南京大学 | 一种用于安卓攻击场景重建的可视化取证系统及实现方法 |
CN113779583B (zh) * | 2021-11-10 | 2022-02-22 | 北京微步在线科技有限公司 | 一种行为检测方法、装置、存储介质及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881483A (zh) * | 2015-06-05 | 2015-09-02 | 南京大学 | 用于Hadoop平台数据泄露攻击的自动检测取证方法 |
-
2015
- 2015-10-21 CN CN201510682288.XA patent/CN105184166B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881483A (zh) * | 2015-06-05 | 2015-09-02 | 南京大学 | 用于Hadoop平台数据泄露攻击的自动检测取证方法 |
Non-Patent Citations (2)
Title |
---|
用于自动证据分析的层次化入侵场景重构方法;伏晓;《软件学报》;20110531;第22卷(第5期);正文第996-1007页 * |
计算机入侵取证中的入侵事件重构技术研究;季雨辰 等;《计算机工程》;20140131;第40卷(第1期);正文第315-320页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105184166A (zh) | 2015-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105184166B (zh) | 基于内核的安卓程序实时行为分析方法及系统 | |
CN103399812B (zh) | 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法 | |
CN104766012B (zh) | 基于动态污点追踪的数据安全动态检测方法及系统 | |
CN106055385B (zh) | 监控虚拟机进程的系统和方法、过滤page fault异常的方法 | |
US8117600B1 (en) | System and method for detecting in-line synchronization primitives in binary applications | |
CN102651062B (zh) | 基于虚拟机架构的恶意行为跟踪系统和方法 | |
CN105956468B (zh) | 一种基于文件访问动态监控的Android恶意应用检测方法及系统 | |
CN106897322A (zh) | 一种数据库和文件系统的访问方法和装置 | |
US8429648B2 (en) | Method and apparatus to service a software generated trap received by a virtual machine monitor | |
CN111756575A (zh) | 存储服务器的性能分析方法及装置、电子设备 | |
US10089474B2 (en) | Virtual machine introspection | |
CN109992983A (zh) | 一种强制访问控制方法、装置、设备及可读存储介质 | |
CN104008329A (zh) | 一种基于虚拟化技术的软件隐私泄露行为检测方法及系统 | |
CN109857520B (zh) | 一种虚拟机自省中的语义重构改进方法及系统 | |
Satoh | A framework for data processing at the edges of networks | |
CN107450964A (zh) | 一种用于发现虚拟机自省系统中是否存在漏洞的方法 | |
CN110895537A (zh) | 自由查询权限控制的方法及装置 | |
Sanán et al. | Csimpl: A rely-guarantee-based framework for verifying concurrent programs | |
CN104715202A (zh) | 一种虚拟机中的隐藏进程检测方法和装置 | |
CN109740310A (zh) | 用于嵌入式操作系统的内核对象访问方法和装置 | |
JP7550491B2 (ja) | マルウェア検出システム | |
US20160092313A1 (en) | Application Copy Counting Using Snapshot Backups For Licensing | |
CN108737373A (zh) | 一种针对大型网络设备隐匿技术的安全取证方法 | |
CN106020923B (zh) | SELinux策略的编译方法及系统 | |
CN107203410A (zh) | 一种基于系统调用重定向的vmi方法及系统 |
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 |
Granted publication date: 20180213 Termination date: 20191021 |
|
CF01 | Termination of patent right due to non-payment of annual fee |