CN109871681B - 基于混合分析面向动态代码加载安卓恶意软件检测方法 - Google Patents
基于混合分析面向动态代码加载安卓恶意软件检测方法 Download PDFInfo
- Publication number
- CN109871681B CN109871681B CN201910152783.8A CN201910152783A CN109871681B CN 109871681 B CN109871681 B CN 109871681B CN 201910152783 A CN201910152783 A CN 201910152783A CN 109871681 B CN109871681 B CN 109871681B
- Authority
- CN
- China
- Prior art keywords
- control flow
- inter
- flow graph
- code
- process control
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
本发明属于软件安全领域中的安卓应用安全子领域,为加强安卓系统对安卓应用在通过热补丁技术动态加载外部代码的过程中的安全检测,防止恶意程序通过热补丁技术动态加载恶意代码以绕过Google应用商店安全检测的行为。提高系统安全性,保护用户隐私。为此,本发明采取的技术方案是,基于混合分析面向动态代码加载安卓恶意软件检测方法,步骤如下:1)拦截动态加载的代码;2)补充过程间控制流图;3)补充控制流图中由反射形成的边;4)污点分析:在获得过程间控制流图以后,使用污点分析工具对过程间控制流图进行完整的污点分析。本发明主要应用于应用安全场合。
Description
技术领域
本发明属于软件安全领域中的安卓应用安全子领域,涉及到安卓热补丁动态化部署技术、安卓应用的安全性问题、恶意代码检测技术、基于混合分析的安卓恶意软件检测技术以及用户隐私保护问题,具体涉及基于混合分析的面向动态代码加载安卓恶意软件检测方法。
背景技术
安卓设备的日益流行导致了恶意软件开发商将越来越多的目光投向了安卓应用,Google(谷歌)在应用商店中通过静态分析技术和动态分析技术的应用,使恶意软件的数量得到了遏制,但恶意软件在其他途径传播的可能性仍然不能被忽视。
热补丁技术是安卓动态化部署的重要应用场景之一,该技术是指在应用系统不停止运行的情况下,将补丁分发至应用并安装更新。安卓系统用户很少主动更新应用软件的习惯,促使应用开发者更热衷于通过热补丁更新方案的使用来修复应用缺陷、加快迭代速度。该技术在开发者和用户之间搭起了直接的代码分发通道,恶意软件开发者可利用该通道绕过应用商店的恶意软件检测机制。
基于静态分析的软件检测技术是一种在不执行程序的情况下检测应用程序的技术,它通过逆向分析或者直接分析程序的源代码来理解程序并检测程序的中的恶意代码。该技术通过一个分析器可以实现很高的代码覆盖率,它将应用程序中包含的ELF(Executable and Linkable Format,可执行与可链接格式)格式的二进制文件和已知的root(系统用户及权限)代码进行比较,对安卓应用程序的生命周期状态进行建模,并基于回调和UI(User Interface,用户界面)对象或者机器学习的相关方法进行污点分析来达到恶意代码检测的效果。静态污点分析可以在不运行程序代码的情况下对程序内的信息流进行跟踪,它通过分析程序中各个数据变量之间的相互依赖关系来找出程序中所包含的从污染源到泄漏点的数据通路。静态污点分析一般会将程序的源代码或者某种中间表示输入给分析器。分析器将对污点传播问题的分析变成了对静态数据相互依赖的分析,这样,静态污点分析可以快速准确的突显出与未被净化的受污染变量相关的潜在安全问题。静态污点分析过程如附图1所示。
基于动态分析的软件检测技术是通过在真正的或者虚拟的执行环境中执行一个应用程序,通过观察该应用程序的的各种行为及状态的分析方法。该技术通过跟踪无源代码的信息流来分析可执行文件,将某些输入数据标记为受污染的并将其存储,然后根据指令类型和指令操作数等因素设计相应的传播逻辑传播污点标记。针对安卓应用程序的动态污点分析通常在虚拟机中对应用程序进行模拟执行,并对隐私泄漏行为进行检测。
发明内容
为克服现有技术的不足,本发明旨在加强安卓系统对安卓应用在通过热补丁技术动态加载外部代码的过程中的安全检测,防止恶意程序通过热补丁技术动态加载恶意代码以绕过Google应用商店安全检测的行为。提高系统安全性,保护用户隐私。为此,本发明采取的技术方案是,基于混合分析面向动态代码加载安卓恶意软件检测方法,步骤如下:
1)拦截动态加载的代码
采用应用程序编程接口钩子API Hook(Application Programming InterfaceHook)技术,修改代码加载API方法的入口,并将入口指向自定义的Hook模块入口,当应用程序在使用加载器动态加载代码时,Hook模块拦截并提取到动态加载的代码,首先提取出应用要加载的代码地址,并按该地址找到代码的二进制文件,然后对该文件进行验证;
对文件验证时,首先客户端计算二进制文件的哈希值,并在客户端中的黑名单与白名单中查找该哈希值,如果在黑名单中找到,则中断该应用程序对这个二进制文件的加载行为,同时向用户报告发现恶意行为;如果在白名单中找到命中,则继续原来的加载过程;否则,该二进制文件会被认为是未知文件,客户端中断对它的加载行为并与审计服务器通信请求验证其安全性;
2)补充过程间控制流图
在获取到客户端拦截的代码后,利用该部分代码生成过程间控制流图,这部分过程间控制流图是完整应用程序过程间控制流图的子图,在处理过程中将生成的过程间控制流图与相应的应用程序生成的控制流图结合起来,形成一个较为完整的过程间控制流图;
在接收到客户端传来的未知代码S后,通过同时接收的应用程序信息找到它对应的应用程序M,并通过静态处理分别生成两个过程间控制流图,然后将两个过程间控制流图进行合并;
3)补充控制流图中由反射形成的边
在静态处理的过程中将所有的反射调用都记录下来,同时将应用程序及拦截到的代码装入虚拟环境中模拟运行,然后在运行过程中检测并记录运行到的反射调用的调用目标,最后将记录到的反射调用行为添加到已经生成的过程间控制流图中;
动态地执行应用程序,并记录其中反射调用的目标,将其加入到过程间控制流图中,最终获得将要使用的过程间控制流图;
4)污点分析
在获得过程间控制流图以后,使用污点分析工具对过程间控制流图进行完整的污点分析。以查找未知代码中对用户隐私信息的侵犯行为,由于过程间控制流图的生成结合了客户端拦截到的未知代码,系统可以对应用程序的行为有更深入的分析。
每当用户上传未知代码到服务器时,未知代码的二进制文件便会被存储入版本库中,在对该二进制文件的审计结束后,其相应的安全性数据也会一并存入版本库;安全性数据包括用程序各个版本的安装文件及其对应的包名,版本号,哈希值元数据,每个版本下使用动态代码机制加载过的二进制文件及其哈希值,版本库中的应用程序安装文件用来在审计过程中生成过程间控制流图,同时,版本库中的数据也可以用来为客户端生成个性化的黑白名单。
本发明的特点及有益效果是:
本发明可以对用户中应用程序动态加载的恶意外部代码进行检测并实现拦截,从而保护用户设备的安全。
通过引入混合分析技术改进了现有污点分析技术生成过程间控制流图的方法,使污点分析技术可以在应用动态代码加载技术的情况下正常工作。同时,通过在运行时动态地拦截并检测动态加载的代码,使得该系统适用于更普遍的动态代码加载技术应用场景,提高了对动态代码加载恶意软件检测的准确性和有效性,并且具备了对系统的保护能力。
附图说明:
附图1静态污点分析过程。
附图2过程间控制流图的合并。
附图3补充边后的过程间控制流图。
附图4总体技术框架。
附图5系统总体架构。
具体实施方式
本发明实现了对安卓应用动态加载外部代码安全性的实时监测。
本发明技术方案如下:
1)拦截动态加载的代码
为了检测应用程序在运行时动态加载代码的安全性,一个拦截模块被放置在用户设备上。该模块使用了API Hook技术,利用该技术可以修改代码加载API方法的入口,并将入口指向我们自定义的方法。在既定义方法中,我们修改了方法原有的代码逻辑。当应用程序在使用加载器动态加载代码时,Hook模块就可以拦截并提取到动态加载的代码。拦截到的代码可以发送到服务器端进行审计。
在拦截到应用的动态代码加载行为后,首先提取出应用要加载的代码地址,并按该地址找到代码的二进制文件,然后对该文件进行验证。
对文件验证时,首先客户端计算二进制文件的哈希值,并在客户端中的黑名单与白名单中查找该哈希值。如果在黑名单中找到,则中断该应用程序对这个二进制文件的加载行为,同时向用户报告发现恶意行为;如果在白名单中找到命中,则继续原来的加载过程;否则,该二进制文件会被认为是未知文件,客户端中断对它的加载行为并与审计服务器通信请求验证其安全性。
2)补充过程间控制流图
在获取到客户端拦截的代码后,利用该部分代码生成过程间控制流图,这部分过程间控制流图是完整应用程序过程间控制流图的子图。在处理过程中就可以将生成的过程间控制流图与相应的应用程序生成的控制流图结合起来,形成一个较为完整的过程间控制流图。如附图2所示,图(a)表示应用程序生成的过程间控制流图,图(b)表示用动态加载的代码生成的过程间控制流图,图(c)表示将图(a)和图(b)合并后生成的新图。
在接收到客户端传来的未知代码S后,我们通过同时接收的应用程序信息找到它对应的应用程序M,并通过静态处理分别生成两个过程间控制流图,然后将两个过程间控制流图进行合并。
3)补充控制流图中由反射形成的边
在静态处理的过程中将所有的反射调用都记录下来,同时将应用程序及拦截到的代码装入虚拟环境中模拟运行,然后在运行过程中检测并记录运行到的反射调用的调用目标。最后将记录到的反射调用行为添加到已经生成的过程间控制流图中。
我们动态地执行应用程序,并记录其中反射调用的目标,将其加入到过程间控制流图中,最终获得将要使用的过程间控制流图。
4)污点分析
在获得过程间控制流图以后,我们使用污点分析工具对过程间控制流图进行完整的污点分析。以查找未知代码中对用户隐私信息的侵犯行为。由于过程间控制流图的生成结合了客户端拦截到的未知代码,系统可以对应用程序的行为有更深入的分析。
5)版本库维护
系统需要维护一个版本库,以提供系统对应用程序各个版本相关数据的需求。版本库用来存储由客户端上传的应用程序各个版本的安装文件(及其对应的包名,版本号,哈希值等元数据),每个版本下使用动态代码机制加载过的二进制文件(及其哈希值,安全性数据等)。
每当用户上传未知代码到服务器时,未知代码的二进制文件便会被存储入版本库中。在对该二进制文件的审计结束后,其相应的安全性数据也会一并存入版本库。
版本库中的应用程序安装文件用来在审计过程中生成过程间控制流图。同时,版本库中的数据也可以用来为客户端生成个性化的黑白名单。
总体技术框架如附图4所示。
下面结合具体实例进一步详细说明本发明。
基于该技术构建面向动态代码加载的安卓恶意软件检测系统
1)系统总体架构
系统主要由两部分组成,安装于用户设备的客户端和用于安全性分析的审计服务。
其中,客户端主要负责动态加载的外部代码的拦截,外部代码的安全性验证以及信息交换;审计服务对客户端传来的外部代码及其他数据进行分析并进行相关的存储工作。客户端与审计服务相互通过数据传输来进行配合,共同完成对面向动态代码加载的恶意软件检测工作。如附图5所示。
2)客户端实现
系统客户端独立于用户设备中其他应用而存在,不依赖于任何特定的第三方应用。客户端通过Hook模块与其他应用进行交互,并利用黑白名单机制来验证应用程序动态加载的外部代码的安全性。客户端通过对黑白名单的管理来对应用程序加载外部代码的行为进行间接的管理。为了实现系统运行的稳定,客户端抽象出专门的通信模块负责与审计服务的通信管理。
3)动态代码加载行为模块实现
该模块要完成对动态代码加载行文的拦截操作。首先通过特定的API进行Hook,表8-1提供了系统需要Hool的所有API,以及通过Hook可以获取到的信息。然后,通过使用Xposed(修改系统框架服务)框架对这些系统API进行Hook并修改其逻辑。
表4-1动态代码加载API
4)黑白名单的保护机制设计
在拦截到应用程序动态加载代码的行为后,Hook模块将应用程序将要加载的外部代码提取出来,并交付验证模块进行验证。验证模块计算将要加载的外部代码的哈希值,并用该哈希值及应用程序信息在白名单及黑名单中进行查询。哈希值的计算使用安卓系统携带的OpenSSL(Open Secure Sockets Layer,开放式安全套接层协议)库中实现的SHA-256(Secure Hash Algorithm,安全散列算法)算法。SHA-256算法是SHA密码散列函数家族的一种算法,它是由美国联邦信息处理标准认证的安全散列算法。其碰撞几率较小,被广泛用于文件对比。
获得被加载外部代码的哈希值之后,验证模块如果在白名单中找到了被加载外部文件相对应的匹配,即白名单命中,验证模块会通知Hook模块继续应用程序的动态代码加载行为;如果验证模块在黑名单中找到命中记录,验证模块会通知Hook模块终止应用程序的动态代码加载行为,并通知用户该应用正在尝试加载包含恶意行为的外部代码;如果黑白名单都没有命中记录,该外部代码便被认为是未知的,验证模块会请求名单管理模块更新黑白名单,同时将拦截到的外部代码存入隔离区中,防止代码被销毁或者更改,并且在审计服务需要的情况下下审计服务提交该外部代码,用户会被通知正在验证外部代码的安全性请稍后再次尝试执行。
5)审计服务模块实现
完整的审计服务由Web服务,静态分析模块,动态分析模块,汇总模块以及污点分析模块构成。其中Web服务提供了审计服务与客户端进行沟通的外部接口,审计服务的各个组件也是以Web服务为核心组织在一起的,各个组件被Web(World Wide We,全球广域网服务)调用以实现整体的功能。版本库提供了基础的存储服务,其中存储的应用程序安装包为安全审计提供基础,存储的应用程序相关信息和相应外部代码安全性信息为个性化的黑白名单生成提供了保障。汇总模块协同静态分析模块和动态分析模块主要完成过程间控制流图的生成工作,同时将发现的可以调用记录下来,供以后参考。污点分析模块为一个静态污点分析工具,它依靠混合分析提供的过程间控制流图进行污点分析工作,并报告发现的隐私泄漏行为。
Claims (2)
1.一种基于混合分析面向动态代码加载安卓恶意软件检测方法,其特征是,步骤如下:
1)拦截动态加载的代码
采用应用程序编程接口钩子API Hook(Application Programming Interface Hook)技术,修改代码加载API方法的入口,并将入口指向自定义的Hook模块入口,当应用程序在使用加载器动态加载代码时,Hook模块拦截并提取到动态加载的代码,首先提取出应用要加载的代码地址,并按该地址找到代码的二进制文件,然后对该文件进行验证;
对文件验证时,首先客户端计算二进制文件的哈希值,并在客户端中的黑名单与白名单中查找该哈希值,如果在黑名单中找到,则中断该应用程序对这个二进制文件的加载行为,同时向用户报告发现恶意行为;如果在白名单中找到命中,则继续原来的加载过程;否则,该二进制文件会被认为是未知文件,客户端中断对它的加载行为并与审计服务器通信请求验证其安全性;
2)补充过程间控制流图
在获取到客户端拦截的代码后,利用该部分代码生成过程间控制流图,这部分过程间控制流图是完整应用程序过程间控制流图的子图,在处理过程中将生成的过程间控制流图与相应的应用程序生成的控制流图结合起来,形成一个较为完整的过程间控制流图;
在接收到客户端传来的未知代码S后,通过同时接收的应用程序信息找到它对应的应用程序M,并通过静态处理分别生成两个过程间控制流图,然后将两个过程间控制流图进行合并;
3)补充控制流图中由反射形成的边
在静态处理的过程中将所有的反射调用都记录下来,同时将应用程序及拦截到的代码装入虚拟环境中模拟运行,然后在运行过程中检测并记录运行到的反射调用的调用目标,最后将记录到的反射调用行为添加到已经生成的过程间控制流图中;
动态地执行应用程序,并记录其中反射调用的目标,将其加入到过程间控制流图中,最终获得将要使用的过程间控制流图;
4)污点分析
在获得过程间控制流图以后,使用污点分析工具对过程间控制流图进行完整的污点分析,以查找未知代码中对用户隐私信息的侵犯行为。
2.如权利要求1所述的基于混合分析面向动态代码加载安卓恶意软件检测方法,其特征是,每当用户上传未知代码到服务器时,未知代码的二进制文件便会被存储入版本库中,在对该二进制文件的审计结束后,其相应的安全性数据也会一并存入版本库;安全性数据包括用程序各个版本的安装文件及其对应的包名,版本号,哈希值元数据,每个版本下使用动态代码机制加载过的二进制文件及其哈希值,版本库中的应用程序安装文件用来在审计过程中生成过程间控制流图,同时,版本库中的数据用来为客户端生成个性化的黑白名单。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910152783.8A CN109871681B (zh) | 2019-02-28 | 2019-02-28 | 基于混合分析面向动态代码加载安卓恶意软件检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910152783.8A CN109871681B (zh) | 2019-02-28 | 2019-02-28 | 基于混合分析面向动态代码加载安卓恶意软件检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109871681A CN109871681A (zh) | 2019-06-11 |
CN109871681B true CN109871681B (zh) | 2023-04-18 |
Family
ID=66919506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910152783.8A Active CN109871681B (zh) | 2019-02-28 | 2019-02-28 | 基于混合分析面向动态代码加载安卓恶意软件检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109871681B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11620378B2 (en) * | 2019-11-27 | 2023-04-04 | Data Security Technologies LLC | Systems and methods for proactive and reactive data security |
CN111417121B (zh) * | 2020-02-17 | 2022-04-12 | 西安电子科技大学 | 具有隐私保护的多恶意软件混合检测方法、系统、装置 |
CN112287341A (zh) * | 2020-09-22 | 2021-01-29 | 哈尔滨安天科技集团股份有限公司 | 一种Android恶意应用检测方法、装置、电子设备及存储介质 |
CN112434287B (zh) * | 2020-11-20 | 2024-04-02 | 西安四叶草信息技术有限公司 | 一种检测Hook的方法、装置、设备及存储介质 |
CN112926049A (zh) * | 2021-03-25 | 2021-06-08 | 支付宝(杭州)信息技术有限公司 | 一种信息的风险防控方法、装置及设备 |
CN114611102A (zh) * | 2022-02-23 | 2022-06-10 | 西安电子科技大学 | 可视化恶意软件检测与分类方法、系统、存储介质及终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104834837A (zh) * | 2015-04-03 | 2015-08-12 | 西北大学 | 一种基于语义的二进制代码反混淆方法 |
CN107944270A (zh) * | 2017-12-05 | 2018-04-20 | 暨南大学 | 一种可验证的安卓恶意软件检测系统及方法 |
CN109002721A (zh) * | 2018-07-12 | 2018-12-14 | 南方电网科学研究院有限责任公司 | 一种信息安全漏洞的挖掘分析方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL259201B (en) * | 2017-05-10 | 2021-12-01 | Checkmarx Ltd | Using the same query language for static and dynamic application security testing tools |
-
2019
- 2019-02-28 CN CN201910152783.8A patent/CN109871681B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104834837A (zh) * | 2015-04-03 | 2015-08-12 | 西北大学 | 一种基于语义的二进制代码反混淆方法 |
CN107944270A (zh) * | 2017-12-05 | 2018-04-20 | 暨南大学 | 一种可验证的安卓恶意软件检测系统及方法 |
CN109002721A (zh) * | 2018-07-12 | 2018-12-14 | 南方电网科学研究院有限责任公司 | 一种信息安全漏洞的挖掘分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109871681A (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109871681B (zh) | 基于混合分析面向动态代码加载安卓恶意软件检测方法 | |
Zhan et al. | Atvhunter: Reliable version detection of third-party libraries for vulnerability identification in android applications | |
US11550903B1 (en) | System and method for trustworthiness, reputation, provenance, and measurement of software | |
He et al. | {EOSAFE}: security analysis of {EOSIO} smart contracts | |
Gibler et al. | Androidleaks: Automatically detecting potential privacy leaks in android applications on a large scale | |
Octeau et al. | Effective {Inter-Component} communication mapping in android: An essential step towards holistic security analysis | |
Grace et al. | Systematic detection of capability leaks in stock android smartphones. | |
Tang et al. | A novel hybrid method to analyze security vulnerabilities in android applications | |
Rastogi et al. | Uranine: Real-time privacy leakage monitoring without system modification for android | |
Cho et al. | Anti-debugging scheme for protecting mobile apps on android platform | |
Mongiovì et al. | Combining static and dynamic data flow analysis: a hybrid approach for detecting data leaks in Java applications | |
CN110728575A (zh) | 一种电力交易平台web安全深度监控方法 | |
Merlo et al. | You shall not repackage! demystifying anti-repackaging on android | |
Arzt et al. | The soot-based toolchain for analyzing android apps | |
Qian et al. | Malicious behavior analysis for android applications | |
Peiró et al. | Detecting stack based kernel information leaks | |
Kumar et al. | Inviseal: A stealthy dynamic analysis framework for android systems | |
Ma et al. | Communication-based attacks detection in android applications | |
Amusuo et al. | Preventing Supply Chain Vulnerabilities in Java with a Fine-Grained Permission Manager | |
Duan et al. | Automatic Generation of Non-intrusive Updates for {Third-Party} Libraries in Android Applications | |
Cho et al. | Runtime input validation for Java web applications using static bytecode instrumentation | |
Latifa | Android: Deep look into dalvik vm | |
Yang et al. | Research on non-authorized privilege escalation detection of android applications | |
He et al. | JNI global references are still vulnerable: Attacks and defenses | |
Jeon et al. | Automated multi-layered bytecode generation for preventing sensitive information leaks from android applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |