CN105631336A - 检测移动装置上的恶意文件的系统及方法 - Google Patents
检测移动装置上的恶意文件的系统及方法 Download PDFInfo
- Publication number
- CN105631336A CN105631336A CN201610067353.2A CN201610067353A CN105631336A CN 105631336 A CN105631336 A CN 105631336A CN 201610067353 A CN201610067353 A CN 201610067353A CN 105631336 A CN105631336 A CN 105631336A
- Authority
- CN
- China
- Prior art keywords
- file
- classification
- instruction
- vector
- rid
- 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.)
- Granted
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/562—Static detection
-
- 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/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/725—Cordless telephones
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M2203/00—Aspects of automatic or semi-automatic exchanges
- H04M2203/60—Aspects of automatic or semi-automatic exchanges related to security aspects in telephonic communication systems
- H04M2203/6036—Anti virus measures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了用于检测移动装置上的恶意文件的系统、方法和计算机程序产品。示例性方法包括:分析文件来识别类别和包含在所述类别中的方法;识别各个识别的方法的字节码数组;通过从各个方法的字节码数组识别对应的操作代码来确定各个方法中包含的指令;基于所述指令间的功能性的相似性来将各个方法的确定的指令分成多个群组;基于将指令分成多个群组的结果来形成各个方法的矢量;将形成的矢量与已知恶意文件的多个矢量相比较来确定比较矢量之间的相似性;以及基于比较矢量的相似性确定分析的文件是恶意的或干净的。
Description
技术领域
本发明大体上涉及计算机安全领域,并且更具体地涉及检测移动装置上的恶意文件的系统及方法。
背景技术
移动计算装置(下文称为移动装置)已经在现代社会中变为生活的不可或缺的部分。此类装置的实例为移动电话、智能电话、个人通信器、平板计算机和笔记本计算机。大多数移动装置大体上包含日常活动所需的各种用户数据。此类数据可为隐私(如,照片和视频)、个人的(如,全名、出生年、电话号码)和机密的(如,银行网站的登录名和密码、信号卡卡号)。
用于移动装置上的大多数主流的移动平台中的一个是谷歌安卓(安卓OS)操作系统。首先,安卓OS由于其开放和免费性质而使其赢得流行度,导致其广泛用于各种硬件平台,且因此大量不同应用程序已经由想要在安卓OS下工作的那些人开发出。目前,已经针对安卓OS创造出几百万应用程序,且已经安装在全球超过十亿个移动装置上。同时,针对使用安卓OS的移动装置创造出了日益增多的恶意程序。用语"移动装置的恶意程序"大体上包括设计成获得未授权访问移动装置的计算资源或储存在其上的信息以达未授权使用资源的目的,或通过复制、篡改、移除或替换信息使移动装置的所有者受害(引起损失)的任何软件。用语"信息"大体上包括关于用户联系人或信用卡以及访问各种应用程序和网站的信息。用语"未授权使用"大体上包括在移动装置所有者并未授权和/或知晓的情况下执行的动作,如,进行不需要的电子支付、发送包含垃圾邮件的电子消息、以及进行电话呼叫。因此,由于安装在移动装置上的应用程序或多或少可访问用户的"重要"信息,故保护移动装置及其应用程序免受恶意程序就变得很重要。
保护移动装置的大多数现有解决方案基本上是来自使用Windows操作系统的个人计算机的改编的反病毒程序。此类反病毒程序在用在移动装置上时遇到了很多困难。首先,恶意动作在移动装置上不同于在PC上,这需要反病毒程序的技术的对应改变。第二,在移动装置上,由恶意程序执行的动作大体上通过API功能实现,且由于各个移动平台(如,Linux内核的OS、安卓OS、苹果OS(IOS)或BadaOS)具有其自身的API功能,故各个平台还对应地需要优化,这可导致使反病毒程序的工作复杂化。因此,在搜索恶意文件和执行反病毒检查时,这也必须考虑。第三,旨在用于移动装置的反病毒程序在移动装置的系统资源如电池、中央处理单元(CPU)和存储器的使用中具有限制(例如,OS自身限制访问资源)。为了解决这些困难,就需要将考虑移动平台的特征的专业反病毒程序。
此外,恶意程序也不是保持不变。目前,存在越来越多针对移动平台的程序,特别是木马程序,其使用多形性(增加/改变文件中的指令,而不改变实际功能)、变形(病毒主体的完全改变,而不改变其功能,多形性的更复杂形式)和程序代码混淆的技术。混淆意思是程序的原始文本或可执行代码变为保持其功能性但在反编译期间对抗分析、工作算法的理解和修改的形式。这些技术使得有可能隐藏恶意软件的可执行代码,且将其变为保持代码的功能性但对抗反病毒分析且隐藏其算法工作的形式。
另外,安卓OS中的移动应用程序的执行的一个主要技术为Dalvik虚拟机。Dalvik可执行格式的可执行文件(下文为DEX文件)的一个特性在于文件中的代码的一部分可改变位置而没有丢失执行逻辑。应当注意的是,执行移动应用程序的另一个技术在于安卓运行时环境,其也具有前述特征。因此,使用搜索代码相似性(例如,应用程序的行模式(linepattern)或行为的分析)的经典恶意软件检测方法的技术对对抗此类恶意文件收效甚微,且上文提出的反病毒方法不能揭示此类恶意程序(文件)。因此,需要用于确定文件的相似性的更有效的方法。
因此,需要恶意程序的分析和识别的新原理,其可适于移动平台,尤其是安卓移动平台,且同时对抗多形性和程序代码混淆的技术。
发明内容
公开了用于检测移动装置上的恶意文件的系统、方法和计算机程序产品。示例性方法包括:由硬件处理器分析文件来识别至少一个或多个类别和包含在所述一个或多个类别中的一个或多个方法;由硬件处理器识别各个识别的方法的字节码数组;由硬件处理器通过从各个方法的字节码数组识别对应的操作码来确定各个方法中包含的指令;由硬件处理器基于所述指令间的功能性的相似性来将各个方法的确定的指令分成多个群组;由硬件处理器基于将指令分成多个群组的结果来形成各个方法的矢量;由硬件处理器将分析的文件的方法的形成矢量与储存在数据库中的已知恶意文件的多个矢量相比较来确定比较的矢量之间的相似性;以及由硬件处理器基于比较矢量之间的相似性的程度确定分析的文件是恶意的还是干净的。
在一个示例性方面中,分析文件的步骤包括反汇编和反编译文件中的一个或多个。
在一个示例性方面中,指令基于字节码数组的语义值分成多群组。
在一个示例性方面中,多个群组包括以下的一个或多个群组:没有逻辑意义的指令、以常数工作的指令、以字段工作的指令、属于呼叫或拦截的指令。
在一个示例性方面中,比较矢量的步骤包括比较n维欧几里得空间中的其两个相关联的点之间的距离。
在一个示例性方面中,比较矢量的步骤包括执行以下一个或多个:从比较中排除属于标准库程序包的类别和方法;从比较中排除不包含单个方法的类别;从比较中排除包含两个指令或更少的方法;如果这些文件的类别和方法的总数与检查的文件的类别和方法的总数的比较相差超过25%,则从进一步比较中排除其矢量保存在数据库中的文件;如果比较的类别或方法的大小相差超过25%,则从比较中排除进一步比较中比较的文件的类别或方法;以及从比较中排除仅包含在单个类别中的方法的矢量。
一种用于检测恶意文件的示例性系统,包括:硬件处理器,其配置为:分析文件以识别至少一个或多个类别和包含在所述一个或多个类别中的一个或多个方法;识别各个识别的方法的字节码数组;通过从各个方法的字节码数组识别对应的操作代码来确定各个方法中包含的指令;基于所述指令间功能性的相似性来将各个方法的确定的指令分成多个群组;基于将指令分成多个群组的结果来形成各个方法的矢量;将分析的文件的方法的形成矢量与储存在数据库中的已知恶意文件的多个矢量相比较来确定比较的矢量之间的相似性;以及基于比较矢量的相似性程度确定分析的文件是恶意的还是干净的。
示例性方面的以上简化概述用于提供本公开内容的基本理解。该概述不是所有构想的方面的宽泛综述,且旨在既不识别所有方面的关键或重要元素,又不划出本公开内容的任何或所有方面的范围。其唯一目的在于以简化形式提出一个或多个方面作为之后的本公开内容的更详细描述的前序。为了实现上述内容,本公开内容的一个或多个方面包括权利要求中描述和特别指出的特征。
附图说明
并入且构成本说明书的一部分的附图示出了本公开内容的一个或多个示例性方面,且连同详细描述用于阐释其原理和实施方式。
图1A示出了DEX格式的可执行文件的示例性结构图。
图1B示出了DEX格式的可执行文件的实例。
图2示出了检测移动装置上的恶意文件的示例性系统。
图3示出了用于检测移动装置上的DEX格式的可执行文件间的恶意文件的示例性算法。
图4示出了用于提高确定文件的相似性程度的准确性的示例性算法。
图5示出了包含用于生成方法的矢量的"onReceive"方法的示例性代码的表格。
图6示出了公开的系统和方法可在其上实施的通用计算机系统的实例。
具体实施方式
示例性方面在此在用于检测移动装置上的恶意文件的系统、方法和计算机程序产品的背景下描述。本领域的普通技术人员应知道以下描述仅为示范性的,且不旨在以任何方式限制。其它方面将容易对于受益于本公开内容的本领域的技术人员显现。现在将详细参照如附图中所示的示例性方面的实施方式。相同的参考指示符将在附图和以下描述各处可能的程度用于表示相同或相似的项目。
用于检测移动装置上的恶意文件的系统、方法和计算机程序产品的示例性方法将在安卓OS的背景下在此描述。然而,本领域的普通技术人员将认识到这些方面可容易地适于其它移动操作系统和平台。将首先考虑安卓OS中执行的应用程序的特性。当创造出用于安卓OS的应用时,文件由安卓程序包格式(下文为acr文件)构成,其基本上是档案文件。档案文件大体上包含以下文件:"META-INF"目录、"res"目录、文件"AndroidManifest.xml"、文件"classes.dex"和文件"resources.arsc"。
META-INF目录继而又包含为应用程序的证书的文件CERT.RSA,包含资源文件(如,图片、声音等)的校验的文件CERT.SF,以及包含描述apk文件自身的业务信息的文件MANIFEST.MF。换言之,该文件夹包含由开发者公司验证所述应用程序的应用程序的签名文件。
"res"文件夹包含各种资源文件,例如,其使得有可能显示界面和图片,以及再现应用程序的调整。
文件"AndroidManifest.xml"是所谓的"apk应用程序的通行证"。该文件包含关于应用程序的总体信息,包括应用程序的工作所需的业务信息,如,关于访问网络或联系人的信息。
文件"resources.arsc"是资源表格。文件包含XML超文本(可延伸标记语言)形式的所有资源的描述。
文件"classes.dex"为Dalvik可执行格式(下文称为DEX)的可执行文件,其包含虚拟机Dalvik(下文为VMD)中工作所需的字节码和业务信息。应当注意的是,VMD是安卓OS中的应用程序执行的主要方法。DEX格式的属性使得有可能获得关于程序的结构元素的全部信息(例如,类别、方法、字段、异常处理程序等),以及使这些元素与确定其行为的字节码相关联。
图1A显示DEX文件100的结构图,显示了文件的结构元素的部分。DEX格式100的文件由类别110a...110n构成。在面向对象编程中,类别意思是多种抽象数据类型,其特征为其构造的方法。抽象数据类型继而又意味着提供与对应类型的元素一起工作的某一组方法120a...120n的数据类型,以及借助于特殊(其它)方法建立(形成)此类型的元素的能力。DEX格式100的各个文件的类别110和方法120的数目根据对应应用的目标和任务变化。各个方法包括VMD指令。VMD指令的格式可以以以下形式存在:
操作码 | 寄存器|自变量 |
如可看到那样,指令分成了两个部分,其中第一部分包含指令的操作码("OPCODE")。第二部分包含指令的自变量且限定了由指令使用的寄存器和其它参数(如,寄存器的值)。DEX格式的可执行文件的源代码的实例在图1B中示出。绘出了程序包"com.soft.android.appinstaller",其源代码将用于构造DEX格式的文件,其类别将以树形结构的形式存在(ActivityTexts、FinishActivity等)。此外,类别"MessageSender"的指令在图1B中的右侧示出。应当注意的是,各个方法基本上包含用于执行其目的的某一数目的命令且具有一组输入自变量。因此,对于DEX格式的文件中的类别的各个方法,人们可限定对应的字节码数组(例如,指令集)。
在一个示例性方面中,用于检测恶意文件的方法基于比较包含在所述文件中的程序的结构元素(如,方法和类别)的功能性来比较DEX格式的文件。此途径克服了用于DEX格式文件的文件的二进制和逐行比较的已知方法的缺陷。一个缺陷在于假定单个字节码顺序的二进制比较通过改变字节码数组的顺序来规避。另一个缺陷在于逐行比较在相等大小的行被加密时不起作用。
图2示出了检测移动装置(如基于安卓OS的装置)上的恶意文件的示例性系统(为了简便,以下为检测系统)。如图所示,检测系统200可安装在移动装置20上用于检测恶意文件。应当注意的是,移动装置为计算机系统的特定情况,如,图6中所述的一个,但还可包括使用安卓OS的移动电话、智能电话、个人通信器或平板计算机。因此,需要反病毒保护的移动装置上的可执行文件大体上是DEX格式的可执行文件100,如,文件1、文件2、文件3和文件N,其中各个为文件100。因此,在运行各个文件100之前,检测系统200可执行文件100的反病毒检查。
在一个示例性方面中,检测系统200至少包括分析模块210、矢量创造模块220、比较模块230和矢量数据库240。类似地,在一个示例性方面中,检测系统200包括优化模块250。此外,检测模块220可具有与远程服务器的连接,如,反病毒服务器280。例如,与服务器280的连接将通过因特网270发生。反病毒服务器280可具有不同目的,在一个示例性方面中,包括提供分析模块210、矢量创造工具(means)220和比较模块230的功能。在此情况下,分析模块210、矢量创造模块220和比较模块230可部分地或完全地将其任务重新定向至反病毒服务器280上的对应的模块。然后,分析模块210、矢量创造模块220和比较模块230将用作监测工具,以发送和接收用于检测系统200的工作的必需信息。在又一个示例性方面中,上述模块210、220、230、240和250可位于远程服务器280上,且然后通信模块290可执行在所述模块与移动装置20之间交互的任务。例如,通信模块290可传输将需要在它们上执行反病毒检查的文件或足以执行反病毒检查的文件上的数据(如,文件的哈希和)。因此,在一个示例性方面中,检测系统200可为分布式检查系统。
因此,分析模块210执行被检查文件100的分析,以便识别关于文件内容的信息,尤其是类别和识别的类别中包含的方法。在一个示例性方面中,分析模块210配置为通过反汇编文件来将文件拆开,为了将文件的可执行代码转换成程序的源代码的目的。此后,确定文件的内容(构成),即,关于方法和类别的信息。为了文件的反汇编,模块210可为或包含反汇编程序功能。在另一个示例性方面中,文件的拆开可由文件反编译实现。为了文件的反编译,分析模块210可为或包含文件反编译程序功能,其设计成拆开DEX格式的文件,如反编译"ApkTool"。
接下来,对于识别的各类方法,分析模块210可确定对应的字节码数组(连续指令集)。基本上,字节码数组为特定方法以虚拟机的代码的表现。确定字节码数组之后,分析模块210可将给定数组分解成指令(命令)。以此方式,形成正分析的文件的各个类别的各个方法的"功能映射"。当分析模块210将数组分解成字节码的指令和确定时,模块210基本上执行DEX格式的应用程序(文件)的指令长度反汇编程序的功能。
接下来,分析模块210可将识别的信息(即,方法及其具有对应字节码的对应指令)转发至矢量创造模块220。应当注意的是,例如,在发现类别中缺少至少一个方法的情况下,类别可认作是不重要的。在又一个示例性方面中,如果方法将包含少于两个指令(命令),则该方法也可认为是不重要的。应当注意的是,当确定类别或方法不重要,则这意味着它们可根据一个示例性方法从进一步分析中排除。这种优化使得有可能提高进一步分析的速度,以及降低假阳性检测的水平。
在一个示例性方面中,矢量创造模块220配置成基于从分析模块210接收的信息,即,基于各个方法的字节码的分析,形成各个方法的矢量(包括检查的文件的方法)。形成矢量的原理将接下来使用作为实例的"onReceive"方法的矢量的形成来呈现。分解成行的"onReceive"方法的代码在图5中的表1中呈现。如可从表1看到的那样,各行均通过与其自变量和寄存器的对应偏移构成VMD的指令代码。当执行方法的矢量时,矢量创造模块220仅选择指令的第一字节,其确定由指令执行的动作。换言之,我们选择指令的"OPCODE",其大体上由第一代码字节表征。根据表1,第一字节将为机器代码的头两个数字,即,每个偏移0000的第一行的6E、每个偏移0006的第二行的0A,以此类推。因此,将选择以下字节:6E、0A、2B、54、71、0E、54、71、0A、D8、71、54、71、0C、71、0C、6E、0C、1F、52、54、71、0A、33、54、71和28。
接下来,矢量创造模块220计算属于特定功能群组的指令的数目。例如,可使用对应性表格(其实例为表2)完成确定特定指令与对应的功能群组(下文为群组)的从属关系。根据表2,指令与特定群组的从属关系可由指令的操作码确定。
表2
群组 | 指令的操作码 |
群组1 | 操作码1,操作码2,操作码5,…,操作码N |
群组2 | 操作码3,操作码6,操作码8,…,操作码K |
群组3 | 操作码4,操作码7,操作码9,…,操作码L |
… | … |
群组n | 操作码10,操作码11,操作码12,…,操作码M |
例如,对于"onReceive"方法,控制转移群组(换言之,"调用"呼叫的群组)或群组1可包括指令的操作码,如,6E和71。因此,矢量创造模块220基于例如其功能性的相似性(根据指令的操作码的语义值)将整个指令集分解成n个群组。应当注意的是,指令(命令)随后将分配于其中的群组可自动地创造,或借助于用户预先指定。此群组的实例可为以下:没有逻辑意义指令群组(如,在寄存器之间传输数据的指令),以常数工作的指令群组,以字段工作的指令群组,用于呼叫、截取和/或控制转移的指令群组。
在将所有指令分成群组之后,例如,矢量创造模块220可呈现n维欧几里得空间中的矢量(点)形式的各个方法。
F(M)={x0,x1,...,xk},k=dim(M),其中x∈OPCODE
其中M是方法,
F(M)是方法的功能映射,
m是对应于方法的n维空间中的点,以及
是根据指定的群组操作码因其语义值的分区。
换言之,当形成矢量时,群组中的命令的数目确定了沿对应的轴线的矢量的坐标。对于分析中的文件的所有确定类别的方法形成的矢量由矢量创造模块220发送至比较模块230。
在一个示例性方面中,在直接地形成矢量之前,矢量创造模块220可从进一步检查中识别和排除属于标准库程序包(例如,它们为软件开发包的一部分)的类别和方法。例如,这基于确定方法和/或类别的字节码(操作码)与标准库程序包的从属关系来完成。
在一个示例性方面中,比较模块230借助于检查的文件的方法的形成矢量执行文件与储存在矢量数据库240中的文件的方法的矢量的比较。借助于获得的文件的方法的矢量表现,比较模块230产生比较的文件的两个最接近的方法之间的差异程度的计数(表现)作为n维欧几里得空间中其两个相关联的点之间的距离。换言之,对于各个点,人们发现另一个文件的另一个方法的最近点,且确定了距离。在特定方面中,为了比较,模块230可使用Levenshtein算法或任何类似算法。
因此,例如,方法p和q的距离可利用以下公式计算:
其中diff为两个相关联的点之间的距离。
因此,确定了一定距离"diff"(差异度),其然后标准化成形成的矢量的长度(命令的总数)。其标准化的差异程度越小,则认为比较的方法越相似。差异程度位于零与一(unity)之间的区间中。
接下来,比较模块230宣告检查的DEX格式100的文件与其矢量储存在矢量数据库240中的文件的相似性的判定。此后,比较模块230借助于识别的最相似的文件来确定检查的DEX格式100的文件是否是恶意的。在最相似的文件是恶意文件的情况下,检查的文件也认作是恶意的。否则,如果最相似的文件是干净文件(无恶意),则检查的文件也认作是干净的。关于一个文件或另一个的恶意的信息也储存在矢量数据库240中。
尽管如此,但应当注意的是,在确定文件的相似性时,人们首先进行其方法的比较,然后其类别的比较,且作出最终决定。因此,在特定方面中,如果方法与彼此小于50%的相似性,则将认为方法完全不相似。在给定情况下,方法的相似性可通过包含在它们中的指令(操作码)的和来确定。因此,操作码越相同,则方法将越相似。另外,如果类别相差10%以上,则类别将为不同的。在给定情况中,类别的相似性可由包含在它们中的方法的和(数目)来确定。
标准化的差异程度可由以下公式计算:
此外,为了在不同示例性方面中提高确定文件相似度的准确性,优化模块250可在将它们与检查的文件的方法的矢量比较之前执行储存在矢量数据库240中的方法的矢量的优化,且/或在比较两个文件时直接执行优化。
在一个示例性方面中,优化模块250配置为通过进行并非所有方法(更准确说,其矢量)而是仅接近的那些的彼此比较来执行优化。为此,方法可以以递增顺序排序。排序可根据各个方法的指令的数目(和)来完成。
在一个示例性方面中,例如,优化模块250配置为通过仅比较相似类别内的方法来执行优化。因此,在比较方法之前,模块250还比较类别。例如,如果类别满足分配给它们的相似性系数,则将比较对应的类别的方法。例如,类别的相似性的系数可通过比较包含在各个类别中的方法的数目(和)来计算。此外,选择哪些类别进行彼此比较和类别内的哪些方法应当同样进行彼此比较可基于对应的方法和类别的大小(和)的比较。如前文提到的大小可通过将类别的方法的数目相加和将方法的指令的数目相加来确定。因此,例如,如果在比较类别或方法时大小相差25%以上,则将不会执行它们的进一步分析。否则,如果大小相差小于25%,则将比较它们。
在一个示例性方面中,比较模块230还可在完整比较之前执行文件的初步比较。在此情况下,可比较各个文件的类别和方法的总数。如果矢量数据库240中的文件与检查的当前文件的差异在任一方向上不大于25%,则将完成文件的进一步比较。否则,比较模块230将宣告文件不同于彼此的判定。
又在另一个示例性方面中,优化模块250配置为通过限制比较的矢量(点)的数目来执行优化。例如,限制可由n维欧几里得空间中的一定范围形成,使得将仅比较落入此范围内的矢量(点)。在特定方面中,范围基于所有点的坐标的和来确定。
应当注意的是,提到的初步优化使得有可能增大文件的比较的速度,且因此,检查文件100和检测它们当中恶意文件的速度。
图3显示检测移动装置上的恶意文件的示例性方法。大体上,在在移动装置20上执行可执行文件的防病毒检查期间,文件与已知恶意文件相比较。为此,在步骤310中,分析模块210将分析的文件拆开。在反编译期间,在步骤320中,分析模块210识别关于文件的结构的信息,特别是一列类别和包含在识别的类别中的方法。在步骤330中,分析模块210形成各个识别的方法的一列指令(命令)。为此,确定各个识别的方法的对应的字节码数组(命令集)。字节码数组为机器代码中的特定方法的表现。选择各个方法的字节码数组,所述数组分解成具有其自身的字节码的独立的指令(命令)。因此,形成对于分析的文件的各个类别的各个方法的功能映射,包含具有对应字节码的一列指令。
在步骤340中,矢量创造模块220将指令表分成至少两个群组。应当注意的是,用于确定群组的类型和其数目的属性可预先指定或自动指出。因此,例如,群组可根据操作码的语义值创造(依靠其功能性的相似性)。此群组的实例可为以下:描述没有任何逻辑意义的指令(如,在寄存器之间传输数据的指令)的群组、描述以常数工作的指令的群组、以字段工作的群组、呼叫群组和/或传输群组。分成多个群组的原理基于执行各个指令的字节码分析,在此期间,提取属于指令的操作码的第一字节。分开原理的实例以图2的描述呈现。
在分解成群组之后,在步骤350中,矢量创造模块220形成各个方法的矢量。因此,在形成矢量时,各个群组中的命令的数目确定沿对应轴线的矢量的坐标。因此,各个方法以n维欧几里得空间中的矢量(点)的形式表示,其中空间的维度等于群组的数目。
在步骤360中,比较模块230借助于检查的文件的形成矢量将文件与储存在矢量数据库的储存器件240中的文件的矢量相比较。在比较期间,差异程度在比较的文件的两个最接近的方法之间计算为n维欧几里得空间中的其两个相关联的点之间的距离。换言之,对于各个点,发现了另一个文件的另一个方法的最近点,且确定点之间的距离。距离的计算的实例以图2的描述呈现。因此,距离被确定,且然后标准化至形成的矢量的长度(命令的总数)。标准化的差异程度的计算的实例以图2的描述呈现。其标准化的差异程度越小,则认为比较的方法越相似。差异程度位于零与一之间的区间。
接下来,在步骤370中,宣告检查的DEX格式的文件100与其矢量储存在矢量数据库240中的文件的相似性的判定。此后,如图2的描述中指出那样,借助于识别的最相似的文件确定检查的文件100是否是恶意的。应当注意的是,超过其则有可能宣告判定文件的恶意(或否定)的相似性系数取决于移动装置20所需的安全性水平确定(或指定)。
尽管如此,文件的相似度的确定的顺序可看起来像这样:首先,完成方法的比较,然后类别的比较,且然后关于相似性的最终决定。方法的比较可通过计算包含在各个方法中的指令的和来完成,且类别的比较可基于计算包含在各个类别中的方法的和来完成。在特定方面中,如果方法与彼此的相似小于50%,则将认为方法不相似。如果类别相差10%以上,则类别将为不同的。
图4显示用于提高确定文件的相似性的准确性的示例性算法。为了提高确定文件的相似性的准确性,优化模块250可在将其与检查的文件的方法的矢量比较之前,或在比较两个文件时,执行对储存在矢量数据库240中的方法矢量的数据库的优化。
因此,在步骤410中,在形成比较的文件的矢量之前不久,优化模块250可从进一步检查中识别和排除属于标准库程序包(例如,软件开发包的部分)的类别和方法。此外,如果发现至少一个不重要的方法在任何给定类别中,则类别可认为是不重要的。同样,如果方法包含少于两个指令(命令),则方法可认作是不重要的。
然后,在比较文件期间,对于比较的文件执行优化,使得仅对于最相似文件和其方法来完成比较。因此,在步骤430中,发现与检查的文件最相似的文件。为此,优化模块250比较各个文件的类别和方法的总数。如果来自矢量数据库240的文件在任一方向上与检查的当前文件相差不大于25%,则将对该文件完成进一步比较。否则,将发现文件不同于检查的文件。
然后,在步骤450中,优化文件250可执行步骤430中发现的文件的类别和方法的优化,以用于随后与检查的文件相比较。优化可包括确定将在文件中比较的类别和方法。因此,选择哪些类别比较和类别内的哪些方法来彼此比较通过比较其大小来完成。例如,大小可通过将类别的方法相加和将方法的指令相加来确定。因此,如果在比较类别或方法时大小相差25%以上,则不会执行它们的进一步分析。否则,如果大小相差小于25%,则将比较它们。
此外,在步骤470中,对比较的矢量(点)的数目的限制可在步骤450中对发现的文件的(对应类别中的方法)矢量的直接比较中完成。例如,限制可由空间中的一定范围形成,使得将仅比较落入此范围内的矢量(点)。此后,文件的最终比较在步骤490中完成。
图6示出了公开的系统和方法可根据示例性方面在其上实施的通用计算机系统(其可为个人计算机或服务器)的实例。
如图所示,计算机系统包括中央处理单元21、系统存储器22和连接各种系统组件的系统总线23,包括与中央处理单元21相关联的存储器。系统总线23类似于现有技术中获知的任何总线结构实现,继而又包括总线存储器或总线存储器控制器,外设总线和本地总线,其能够与任何其它总线构架交互。系统存储器包括永久性存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统(BIOS)26包括确保信息在个人计算机20的元件之间传输的基本程序,如,借助于ROM24加载操作系统时的那些。
个人计算机20继而又包括用于读取和写入数据的硬盘27、用于在可移动磁盘29上读取和写入的磁盘驱动器28,以及用于在可移动光盘31(如,CD-ROM、DVD-ROM和其它光学信息介质)上读取和写入的光学驱动器30。硬盘27、磁盘驱动器28和光学驱动器30分别穿过硬盘接口32、磁盘接口33和光学驱动器接口34连接到系统总线23上。驱动器和对应的计算机信息介质为用于个人计算机20的计算机指令、数据结构、程序模块和其它数据的储存的独立电源模块。
本公开内容提供了使用硬盘27、可移动磁盘29和可移动光盘31的系统的实施,但应当理解的是,有可能使用其它类型的计算机信息介质56,其能够储存可由计算机可读的形式的数据(固态驱动器、闪速存储卡、数字盘、随机存取存储器(RAM)等),其经由控制器55连接到系统总线23上。
计算机20具有保存记录的操作系统35的文件系统36,以及附加的程序应用37、其它程序模块38和程序数据39。用户能够通过使用输入装置(键盘40、鼠标42)将命令和信息输入个人计算机20中。其它输入装置(未示出)可使用:麦克风、操纵杆、游戏控制器、扫描仪等。此类输入装置通常经由继而又连接到系统总线上的串行端口46插入计算机系统20中,但它们可以以其它方式连接,例如,借助于并行端口、游戏端口或通用串行总线(USB)。监视器47或其它类型的显示装置也穿过接口如视频适配器48连接到系统总线23上。除监视器47之外,个人计算机可配备有其它外围输出装置(未示出),如,扬声器、打印机等。
个人计算机20能够在网络环境中使用与一个或多个远程计算机49的网络连接来操作。远程计算机(或多个计算机)49也是具有描述如图6中所示的个人计算机20的性质中大部分或所有上述元件的个人计算机或服务器。其它装置也可存在于计算机网络中,如,路由器、网络站点、对等装置或其它网络节点。
网络连接可形成局域计算机网络(LAN)50和广域计算机网络(WAN)。此网络用于企业计算机网络和内部公司网络中,且它们大体上可访问因特网。在LAN或WAN网络中,个人计算机20穿过网络适配器或网络接口51连接到局域网络50上。当使用网络时,个人计算机20可使用调制解调器54或其它模块来用于提供与广域计算机网络如因特网的通信。可为内部或外部装置的调制解调器54由串行端口46连接到系统总线23上。应当注意的是,网络连接仅为实例,且不必绘出网络的准确构造,即,实际上存在由技术通信模块形成一台计算机与另一台的连接的其它方式。
在各种方面中,本文所述的系统和方法可以硬件、软件、固件或它们的任何组合中实施。如果以软件实施,则方法可储存为非暂时性计算机可读介质上的一个或多个指令或代码。计算机可读介质包括数据储存器。举例来说但不限制的是,此计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM、闪速存储器或其它类型的电学、磁性或光学储存介质,或可用于携带或储存指令或数据结构形式的期望程序代码且可由通用计算机的处理器访问的任何其它介质。
在各种方面中,本公开内容中描述的系统和方法可按照模块来解决。如本文使用的用语"模块"是指使用硬件来实施的现实世界的装置、组件或组件布置,例如,如,通过专用集成电路(ASIC)或现场可编程门数组(FPGA),或作为硬件和软件的组合,如,通过微处理器系统和指令集来实施模块的功能,其(在执行时)将微处理器系统转换成专用装置。模块还可实施为两个的组合,其中某些功能由硬件单独促成,而其它功能由硬件和软件的组合来促成。在某些实施方式中,模块的至少一部分(且有时全部)可在通用计算机的处理器上执行(如,在以上的图6中更详细描述的一个)。因此,各个模块均可以以多种适合的配置实现,且不应当限于本文列举的任何特定实施方式。
为了清楚起见,本文并未公开方面的所有常规特征。将认识到的是,在本公开内容的任何实际实施方式的发展中,必须进行许多实施方式特有的决定,以便实现开发者特定的目标,且这些特定目标将对于不同的实施方式和不同的开发者变化。将理解的是,此开发努力可能很复杂且耗时,但仍将是受益于本公开内容的本领域的普通技术人员的工程的常规任务。
此外,将理解的是,本文使用的短语或用语为了描述而非限制的目的,使得本说明书的用语或短语将由本领域的技术人员鉴于本文提出的教导内容和方针与相关领域中的技术人员的知识组合来理解。此外,不期望说明书或权利要求中的任何用语归于不常见或特殊的意义,除非明确地如此阐明。
本文公开的各种方面包含本文通过图示提到的已知模块的目前和未来的已知的等同物。此外,尽管示出和描述了方面和应用,但受益于本公开内容的本领域的技术人员将清楚的是,比上文提到的更多的改型是可能的,而不会脱离本文公开的发明构想。
Claims (12)
1.一种检测恶意文件的方法,所述方法包括:
由硬件处理器分析文件来识别至少一个或多个类别和包含在所述一个或多个类别中的一个或多个方法;
由所述硬件处理器识别各个识别的方法的字节码数组;
由所述硬件处理器通过从各个方法的所述字节码数组识别对应的操作码来确定各个方法中包含的指令;
由所述硬件处理器基于所述指令间的功能性的相似性来将各个方法的所确定的指令分成多个群组;
由所述硬件处理器基于将所述指令分成所述多个群组的结果来形成各个方法的矢量;
由所述硬件处理器将所分析的文件的所述方法的所形成矢量与储存在数据库中的已知恶意文件的多个矢量相比较来确定所比较的矢量之间的相似性;以及
由所述硬件处理器基于所比较矢量之间的相似性确定所分析的文件是恶意的或是干净的。
2.根据权利要求1所述的方法,其中分析文件包括反汇编和反编译所述文件中的一个或多个。
3.根据权利要求1所述的方法,其中所述指令基于所述字节码数组的语义值分成群组。
4.根据权利要求1所述的方法,其中所述多个群组包括以下的一个或多个群组:没有逻辑意义的指令、以常数工作的指令、以字段工作的指令、属于呼叫或拦截的指令。
5.根据权利要求1所述的方法,其中比较矢量包括比较n维欧几里得空间中的其两个相关联的点之间的所述距离。
6.根据权利要求1所述的方法,其中比较矢量包括执行以下的一个或多个:
从所述比较中排除属于标准库程序包的类别和方法;
从所述比较中排除不包含单个方法的类别;
从所述比较中排除包含两个指令或更少的方法;
如果这些文件的类别和方法的总数与检查的文件的类别和方法的总数的比较相差超过25%,则从进一步比较中排除其矢量保存在所述数据库中的文件;
如果正在比较的类别或方法的大小相差超过25%,则从所述比较中排除比较的文件的类别或方法而不进行进一步比较;以及
从所述比较中排除仅包含在单个类别中的方法的矢量。
7.一种检测恶意文件的系统,所述系统包括:
硬件处理器,其配置为:
分析文件以识别至少一个或多个类别和包含在所述一个或多个类别中的一个或多个方法;
识别各个识别的方法的字节码数组;
通过从各个方法的所述字节码数组识别对应的操作代码来确定各个方法中包含的指令;
基于所述指令间的功能性的相似性来将各个方法的所确定的指令分成多个群组;
基于将所述指令分成所述多个群组的结果来形成各个方法的矢量;
将所分析的文件的所述方法的所形成矢量与储存在数据库中的已知恶意文件的多个矢量相比较来确定所比较的矢量之间的相似性;以及
基于所比较的矢量之间的相似性来确定所分析的文件是恶意的或是干净的。
8.根据权利要求7所述的系统,其中分析文件包括反汇编和反编译所述文件中的一个或多个。
9.根据权利要求7所述的系统,其中所述指令基于所述字节码数组的语义值分成群组。
10.根据权利要求7所述的系统,其中所述多个群组包括以下的一个或多个群组:没有逻辑意义的指令、以常数工作的指令、以字段工作的指令、属于呼叫或拦截的指令。
11.根据权利要求7所述的系统,其中比较矢量包括比较n维欧几里得空间中的其两个相关联的点之间的所述距离。
12.根据权利要求7所述的系统,其特征在于,其中比较矢量包括执行以下的一个或多个:
从所述比较中排除属于标准库程序包的类别和方法;
从所述比较中排除不包含单个方法的类别;
从所述比较中排除包含两个指令或更少的方法;
如果这些文件的类别和方法的总数与检查的文件的类别和方法的总数的比较相差超过25%,则从进一步比较中排除其矢量保存在所述数据库中的文件;
如果正在比较的类别或方法的大小相差超过25%,则从所述比较中排除比较的文件的类别或方法而不进行进一步比较;以及
从所述比较中排除仅包含在单个类别中的方法的矢量。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2015125969A RU2614557C2 (ru) | 2015-06-30 | 2015-06-30 | Система и способ обнаружения вредоносных файлов на мобильных устройствах |
RU2015125969 | 2015-06-30 | ||
US14/849,044 | 2015-09-09 | ||
US14/849,044 US9553889B1 (en) | 2015-06-30 | 2015-09-09 | System and method of detecting malicious files on mobile devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105631336A true CN105631336A (zh) | 2016-06-01 |
CN105631336B CN105631336B (zh) | 2018-04-17 |
Family
ID=54365983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610067353.2A Active CN105631336B (zh) | 2015-06-30 | 2016-01-29 | 检测移动装置上的恶意文件的系统及方法 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP3113065B1 (zh) |
CN (1) | CN105631336B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109583201A (zh) * | 2017-09-29 | 2019-04-05 | 卡巴斯基实验室股份制公司 | 识别恶意中间语言文件的系统和方法 |
CN110889118A (zh) * | 2018-09-07 | 2020-03-17 | 广州视源电子科技股份有限公司 | 异常sql语句检测方法、装置、计算机设备和存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108401253B (zh) * | 2017-02-06 | 2022-12-27 | 腾讯科技(深圳)有限公司 | 一种应用信息识别方法、装置以及系统 |
RU2724710C1 (ru) * | 2018-12-28 | 2020-06-25 | Акционерное общество "Лаборатория Касперского" | Система и способ классификации объектов вычислительной системы |
CN111767539A (zh) * | 2020-05-15 | 2020-10-13 | 上海趣蕴网络科技有限公司 | 一种apk安全系统及安全校验方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040230949A1 (en) * | 2003-05-14 | 2004-11-18 | Vanish Talwar | Native language verification system and method |
US20060230453A1 (en) * | 2005-03-30 | 2006-10-12 | Flynn Lori A | Method of polymorphic detection |
CN101872393A (zh) * | 2009-04-23 | 2010-10-27 | 李嘉 | 一种Java程序防篡改响应方案 |
CN102592080A (zh) * | 2011-12-26 | 2012-07-18 | 北京奇虎科技有限公司 | flash恶意文件检测方法及装置 |
CN102768717A (zh) * | 2012-06-29 | 2012-11-07 | 腾讯科技(深圳)有限公司 | 恶意文件检测的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005062707A2 (en) * | 2003-12-30 | 2005-07-14 | Checkpoint Software Technologies Ltd. | Universal worm catcher |
US8826439B1 (en) * | 2011-01-26 | 2014-09-02 | Symantec Corporation | Encoding machine code instructions for static feature based malware clustering |
-
2015
- 2015-10-23 EP EP15191195.5A patent/EP3113065B1/en active Active
-
2016
- 2016-01-29 CN CN201610067353.2A patent/CN105631336B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040230949A1 (en) * | 2003-05-14 | 2004-11-18 | Vanish Talwar | Native language verification system and method |
US20060230453A1 (en) * | 2005-03-30 | 2006-10-12 | Flynn Lori A | Method of polymorphic detection |
CN101872393A (zh) * | 2009-04-23 | 2010-10-27 | 李嘉 | 一种Java程序防篡改响应方案 |
CN102592080A (zh) * | 2011-12-26 | 2012-07-18 | 北京奇虎科技有限公司 | flash恶意文件检测方法及装置 |
CN102768717A (zh) * | 2012-06-29 | 2012-11-07 | 腾讯科技(深圳)有限公司 | 恶意文件检测的方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109583201A (zh) * | 2017-09-29 | 2019-04-05 | 卡巴斯基实验室股份制公司 | 识别恶意中间语言文件的系统和方法 |
CN109583201B (zh) * | 2017-09-29 | 2023-08-22 | 卡巴斯基实验室股份制公司 | 识别恶意中间语言文件的系统和方法 |
CN110889118A (zh) * | 2018-09-07 | 2020-03-17 | 广州视源电子科技股份有限公司 | 异常sql语句检测方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105631336B (zh) | 2018-04-17 |
EP3113065A1 (en) | 2017-01-04 |
EP3113065B1 (en) | 2017-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Arora et al. | Permpair: Android malware detection using permission pairs | |
Ahmed et al. | A system call refinement-based enhanced Minimum Redundancy Maximum Relevance method for ransomware early detection | |
Cen et al. | A probabilistic discriminative model for android malware detection with decompiled source code | |
Hashemi et al. | Graph embedding as a new approach for unknown malware detection | |
US10554736B2 (en) | Mobile URL categorization | |
Chumachenko | Machine learning methods for malware detection and classification | |
CN111382430B (zh) | 用于对计算机系统的对象进行分类的系统和方法 | |
Firdaus et al. | Root exploit detection and features optimization: mobile device and blockchain based medical data management | |
Wang et al. | {EASEAndroid}: Automatic Policy Analysis and Refinement for Security Enhanced Android via {Large-Scale}{Semi-Supervised} Learning | |
US9553889B1 (en) | System and method of detecting malicious files on mobile devices | |
Zhan et al. | Automated third-party library detection for android applications: Are we there yet? | |
Lin et al. | Identifying android malicious repackaged applications by thread-grained system call sequences | |
Vidal et al. | A novel pattern recognition system for detecting Android malware by analyzing suspicious boot sequences | |
BR102015017215A2 (pt) | método implementado em computador para classificação de aplicativos móveis, e, programa de computador codificado em um meio de armazenamento não-trasitório | |
CN105631336A (zh) | 检测移动装置上的恶意文件的系统及方法 | |
US11019494B2 (en) | System and method for determining dangerousness of devices for a banking service | |
Kim et al. | Risk assessment of mobile applications based on machine learned malware dataset | |
CN110298171A (zh) | 移动互联网大数据应用的智能检测与安全防护方法 | |
Gorment et al. | Machine learning algorithm for malware detection: Taxonomy, current challenges, and future directions | |
Surendran et al. | Detection of malware applications from centrality measures of syscall graph | |
Zhan et al. | A systematic assessment on Android third-party library detection tools | |
Deypir et al. | Instance based security risk value estimation for Android applications | |
Liu et al. | Vulnerable Smart Contract Function Locating Based on Multi-Relational Nested Graph Convolutional Network | |
Chen et al. | Building machine learning-based threat hunting system from scratch | |
Hatcher et al. | Machine learning-based mobile threat monitoring and detection |
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 |