本系列索引链接:
安卓恶意代码(软件)检测2012-2013年论文研究.
- 由于本次篇幅中的论文都比较老,所以本人就没有细讲也没有进行复现,后续较新的论文我会尝试复现核心模块,与此同时欢迎在做相关研究的各位研究者来评论区批评指教并提出你们宝贵的意见!
论文目录
- 2012:RiskRanker: Scalable and Accurate Zero-day Android Malware Detection
- 一、Abstract
- 1.研究背景
- 2.研究对象
- 3.研究方法
- 4.结论
- 二、Introduction
- 1.Research gap
- 2.采用的方法
- 三、Discussion
- 1.limitations
- 2012:Hey, You, Get Off ofMy Market: Detecting Malicious Apps in Official and Alternative Android Markets
- 一、Abstract
- 1.研究背景
- 2.研究对象
- 3.研究方法
- 4.结论
- 二、Introduction
- 1.Research gap
- 2.采用的方法
- 三、Discussion
- 1.limitations
- 2013:DroidAPIMiner: Mining API-Level Features for Robust Malware Detection in Android
- 一、Abstract
- 1.研究背景
- 2.研究对象
- 3.研究方法
- 4.结论
- 二、Introduction
- 1.Research gap
- 2.采用的方法
- 三、Discussion
- 1.limitations
2012:RiskRanker: Scalable and Accurate Zero-day Android Malware Detection
作者:
Michael Grace, Yajin Zhou, Qiang Zhang, Shihong Zou, Xuxian Jiang
一、Abstract
1.研究背景
安卓恶意软件检测
2.研究对象
各大安卓应用市场中的0-day恶意apps
3.研究方法
静态分析检测策略
4.结论
证明他们方案的有效性和可扩展性。(可略过)
二、Introduction
1.Research gap
现有移动防病毒软件的被动性使得它不足以识别新的或变异的恶意应用程序。具体来说,此类软件仅依赖 于对恶意软件样本的优先了解,以便提取和部署签名(signatures)以进行后续检测。从另一 个角度看,恶意软件作者可能会产生新的恶意软件变种,或混淆现有的变种,以逃避检测。
2.采用的方法
- 在不依赖恶意软件标本(及其签名)的情况下,作者将潜在风险分为
三类
:高风险
、中风险
和低风险
。高风险
应用利用平台级别的软件漏洞,在未经用户适当授权的情况下损害手机完整性。中风险
应用虽然不利用软件漏洞,但可能会导致用户财务损失或泄露其敏感信息。低风险
应用与中风险相似,但低分风险更温和,也即它们可以收集设备特定或通用的,一般随时可用的个人信息。 - 基于此风险分类,评估现有(不受信任的)应用程序的风险,以便进行 0-day 恶意软件检测。评估进行
两阶段风险分析
。在一级风险分析
中,直接识别高风险和中风险类别中的应用。在二级风险分析
中,作者通过进一步分析,以发现存在可疑行为的应用。 一阶模块
通过直接评估风险来处理未混淆的应用程序,二阶模块
捕获某些行为(例如加密和动态代码加载),这些行为本身并不重要,但与其他模块一起可能形成恶意模式,有助于检测隐形恶意软件。
三、Discussion
1.limitations
- 作者的root漏洞检测方案取决于签名,显然仅检测已知的漏洞,并且也可能会错过加密或混淆的漏洞。他们的原型仅考虑 Javax.Rypto 库的加密检测,也就是说阻止不了攻击者实现自己的应用程序内加密或解密方案。同样,攻击者可以将本地代码不打包到assets或者resource目录中,而是将这些代码作为 Dalvik 二进制本身的大型常数阵列。
- 他们的动态 Dalvik 代码执行方案也有局限性。从长远来看,这些问题最好的解决方法是将一些动态分析技术(如模糊)整合到系统中。此外,虽然静态分析可能确定正在进行动态代码加载,但它不能非常有效地确定正在加载什么动态代码。
- 他们的中等风险模块同样不完美。他们只测试了 4 种不同的行为,我们的数据流分析并没有很好地考虑到位于执行路径之外的代码。要解决这些问题,最好是根据路径的语义含义(它们实际的作用)报告路径,而不是简单地报告路径的“名称”。
- 恶意软件的搜索并不总是黑白分明的。许多有风险的应用程序会威胁用户的安全和隐私,但并不一定是恶意软件。这类信息泄 露的界限在哪里,以及应用程序需要向用户透露多少他们的信息是如何被使用的,都是一个有待解决的问题。
2012:Hey, You, Get Off ofMy Market: Detecting Malicious Apps in Official and Alternative Android Markets
作者:
Yajin Zhou Zhi Wang Wu Zhou Xuxian Jiang
一、Abstract
1.研究背景
安卓恶意软件检测
2.研究对象
流行的Android市场中的恶意软件(包括已知
的和未知
的恶意软件)
3.研究方法
- 基于
权限的行为足迹
方案–>检测已知
的恶意软件家族的新样本 - 基于
启发式的过滤
方案–>检测未知
的恶意软件家族所固有的行为
4.结论
他们方案是可行的,并且不受监管的其他Android市场的感染率远高于官方Android市场
二、Introduction
1.Research gap
⼀些报告已经显示,这些市场中存在恶意应⽤程序。虽然这些报告提供了关于被发现的恶意软件的详细分析,但它们没有提供现有Android市场整体健康状况的系统视图。最近,Enck等⼈研究了来⾃官⽅Android Market 的1100个免费应⽤,并试图理解其中⼴泛的安全相关指标(作为应⽤整体安全的指标)。然⽽,该研究仅限于少数应⽤,即22个应⽤类别中的前50名免费应⽤。
2.采用的方法
- 为了检测
已知恶意软件
,作者提出了⼀种基于权限的⾏为⾜迹的可扩展和有效的⽅案。与传统的特征码作为恶意软件特征的⽅法不同,根据恶意软件所要求的固有的Android权限,⾸先过滤掉不相干的应⽤程序,然后将剩下的程序与恶意软件特定的⾏为⾜迹进⾏匹配。 - 为了检测
未知恶意软件
,作者提出了⼀种基于启发式的过滤⽅案,定义了恶意应⽤程序可能的可疑⾏为,然后使⽤它们来检测可疑应⽤程序。对于每个检测到的可疑应⽤程序,我们进⼀步动态监控其运⾏时过程,以确定它是否真的是恶意的。如果应⽤程序是恶意的,并没有出现在作者的恶意软件数据库中,则可认为认为它是0-day恶意软件,然后在⽣成其相应的基于权限的⾏为⾜迹,用于检测集合中的其他样本。
- 第⼀个检测引擎(基于⾜迹的检测引擎)是专为检测已知恶意软件⽽定制的。具体来说,每个已知恶意软件将⾸先预处理或净化成所谓的基于权限的⾏为⾜迹。每个⾜迹基本上都包含恶意软件请求的必要的Android权限,并简要地总结不正当⾏为。
- 第⼆个检测引擎(基于启发式检测引擎)旨在发现以前未报告的恶意软件。特别是,它识别可能是恶意应⽤程序的可疑⾏为,并检测可能被滥⽤的某些 Android功能。通过这样做可以识别可疑的应⽤程序,然后执⾏并监控每个应⽤程序, 以验证它是否确实在运⾏时表现出任何恶意⾏为。如果是这样,应⽤程序将被
⼿动确认
,相关的⾏为⾜迹将被提取并包含在第⼀个检测引擎中。
三、Discussion
1.limitations
- 作者⽬前的研究只探索了两个基本的启发式,以发现零⽇恶意软件。还有很多其他的启发式,可以同样有效。例如,可以开发启发式应⽤程序来捕获涉及将未经授权的短信发送到某些收费号码的应⽤。也可以设计⽤于检测由短信远程控制的机器⼈的⾏为。探索这些启发式捕获额外的零⽇恶意软件仍然是⼀个有趣的⼯作。
2013:DroidAPIMiner: Mining API-Level Features for Robust Malware Detection in Android
作者:
Yousra Aafer, Wenliang Du, and Heng Yin
一、Abstract
1.研究背景
提供强大而轻量级的安卓恶意软件分类器
2.研究对象
安卓恶意软件
3.研究方法
对apps进行深入分析,提取在API级别
上的恶意软件行为的相关功能,并使用生成的功能集评估不同的分类器。
4.结论
研究结果表明,使用KNN分类器,能够达到高达 99%的准确性,误报率低至 2.2%。
二、Introduction
1.Research gap
应用程序清单文件中某个权限的存在并不一定意味着它实际上在代码中使用。大量的 Android 应用程序请求大量权限,尤其是是关键的权限,实际上未在应用程序的代码本身内使用过,而是广告包所需的。并且恶意软件可以在没有任何许可的情况下执行恶意行为。对于此类问题虽然出现了部分解决方法,但是这些方法在检测它们所针对的特定漏洞方面是有效的,但它们不能通用来检测其他恶意活动。
2.采用的方法
- 要从良性应用程序中区分恶意软件,作者团队依赖于字节码内的API级别信息,因为它会传达关于应用程序行为的大量语义。更具体地说,他们专注于
关键API调用
、包级信息
以及参数
。 - 构建一个大型良性和恶意软件样本的语料库,生成了每个应用程序中使用的 API 集,并进行了频率分布统计,列出在恶意软件中出现频率高于良性软件中的API调用。此外,对于在两个样本集中频繁出现的某些关键 API,对恶意软件 APK 样本进行了简单的数据流分析,以识别潜在的危险输入。生成了常用参数的列表,彻底检查了它们用于过滤掉危险的参数,并标记了请求它们的所有应用程序。
- 作者的方法分为三个阶段:特征提取、特征细化和模型学习与生成。
- 在
特征提取阶段
,通过静态检测收集良性和恶意APK样本,提取必要的特征,恶意软件的功能。在选择特征集时,提取 API 调用及其包级信息。 此外,我们提取应用程序所请求的权限来生成基线模型。 - 在
特性细化阶段
,删除由第三方包(如广告包)授权的 API 调用。只包含那些在恶意软件集中比在良性集中使用更普遍 的API。对于这两个集合中经常出现的那些 API,执行数据流分析来恢复它们的参数值,并只选择调用危险的API。随后,对于每个 APK 文件,我们生成一组特征向量以及相关的类标签,即恶意或良性。 - 在
模型学习和生成阶段
,我们将具有代表性的向量输入到标准分类算法中,通过学习来建立模型。采用不同的分类器:ID5 DT,C4.5 DT,KNN和 SVM来测试不同的分类器准确性。
- 在
三、Discussion
1.limitations
- 反射:恶意软件作者可以使用反射很容易地混淆任何危险的 API调用,从而避免了对该API的静态检测。然而,他们的研究表明,恶意软件集中的反射 API 比在良性集中更频繁地使用,这个可以作为分类特征向量的一部分。
- 更多良性调用:由于本文的分类器依赖于 API 调用的频率,恶意软件作者可能会考虑在他们的代码中引入更多良性 API 调用。
- 本文的分类结果表明:与基于权限的特征集相比,使用 API、包和参数级信息的组合,我们能够获得更好的准确率、TPR 和 TNR。