CN113886824B - 安卓勒索软件检测防御方法、装置、设备及可读存储介质 - Google Patents
安卓勒索软件检测防御方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN113886824B CN113886824B CN202111153007.3A CN202111153007A CN113886824B CN 113886824 B CN113886824 B CN 113886824B CN 202111153007 A CN202111153007 A CN 202111153007A CN 113886824 B CN113886824 B CN 113886824B
- Authority
- CN
- China
- Prior art keywords
- detected
- android
- android application
- monitoring agent
- software
- 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
- 238000000034 method Methods 0.000 title claims abstract description 171
- 230000007123 defense Effects 0.000 title claims abstract description 22
- 238000012544 monitoring process Methods 0.000 claims abstract description 153
- 239000003795 chemical substances by application Substances 0.000 claims abstract description 149
- 238000001514 detection method Methods 0.000 claims abstract description 77
- 239000008186 active pharmaceutical agent Substances 0.000 claims abstract description 41
- 230000006870 function Effects 0.000 claims description 106
- 230000006399 behavior Effects 0.000 claims description 55
- 230000009191 jumping Effects 0.000 claims description 30
- 230000003068 static effect Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 19
- 238000010276 construction Methods 0.000 claims description 11
- 230000001960 triggered effect Effects 0.000 claims description 10
- 238000002347 injection Methods 0.000 claims description 7
- 239000007924 injection Substances 0.000 claims description 7
- 238000004422 calculation algorithm Methods 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000007781 pre-processing Methods 0.000 abstract description 4
- 238000012360 testing method Methods 0.000 description 14
- 238000013461 design Methods 0.000 description 11
- 238000004458 analytical method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000000605 extraction Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 238000012857 repacking Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了安卓勒索软件检测防御方法、装置、设备及可读存储介质,包括待检测安卓应用预处理、运行环境检测和检测策略三部分。其中,待检测安卓应用预处理主要检测待检测安卓应用中的勒索文本并且将监控代理注入到待检测安卓应用中,运行环境检测主要通过监控代理检测勒索软件对框架层API和NativeLibrary的调用进而监控勒索软件的行为,检测策略主要用于根据待检测安卓应用行为判断应用是否为安卓勒索软件本发明能有效地检测应用中的勒索文本、分析应用运行时的恶意行为,以抵御安卓勒索软件攻击,保护用户设备免受勒索软件侵害,保护用户设备的安全。
Description
技术领域
本发明涉及恶意代码检测技术领域,具体涉及安卓勒索软件检测防御方法、装置、设备及可读存储介质。
背景技术
作为安卓设备上的一种当代恶意流行软件,勒索软件通常伪装自己并且诱使用户安装,其运行后会锁住用户设备或者加密设备内的重要文件,并以解锁设备或者解密文件为条件向用户实施勒索,给用户带来了极大的安全威胁。
安卓勒索软件主要通过展示勒索文本、设置全屏悬浮窗、申请设备管理器权限重置PIN码、Activity劫持以及加密文件等方式实施勒索。其中,设置全屏悬浮窗、申请设备管理器权限重置PIN码、Activity劫持是安卓勒索软件锁屏行为的主要实现方式,加密文件是安卓勒索软件加密行为的主要实现方式。通过分析已有的样本发现勒索软件的恶意行为都是在Java层实现的,这也是目前安卓勒索软件的主要实现方式。但从Windows平台的勒索软件实现方式可以预知,安卓勒索软件的这些恶意行为是可以在native层实现的,而且native层实现比Java层实现更加隐蔽,更加难以检测。
为了应对安卓勒索软件带来的安全威胁,目前已有一些研究者提出相关的方案,比较有代表性的是HelDroid[Andronio N et al.,RAID 2015]和RansomProber[Chen J etal.,IEEETIFS 2018]。HelDroid设计了一个对Android勒索软件进行静态分析检测的***,其通过反编译应用的APK文件,提取应用中的资源文件对勒索文本进行检测,提取反编译出的Smali代码进行静态分析检测是否符合锁屏或者加密行为特征,最后根据勒索文本、锁屏和加密三个特征判断Android勒索软件。这种静态分析的方案,无法分析应用运行时的行为,往往无法有效的对安卓勒索软件进行检测。RansomProber是一个实时监测Android勒索软件的***,主要用于检测加密型勒索软件,其原理是根据良性应用和加密型勒索软件在对文件进行加密时界面的不同,分析界面组件和用户点击、触摸屏幕等操作来区分进行加密操作的是正常应用还是加密型勒索软件。尽管RansomProber能对加密型安卓勒索软件进行实时检测,但只根据界面中的用户操作特征进行判断具有很大的不足,其无法检测安卓勒索软件中的勒索文本和锁屏行为,也就无法对大量存在的锁屏型安卓勒索软件进行检测。
发明内容
针对现有技术中存在的问题,本发明提供了安卓勒索软件检测防御方法、装置、设备及可读存储介质,能有效地检测应用中的勒索文本、分析应用运行时的恶意行为,以抵御安卓勒索软件攻击,保护用户设备免受勒索软件侵害,保护用户设备的安全。
为了解决上述技术问题,本发明通过以下技术方案予以实现:
一种安卓勒索软件检测防御方法,包括以下步骤:
步骤1、反编译待检测安卓应用的APK文件;
步骤2、在待检测安卓应用反编译目录中检测勒索文本;
步骤3、将勒索文本检测结果同步到检测策略中;
步骤4、将监控代理注入到待检测安卓应用的反编译目录中;
步骤5、重新打包待检测安卓应用;
步骤6、对重新打包后的待检测安卓应用进行重新签名,得到新的APK文件;
步骤7、运行新的APK文件,监控代理拦截待检测安卓应用对框架层API和NativeLibrary的调用;
步骤8、监控代理进行代理执行待检测安卓应用对框架层API和NativeLibrary的调用;
步骤9、监控代理判断待检测安卓应用是否正在调用特征Java层方法或者特征native层函数,如果是则触发相应的标记跳转到步骤10执行相应检测,如果不是则继续调用相应的Java层方法或者native层函数;
步骤10、根据触发的标记和步骤2中的勒索文本检测结果判断待检测安卓应用是否匹配检测策略,如果匹配为勒索软件则终止运行,如果未匹配为勒索软件则跳转到步骤7。
进一步地,所述步骤2具体包括:
步骤2.1、遍历待检测安卓应用反编译目录中的资源文件;
步骤2.2、提取资源文件的字符串信息;
步骤2.3、获取待检测安卓应用字符串向量;
步骤2.4、提取已有的安卓勒索软件样本中的特征字符串;
步骤2.5、获取安卓勒索软件样本特征字符串向量;
步骤2.6、使用文本相似度算法计算步骤2.3中待检测安卓应用字符串向量和步骤2.5中特征字符串向量的文本相似度,根据文本相似度判断待检测安卓应用中是否存在勒索文本。
进一步地,所述步骤4具体包括:
步骤4.1、提取出待检测安卓应用反编译出的Smali文件;
步骤4.2、对待检测安卓应用反编译出的Smali文件进行Smali代码改写;
步骤4.3、编写Java层监控代理;
步骤4.4、将Java层监控代理编译为Smali文件;
步骤4.5、编写native层监控代理;
步骤4.6、将native层监控代理编译为.so文件;
步骤4.7、将Java层监控代理的Smali文件和native层监控代理的.so文件合并注入到待检测安卓应用的反编译目录中。
进一步地,所述步骤4.2具体包括:
步骤4.2.1、遍历待检测安卓应用反编译出的Smali文件;
步骤4.2.2、逐行读取每个Smali文件中的语句;
步骤4.2.3、判断Smali语句是否含有敏感API调用或者继承了敏感类,如果含有敏感API调用则跳转到步骤4.2.4,如果继承了敏感类则跳转到步骤4.2.5,如果不含有敏感API调用也不继承敏感类,则跳转到步骤4.2.6;
步骤4.2.4、使用监控代理替换敏感API调用,将调用敏感API的Smali语句替换为调用监控代理方法的Smali语句,跳转到步骤4.2.6;
步骤4.2.5、使用监控代理替换继承的敏感类,将待检测安卓应用中继承了敏感类的Smali语句替换为继承监控代理类的Smali语句,跳转到步骤4.2.6;
步骤4.2.6、判断是否到达文件尾部,如果到达文件尾部,则跳转到步骤4.2.7,如果未到达文件尾部则跳转到步骤4.2.2;
步骤4.2.7、将改写后的Smali文件写入保存;
步骤4.2.8、判断是否遍历完所有的Smali文件,如果未遍历完所有的Smali文件则跳转到步骤4.2.1继续遍历剩余的Smali文件,如果已经遍历完则结束Smali代码改写。
进一步地,所述步骤1中,采用Apktool反编译待检测安卓应用的APK文件;
所述步骤5中,采用Apktool重新打包待检测安卓应用。
一种安卓勒索软件检测防御装置,包括:
反编译模块,用于反编译待检测安卓应用的APK文件;
检测模块,用于在待检测安卓应用反编译目录中检测勒索文本;
同步模块,用于将勒索文本检测结果同步到检测策略中;
注入模块,用于将监控代理注入到待检测安卓应用的反编译目录中;
打包模块,用于重新打包待检测安卓应用;
签名模块,用于对重新打包后的待检测安卓应用进行重新签名,得到新的APK文件;
监控代理模块,用于新的APK文件运行时,监控代理拦截并代理执行待检测安卓应用对框架层API和NativeLibrary的调用;
第一判断模块,用于监控代理判断待检测安卓应用是否正在调用特征Java层方法或者特征native层函数,如果是则触发相应的标记跳转到第二判断模块执行相应检测,如果不是则继续调用相应的Java层方法或者native层函数;
第二判断模块,用于根据触发的标记和勒索文本检测结果判断待检测安卓应用是否匹配检测策略,如果匹配为勒索软件则终止运行,如果未匹配为勒索软件则跳转到代理执行模块。
进一步地,所述检测模块包括:
遍历单元,用于遍历待检测安卓应用反编译目录中的资源文件;
第一提取单元,用于提取资源文件的字符串信息;
第一获取单元,用于获取待检测安卓应用字符串向量;
第二提取单元,用于提取已有的安卓勒索软件样本中的特征字符串;
第二获取单元,用于获取安卓勒索软件样本特征字符串向量;
计算判断单元,用于使用文本相似度算法计算待检测安卓应用字符串向量和特征字符串向量的文本相似度,根据文本相似度判断待检测安卓应用中是否存在勒索文本。
进一步地,所述注入模块包括:
第三提取单元,用于提取出待检测安卓应用反编译出的Smali文件;
改写单元,用于对待检测安卓应用反编译出的Smali文件进行Smali代码改写;
第一编写单元,用于编写Java层监控代理;
第一编译单元,用于将Java层监控代理编译为Smali文件;
第二编写单元,用于编写native层监控代理;
第二编译单元,用于将native层监控代理编译为.so文件;
合并注入单元,用于将Java层监控代理的Smali文件和native层监控代理的.so文件合并注入到待检测安卓应用的反编译目录中。
一种设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述一种安卓勒索软件检测防御方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现一种安卓勒索软件检测防御方法的步骤。
与现有技术相比,本发明至少具有以下有益效果:
1)本发明提出了一种基于应用行为监控的安卓勒索软件检测防御方法,这是一种静态分析和动态检测相结合的实时检测和防御方案,步骤2对待检测安卓应用中勒索文本进行静态地检测分析,可以有效地检测待检测安卓应用中的勒索文本,步骤7至步骤10动态地对待检测安卓应用的行为进行监控,进而分析待检测安卓应用中是否存在恶意行为。与已有方案相比,本方法克服了单纯静态分析方法无法有效地分析应用运行时的行为,而动态分析方法则无法很好地检测勒索软件中勒索文本的不足,从而有效地检测应用中的勒索文本、分析应用运行时的恶意行为,保护用户设备免受勒索软件侵害。
2)本发明是一种灵活、可扩展的应用层方法。本发明只修改待检测安卓应用不需要root权限,也不需要修改安卓框架层和操作***,不存在不同安卓版本间适配的问题,兼容性好,应用和部署方便,可以根据安卓勒索软件特点灵活扩展检测模块,动态调整检测策略,进而及时有效地检测新型的安卓勒索软件。
3)本发明可以同时监控安卓勒索软件在Java代码和native代码中的行为,能全面地检测安卓勒索软件的行为。安卓勒索软件的恶意行为不仅可以通过Java代码实现,还可以通过native代码实现,而且通过native层实现的恶意行为相比于Java层更隐蔽、更难以检测。现有的常见安卓勒索软件其恶意行为大多通过Java代码实现,这就导致很多检测技术只针对安卓勒索软件的Java层恶意行为进行检测,忽视了安卓勒索软件的native层恶意行为。如步骤4.3至步骤4.7和步骤7至步骤9所述,本发明兼顾了安卓勒索软件在Java代码和native代码中的恶意行为,能全面地对安卓勒索软件进行检测和防御。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
图1是本发明的总体设计图;
图2是本发明的文本相似度计算设计图;
图3是本发明的监控代理注入设计图;
图4是本发明的Smali代码改写流程图;
图5是本发明的一个针对静态方法设计的桩代理示例;
图6是本发明的一个针对实例方法设计的桩代理示例;
图7是本发明的一个针对构造方法设计的桩代理示例;
图8是本发明的一个楔子代理方法示例;
图9是本发明的Java层访问监控代理设计图;
图10是本发明的一个Java层访问监控代理示例;
图11是本发明的外部函数监控代理原理图;
图12是本发明的一个外部函数调用监控代理函数的示例。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,本发明一种安卓勒索软件检测防御方法包括待检测安卓应用预处理(步骤1至6)、运行环境检测(步骤7和8)和检测策略(步骤9和10)三部分。其中,待检测安卓应用预处理主要检测待检测安卓应用中的勒索文本并且将监控代理注入到待检测安卓应用中,运行环境检测主要通过监控代理检测勒索软件对框架层API和NativeLibrary的调用进而监控勒索软件的行为,检测策略主要用于根据待检测安卓应用行为判断应用是否为安卓勒索软件。
参照图1所示,作为本发明的某一具体实施方式,一种安卓勒索软件检测防御方法,具体包括以下步骤:
步骤1、反编译待检测安卓应用的APK文件。
优选的,本发明使用Apktool反编译待检测安卓应用的APK文件,反编译后的文件用于检测勒索文本和注入监控代理。
步骤2、在待检测安卓应用反编译目录中检测勒索文本。
本发明为待检测安卓应用中勒索文本的检测设计了一种灵活、可扩展的静态分析检测方案,对勒索文本的检测是在待检测安卓应用反编译之后进行的,此检测过程可以在本地进行也可以在服务器上进行。具体来说,在待检测安卓应用的反编译目录中提取出所有的资源文件,获取资源文件中的字符串信息,然后将这些信息和已提取的勒索文本特征进行比对,判断是否存在勒索文本信息。此方案可以通过扩展不同的检测模块以检测文本、图片以及视频中的勒索文本信息。之后,根据勒索文本检测结果,设置检测策略中的勒索文本标记,为勒索软件的判定提供依据。
优选的,在待检测安卓应用反编译目录中检测勒索文本,具体包括以下步骤:
步骤2.1、遍历待检测安卓应用反编译目录中的资源文件;
步骤2.2、提取资源文件的字符串信息;
步骤2.3、获取待检测安卓应用字符串向量;
步骤2.4、提取已有的安卓勒索软件样本中的特征字符串;
步骤2.5、获取安卓勒索软件样本特征字符串向量;
步骤2.6、使用文本相似度算法计算步骤2.3中待检测安卓应用字符串向量和步骤2.5中特征字符串向量的文本相似度,根据文本相似度判断待检测安卓应用中是否存在勒索文本。
步骤3、将勒索文本检测结果同步到检测策略中。
步骤4、将监控代理注入到待检测安卓应用的反编译目录中。
为了监控安卓勒索软件的锁屏行为和加密行为,需要将监控代理注入到待检测安卓应用中。勒索软件的锁屏行为和加密行为可以在Java层和native层实现,所以需要注入Java层监控代理和native层监控代理。
优选的,参照图3所示,将监控代理注入到待检测安卓应用的反编译目录中,具体包括以下步骤:
步骤4.1、提取出待检测安卓应用反编译出的Smali文件。
步骤4.2、对待检测安卓应用反编译出的Smali文件进行Smali代码改写。
Smali代码改写是Java层监控代理注入过程中最重要的步骤,其用于将待检测安卓应用对勒索软件特征API的调用替换为对监控代理方法的调用。
优选的,参照图4所示,对待检测安卓应用反编译出的Smali文件进行Smali代码改写,具体包括以下步骤:
步骤4.2.1、遍历待检测安卓应用反编译出的Smali文件;
步骤4.2.2、逐行读取每个Smali文件中的语句;
步骤4.2.3、判断Smali语句是否含有敏感API调用或者继承了敏感类,如果含有敏感API调用则跳转到步骤4.2.4,如果继承了敏感类则跳转到步骤4.2.5,如果不含有敏感API调用也不继承敏感类,则跳转到步骤4.2.6;
步骤4.2.4、使用监控代理替换敏感API调用,将调用敏感API的Smali语句替换为调用监控代理方法的Smali语句,跳转到步骤4.2.6;
步骤4.2.5、使用监控代理替换继承的敏感类,将待检测安卓应用中继承了敏感类的Smali语句替换为继承监控代理类的Smali语句,跳转到步骤4.2.6;
步骤4.2.6、判断是否到达文件尾部,如果到达文件尾部,则跳转到步骤4.2.7,如果未到达文件尾部则跳转到步骤4.2.2;
步骤4.2.7、将改写后的Smali文件写入保存;
步骤4.2.8、判断是否遍历完所有的Smali文件,如果未遍历完所有的Smali文件则跳转到步骤4.2.1继续遍历剩余的Smali文件,如果已经遍历完则结束Smali代码改写。
步骤4.3、编写Java层监控代理。
安卓勒索软件在Java层调用Android***提供的某个框架层API有两种情况,一种是直接调用对应类的方法,另一种是调用框架层API的子类的方法。例如,勒索软件的Activity劫持行为可以通过调用Activity.startActivity方法实现的,也可以通过调用Activity类的子类的startActivity方法实现。针对这两种情况,优选的,本发明分别设计了桩代理和楔子代理进行相应的监控,具体如下:
(1)桩代理
为了监控安卓勒索软件在Java层对框架层特征API的调用,本发明设计了桩代理方法对其进行监控。桩代理方法是一种静态的方法,在这个静态的方法中添加了监控策略监控勒索软件调用框架层特征API的行为,同时桩代理方法会继续调用监控的目标API,以保证应用功能正常。
在安卓应用反编译出的Smali代码中,有3种主要的方法调用类型,分别是invoke-static、invoke-virtual和invoke-direct,对应于调用静态方法、实例方法和构造方法。为了对这三种调用类型进行监控,本发明设计并实现了三种不同类型的桩代理。
静态方法。静态方法是通过方法的类名和方法名进行调用的,不需要实例化这个类的对象。本发明对调用静态方法设计的桩代理是一个不同名但是参数和返回值类型相同的静态方法。图5是一个针对静态方法设计的桩代理示例,桩代理方法proxyMethod是静态特征方法featureClass.featureMethod的代理方法(第3行),桩代理方法proxyMethod中首先执行相应的监控策略方法detectionPolicy(params)对特征方法的调用行为和特征方法的参数进行检测和标记(第4行),之后此桩代理方法中继续调用特征方法featureClass.featureMethod(第5-6行),以确保在未检测到勒索软件的情况下,应用仍能正常运行,从而不影响后续特征行为的检测。
实例方法。调用实例方法时,需要先实例化一个类的对象,然后通过此对象调用实例方法。本发明针对示例方法设计的桩代理是一个具有相同返回类型的静态方法,桩代理方法接收的参数是此实例方法对象和此实例方法的参数。图6是一个针对实例方法设计的桩代理示例,桩代理方法proxyMethod是实例方法featureClassInstance.featureMethod的代理方法(第3行),proxyMethod中首先执行相应的检测策略方法detectionPolicy(object,params)对特征实例方法的调用行为和此特征实例方法的参数进行检测和标记(第4行),之后在此桩代理方法中继续调用此特征实例方法(第5-6行),以确保在未检测到勒索软件的情况下,应用仍能正常运行,从而不影响后续特征行为的检测。
构造方法。构造方法是一个与类同名的没有返回类型的方法,用来实例化一个对象。图7是一个针对构造方法设计的桩代理示例,桩代理方法proxyMethod是featureClass类的构造方法的代理方法(第3行),proxyMethod中首先执行相应的检测策略方法detectionPolicy(params)对特征构造方法的调用行为和特征构造方法的参数进行检测和标记(第4行),之后在此桩代理方法中继续调用特征构造方法(第5-6行),以确保在未检测到勒索软件的情况下,应用仍能正常运行,从而可以检测后续的特征行为。
(2)楔子代理
为了对安卓勒索软件在Java层调用框架层API的子类方法的行为进行防范,本发明设计了相应的楔子代理方法对其进行监控。楔子代理方法是一种对目标父类方法进行了重写的代理方法,这个重写的代理方法中添加了监控策略检测标记勒索软件调用框架层API子类方法的行为,同时此代理方法中调用了父类的目标方法,确保应用功能正常。
楔子代理方法的作用原理是:让所有继承目标父类的自定义子类改为继承楔子代理方法所属的类,这样在调用自定义子类中的特征方法时就会执行楔子代理方法。楔子代理方法像楔子一样楔入特征方法的父类和子类中间,所以称为楔子代理。
图8是一个楔子代理方法的示例。具体来说,本发明要监控对恶意特征方法featureSubClass.featureMethod的调用,其中,featureSubClass是featureClass的子类,首先创建一个楔子代理类proxyClass继承featureClass类(第2行),并重写featureMethod方法(第3-4行),featureMethod中会先执行相应的检测策略方法detectionPolicy(params)对特征方法的调用行为和特征方法的参数进行检测和标记(第5行),之后在此桩代理方法中继续调用特征构造方法(第6-7行),以确保在未检测到勒索软件的情况下,应用仍能正常运行,从而可以检测后续的特征行为。然后,通过代码改写将应用中所有恶意特征类featureClass的子类featureSubClass改为继承楔子代理类proxyClass,以此来监控应用对恶意特征方法featureSubClass.featureMethod的调用。
步骤4.4、将Java层监控代理编译为Smali文件。
步骤4.5、编写native层监控代理。
安卓勒索软件在native层有两种方式实现勒索行为,第一种方式是安卓勒索软件在native层通过JNIEnv反射调用和操作Java层的方法和对象实现勒索行为,第二种方式是安卓勒索软件在native层调用native层外部函数实现勒索行为。本发明分别设计了Java层访问监控代理和外部函数调用监控代理对这两种实现方式进行监控,下面对这两种监控代理的设计进行描述。
(1)Java层访问监控代理
Java层访问监控代理用于监控安卓勒索软件在native层对Java层的访问行为。安卓勒索软件在native函数中通过调用JNIEnv结构体中的函数反射获取Java层的方法和对象,进行Java层访问从而实现勒索行为。具体来说,安卓勒索软件可以通过调用JNIEnv.FindClass(className)获得特征方法所属类的jclass,然后通过调用JNIEnv.GetMethodId(jclass,methodName,methodSig)获得特征方法的jmethodId,最后通过调用JNIEnv.CallVoidMethod(jclass,jmethodId,params)调用相应的特征方法,实现勒索行为。这种方式虽然相比Java层实现复杂,但比Java层实现更隐蔽,难以通过Java层监控代理检测。为了对这种实现方式进行检测和防范,本发明设计了Java层访问监控代理,实现了JNIEnv hook技术替换JNIEnv结构体中CallVoidMethod等和方法调用相关的函数指针,来监控勒索软件在native层调用了哪些Java层方法,进而监控勒索软件的行为。
图9是Java层访问监控代理的原理图。经过本发明处理过的应用,在native层直接通过JNIEnv对Java层方法的调用将不被允许(图中①、②),native函数需要通过Java层访问监控代理才能进行Java层访问(图中③),Java层访问监控代理会检测native函数调用的Java层方法信息(图中④),如果检测到native函数试图调用勒索软件特征方法,则通过JNIEnv调用Java层的桩代理方法(图中⑤、⑥),由桩代理方法代理执行相应的勒索软件特征方法进行进一步的行为检测(图中⑦),如果检测到native函数试图调用非勒索软件特征方法,则通过JNIEnv继续调用相应的Java层方法(图中⑤、⑧),从而在对应用实施行为检测时仍保持应用功能正常。
图10是一个Java层访问监控代理示例。在这个例子中,getMethodIDProxy是为JNI函数GetMethodID编写的代理函数(第2-3行),此代理函数先调用GetMethodID获取目标Java层方法methodName的methodID为jmethodID1(第4行),之后将jmethodID1和目标Java层方法的信息(如目标方法所属类、目标方法名、目标方法签名)存储在method_map中(第5行),以供后续查询使用,同时代理函数仍将获取到的jmethodID1返回(第6行),保证函数功能正常。callReturnTypeMethodProxy是callReturnTypeMethod的代理函数(第9-10行),此代理函数首先根据参数中的jmethodID在method_map中查询获取对应目标方法信息(第12-15行),然后根据这些信息判断目标方法是否为实现勒索软件的特征方法(第16-17行)。如果是则通过JNIEnv反射调用特征方法在Java层的桩代理方法进行进一步检测标记,同时可以保证获取目标方法功能正常(第18-21行),如果不是目标方法,则继续调用原来的Java层方法保证函数功能正常(第23行),不影响后续检测。
(2)外部函数调用监控代理
外部函数调用监控代理监控安卓勒索软件在native层对动态链接的外部函数的调用行为。安卓勒索软件可以在native函数中调用其他的.so库提供的外部函数实现勒索行为。具体来说,安卓勒索软件native层的代码以.so文件的形式存在于应用中,.so文件是一种ELF文件,其中GOT和PLT这两个section和外部函数调用紧密相关。动态链接时GOT表用于存储外部函数的绝对地址,PLT则是调用外部函数的跳板,通过在GOT中查找到的外部函数地址进行跳转。为了对调用外部函数的行为进行检测,本发明设计的方案是利用PLThook技术拦截安卓勒索软件native函数对目标外部函数的调用,转而调用本发明自定义的监控代理函数。这个监控代理函数中添加了相关的检测标记策略,对勒索软件行为进行监控,同时在监控代理函数中继续调用相应的外部函数保证功能正常,以免影响后续特征行为的检测。
图11是外部函数调用监控代理的原理图。动态链接时,GOT表中的外部函数绝对地址会被绑定到PLT中,之后native函数通过PLT调用外部函数,本发明通过将PLT表中的外部函地址替换为监控代理函数的地址,将对外部函数的调用截断(图中①),转而调用监控代理函数(图中②),然后在监控代理函数中执行相关的检测标记策略,同时继续调用外部函数保证应用功能正常(图中③),不影响后续特征行为的检测。
本发明利用xhook开源框架实现了PLT hook技术拦截native函数对目标外部函数的调用,转而执行监控代理函数,通过监控代理函数执行相应的目标外部函数调用,并进行检测标记。
图12是一个外部函数调用监控代理函数的示例,featureFuncProxy函数是一个用于代理执行外部函数featureFunc的监控代理函数(第2行),featureFuncProxy函数首先执行检测函数detectionPolicy(params),对目标外部函数的调用行为和目标外部函数的参数进行检测和标记(第3行),之后featureFuncProxy函数中继续调用目标函数featureFunc以保证应用功能正常(第4行)。第9行的Java_edu_xidian_nativeProxy_plthook_hook是一个用于触发PLT hook的native函数,xhook_register("RansomwareLib.so","featureFunc",(void*)featureFuncProxy,NULL)用于将已加载的ELF文件RansomwareLib.so中调用featureFunc的PLT入口点地址替换成featureFuncProxy的地址(第10行)。xhook_refresh(0)用于执行hook(第11行)。
步骤4.6、将native层监控代理编译为.so文件。
步骤4.7、将Java层监控代理的Smali文件和native层监控代理的.so文件合并注入到待检测安卓应用的反编译目录中。
步骤5、重新打包待检测安卓应用。
优选的,本发明采用Apktool重新打包待检测安卓应用。
步骤6、对重新打包后的待检测安卓应用进行重新签名,得到新的APK文件。
步骤7、运行新的APK文件,监控代理拦截待检测安卓应用对框架层API和NativeLibrary的调用。
参照图1,改写后的待检测安卓应用在运行时,监控代理将拦截待检测安卓应用在Java Code中对锁屏行为和加密行为的框架层特征API的调用(图中②)以及在Native Code中对框架层特征API(图中③)和Native Library中的特征函数(图中④)的调用。
步骤8、监控代理代理执行待检测安卓应用对框架层API和NativeLibrary的调用。
参照图1,本发明构造的监控代理代理执行安卓勒索软件在Java Code和NativeCode中对特征API和特征函数的调用(图中⑤、⑥)。
步骤9、监控代理判断待检测安卓应用是否正在调用特征Java层方法或者特征native层函数,如果是则触发相应的标记跳转到步骤10执行相应检测,如果不是则继续调用相应的Java层方法或者native层函数。
参照图1,当待检测安卓应用进行特征Java层方法或者特征native层函数调用时,监控代理中的检测策略相关代码会判断待检测安卓应用是否在调用特征Java层方法或者特征native层函数,如果是则触发相应标记,并跳转到步骤10。
步骤10、根据触发的标记和步骤2中的勒索文本检测结果判断待检测安卓应用是否匹配检测策略,如果匹配为勒索软件则终止运行,防止勒索软件进一步损害用户设备;如果未匹配为勒索软件则跳转到步骤7。
参照图1,监控代理中的检测策略相关代码根据触发的标记和静态分析时获得的勒索文本信息(图中①)判断待检测安卓应用是否匹配勒索软件检测策略,如果匹配则终止运行,防止勒索软件进一步损害用户设备,如果不匹配则跳转到步骤7。
也就是说,参照图1,监控代理会监控应用对特征Java层方法或者特征native层函数的调用并执行相应的检测策略(图中⑦)。判断待检测安卓应用是否匹配勒索软件检测策略,如果匹配为勒索软件则终止运行,防止勒索软件进一步损害用户设备,如果未匹配为勒索软件则跳转到步骤4。
参照图1,在未检测出勒索软件时监控代理会继续调用相应的框架层API或者Native Library中的特征函数(图中⑧、⑨),以确保应用功能正常不影响后续检测。
本发明的有效性和性能开销可以通过以下实验进一步说明:
一、实验条件
将本发明待检测安卓应用预处理部分的改写程序部署在运行Ubuntu18.04***的PC机上。改写后的待检测安卓应用在运行原生Android9.0***且联网的Pixel手机上进行测试。
二、实验内容
为了测试本发明的功能有效性,首先开发一个包含安卓勒索软件锁屏和加密行为特征API和函数调用的应用程序,此应用可以在Java层和native层调用安卓勒索软件的特征API和函数。然后使用本发明的方案对此应用进行处理后运行,以此测试本发明对安卓勒索软件特征行为相关API监控的有效性。
本发明对安卓勒索软件特征API和函数的监控会引入一定的性能开销,这些开销在Java层主要来自Java层监控代理引入的时间损耗,在native层则来主要来自Java层访问监控代理和外部函数调用监控代理带来的时间消耗。
使用定制编写的包含勒索软件特征API和函数调用的待检测安卓应用在未经本发明处理前进行测试,每个API和函数调用都运行100次,计算出每个调用的平均时间。然后使用本发明的方案对定制编写的应用进行处理,同样使每个API和函数调用运行100次,测出经过本发明监控后每个调用的平均时间,以此评估本发明在待检测安卓应用运行时带来的性能开销。由于本发明设计的监控代理主要由Java层监控代理和native层监控代理组成,为了更准确的测试不同的监控代理带来的时间损耗,本发明对Java层和native层监控代理分别进行测试。
三、结果分析
本发明的功能有效性的测试结果如表1所示,测试结果表明本发明可以有效的对安卓勒索软件的特征行为相关API和函数进行监控,通过对这些API和函数进行监控可以有效的对安卓勒索软件进行检测和防御,保护用户设备安全。
Java层监控代理带来的时间消耗如表2所示。测试结果显示本发明的Java层监控代理引入的时间开销较小,平均开销为3.52%,这些开销在Java层主要来自安全策略的执行。
native层监控代理由Java层访问监控代理和外部函数调用监控代理两部分组成,用于监控应用在native函数中对Java层方法的调用以及对外部函数的调用。这两部分监控代理都会引入一些时间损耗,本文对这些损耗分别进行了测试。
Java层访问监控代理带来的开销如表3所示,从测试结果可以看出Java层监控代理引入的开销较小,带来的性能损耗平均为3.59%。
外部函数调用监控代理带来的开销如表4所示,从测试结果可以看出其引入的时间损耗也很小,带来的时间损耗平均为0.04ms。由于监控前的函数调用时间很小,所以即使只是增加了很微小的时间也会导致性能损耗比例很大,但从测试结果可以看出时间损耗是很小的。
总体来说,本发明能够以较小的性能开销有效地对安卓勒索软件进行检测和防御。
表1本发明功能有效性测试结果
/>
表2本发明Java层监控代理性能开销测试结果
/>
表3本发明Java层访问监控代理性能开销测试结果
表4本发明外部函数调用监控代理性能开销测试结果
/>
本发明提供了一种安卓勒索软件检测防御装置,用于实现一种安卓勒索软件检测防御方法,具体包括:
反编译模块,用于反编译待检测安卓应用的APK文件。
检测模块,用于在待检测安卓应用反编译目录中检测勒索文本。
具体地说,检测模块包括:
遍历单元,用于遍历待检测安卓应用反编译目录中的资源文件。
第一提取单元,用于提取资源文件的字符串信息。
第一获取单元,用于获取待检测安卓应用字符串向量。
第二提取单元,用于提取已有的安卓勒索软件样本中的特征字符串。
第二获取单元,用于获取安卓勒索软件样本特征字符串向量。
计算判断单元,用于使用文本相似度算法计算待检测安卓应用字符串向量和特征字符串向量的文本相似度,根据文本相似度判断待检测安卓应用中是否存在勒索文本。
同步模块,用于将勒索文本检测结果同步到检测策略中。
注入模块,用于将监控代理注入到待检测安卓应用的反编译目录中。
具体地说,注入模块包括:
第三提取单元,用于提取出待检测安卓应用反编译出的Smali文件。
改写单元,用于对待检测安卓应用反编译出的Smali文件进行Smali代码改写。
第一编写单元,用于编写Java层监控代理。
第一编译单元,用于将Java层监控代理编译为Smali文件。
第二编写单元,用于编写native层监控代理。
第二编译单元,用于将native层监控代理编译为.so文件。
合并注入单元,用于将Java层监控代理的Smali文件和native层监控代理的.so文件合并注入到待检测安卓应用的反编译目录中。
打包模块,用于重新打包待检测安卓应用。
签名模块,用于对重新打包后的待检测安卓应用进行重新签名,得到新的APK文件。
监控代理模块,用于新的APK文件运行时,监控代理拦截并代理执行待检测安卓应用对框架层API和NativeLibrary的调用。
第一判断模块,用于监控代理判断待检测安卓应用是否正在调用特征Java层方法或者特征native层函数,如果是则触发相应的标记跳转到第二判断模块执行相应检测,如果不是则继续调用相应的Java层方法或者native层函数。
第二判断模块,用于根据触发的标记和勒索文本检测结果判断待检测安卓应用是否匹配检测策略,如果匹配为勒索软件则终止运行,如果未匹配为勒索软件则跳转到代理执行模块。
本发明在一个实施例中,提供了一种计算机设备,该计算机设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor、DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于一种安卓勒索软件检测防御方法的操作。
本发明在一个实施例中,一种安卓勒索软件检测防御方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
所述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
Claims (5)
1.一种安卓勒索软件检测防御方法,其特征在于,包括以下步骤:
步骤1、反编译待检测安卓应用的APK文件;
步骤2、在待检测安卓应用反编译目录中检测勒索文本,具体包括:
步骤2.1、遍历待检测安卓应用反编译目录中的资源文件;
步骤2.2、提取资源文件的字符串信息;
步骤2.3、获取待检测安卓应用字符串向量;
步骤2.4、提取已有的安卓勒索软件样本中的特征字符串;
步骤2.5、获取安卓勒索软件样本特征字符串向量;
步骤2.6、使用文本相似度算法计算步骤2.3中待检测安卓应用字符串向量和步骤2.5中特征字符串向量的文本相似度,根据文本相似度判断待检测安卓应用中是否存在勒索文本;
步骤3、将勒索文本检测结果同步到检测策略中;
步骤4、将监控代理注入到待检测安卓应用的反编译目录中,具体包括:
步骤4.1、提取出待检测安卓应用反编译出的Smali文件;
步骤4.2、对待检测安卓应用反编译出的Smali文件进行Smali代码改写,具体包括:
步骤4.2.1、遍历待检测安卓应用反编译出的Smali文件;
步骤4.2.2、逐行读取每个Smali文件中的语句;
步骤4.2.3、判断Smali语句是否含有敏感API调用或者继承了敏感类,如果含有敏感API调用则跳转到步骤4.2.4,如果继承了敏感类则跳转到步骤4.2.5,如果不含有敏感API调用也不继承敏感类,则跳转到步骤4.2.6;
步骤4.2.4、使用监控代理替换敏感API调用,将调用敏感API的Smali语句替换为调用监控代理方法的Smali语句,跳转到步骤4.2.6;
步骤4.2.5、使用监控代理替换继承的敏感类,将待检测安卓应用中继承了敏感类的Smali语句替换为继承监控代理类的Smali语句,跳转到步骤4.2.6;
步骤4.2.6、判断是否到达文件尾部,如果到达文件尾部,则跳转到步骤4.2.7,如果未到达文件尾部则跳转到步骤4.2.2;
步骤4.2.7、将改写后的Smali文件写入保存;
步骤4.2.8、判断是否遍历完所有的Smali文件,如果未遍历完所有的Smali文件则跳转到步骤4.2.1继续遍历剩余的Smali文件,如果已经遍历完则结束Smali代码改写;
步骤4.3、编写Java层监控代理;
步骤4.4、将Java层监控代理编译为Smali文件;
步骤4.5、编写native层监控代理;
步骤4.6、将native层监控代理编译为.so文件;
步骤4.7、将Java层监控代理的Smali文件和native层监控代理的.so文件合并注入到待检测安卓应用的反编译目录中;
桩代理方法proxyMethod是静态特征方法featureClass.featureMethod的代理方法,桩代理方法proxyMethod中首先执行相应的监控策略方法detectionPolicy,对特征方法的调用行为和特征方法的参数进行检测和标记,之后此桩代理方法中继续调用特征方法featureClass.featureMethod;
首先创建一个楔子代理类proxyClass继承featureClass类,并重写featureMethod方法,featureMethod中会先执行相应的检测策略方法detectionPolicy,对特征方法的调用行为和特征方法的参数进行检测和标记,之后在此桩代理方法中继续调用特征构造方法;然后通过代码改写将应用中所有恶意特征类featureClass的子类featureSubClass改为继承楔子代理类proxyClass;
步骤5、重新打包待检测安卓应用;
步骤6、对重新打包后的待检测安卓应用进行重新签名,得到新的APK文件;
步骤7、运行新的APK文件,监控代理拦截待检测安卓应用对框架层API和NativeLibrary的调用;
步骤8、监控代理进行代理执行待检测安卓应用对框架层API和Native Library的调用;
步骤9、监控代理判断待检测安卓应用是否正在调用特征Java层方法或者特征native层函数,如果是则触发相应的标记跳转到步骤10执行相应检测,如果不是则继续调用相应的Java层方法或者native层函数;
步骤10、根据触发的标记和步骤2中的勒索文本检测结果判断待检测安卓应用是否匹配检测策略,如果匹配为勒索软件则终止运行,如果未匹配为勒索软件则跳转到步骤7。
2.根据权利要求1所述的一种安卓勒索软件检测防御方法,其特征在于,所述步骤1中,采用Apktool反编译待检测安卓应用的APK文件;
所述步骤5中,采用Apktool重新打包待检测安卓应用。
3.一种安卓勒索软件检测防御装置,其特征在于,用于实现权利要求1所述的一种安卓勒索软件检测防御方法,包括:
反编译模块,用于反编译待检测安卓应用的APK文件;
检测模块,用于在待检测安卓应用反编译目录中检测勒索文本;
同步模块,用于将勒索文本检测结果同步到检测策略中;
注入模块,用于将监控代理注入到待检测安卓应用的反编译目录中;
打包模块,用于重新打包待检测安卓应用;
签名模块,用于对重新打包后的待检测安卓应用进行重新签名,得到新的APK文件;
监控代理模块,用于新的APK文件运行时,监控代理拦截并代理执行待检测安卓应用对框架层API和Native Library的调用;
第一判断模块,用于监控代理判断待检测安卓应用是否正在调用特征Java层方法或者特征native层函数,如果是则触发相应的标记跳转到第二判断模块执行相应检测,如果不是则继续调用相应的Java层方法或者native层函数;
第二判断模块,用于根据触发的标记和勒索文本检测结果判断待检测安卓应用是否匹配检测策略,如果匹配为勒索软件则终止运行,如果未匹配为勒索软件则跳转到代理执行模块。
4.一种设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1或2所述一种安卓勒索软件检测防御方法的步骤。
5.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1或2所述的一种安卓勒索软件检测防御方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111153007.3A CN113886824B (zh) | 2021-09-29 | 2021-09-29 | 安卓勒索软件检测防御方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111153007.3A CN113886824B (zh) | 2021-09-29 | 2021-09-29 | 安卓勒索软件检测防御方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113886824A CN113886824A (zh) | 2022-01-04 |
CN113886824B true CN113886824B (zh) | 2024-06-04 |
Family
ID=79008169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111153007.3A Active CN113886824B (zh) | 2021-09-29 | 2021-09-29 | 安卓勒索软件检测防御方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886824B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984900A (zh) * | 2014-05-19 | 2014-08-13 | 南京赛宁信息技术有限公司 | Android应用漏洞检测方法及*** |
CN104715195A (zh) * | 2015-03-12 | 2015-06-17 | 广东电网有限责任公司信息中心 | 基于动态插桩的恶意代码检测***及方法 |
CN109240700A (zh) * | 2018-07-06 | 2019-01-18 | 北京大学 | 关键代码定位方法与*** |
CN109977671A (zh) * | 2019-03-14 | 2019-07-05 | 西安电子科技大学 | 一种基于编译器修改的Android锁屏型勒索软件检测方法 |
KR20200039912A (ko) * | 2018-10-08 | 2020-04-17 | 순천향대학교 산학협력단 | Ai 기반 안드로이드 악성코드 자동화 분석 시스템 및 방법 |
CN111246286A (zh) * | 2020-01-10 | 2020-06-05 | 北京百度网讯科技有限公司 | 测试实例的获取方法、装置和电子设备 |
CN113343236A (zh) * | 2021-06-23 | 2021-09-03 | 西安邮电大学 | 一种动静检测融合的勒索病毒检测***及方法 |
KR20210108811A (ko) * | 2020-02-26 | 2021-09-03 | 아주대학교산학협력단 | 랜섬웨어 감지 방법 및 장치 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10169586B2 (en) * | 2016-12-31 | 2019-01-01 | Fortinet, Inc. | Ransomware detection and damage mitigation |
US20190158512A1 (en) * | 2017-11-20 | 2019-05-23 | Fortinet, Inc. | Lightweight anti-ransomware system |
US11531757B2 (en) * | 2019-12-12 | 2022-12-20 | Mcafee, Llc | Ransomware detection and mitigation |
-
2021
- 2021-09-29 CN CN202111153007.3A patent/CN113886824B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984900A (zh) * | 2014-05-19 | 2014-08-13 | 南京赛宁信息技术有限公司 | Android应用漏洞检测方法及*** |
CN104715195A (zh) * | 2015-03-12 | 2015-06-17 | 广东电网有限责任公司信息中心 | 基于动态插桩的恶意代码检测***及方法 |
CN109240700A (zh) * | 2018-07-06 | 2019-01-18 | 北京大学 | 关键代码定位方法与*** |
KR20200039912A (ko) * | 2018-10-08 | 2020-04-17 | 순천향대학교 산학협력단 | Ai 기반 안드로이드 악성코드 자동화 분석 시스템 및 방법 |
CN109977671A (zh) * | 2019-03-14 | 2019-07-05 | 西安电子科技大学 | 一种基于编译器修改的Android锁屏型勒索软件检测方法 |
CN111246286A (zh) * | 2020-01-10 | 2020-06-05 | 北京百度网讯科技有限公司 | 测试实例的获取方法、装置和电子设备 |
KR20210108811A (ko) * | 2020-02-26 | 2021-09-03 | 아주대학교산학협력단 | 랜섬웨어 감지 방법 및 장치 |
CN113343236A (zh) * | 2021-06-23 | 2021-09-03 | 西安邮电大学 | 一种动静检测融合的勒索病毒检测***及方法 |
Non-Patent Citations (2)
Title |
---|
2012年第29卷1-12期《机电工程》总目录;机电工程;20121220(第12期);143-150 * |
基于代码改写的安卓勒索软件检测与防御;杨学武;硕士论文;20230116;1-81 * |
Also Published As
Publication number | Publication date |
---|---|
CN113886824A (zh) | 2022-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yang et al. | Appspear: Bytecode decrypting and dex reassembling for packed android malware | |
Zhauniarovich et al. | Stadyna: Addressing the problem of dynamic code updates in the security analysis of android applications | |
JP4518564B2 (ja) | 不正コード実行の防止方法、不正コード実行の防止用プログラム、及び不正コード実行の防止用プログラムの記録媒体 | |
US9223964B2 (en) | Detecting JAVA sandbox escaping attacks based on JAVA bytecode instrumentation and JAVA method hooking | |
US8904537B2 (en) | Malware detection | |
AU2006235058B2 (en) | System and method for foreign code detection | |
US11822654B2 (en) | System and method for runtime detection, analysis and signature determination of obfuscated malicious code | |
US7607122B2 (en) | Post build process to record stack and call tree information | |
CN109255235B (zh) | 基于用户态沙箱的移动应用第三方库隔离方法 | |
Jia et al. | " The Web/Local" Boundary Is Fuzzy: A Security Study of Chrome's Process-based Sandboxing | |
Apostolopoulos et al. | Resurrecting anti-virtualization and anti-debugging: Unhooking your hooks | |
Lim et al. | An Android Application Protection Scheme against Dynamic Reverse Engineering Attacks. | |
CN109977671B (zh) | 一种基于编译器修改的Android锁屏型勒索软件检测方法 | |
US20190138715A1 (en) | Post sandbox methods and systems for detecting and blocking zero-day exploits via api call validation | |
EP2492833A1 (en) | Method and apparatus for detecting malicious software | |
Yang et al. | {Iframes/Popups} Are Dangerous in Mobile {WebView}: Studying and Mitigating Differential Context Vulnerabilities | |
Druffel et al. | Davinci: Android app analysis beyond frida via dynamic system call instrumentation | |
Onarlioglu et al. | Sentinel: Securing legacy firefox extensions | |
CN113886824B (zh) | 安卓勒索软件检测防御方法、装置、设备及可读存储介质 | |
Shi et al. | Vanguard: A cache-level sensitive file integrity monitoring system in virtual machine environment | |
KR100985071B1 (ko) | 스크립트 언어를 사용한 취약점 공격 코드의 실시간 탐지및 차단 방법, 및 그 장치 | |
Neugschwandtner et al. | d Anubis–Dynamic Device Driver Analysis Based on Virtual Machine Introspection | |
Durães et al. | A methodology for the automated identification of buffer overflow vulnerabilities in executable software without source-code | |
Caillat et al. | Prison: Tracking process interactions to contain malware | |
Oh | Recent Java exploitation trends and malware |
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 |