CN106295336B - 恶意程序检测方法及装置 - Google Patents

恶意程序检测方法及装置 Download PDF

Info

Publication number
CN106295336B
CN106295336B CN201510360075.5A CN201510360075A CN106295336B CN 106295336 B CN106295336 B CN 106295336B CN 201510360075 A CN201510360075 A CN 201510360075A CN 106295336 B CN106295336 B CN 106295336B
Authority
CN
China
Prior art keywords
api
program
called
legal
calling
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.)
Active
Application number
CN201510360075.5A
Other languages
English (en)
Other versions
CN106295336A (zh
Inventor
周灿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510360075.5A priority Critical patent/CN106295336B/zh
Priority to PCT/CN2016/086103 priority patent/WO2016206565A1/zh
Publication of CN106295336A publication Critical patent/CN106295336A/zh
Application granted granted Critical
Publication of CN106295336B publication Critical patent/CN106295336B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种恶意程序检测方法及装置,所述方法包括:获取用户程序调用的API,并在所述API中插入第一AOP切面;在所述API被所述用户程序调用运行时,通过所述第一AOP切面采集所述API的运行上下文信息;根据所述运行上下文信息,判断所述API是否为非法API;根据判断结果,确定所述用户程序是否为恶意程序。本申请实施例降低了检测难度,实现了恶意程序的有效检测。

Description

恶意程序检测方法及装置
技术领域
本申请属于网络技术领域,具体地说,涉及一种恶意程序检测方法及装置。
背景技术
云计算是近年来在科研机构和工业界快速发展的一个新生领域。云计算平台是一个开放式服务、多租户共享的平台,云租户可以租用云计算平台,上传任意的用户程序运行,同时整个平台的计算和存储资源也是被所有用户程序所共享。云计算平台的这种服务形式带来了巨大的安全挑战,云租户上传的程序可能具有恶意行为,而影响平台其他租户程序运行、窃取平台其他租户数据等,因此,云租户之间通常通过安全隔离技术,如“沙箱”进行安全隔离。但是任何安全隔离技术都是可能存在漏洞,被恶意程序突破。
为了减少恶意程序带来的危害,还需要进行恶意程序检测。在现有技术中,一种恶意程序检测方式是采用静态代码扫描方式,直接扫描用户程序源码或者通过反汇编技术得到用户程序源码,然后将用户程序源码在特征数据库中进行特征匹配,以确定是否恶意程序。
但是,静态代码扫描的方式,需要一个庞大且全面的云平台恶意程序特征数据库,而构建丰富全面的云平台恶意程序特征数据库难度极大。且攻击者很容易通过对代码修改生成变体或者利用反射、字符串填充、加壳等混淆技术来绕过静态扫描的特征匹配,使得仍不能有效的进行恶意程序的检测。
发明内容
有鉴于此,本申请所要解决的技术问题是提供了恶意程序检测方法及装置,使得能够有效检测实现恶意程序的检测,无需构建复杂的程序特征数据库。
为了解决上述技术问题,本申请开了一种恶意程序检测方法,包括:
获取用户程序调用的API,并在所述API中插入第一AOP切面;
在所述API被所述用户程序调用运行时,通过所述第一AOP切面采集所述API的运行上下文信息;
根据所述运行上下文信息,判断所述API是否为非法API;
根据判断结果,确定所述用户程序是否为恶意程序。
优选地,所述根据判断结果,确定所述用户程序是否为恶意程序包括:
在所述API为非法API时,判断所述API是否为通过合法调用程序调用的,所述合法调用程序为高权限程序,所述高权限程序至少包括沙箱、核心库、语言解释器或第三方库;
在所述API是通过合法调用程序调用的,或者所述API为合法API时,确定所述用户程序不是恶意程序;
在所述API不是通过合法调用程序调用的时,确定所述用户程序是恶意程序。
优选地,预先在合法调用程序中插入第二AOP切面,所述第二AOP切面定义了合法调用非法API的所述合法调用程序的相关信息;
所述判断所述API是否为通过合法调用程序调用的包括:
在获取到所述第二AOP切面定义的所述合法调用程序的相关信息时,判断所述API的调用链中的调用来源是否为所述合法调用程序的相关信息对应的合法调用程序。
优选地,预先在合法调用程序中插入第三AOP切面,所述第三AOP切面定义了所述合法调用程序合法调用的非法API;
所述判断所述API是否为通过合法调用程序调用的包括:
判断是否获得所述第三AOP切面定义的合法调用的非法API,以及所述API是否为所述合法调用的非法API,如果均为是,表明所述API为通过合法调用程序调用的,否则表明所述API不是通过合法调用程序调用的。
优选地,所述获取用户程序调用的API,并在所述API中插入AOP切面包括:
在高权限程序初始化结束之后,获取用户程序调用的API,并在所述API中插入AOP切面。
一种恶意程序检测装置,包括:
切面插入模块,用于获取用户程序调用的API,并在所述API中插入第一AOP切面;
信息采集模块,用于在所述API被所述用户程序调用运行时,通过所述第一AOP切面采集所述API的运行上下文信息;
判断模块,用于根据所述运行上下文信息,判断所述API是否为非法API;
确定模块,用于根据所述判断模块的判断结果,确定所述用户程序是否为恶意程序。
优选地,所述确定模块包括:
判断单元,用于所述判断模块判断出所述API为非法API时,判断所述API是否为通过合法调用程序调用的,所述合法调用程序为高权限程序,所述高权限程序至少包括沙箱、核心库、语音解释器或第三方库;
确定单元,用于在所述判断单元判断出所述API为通过合法调用程序调用的时,确定所述用户程序不是恶意程序;在所述判断单元判断出所述API不是通过合法调用程序调用的,或者所述判断模块判断出所述API为合法API时,确定所述用户程序是恶意程序。
优选地,所述装置还包括:
第一预设置模块,用于预先在合法调用程序中插入第二AOP切面,所述第二AOP切面定义了合法调用非法API的所述合法调用程序的相关信息;
所述判断单元具体用于:
在获取到所述第二AOP切面定义的合法调用程序的相关信息时,判断所述API调用链中的调用来源是否为所述合法调用程序的相关信息对应的合法调用程序。
优选地,所述装置还包括:
第二预设置模块,用于预先在合法调用程序中插入第三AOP切面,所述第三AOP切面定义了所述合法调用程序合法调用的非法API;
所述判断单元具体用于:
判断是否获得所述第三AOP切面定义的合法调用的非法API,以及所述API是否为所述合法调用的非法API,如果均为是,表明所述API为通过合法调用程序调用的,否则表明所述API不是通过合法调用程序调用的。
优选地,所述切面插入模块具体用于在高权限程序初始化结束之后,获取用户程序调用的API,并在所述API中插入第一AOP切面。
与现有技术相比,本申请可以获得包括以下技术效果:
无需构建云平台恶意程序特征数据库,降低了检测难度,且不对用户程序有任何侵入性,也避免了攻击者利用混淆技术绕过代码扫描的问题,实现了恶意程序的有效检测。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的一种恶意程序检测方法一个实施例的流程图;
图2是本申请实施例的非法API的定义示意图;
图3是本申请实施例的一种恶意程序检测方法另一个实施例的流程图;
图4是本申请实施例的一种恶意程序检测装置一个实施例的结构示意图;
图5是本申请实施例的一种恶意程序检测装置另一个实施例的结构示意图;
图6是本申请实施例的一种恶意程序检测装置又一个实施例的结构示意图;
图7是本申请实施例的一种恶意程序检测装置又一个实施例的结构示意图。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1为本申请实施例提供的一种恶意程序检测方法一个实施例的流程图,该方法可以包括以下几个步骤:
101:获取用户程序调用的API,并在所述API中插入第一AOP(Aspect orientedprogramming,面向切面编程)切面。
102:在所述API被所述用户程序调用运行时,通过所述第一AOP切面采集所述API的运行上下文信息。
103:根据所述运行上下文信息,判断所述API是否为非法API。
104:根据判断结果,确定所述用户程序是否为恶意程序。
在所述判断结果表明所述API为非法API时,则可以确定用户程序为恶意程序,在所述判断结果表明所述API为合法API时,则可以确定用户程序不是恶意程序。
在实际应用中,本申请实施例具体应用于云计算平台上,用户程序为云租户在云计算平台上上传的程序。云计算平台提供了API接口供不同云租户的用户程序调用,以使得用户程序在云计算平台上能够运行。
其中,获取用户程序调用的API可以在所述用户程序运行之前预先获取;可以预先扫描用户程序,获得用户程序将要调用的API。
或者,在所述用户程序运行之后,其每调用一次API,即获取所调用的API,比如用户程序为Java程序时,是边运行边加载API的,Java解释器解释执行Java程序的指令序列时,首次执行到某个API时,才会加载这个API,第一AOP切面注入时机,利用了Java对切面编程aop的支持功能,在java解释器首次执行到某个API准备加载时,拦截该API的加载动作,并在这个时刻在该API中注入切面,然后再交由解释器继续加载运行该API。
当判断用户程序不是恶意程序时,即可以继续执行该用户程序。
在代码加载阶段,读取用户程序时,即可以获知用户程序需要调用的API。从而本申请实施例中能够在用户程序调用的API中插入AOP切面。
AOP是一种新的程序设计范型,它的目标是将代码各个部分进行分离,从而获得程序逻辑中各部分代码低耦合性的隔离效果。利用AOP,可以不修改程序字节码或者汇编代码文件,而是在代码插入AOP切面,然后再将代码解释执行。通过AOP,不对用户程序有任何侵入性,也即不需要用户修改自己代码,不需要用户提供程序源码给云服务商,不对用户依赖的程序语言核心API有任何修改(切面注入是在内存中完成,不实际修改API文件),可以避免侵犯第三方库和语言标准库函数的知识产权,也不需要修改查看和修改云租户程序的源代码。
插入的第一AOP切面编译为监控逻辑,在API被调用运行时,第一AOP切面被运行,使得能够采集API的运行上下文信息。
通过第一AOP切面采集的运行上下文信息,即可以判定该运行上下文信息是否为预先设定的非法API的运行上下文信息,从而能够确定用户程序调用的API是否为非法API,如果为非法API,则可以确定用户程序为恶意程序;如果不是非法API,则可以确定用户程序不是恶意程序。
其中,API的运行上下文信息可以包括API的类型、调用方法名、方法具体参数值以及方法返回值等。
在本申请实施例中,对于任一个用户程序,可以通过在其调用的API中插入第一AOP切面的方式,使得被调用的API运行时,运行第一AOP切面,即会采集API的运行上下文信息,从而根据运行上下文信息,可以确定被调用的API是否为非法API,进而可以有效确定用户程序是否为恶意程序。不需要构建云平台恶意程序特征数据库,不对用户程序有任何侵入性,也避免了攻击者利用混淆技术绕过代码扫描的问题,实现了恶意程序的有效检测。
非法API以及合法API可以预先设定。在云计算平台中,云租户之间通过安全隔离技术,如沙箱进行隔离。安全隔离技术定义了被隔离的云租户允许调用的合法API,即沙箱内的API,以及禁止运行的API,即沙箱外API,因此所述非法API可以为根据安全隔离技术的安全策略文件定义的禁止运行的API。
如图2所示的示意图中,安全隔离技术为沙箱,云租户只能允许调用沙箱允许操作的API,即合法API。沙箱外为定义的禁止运行的API。
进一步的,禁止调用的API中,有些API操作危险性较高,比如会访问密码文件、扫描其他用户文件、发起网络连接等,因此非法API可以具体为禁止调用的API中的危险API。
恶意程序在利用漏洞突破安全隔离防护后,就会获得部分或者全部非法API操作的调用权限,加载最高权限的payload、扫描本地文件、下载和执行外部程序、执行本地命令等危险操作,利用这些非法API,会尝试关闭安全管理,以便进行进一步的渗透。
因此本申请实施例中,利用第一AOP切面采集的API运行上下文信息,可以确定被调用的API为非法API时,则可以确定用户程序为恶意程序。当前的用户程序没有权限执行某些操作。
根据所述运行上下文信息,判断API是否为非法API具体可以是根据规则和启发式来判定的。
在实际应用中,用户程序执行过程中,由于语言解释器、核心库、沙箱或者第三方库等高权限程序,可能会触发用户程序而调用某些非法API。也即用户程序执行过程中,是调用这些高权限程序执行,而高权限程序可能调用非法API,从而使得用户程序调用的API的调用来源为高权限程序。
而高权限程序调用非法API是可能被允许的,不代表用户程序是恶意程序。也即存在合法调用非法API的合法调用程序。
例如,被安全隔离的禁止运行的API中,有些危险操作的API,比如java中的defineClass(),是java解释器和沙箱可以执行的,但是用户程序确不能自行调用。
因此为了避免误检测的问题,在本申请实施例的另一个实施例中,如图3所示,恶意程序检测方法可以包括以下几个步骤:
301:获取用户程序调用的API,并在所述API中插入第一AOP切面。
302:在所述API被所述用户程序调用运行时,通过所述AOP切面采集所述API的运行上下文信息。
303:根据所述运行上下文信息,判断所述API是否为非法API,如果是,执行步骤304,如果否,执行步骤305。
304:判断所述API是否为通过合法调用程序调用的,如果是,执行步骤305,如果否,执行步骤306。
所述合法调用程序具体为高权限程序,所述高权限程序至少包括沙箱、核心库、语音解释器或第三方库等。
第三方库也就是第三方API,第三方库是在系统库API基础上实现的,可以认为是由几个系统库API及相关代码组合而成,用户也可以合法使用。
305:确定所述用户程序不是恶意程序。
306:确定所述用户程序是恶意程序。
一旦确定是合法调用程序调用API,则可以确定该用户程序并非为恶意程序,从而可以避免误检测。
其中,判断所述用户程序调用的API,是否为通过合法调用程序调用的可以有多种可能的实现方式:
在一种可能的实现方式中,可以通过提取所述API的调用链进行分析。确定该API的调用来源是用户程序还是预定义的合法调用程序,如语言解释器、沙箱等。
可以通过反射机制或者分析整个系统调用栈来提取API的整个调用链,从API的直接调用者往上逐级检查各个调用者的合法性,检测规则为检测到第三方库或者沙箱等预定义的可以合法调用非法API的高权限程序则停止检测,说明API的调用来源为合法调用程序,如果检测到用户程序也停止检测,说明用户程序突破了安全隔离直接调用了API。因此,可以进一步通过AOP切面采集的运行上下文信息,判断被调用的API是否为非法API。
当然,判断所述API是否为通过合法调用程序调用的操作也可以是获取用户程序的API之后执行;
在所述API为通过合法调用程序调用的时,则可以直接确定用户程序不是恶意程序;
在所述API不是通过合法调用程序调用的时,再执行在所述API中插入第一AOP切面的步骤。
由于并不是所有的高权限程序均被允许调用非法API。
因此,作为又一个实施例,可以预先在合法调用程序中插入第二AOP切面,所述第二AOP切面定义了合法调用非法API的所述合法调用程序的相关信息;一旦用户通过调用所述合法调用程序,而触发调用API时,就会执行合法调用程序中的第二AOP切面,从而获得合法调用程序的相关信息。然后再分析API的调用链中的调用来源是否为该合法调用程序的相关信息对应的合法调用程序,如果存在,则表明该API的调用时合法的,用户程序不被判定为恶意程序。
具体的,步骤304中,所述判断所述API是否为通过合法调用程序调用的可以包括:
在通过所述第二AOP切面获取到所述合法调用程序的相关信息时,判断所述API调用链中的调用来源是否为所述合法调用程序的相关信息对应的合法调用程序。
如果是,则可以确定用户程序不是恶意程序,如果否,则可以确定用户程序为恶意程序。
从所述API的直接调用者往上逐级检查各个调用者的合法性,按照检测规则,如果检测到的调用来源为所述合法调用程序的相关信息对应的合法调用程序,则用户程序不是恶意程序。如果检测到的调用来源即为用户程序,则用户程序为恶意程序。
另外,由于高权限程序并不是允许可以调用全部的非法API。有些API的性质为非常危险,比如Java中关闭安全管理器(Set Security Manager)的API,这种API是不应当被任何用户程序或者高权限程序调用的。
作为又一个实施例,可以通过AOP预先在合法调用程序中插入第三AOP切面,该第三AOP切面定义了合法调用程序允许合法调用的非法API。一旦用户程序调用了合法调用程序,即会运行第三AOP切面,获得该合法调用程序能够合法调用的非法API。从而如果获取的用户程序调用的API为该第三AOP切面定义的合法调用的非法API,则表明用户程序并不是恶意程序,其调用的API是通过合法调用程序调用的,是被允许的。
具体的,步骤304中,所述判断所述API是否为通过合法调用程序调用的可以包括:
判断是否获得所述第三AOP切面定义的合法调用的非法API,以及所述API是否为所述第三AOP切面定义的合法调用的非法API,如果均为是,表明所述API为通过合法调用程序调用的,否则表明所述API不是通过合法调用程序调用的。
本实施中,如果用户程序调用的API是否通过合法调用程序调用的,则也可以无需分析所述API的调用链,只需在合法调用程序中预先插入第三AOP切面,通过运行所述第三AOP切面即可以获得合法调用程序合法调用的非法API。
从而如果获得了合法调用的非法API,且用户程序的调用的所述API为所述合法调用的非法API,则表明用户程序的API是通过合法调用程序调用的,从而可以确定用户程序不是恶意程序;否则即为恶意程序。
此外,在本申请实施例的又一个实施例中:
由于一些高权限程序,如沙箱,调用非法API的操作时通常是在初始化时完成,跳转至用户程序后,沙箱执行非法API的情况几乎不存在,因此本申请实施例中,获取用户程序调用的API具体可以是:
在高权限程序初始化结束之后,获取用户程序调用的API,并在所述API中插入AOP切面。从而可以避免不必要的操作,简化了检测操作。
本申请实施例可以适用于多种云场景中,如PaaS(Platform-as-a-Service,平台即服务)中的app engine,开放式数据处理服务中open MR(open mapreduce service)开放式mapreduce等。
用户程序,在PaaS平台上,可以是java、python、c和c++等,在开放式数据处理服务中,可以是一段数据分析代码等。
AOP切面的插入操作,以java程序为例,可以是是基于java字节码驱动库javassist来辅助进行,利用java语言对AOP的支持接口instrument包接口,会拦截用户程序在加载器中的加载过程,在加载的过程中在调用的API中插入已经生成好的AOP切面。
AOP切面在API被调用时被触发采集API的运行上下文信息。并可以触发分析运行上下文信息。
python程序,也可以利用其内在AOP的支持,配合python的字节码驱动包生成AOP切面和进行切面插入。
甚至对于C语言程序,利用ptrace系统调用也可以拦截C程序的API调用,以在API中插入AOP切面。
图4为本申请实施例提供的一种恶意程序检测装置一个实施例的结构示意图,该装置可以包括:
切面插入模块401,用于获取用户程序调用的API,并在所述API中插入第一AOP切面;
信息采集模块402,用于在所述API被所述用户程序调用运行时,通过所述第一AOP切面采集所述API的运行上下文信息;
判断模块403,用于根据所述运行上下文信息,判断所述API是否为非法API;
确定模块404,用于根据判断模块403的判断结果,确定所述用户程序是否为恶意程序。
在所述API为非法API时,则可以确定用户程序为恶意程序,在所述API为合法API时,则可以确定用户程序不是恶意程序。
在本申请实施例中,对于任一个用户程序,可以通过在其调用的API中插入AOP切面的方式,使得被调用的API运行时,运行AOP切面,即会采集API的运行上下文信息,从而根据运行上下文信息,可以确定被调用的API是否为非法API,进而可以有效确定用户程序是否为恶意程序。不需要构建云平台恶意程序特征数据库,不对用户程序有任何侵入性,也避免了攻击者利用混淆技术绕过代码扫描的问题,实现了恶意程序的有效检测。
其中,获取用户程序调用的API可以在所述用户程序运行之前预先获取,或者在所述用户程序运行之后获取。
非法API以及合法API可以预先设定。在云计算平台中,云租户之间通过安全隔离技术,如沙箱进行隔离。安全隔离技术定义了被隔离的云租户允许调用的合法API,以及禁止调用的API,因此所述非法API可以为根据安全隔离技术的安全策略文件定义的禁止调用的API。
进一步的,禁止调用的API中,有些API操作危险性较高,比如会访问密码文件、扫描其他用户文件、发起网络连接等,因此非法API可以具体为禁止调用的API中的危险API。
在实际应用中,由于语言解释器、核心库、沙箱或者第三方库等高权限程序,可能会通过用户程序而调用某些非法API,从而使得非法API的调用来源为高权限程序。而高权限程序调用非法API是可能被允许的,不代表用户程序是恶意程序。也即存在合法调用非法API的合法调用程序。
因此为了避免误检测的问题,在本申请实施例的另一个实施例中,如图5所示,所述确定模块404可以包括:
判断单元501,用于所述判断模块403判断出所述API为非法API时,判断所述API是否为通过合法调用程序调用的,所述合法调用程序为高权限程序,所述高权限程序至少包括沙箱、核心库、语音解释器或第三方库;
确定单元502,用于在所述判断单元501判断出所述API为通过合法调用程序调用的时,确定所述用户程序不是恶意程序;在所述判断单元501判断出所述API不是通过合法调用程序调用的,或者所述判断模块403判断出所述API为合法API时,确定所述用户程序是恶意程序。
其中,所述判断单元判断所述用户程序调用的API,是否为通过高权限程序调用的可以有多种可能的实现方式:
在一种可能的实现方式中,可以通过提取所述API的调用链进行分析。确定该API的调用来源是用户程序还是语言解释器、沙箱等合法调用程序。
由于并不是所有的高权限程序均会调用非法API,或者高权限程序会调用全部的非法API。有些API的性质为非常危险,比如Java中关闭安全管理器(Set SecurityManager)的API,这种API是不应当被任何用户程序或者高权限程序调用的,因此在判断出用户程序调用的API为非法API,且为预设的危险API,则可以直接确定用户程序为恶意程序。
作为又一个实施例,如图6所述,所述装置还可以包括:
第一预设置模块601,用于预先在合法调用程序中插入第二AOP切面,所述第二AOP切面定义了合法调用非法API的所述合法调用程序的相关信息;
所述判断单元501具体用于:
在获取到所述第二AOP切面定义的合法调用程序的相关信息时,判断所述API调用链中的调用来源是否为所述合法调用程序的相关信息对应的合法调用程序。
如果是,则可以确定用户程序不是恶意程序,如果否,则可以确定用户程序为恶意程序。
另外,作为又一个实施例,如图7所示,所述装置还可以包括:
第二预设置模块701,用于预先在合法调用程序中插入第三AOP切面,所述第三AOP切面定义了所述合法调用程序合法调用的非法API;
所述判断单元501则可以具体用于:
判断是否获得所述第三AOP切面定义的合法调用的非法API,以及所述API是否为所述合法调用的非法API,如果均为是,表明所述API为通过合法调用程序调用的,否则表明所述API不是通过合法调用程序调用的。
本实施中,如果用户程序调用的API是否通过合法调用程序调用的,则也可以无需分析所述API的调用链,只需在合法调用程序中预先插入第三AOP切面,通过运行所述第三AOP切面即可以获得合法调用程序合法调用的非法API。
从而如果获得了合法调用的非法API,且用户程序的调用的所述API为所述合法调用的非法API,则表明用户程序的API是通过合法调用程序调用的,从而可以确定用户程序不是恶意程序;否则即为恶意程序。
另外,由于高权限程序,如沙箱,调用非法API的操作时是在初始化时完成,跳转至用户程序后,沙箱等执行非法API的情况极少,因此本申请实施例中,所述切面插入模块具体用于在合法调用程序初始化结束之后,获取用户程序调用的API,并在所述API中插入第一AOP切面。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述申请构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

Claims (10)

1.一种恶意程序检测方法,其特征在于,包括:
获取用户程序调用的API,并在所述API中插入第一AOP切面;
在所述API被所述用户程序调用运行时,通过所述第一AOP切面采集所述API的运行上下文信息,所述运行上下文信息包括API的类型、调用方法名、方法具体参数值以及方法返回值;
根据所述运行上下文信息,判断所述API是否为非法API;
根据判断结果,确定所述用户程序是否为恶意程序;
其中,所述根据判断结果,确定所述用户程序是否为恶意程序,包括:
所述API为非法API时,判断所述API是否为通过预设合法调用程序调用的;若是,则确定所述用户程序不是恶意程序,否则确定所述用户程序是恶意程序。
2.如权利要求1所述的方法,其特征在于,所述合法调用程序为高权限程序,所述高权限程序至少包括沙箱、核心库、语言解释器或第三方库。
3.如权利要求2所述的方法,其特征在于,预先在合法调用程序中插入第二AOP切面,所述第二AOP切面定义了合法调用非法API的所述合法调用程序的相关信息;
所述判断所述API是否为通过合法调用程序调用的包括:
在获取到所述第二AOP切面定义的所述合法调用程序的相关信息时,判断所述API的调用链中的调用来源是否为所述合法调用程序的相关信息对应的合法调用程序。
4.如权利要求2所述的方法,其特征在于,预先在合法调用程序中插入第三AOP切面,所述第三AOP切面定义了所述合法调用程序合法调用的非法API;
所述判断所述API是否为通过合法调用程序调用的包括:
判断是否获得所述第三AOP切面定义的合法调用的非法API,以及所述API是否为所述合法调用的非法API,如果均为是,表明所述API为通过合法调用程序调用的,否则表明所述API不是通过合法调用程序调用的。
5.如权利要求1所述的方法,其特征在于,所述获取用户程序调用的API,并在所述API中插入第一AOP切面包括:
在高权限程序初始化结束之后,获取用户程序调用的API,并在所述API中插入第一AOP切面。
6.一种恶意程序检测装置,其特征在于,包括:
切面插入模块,用于获取用户程序调用的API,并在所述API中插入第一AOP切面;
信息采集模块,用于在所述API被所述用户程序调用运行时,通过所述第一AOP切面采集所述API的运行上下文信息,所述运行上下文信息包括API的类型、调用方法名、方法具体参数值以及方法返回值;
判断模块,用于根据所述运行上下文信息,判断所述API是否为非法API;
确定模块,用于根据所述判断模块的判断结果,确定所述用户程序是否为恶意程序;
其中,所述确定模块包括:
判断单元,所述API为非法API时,判断所述API是否为通过预设合法调用程序调用的;
确定单元,若所述API为通过预设合法调用程序调用的,则确定所述用户程序不是恶意程序,否则确定所述用户程序是恶意程序。
7.如权利要求6所述的装置,其特征在于,所述合法调用程序为高权限程序,所述高权限程序至少包括沙箱、核心库、语音解释器或第三方库。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
第一预设置模块,用于预先在合法调用程序中插入第二AOP切面,所述第二AOP切面定义了合法调用非法API的所述合法调用程序的相关信息;
所述判断单元具体用于:
在获取到所述第二AOP切面定义的合法调用程序的相关信息时,判断所述API调用链中的调用来源是否为所述合法调用程序的相关信息对应的合法调用程序。
9.如权利要求7所述的装置,其特征在于,所述装置还包括:
第二预设置模块,用于预先在合法调用程序中插入第三AOP切面,所述第三AOP切面定义了所述合法调用程序合法调用的非法API;
所述判断单元具体用于:
判断是否获得所述第三AOP切面定义的合法调用的非法API,以及所述API是否为所述合法调用的非法API,如果均为是,表明所述API为通过合法调用程序调用的,否则表明所述API不是通过合法调用程序调用的。
10.如权利要求6所述的装置,其特征在于,所述切面插入模块具体用于在高权限程序初始化结束之后,获取用户程序调用的API,并在所述API中插入第一AOP切面。
CN201510360075.5A 2015-06-26 2015-06-26 恶意程序检测方法及装置 Active CN106295336B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510360075.5A CN106295336B (zh) 2015-06-26 2015-06-26 恶意程序检测方法及装置
PCT/CN2016/086103 WO2016206565A1 (zh) 2015-06-26 2016-06-17 恶意程序检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510360075.5A CN106295336B (zh) 2015-06-26 2015-06-26 恶意程序检测方法及装置

Publications (2)

Publication Number Publication Date
CN106295336A CN106295336A (zh) 2017-01-04
CN106295336B true CN106295336B (zh) 2020-05-22

Family

ID=57584657

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510360075.5A Active CN106295336B (zh) 2015-06-26 2015-06-26 恶意程序检测方法及装置

Country Status (2)

Country Link
CN (1) CN106295336B (zh)
WO (1) WO2016206565A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107392619B (zh) * 2017-07-31 2020-12-29 众安信息技术服务有限公司 智能合约处理方法及装置
RU2697954C2 (ru) * 2018-02-06 2019-08-21 Акционерное общество "Лаборатория Касперского" Система и способ создания антивирусной записи
CN112507292B (zh) * 2020-12-09 2024-01-26 重庆邮电大学 一种支持运行环境检测及完整性检测的加壳保护方法
CN113010892B (zh) * 2021-03-26 2022-09-20 支付宝(杭州)信息技术有限公司 小程序恶意行为检测方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101005497A (zh) * 2006-11-27 2007-07-25 科博技术有限公司 一种阻止恶意代码入侵的系统及方法
CN104715195A (zh) * 2015-03-12 2015-06-17 广东电网有限责任公司信息中心 基于动态插桩的恶意代码检测系统及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007113709A1 (en) * 2006-03-30 2007-10-11 Koninklijke Philips Electronics N.V. Method and apparatus for assigning an application to a security restriction
CN101408917A (zh) * 2008-10-22 2009-04-15 厦门市美亚柏科资讯科技有限公司 应用程序行为合法性检测方法及系统
CN102737188A (zh) * 2012-06-27 2012-10-17 北京奇虎科技有限公司 检测恶意网页的方法及装置
CN102930203B (zh) * 2012-10-12 2015-08-26 浙江大学城市学院 一种轻量级JavaScript沙箱的实现方法
US9607146B2 (en) * 2013-09-18 2017-03-28 Qualcomm Incorporated Data flow based behavioral analysis on mobile devices
CN103440459B (zh) * 2013-09-25 2016-04-06 西安交通大学 一种基于函数调用的Android恶意代码检测方法
CN104391787B (zh) * 2014-11-13 2017-04-26 华为软件技术有限公司 一种针对目标方法的监控、热切入方法及装置
CN104598824B (zh) * 2015-01-28 2016-04-06 国家计算机网络与信息安全管理中心 一种恶意程序检测方法及其装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101005497A (zh) * 2006-11-27 2007-07-25 科博技术有限公司 一种阻止恶意代码入侵的系统及方法
CN104715195A (zh) * 2015-03-12 2015-06-17 广东电网有限责任公司信息中心 基于动态插桩的恶意代码检测系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于AOP的软件运行轨迹捕获技术研究与实现;张瞩熹等;《计算机应用》;20080531;第28卷(第5期);第1322-1324页 *

Also Published As

Publication number Publication date
WO2016206565A1 (zh) 2016-12-29
CN106295336A (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
US6907396B1 (en) Detecting computer viruses or malicious software by patching instructions into an emulator
US10372444B2 (en) Android dynamic loading file extraction method, recording medium and system for performing the method
US9223964B2 (en) Detecting JAVA sandbox escaping attacks based on JAVA bytecode instrumentation and JAVA method hooking
WO2015124018A1 (zh) 基于智能终端设备的应用程序访问方法与装置
US20190102552A1 (en) System and method for detection of malicious code in the address space of processes
CN106295336B (zh) 恶意程序检测方法及装置
CN108763951B (zh) 一种数据的保护方法及装置
CN109255235B (zh) 基于用户态沙箱的移动应用第三方库隔离方法
US7930744B2 (en) Methods for hooking applications to monitor and prevent execution of security-sensitive operations
CN110855642B (zh) 应用漏洞检测方法、装置、电子设备及存储介质
CN108959936B (zh) 一种基于路径分析的缓冲区溢出漏洞自动利用方法
CN115659333A (zh) 一种基于二进制插桩的沙箱、内存隔离方法及存储介质
CN103970574B (zh) office程序的运行方法及装置、计算机系统
KR102156340B1 (ko) 웹 페이지 공격 차단 방법 및 장치
KR101477050B1 (ko) 메모리 덤프 기법을 이용한 어플리케이션의 실행코드 추출 방법
CN110826065B (zh) 一种扫描方法、装置及系统
CN111783087A (zh) 可执行文件恶意执行的检测方法及装置、终端、存储介质
EP3769247B1 (en) System and method for preventing unwanted bundled software installation
CN109840417B (zh) 一种恶意软件检测方法及装置
Titze et al. Preventing library spoofing on android
CN113836529A (zh) 进程检测方法、装置、存储介质以及计算机设备
US20190080090A1 (en) Method and apparatus for detecting dynamically-loaded malware with run time predictive analysis
Teufl et al. Android-On-device detection of SMS catchers and sniffers
CN110806860B (zh) 安卓环境下的应用封装方法、装置及应用运行方法、装置
CN118158000B (zh) 一种容器安全检测方法、系统、电子设备、芯片及介质

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