CN102945347B - 一种检测Android恶意软件的方法、系统及设备 - Google Patents

一种检测Android恶意软件的方法、系统及设备 Download PDF

Info

Publication number
CN102945347B
CN102945347B CN201210376038.XA CN201210376038A CN102945347B CN 102945347 B CN102945347 B CN 102945347B CN 201210376038 A CN201210376038 A CN 201210376038A CN 102945347 B CN102945347 B CN 102945347B
Authority
CN
China
Prior art keywords
function
unit
software
malicious
detected
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
CN201210376038.XA
Other languages
English (en)
Other versions
CN102945347A (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.)
University of Science and Technology of China USTC
ZTE Corp
Original Assignee
University of Science and Technology of China USTC
ZTE Corp
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 University of Science and Technology of China USTC, ZTE Corp filed Critical University of Science and Technology of China USTC
Priority to CN201210376038.XA priority Critical patent/CN102945347B/zh
Publication of CN102945347A publication Critical patent/CN102945347A/zh
Priority to PCT/CN2013/082163 priority patent/WO2014048195A1/zh
Application granted granted Critical
Publication of CN102945347B publication Critical patent/CN102945347B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • H04W12/128Anti-malware arrangements, e.g. protection against SMS fraud or mobile malware
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种检测Android恶意软件的方法,包括:服务器模拟执行待检测软件,将待检测软件调用的函数的敏感特征信息和恶意特征信息,与本地保存的敏感特征信息和恶意特征信息进行匹配,若匹配成功,则确定该函数调用为恶意行为,待检测软件为恶意软件。本发明同时还公开了一种检测Android恶意软件的系统及设备,应用本发明的技术方案,避免了现有Android恶意软件检测技术存在滞后期以及某些恶意软件的恶意行为触发条件复杂,可能长时间无法检测出该软件为恶意软件的问题。

Description

一种检测Android恶意软件的方法、系统及设备
技术领域
本发明涉及通信领域,尤其涉及一种检测Android恶意软件的方法、系统及设备。
背景技术
目前移动终端普遍采用Android系统,但Android系统的软件发布渠道多样且缺乏有效监督,用户很容易安装恶意软件,导致用户资费被恶意消耗、个人信息被恶意删除,影响用户体验。
如此,迫切需要有效的检测恶意软件的方法,当前恶意软件常见的检测方法包括:以病毒查杀的方式进行检测;动态实时监控软件的运行及其与外部环境的交互,以确定该软件是否为恶意软件。
上述采用病毒查杀的方式来检测恶意软件的方法,依赖于病毒特征码,对于新发布的软件需要人工分析出病毒特征码,因此检测结果存在一定的滞后期;而动态实时检测的方法依赖于特定的触发条件,若软件中隐藏的恶意行为触发条件复杂,则可能长时间无法检测出该软件是否为恶意软件。
发明内容
有鉴于此,本发明的主要目的在于提供一种检测恶意软件的方法、系统及设备,用户无需病毒特征码,即可利用本发明的方案对待检测软件中是否隐藏恶意行为,且不受软件恶意行为触发条件复杂与否的限制。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种检测Android恶意软件的方法,该方法包括:
服务器模拟执行待检测软件,将待检测软件调用的函数的敏感特征信息,与本地保存的敏感特征信息进行匹配,若匹配成功,则标识该函数调用为敏感行为;
将敏感行为中被调用函数的恶意特征信息,与本地保存的恶意特征信息进行匹配,若匹配成功,则标识该函数调用为恶意行为,以确定待检测软件为恶意软件。
上述方案中,
所述敏感特征信息包括:函数名、函数类名、函数参数类型和函数参数个数;
所述恶意特征信息包括:函数名、函数参数常量值。
上述方案中,所述服务器模拟执行待检测软件之前,该方法还包括:
服务器接收用户通过客户端上传的待检测软件的安装包,对安装包中的字节码文件进行反汇编,根据反汇编出的程序代码,构建程序结构并求解程序执行路径。
上述方案中,该方法还包括:
服务器分析程序执行路径中的指令,并在所述指令为常量值引入指令时,记录引入的常量值并将常量值在程序执行路径中向下传播。
上述方案中,该方法还包括:
服务器评定被恶意行为的危险等级,结合恶意行为危险等级生成检测结果并保存在本地,并在模拟执行完毕待检测软件后,将本地检测结果通过客户端用户界面UI报告用户。
本发明还提供了一种服务器,该服务器包括模拟执行单元,检测规则存储单元、标识单元、敏感行为匹配单元和恶意行为匹配单元;其中,
所述模拟执行单元,用于模拟执行待检测软件;
所述检测规则存储单元,用于存储敏感特征信息和恶意特征信息;
所述敏感行为匹配单元,用于所述模拟执行单元调用函数时,将所述被调用函数的敏感特征信息与检测规则存储单元中的敏感特征信息进行匹配;
所述标识单元,用于在所述敏感行为匹配单元匹配敏感特征信息成功时,标识所述函数调用为敏感行为;
所述恶意行为匹配单元,用于在所述标识单元标识所述函数调用为敏感行为时,将所述函数调用中被调用函数的恶意特征信息与检测规则存储单元中的恶意特征信息进行匹配;
所述标识单元,还用于在所述恶意行为匹配单元匹配恶意特征信息成功时,标识所述函数调用为恶意行为,以确定待检测软件为恶意软件。
上述方案中,
所述敏感特征信息包括:函数名、函数类名、函数参数类型和函数参数个数;
所述恶意特征信息包括:函数名、函数参数常量值。
上述方案中,该服务器还包括:预处理单元、程序结构构建单元、程序执行路径求解单元和常量值分析单元;其中,
所述预处理单元,用于接收用户通过客户端上传的待检测软件的安装包,并对安装包中的字节码文件进行反汇编;
所述程序结构构建单元,用于在所述预处理单元根据字节码文件反汇编出程序代码后,根据所述程序代码构建程序结构;
所述程序执行路径求解单元,用于在所述程序结构构建单元构建出程序结构后,根据所述程序结构求解程序执行路径;
所述模拟执行单元,具体用于根据所述程序执行路径求解单元求解出的程序执行路径,顺序分析程序执行路径中的指令;
所述常量值分析单元,用于在所述模拟执行单元分析出程序执行路径中的指令为常量值引入指令时,记录引入的常量值并在程序执行路径中将常量值向下传播。
上述方案中,该服务器还包括:危险等级评定单元、检测结果保存单元和恶意行为报告单元;其中,
所述危险等级评定单元,用于在所述标识单元标识所述函数调用为恶意行为,以确定待检测软件为恶意软件时,评定恶意行为危险等级,结合恶意行为危险等级生成检测结果;
所述检测结果保存单元,用于保存所述危险等级评定单元生成的检测结果;
所述恶意行为报告单元,用于在所述模拟执行单元模拟执行待检测软件完毕后,将所述检测结果保存单元保存的检测结果发送给客户端,以通过客户端UI报告给用户。
相应的,本发明还提供了一种Android恶意软件检测系统,该系统包括:客户端和服务器;其中,
所述客户端,用于使用户通过运行在客户端的UI向服务器上传待检测软件的安装包;接收服务器发送的检测结果,通过UI报告用户;
所述服务器,用于根据接收到的用户通过客户端上传的待检测软件的安装包模拟执行待检测软件,将待检测软件调用的函数的敏感特征信息和恶意特征信息,分别与本地保存的敏感特征信息和恶意特征信息进行匹配,若匹配成功,则确定待检测软件为恶意软件,将检测结果发送给客户端。
上述方案中,所述服务器包括模拟执行单元,检测规则存储单元、标识单元、敏感行为匹配单元和恶意行为匹配单元;所述服务器还包括:预处理单元、程序结构构建单元、程序执行路径求解单元和常量值分析单元;所述服务器还包括:危险等级评定单元、检测结果保存单元和恶意行为报告单元;各单元功能与上面所述相同。
本发明所提供的技术方案中,通过模拟执行待检测软件中的全部指令,将待检测软件调用函数的敏感特征信息与服务器存储的敏感特征信息进行匹配,在确定函数调用为敏感行为时,进一步将敏感行为中被调用函数的恶意特征信息与服务器存储的恶意特征信息进行匹配,若匹配成功,则确定待检测软件为恶意软件。如此,对待检测软件进行检测时,无需利用病毒特征码,不存在检测结果有滞后期的问题;不受待检测软件恶意行为触发条件复杂与否的限制,可准确及时地对软件进行恶意行为检测。
附图说明
图1为本发明检测Android恶意软件方法的实现流程示意图;
图2为本发明Android恶意软件检测系统的组成结构示意图;
图3为本发明检测Android恶意软件实施例的实现流程示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
实施例一
图1为本发明检测Android恶意软件方法的实现流程示意图,如图1所示,该方法包括:
步骤101:服务器模拟执行待检测软件,将待检测软件调用的函数的敏感特征信息,与本地保存的敏感特征信息进行匹配,若匹配成功,则标识该函数调用为敏感行为;
这里,所述敏感特征信息包括:函数名、函数类名、函数参数类型和函数参数个数,其中,通过函数名、函数类名、函数参数个数和函数参数类型,可唯一确定某一函数。
这里,服务器在本地保存危险函数的敏感特征信息,其中,所述危险函数为待检测软件中恶意行为在实施时调用的库函数。
发明人发现,待检测软件中的恶意行为,包括:发送固定内容的短信给固定号码,在用户不知情的情况下订购SP(ServiceProvider,服务器提供商)服务,以消耗用户资费;打开固定的URL(UniversalResourceLocator,统一资源定位符),以消耗用户资费;执行固定的系统命令,以修改或删除用户文件。上述恶意行为需要通过调用危险函数,并给所述危险函数的参数引入一定数量的类型为常量的值来实施,其中,所述固定内容的短信、固定号码、固定URL和固定系统命令在待检测软件代码中以固定字符串或立即数的常量形式引入危险函数的参数。如此,在模拟执行待检测软件过程中,若待检测软件调用函数的敏感特征信息与服务器本地保存的某个危险函数的敏感特征信息匹配,则标识该函数调用为敏感行为,以进行进一步检测,确定该函数调用是否为恶意行为。
这里,在步骤101之前,还包括以下流程:
服务器接收用户通过客户端上传的待检测软件的安装包,对安装包中的字节码文件进行反汇编,并根据反汇编出的程序代码,构建程序结构并求解程序执行路径。
其中,所述安装包格式为基于Android系统的apk格式的安装包,在服务器上运行解包工具对安装包操作,可得到dex格式的字节码(bytecode)文件,所述dex格式的字节码文件为Dalvik虚拟机上的一种可执行文件,其中Dalvik虚拟机是Android系统中用于运行软件的应用环境。
其中,所述对字节码进行反汇编,根据反汇编出的程序代码,构建程序结构,具体为:
在服务器上运行反汇编工具对字节码文件进行反汇编,根据反汇编出的程序代码,利用脚本分析出程序结构信息,包括:指令结构、基本块结构、函数结构、类结构、函数调用图、控制流图和固定字符串表。其中,利用脚本调用反汇编工具分析出程序结构信息为现有反汇编工具使用技术范畴,不再赘述。其中,所述指令结构包括指令的地址、操作码、操作数;基本块结构包括基本块编号、首地址、尾地址、所在函数、块中的指令;所述函数结构包括函数首地址、函数名、函数内的所有基本块;所述类结构包括类名、属性列表、函数列表;所述固定字符串表保存程序信息中出现的固定字符串。
其中,所述程序执行路径为运行反汇编出的程序代码中全部指令的指令执行序列,所述求解程序执行路径流程具体为:
根据控制流图、指令结构、基本块结构、函数结构和类结构,从反汇编出的程序代码的入口函数开始,分析出当前函数的指令执行序列,上述分析操作采用图的遍历算法,如此,对于函数中的分支指令,可保证每个分支块至少被执行一次;对于函数中的循环体,可保证循环体部分的指令至少被执行一遍;
根据函数调用图、指令结构、基本块结构、函数结构和类结构,分析出当前函数中每个函数调用点被调用的函数,建立当前函数和被调用函数之间的连接关系,以分析出被调用函数的指令执行序列。其中,对于函数调用点调用的函数为线程启动函数、虚函数或接口函数时,还需要进行下列处理:
(1)若当前函数调用点为线程启动函数调用,则根据线程初始化时参数的类名,查找该类中的run函数作为实际被调用的函数;
(2)若当前函数调用点为虚函数或接口函数,则根据当前函数中this实参的类名,查找类中的同名函数,作为实际被调用的函数。
这里,所述服务器模拟执行待检测软件为:
服务器分析程序执行路径中的指令,并在所述指令为常量值引入指令时,记录引入的常量值并将常量值在程序执行路径中向下传播。
其中,所述常量包括立即数和固定字符串。
其中,所述在指令为常量值引入指令时,记录引入的常量值并将常量值在程序执行路径中向下传播,具体为:
在所述指令为针对变量的常量值引入指令时,若该指令是以立即数的形式引入常量值,则记录直接引入的立即数的值,将程序执行路径中相应的变量标记为常量状态;若该指令是以固定字符串的形式引入常量值,则以固定字符串名为索引查找固定字符串表得到固定字符串的值,记录引入的固定字符串的值,并将程序执行路径中相应的变量标记为常量状态;
在所述指令为针对变量的且含有操作数的常量值引入指令时,则根据当前指令的语义信息,在程序执行路径中将相应的变量标记为常量状态,并记录引入的常量值;
在所述指令以函数返回指令的形式引入常量值,且所述函数返回指令返回的常量值影响实参变量时,在程序执行路径中将相应的实参变量标记为常量状态,并记录引入实参变量的常量值。
步骤102:将敏感行为中被调用函数的恶意特征信息,与本地保存的恶意特征信息进行匹配,若匹配成功,则标识该函数调用为恶意行为,以确定待检测软件为恶意软件。
这里,服务器在本地保存危险函数的恶意特征信息,其中,所述恶意特征信息包括:函数名、函数参数常量值。
步骤101中,在模拟执行待检测软件过程中,若待检测软件调用的函数的敏感特征信息与服务器本地保存的某个危险函数的敏感特征信息匹配,则确定所述函数调用符合恶意行为的初步特征,即:发送固定内容的短信给固定号码、打开固定的URL或执行固定的系统命令,且所述固定内容的短信、固定号码、固定URL和固定系统命令以常量值的形式引入危险函数参数,来实施敏感行为。
本步骤中,服务器将待检测软件中已被标识的敏感行为中被调用的函数的恶意特征信息,与本地保存的危险函数的恶意特征信息进行匹配,以进一步确定所述敏感行为是否为恶意行为,即:发送固定内容的短信给固定号码,是否为向SP订购服务,以消耗用户资费;打开固定的URL,是否为打开网络IP(InternetProtocol,网际互连协议)地址,以造成用户资费的消耗;执行固定的系统命令,是否对用户的文件造成损失。若是,则标识该函数调用为恶意行为,确定待检测软件为恶意软件。
本步骤中,还包括以下流程:
服务器评定恶意行为的危险等级,根据恶意行为的危险等级生成检测结果并保存在本地,在模拟执行完毕待检测软件后,将本地检测结果通过客户端UI(UserInterface,用户界面)报告用户,以使用户了解恶意软件的相关信息。
其中,所述服务器评定恶意行为的危险等级具体为:
服务器分别根据恶意行为调用函数的函数名和函数参数常量值,与本地预先保存的评定规则进行匹配,以评定危险等级,其中,所述评定规则描述了不同函数及其函数参数常量值对应的危险等级,所述危险等级根据对用户造成损失的程度制定,例如订购多次SP服务以消耗用户资费的恶意行为的危险等级较仅订购一次SP服务以消耗用户资费的恶意行为的危险等级高。
其中,所述生成检测结果具体为:
服务器结合恶意行为的危险等级生成检测结果,所述检测结果包括:恶意行为的危险等级、恶意行为中危险函数的函数名和类名、恶意行为所在函数的函数名、恶意行为类型和恶意行为描述。
实施例二
图2为本发明Android恶意软件检测系统的组成结构示意图,如图2所示,该系统包括:服务器21和客户端22:其中,
服务器21,用于根据接收到的用户通过客户端22UI上传的待检测软件的安装包模拟执行待检测软件,将待检测软件调用的函数的敏感特征信息和恶意特征信息,分别与本地保存的敏感特征信息和恶意特征信息进行匹配,若匹配成功,则确定待检测软件为恶意软件,并将检测结果发送给客户端22;
客户端22,用于使用户通过运行在客户端22的UI向服务器21上传待检测软件的安装包;接收服务器21发送的检测报告,通过UI报告用户。
上述方案中,服务器21包括:模拟执行单元2101、检测规则存储单元2102、敏感行为匹配单元2103、标识单元2104和恶意行为匹配单元2105;其中,
模拟执行单元2101,用于模拟执行待检测软件;
检测规则存储单元2102,用于存储敏感特征信息和恶意特征信息;
敏感行为匹配单元2103,用于模拟执行单元2101调用函数时,将所述被调用函数的敏感特征信息与检测规则存储单元2102中的敏感特征信息进行匹配;
标识单元2104,用于在敏感行为匹配单元2103匹配敏感特征信息成功时,标识所述函数调用为敏感行为;
恶意行为匹配单元2105,用于在标识单元2104标识所述函数调用为敏感行为时,将所述函数调用中被调用函数的恶意特征信息与检测规则存储单元2102中的恶意特征信息进行匹配;
标识单元2104,还用于在恶意行为匹配单元2105匹配恶意特征信息成功时,标识所述函数调用为恶意行为,以确定待检测软件为恶意软件。
上述方案中,
所述敏感特征信息包括:函数名、函数类名、函数参数类型和函数参数个数;
所述恶意特征信息包括:函数名、函数参数常量值。
上述方案中,
服务器21还包括:预处理单元2106、程序结构构建单元2107、程序执行路径求解单元2108和常量值分析单元2109;其中,
预处理单元2106,用于接收用户通过客户端22上传的待检测软件的安装包,并对安装包中的字节码文件进行反汇编;
程序结构构建单元2107,用于在预处理单元2106根据字节码文件反汇编出程序代码后,根据所述程序代码构建程序结构;
程序执行路径求解单元2108,用于在程序结构构建单元2107构建出程序结构后,根据所述程序结构求解程序执行路径;
模拟执行单元2101,具体用于根据程序执行路径求解单元2108求解出的程序执行路径,顺序分析程序执行路径中的指令;
常量值分析单元2109,用于在模拟执行单元2101分析出程序执行路径中的指令为常量值引入指令时,记录引入的常量值并在程序执行路径中将常量值向下传播。
上述方案中,服务器21还包括:危险等级评定单元2110、检测结果保存单元2111和恶意行为报告单元2112;其中,
危险等级评定单元2110,用于在标识单元2104标识所述函数调用为恶意行为,以确定待检测软件为恶意软件时,评定恶意行为危险等级,并结合恶意行为危险等级生成检测结果;
检测结果保存单元2111,用于保存危险等级评定单元2110生成的检测结果;
恶意行为报告单元2112,用于在模拟执行单元2101模拟执行待检测软件完毕后,将检测结果保存单元2111保存的检测结果发送给客户端22,以通过客户端22UI报告给用户。
实施例三
图3为本发明检测Android恶意软件实施例的实现流程示意图,以下以待检测软件为hippoSMS为例,如图3所示,该流程包括:
步骤301:服务器接收客户端上传的待检测软件,并进行预处理;
本步骤中,用户通过客户端UI向服务器上传待检测软件hippoSMS对应的安装包hippoSMS.apk,服务器利用解压软件对安装包进行解压,提取出安装包中的字节码文件,其后缀为dex,并运行反汇编工具对字节码文件进行反汇编,输出程序代码。
其中,所述解压软件可以采用WINRAR或APKTOOL,所述反汇编工具可以采用IDApro(InteractiveDisassemblerprofessional,交互式反汇编工具专业版)。
步骤302:服务器根据反汇编出的程序代码,构建程序结构并求解程序执行路径;
本步骤中,服务器根据反汇编出的程序代码构建程序结构,该程序结构包括:指令结构、基本块结构、函数结构、类结构、函数调用图、控制流图和字符串表;并根据上述程序结构,求解程序执行路径。
本步骤中,若针对以下代码段1求解程序执行路径,
代码段1
1:new-instancev0,<t:Thread>
2:new-instancev1,<t:Download$myThread>
3:invoke-direct{v1,this},<voidDownload$myThread.<init>(ref)>
4:invoke-direct{v0,v1},<voidThread.<init>(ref)>
5:invoke-virtual<v0>,<voidThread.start()>
则服务器进行以下处理:
分析出代码段第1行中的指令定义了一个线程类,此时v0的类名标记为Thread;
分析出第2行中的指令定义了一个用户定义的类,此时v1的类名标记为Download$myThread;
分析出第3行中的指令是一个函数调用指令,且被调用函数不是线程启动函数、虚函数或接口函数,则直接根据函数调用图查找被调用函数,以建立当前函数与被函数的连接关系,并进入被调用函数进行程序执行路径的求解操作;
分析出第4行中的指令为系统函数调用指令,且该函数是线程初始化函数,初始化参数的类名为Download$myThread,则将v1对象与v0对象绑定,将v0对象的类名标记为v1对象的类名Download$myThread,并继续向下查找Download$myThread中的run函数;
分析出第5行代码中指令为线程启动函数调用指令,v0参数的类名为Download$myThread,此时将继续查找Download$myThread中的run函数,将被调函数名由Thread.start改为Download$myThread.run,并针对函数Download$myThread.run进行程序执行路径的求解操作。
步骤303:服务器分析程序执行路径中的指令,并在所述指令为常量值引入指令时,记录引入的常量值并将常量值在程序执行路径中向下传播;
若程序执行路径中的指令为以下代码段2,
代码段2
1:const-stringv7,a8
2:const-stringv6,a1066156686
3:const-stringv5,aData_0
4:const-stringv4,empty_str
……
5:invoke_virtual{this,v6,v7,this},<voidMessageService.sendsms<ref,ref,ref,ref>
则服务器进行以下处理:
分析出第1行指令为常量值引入指令,定义v7为字符串常量a8,a8为固定字符串,则该指令是以字符串的形式引入常量值,以a8为索引在固定字符串表中查询固定字符串a8的值,其值为8,则将v7变量标记成常量状态,并将v7的值记录为8;
分析出第2行到第4行指令为常量值引入指令,且是以字符串的形式引入常量值,分别以v6、v5和v4为索引在固定字符串表中查询对应的字符串的值,将v6、v5和v4标记为常量状态,并记录下对应的字符串的值,其中v6的值为1066156686,v5的值为data,v4的值是一个空字符串;
分析出第5行指令为函数调用指令,则将实参变量this、v6、v7、v4和this的值传递到被调用函数MessageService.sendsms中,并将函数MessageService.sendsms相应的形参this、p0、p1、p2和p3值初始化为传递到被调用函数中的实参的值,进一步对函数MessageService.sendsms内的指令进行分析。
若函数MessageService.sendsms内的指令如以下代码段3所示,
代码段3
1:const/4v2,0
2:move_objectv1,p0
3:move_objectv3,p1
4:invoke-virtual/range{v0..v5},<voidSmsManager.sendTextMessage(ref,ref,ref,ref,ref)>
则服务器进行以下处理:
分析出第1行指令为常量值引入指令,且是以立即数的形式引入常量值,该指令将立即数0引入变量v2,则将v2变量标记为常量状态,并将v2的值记录为立即数0;
分析出第2行指令为针对变量v1的含有操作数的常量值引入指令,该指令将形参p0的值引入v1,在代码段2中,形参p0对应的实参为字符串v6,且v6被赋值1066156686,则p0的值为字符串v6的值1066156686;根据该指令的语义信息,将变量v1标记成常量状态,v1的值记录为常量值1066156686;
分析出第3行指令为针对变量v3的含有操作数的常量值引入指令,该指令将形参p1的值引入v3,在代码段2中,形参p1对应的实参为字符串v7,且v7被赋值8,则p1的值为字符串v7的值8;根据该指令的语义信息,将v3标记成常量状态,v3的值记录为常量值8;
分析出第4行指令为系统函数调用指令,由于被调用函数SmsManager.sendTextMessage是库函数,无法进入被调用函数分析,转入步骤304处理。
步骤304:服务器将待检测软件调用的函数的敏感特征信息与本地保存的的敏感特征信息进行匹配;
本实施例中,服务器在本地维护检测规则以保存敏感特征信息和恶意特征信息,且针对同一危险函数的敏感特征信息和恶意特征信息用同一条检测规则以XML(ExtensibleMarkupLanguage,可扩展标记语言)描述,针对函数SmsManager.sendTextMessage的检测规则可描述如下:
代码段4
其中,上述字段的含义分别为:
<FunName>:匹配函数名为sendTextMessage的函数;
<ClassName>:匹配的函数类名为SmsManager的函数;
<ParaTypeList>:参数类型列表,对函数类名为SmsManager的函数的参数类型,其中,前三个函数参数的类型为String(字符串),后两个函数参数的类型为系统定义的类型,该列表匹配前三个函数参数类型为字符串的函数;
<ParamSize>:匹配函数的参数个数为6的函数,对非静态函数而言,每个函数的第一个参数为this指针,此处的参数个数是包含this指针在内的个数;
<KeyParamList>:匹配一个或多个函数的参数信息,每个参数的匹配规则用<KeyParam>表示;
<KeyParam>:包含了一个参数的匹配规则;
<ParamPos>:需要匹配的参数的位置,从0开始计数;
<ParamValue>:需要匹配的参数的值,值的特征采用正则表达式描述;
<SinkType>:函数的行为类型。
本步骤中,当服务器分析到代码段3第4行指令为函数调用指令,且被调用函数为库函数时,将被调用函数的敏感特征与代码段4检测规则中的敏感特征信息匹配,其中,所述敏感特征信息包括函数名、函数参数类名、函数参数类型和函数参数个数,处理如下:
经过上述对代码段3的分析,可得出被调用函数的函数名、函数参数类名、函数参数类型和函数参数个数分别为:sendTextMessage、SmsManager、String和6,其中,由于被调用函数为非静态函数,所以函数参数个数6为包含this指针在内的个数。符合代码段4检测规则中针对被调用函数的敏感特征信息的的描述,则标识所述函数调用为敏感行为。
步骤305:服务器将待检测软件调用的函数的恶意特征信息与本地保存的的恶意特征信息进行匹配;
这里,所述恶意特征信息包括:函数名、函数参数常量值。
在步骤304中,函数SmsManager.sendTextMessage的调用被标识为敏感行为之后,本步骤中,服务器进行如下处理:
分析出代码段4检测规则中恶意特征信息<ParamValue>字段中的正则表达式描述的对象,为以字符10开头的长度为5到20的字符串,且函数SmsManager.sendTextMessage除this指针外的第1个参数的值为1066156686,符合该正则表达式的描述,则标记该函数调用为恶意行为,结合代码段中的<SinkType>的描述,确定待检测软件为自动发送短信的恶意软件。
步骤306:服务器评定恶意行为的危险等级,生成检测结果并通过客户端报告用户。
本步骤中,针对步骤305恶意特征信息的匹配结果,生成的检测结果为:
危险等级:高;
危险函数名:sendTextMessage;
危险函数类名:SmsManager;
恶意行为所在函数的函数名:SmsManager;
恶意行为所在函数的类名:MessageService;
恶意行为类型:恶意扣费;
恶意行为描述:向sp号码1066156686发送短信订购服务。
所述检测结果服务器发送给客户端,并由客户端通过UI显示,以报告给用户。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明保护范围。

Claims (8)

1.一种检测Android恶意软件的方法,其特征在于,该方法包括:
服务器模拟执行待检测软件,将待检测软件调用的函数的敏感特征信息,与本地保存的敏感特征信息进行匹配,若匹配成功,则标识该函数调用为敏感行为;
将敏感行为中被调用函数的恶意特征信息,与本地保存的恶意特征信息进行匹配,若匹配成功,则标识该函数调用为恶意行为,以确定待检测软件为恶意软件;
所述敏感特征信息包括:函数名、函数类名、函数参数类型和函数参数个数;
所述恶意特征信息包括:函数名、函数参数常量值;
所述服务器模拟执行待检测软件之前,该方法还包括:
服务器接收用户通过客户端上传的待检测软件的安装包,对安装包中的字节码文件进行反汇编,根据反汇编出的程序代码,构建程序结构并求解程序执行路径;
所述程序执行路径为运行反汇编出的程序代码中全部指令的指令执行序列。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
服务器分析程序执行路径中的指令,并在所述指令为常量值引入指令时,记录引入的常量值并将常量值在程序执行路径中向下传播。
3.根据权利要求1或2所述的方法,其特征在于,该方法还包括:
服务器评定被恶意行为的危险等级,结合恶意行为危险等级生成检测结果并保存在本地,并在模拟执行完毕待检测软件后,将本地检测结果通过客户端用户界面UI报告用户。
4.一种服务器,其特征在于,该服务器包括模拟执行单元,检测规则存储单元、标识单元、敏感行为匹配单元和恶意行为匹配单元;其中,
所述模拟执行单元,用于模拟执行待检测软件;
所述检测规则存储单元,用于存储敏感特征信息和恶意特征信息;
所述敏感行为匹配单元,用于所述模拟执行单元调用函数时,将被调用函数的敏感特征信息与检测规则存储单元中的敏感特征信息进行匹配;
所述标识单元,用于在所述敏感行为匹配单元匹配敏感特征信息成功时,标识所述函数调用为敏感行为;
所述恶意行为匹配单元,用于在所述标识单元标识所述函数调用为敏感行为时,将所述函数调用中被调用函数的恶意特征信息与检测规则存储单元中的恶意特征信息进行匹配;
所述标识单元,还用于在所述恶意行为匹配单元匹配恶意特征信息成功时,标识所述函数调用为恶意行为,以确定待检测软件为恶意软件;
所述敏感特征信息包括:函数名、函数类名、函数参数类型和函数参数个数;
所述恶意特征信息包括:函数名、函数参数常量值;
该服务器还包括:预处理单元、程序结构构建单元、程序执行路径求解单元和常量值分析单元;其中,
所述预处理单元,用于接收用户通过客户端上传的待检测软件的安装包,并对安装包中的字节码文件进行反汇编;
所述程序结构构建单元,用于在所述预处理单元根据字节码文件反汇编出程序代码后,根据所述程序代码构建程序结构;
所述程序执行路径求解单元,用于在所述程序结构构建单元构建出程序结构后,根据所述程序结构求解程序执行路径;
所述程序执行路径为运行反汇编出的程序代码中全部指令的指令执行序列。
5.根据权利要求4所述的服务器,其特征在于,
所述模拟执行单元,具体用于根据所述程序执行路径求解单元求解出的程序执行路径,顺序分析程序执行路径中的指令;
所述常量值分析单元,用于在所述模拟执行单元分析出程序执行路径中的指令为常量值引入指令时,记录引入的常量值并在程序执行路径中将常量值向下传播。
6.根据权利要求4或5所述的服务器,其特征在于,该服务器还包括:危险等级评定单元、检测结果保存单元和恶意行为报告单元;其中,
所述危险等级评定单元,用于在所述标识单元标识所述函数调用为恶意行为,以确定待检测软件为恶意软件时,评定恶意行为危险等级,结合恶意行为危险等级生成检测结果;
所述检测结果保存单元,用于保存所述危险等级评定单元生成的检测结果;
所述恶意行为报告单元,用于在所述模拟执行单元模拟执行待检测软件完毕后,将所述检测结果保存单元保存的检测结果发送给客户端,以通过客户端UI报告给用户。
7.一种Android恶意软件检测系统,其特征在于,该系统包括:客户端和服务器;其特征在于,
所述客户端,用于使用户通过运行在客户端的UI向服务器上传待检测软件的安装包;接收服务器发送的检测结果,通过UI报告用户;
所述服务器,用于根据接收到的用户通过客户端上传的待检测软件的安装包模拟执行待检测软件,将待检测软件调用的函数的敏感特征信息和恶意特征信息,分别与本地保存的敏感特征信息和恶意特征信息进行匹配,若匹配成功,则确定待检测软件为恶意软件,将检测结果发送给客户端;
所述敏感特征信息包括:函数名、函数类名、函数参数类型和函数参数个数;
所述恶意特征信息包括:函数名、函数参数常量值;
服务器还用于接收用户通过所述客户端上传的待检测软件的安装包,对安装包中的字节码文件进行反汇编,根据反汇编出的程序代码,构建程序结构并求解程序执行路径;
所述程序执行路径为运行反汇编出的程序代码中全部指令的指令执行序列。
8.根据权利要求7所述的系统,其特征在于,所述服务器为权利要求5至6任一项所述的服务器。
CN201210376038.XA 2012-09-29 2012-09-29 一种检测Android恶意软件的方法、系统及设备 Active CN102945347B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210376038.XA CN102945347B (zh) 2012-09-29 2012-09-29 一种检测Android恶意软件的方法、系统及设备
PCT/CN2013/082163 WO2014048195A1 (zh) 2012-09-29 2013-08-23 检测安卓软件恶意行为的方法、系统及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210376038.XA CN102945347B (zh) 2012-09-29 2012-09-29 一种检测Android恶意软件的方法、系统及设备

Publications (2)

Publication Number Publication Date
CN102945347A CN102945347A (zh) 2013-02-27
CN102945347B true CN102945347B (zh) 2016-02-24

Family

ID=47728288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210376038.XA Active CN102945347B (zh) 2012-09-29 2012-09-29 一种检测Android恶意软件的方法、系统及设备

Country Status (2)

Country Link
CN (1) CN102945347B (zh)
WO (1) WO2014048195A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108040064A (zh) * 2017-12-22 2018-05-15 北京知道创宇信息技术有限公司 数据传输方法、装置、电子设备及存储介质

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102945347B (zh) * 2012-09-29 2016-02-24 中兴通讯股份有限公司 一种检测Android恶意软件的方法、系统及设备
WO2014048194A1 (zh) * 2012-09-29 2014-04-03 中兴通讯股份有限公司 Android恶意应用程序检测方法、系统及设备
US9058494B2 (en) * 2013-03-15 2015-06-16 Intel Corporation Method, apparatus, system, and computer readable medium to provide secure operation
CN103246846A (zh) * 2013-04-24 2013-08-14 北京网秦天下科技有限公司 检测定制rom的安全性的方法和装置
CN103473507B (zh) * 2013-09-25 2016-03-30 西安交通大学 一种Android恶意代码检测方法
CN103473509A (zh) * 2013-09-30 2013-12-25 清华大学 Android平台恶意软件自动检测方法
CN103685251B (zh) * 2013-12-04 2016-08-17 电子科技大学 一种面向移动互联网的Android恶意软件检测平台
CN103701800A (zh) * 2013-12-25 2014-04-02 贝壳网际(北京)安全技术有限公司 cookie处理方法、装置及浏览器、客户端
CN104899505A (zh) * 2014-03-07 2015-09-09 北京奇虎科技有限公司 软件检测方法及装置
US9357397B2 (en) * 2014-07-23 2016-05-31 Qualcomm Incorporated Methods and systems for detecting malware and attacks that target behavioral security mechanisms of a mobile device
CN104079673B (zh) * 2014-07-30 2018-12-07 北京奇虎科技有限公司 一种应用下载中防止dns劫持的方法、装置和系统
CN104268473B (zh) * 2014-09-23 2017-05-24 龙芯中科技术有限公司 应用程序检测方法和装置
CN105989294B (zh) * 2015-02-17 2019-02-26 华为技术有限公司 安卓安装包检测方法及装置
CN106156630A (zh) * 2015-04-23 2016-11-23 阿里巴巴集团控股有限公司 一种应用程序安装包的漏洞检测方法和装置
CN104978527B (zh) * 2015-07-30 2017-12-08 深圳数字电视国家工程实验室股份有限公司 一种计算程序切片的方法及装置
CN106778261A (zh) * 2015-11-20 2017-05-31 中兴通讯股份有限公司 伪装应用的处理方法和装置
CN106815524B (zh) * 2015-11-27 2020-05-15 阿里巴巴集团控股有限公司 恶意脚本文件的检测方法及装置
CN105404583B (zh) * 2015-12-04 2017-10-20 中科信息安全共性技术国家工程研究中心有限公司 一种apk的快速检测及提高单位资源利用率的方法
CN105740706B (zh) * 2015-12-25 2019-05-07 哈尔滨安天科技股份有限公司 基于api名称和立即数的启发式样本检测方法及系统
CN106940775B (zh) * 2016-01-04 2020-07-14 阿里巴巴集团控股有限公司 应用程序的漏洞检测方法和装置
CN108062472A (zh) * 2016-11-07 2018-05-22 武汉安天信息技术有限责任公司 一种安卓平台下勒索应用的检测方法及系统
CN107016286B (zh) * 2016-12-30 2019-09-24 深圳市安之天信息技术有限公司 一种基于随机跟踪的恶意代码随机化识别方法及系统
CN109214179B (zh) * 2017-06-30 2021-04-27 武汉斗鱼网络科技有限公司 一种程序模块安全检测方法及装置
CN107577944A (zh) * 2017-09-08 2018-01-12 杭州安恒信息技术有限公司 基于代码语法分析器的网站恶意代码检测方法及装置
CN108875361A (zh) * 2017-12-28 2018-11-23 北京安天网络安全技术有限公司 一种监控程序的方法、装置、电子设备及存储介质
CN108491722A (zh) * 2018-03-30 2018-09-04 广州汇智通信技术有限公司 一种恶意软件检测方法及系统
CN108959092B (zh) * 2018-07-09 2022-03-18 中国联合网络通信集团有限公司 软件行为分析方法及系统
CN109101815B (zh) * 2018-07-27 2023-04-07 平安科技(深圳)有限公司 一种恶意软件检测方法及相关设备
CN109815701B (zh) * 2018-12-29 2022-04-22 奇安信安全技术(珠海)有限公司 软件安全的检测方法、客户端、系统及存储介质
CN110362995B (zh) * 2019-05-31 2022-12-02 电子科技大学成都学院 一种基于逆向与机器学习的恶意软件检测及分析系统
CN111078234B (zh) * 2019-12-06 2023-06-02 广州微算互联信息技术有限公司 一种云手机Android系统动态限制安装卸载的方法、系统、装置及存储介质
CN111597552B (zh) * 2020-04-15 2023-11-10 深圳市捷顺科技实业股份有限公司 代码扫描方法及终端设备
CN113222053B (zh) * 2021-05-28 2022-03-15 广州大学 基于RGB图像和Stacking多模型融合的恶意软件家族分类方法、系统和介质
CN113434872A (zh) * 2021-08-27 2021-09-24 迅管(深圳)科技有限公司 一种可针对恶意程序进行识别防御的数据库安全系统
CN114417352B (zh) * 2021-12-24 2024-09-13 深圳开源互联网安全技术有限公司 一种安全函数识别方法、装置及计算机可读存储介质
CN116451229B (zh) * 2023-06-14 2023-09-12 北京长亭科技有限公司 一种恶意软件检测方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359352A (zh) * 2008-09-25 2009-02-04 中国人民解放军信息工程大学 分层协同的混淆后api调用行为发现及其恶意性判定方法
CN102110220A (zh) * 2011-02-14 2011-06-29 宇龙计算机通信科技(深圳)有限公司 一种应用程序监控方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8347386B2 (en) * 2008-10-21 2013-01-01 Lookout, Inc. System and method for server-coupled malware prevention
CN102012988B (zh) * 2010-12-02 2012-09-26 张平 自动二进制恶意代码行为分析方法
CN102945347B (zh) * 2012-09-29 2016-02-24 中兴通讯股份有限公司 一种检测Android恶意软件的方法、系统及设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359352A (zh) * 2008-09-25 2009-02-04 中国人民解放军信息工程大学 分层协同的混淆后api调用行为发现及其恶意性判定方法
CN102110220A (zh) * 2011-02-14 2011-06-29 宇龙计算机通信科技(深圳)有限公司 一种应用程序监控方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108040064A (zh) * 2017-12-22 2018-05-15 北京知道创宇信息技术有限公司 数据传输方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN102945347A (zh) 2013-02-27
WO2014048195A1 (zh) 2014-04-03

Similar Documents

Publication Publication Date Title
CN102945347B (zh) 一种检测Android恶意软件的方法、系统及设备
CN107341399B (zh) 评估代码文件安全性的方法及装置
CN107528818B (zh) 媒体文件的数据处理方法和装置
CN106815524B (zh) 恶意脚本文件的检测方法及装置
CN105069355A (zh) webshell变形的静态检测方法和装置
CN106649446B (zh) 信息推送方法和装置
CN105095367B (zh) 一种客户端数据的采集方法和装置
CN113568626B (zh) 动态打包、应用程序包开启方法、装置和电子设备
CN110765459A (zh) 一种恶意脚本检测方法、装置和存储介质
CN110442286B (zh) 一种页面展示方法、装置及电子设备
CN111831538A (zh) 调试方法、装置以及存储介质
CN115033894B (zh) 一种基于知识图谱的软件组件供应链安全检测方法及装置
CN109492181A (zh) 页面跳转方法、装置、计算机设备和存储介质
Wen et al. Protocol vulnerability detection based on network traffic analysis and binary reverse engineering
CN110955438A (zh) 一种小程序的性能监控方法、装置、设备及存储介质
CN109933977A (zh) 一种检测webshell数据的方法及装置
CN108108169B (zh) 一种基于Jenkins的多分支的构建方法及系统
CN114491560A (zh) 一种漏洞检测方法、装置、存储介质及电子设备
KR101481910B1 (ko) 웹 페이지의 비정상 정보 탐지 장치 및 방법
CN113656763A (zh) 确定小程序特征向量的方法、装置和电子设备
CN113330716B (zh) 确定应用服务的依赖关系的方法及装置、处理器
CN106651183B (zh) 工控系统的通信数据安全审计方法及装置
CN110210216A (zh) 一种病毒检测的方法以及相关装置
CN111125704B (zh) 一种网页挂马识别方法及系统
CN114915566A (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
C14 Grant of patent or utility model
GR01 Patent grant