中间环节的类加载器:让Android静态分析工具感到困惑
《Digital Threats: Research and Practice》:Class Loaders in the Middle: Confusing Android Static Analyzers
【字体:
大
中
小
】
时间:2025年11月07日
来源:Digital Threats: Research and Practice
编辑推荐:
本文分析Android类加载机制,发现开发者可嵌入同名SDK或隐藏类到APK,导致静态分析工具误判。通过49,975个APK样本检测,23.52%的应用存在SDK类阴影,3.11%涉及隐藏类,但多数为兼容性设计,仅发现一例恶意软件利用该技术隐藏关键逻辑。
在移动应用开发和安全分析领域,Android系统中的类加载机制是一个复杂且关键的环节。开发者和系统提供的类在运行时被加载,而这种动态过程为潜在的安全威胁提供了可能的切入点。本文深入探讨了Android类加载过程中可能发生的“阴影攻击”(shadow attacks),并分析了这些攻击对静态分析工具的影响,以及它们在实际应用中的使用情况。
Android的类加载系统由Android运行时(ART)负责,它在应用运行时动态地加载所需的类。在开发阶段,Android Studio会将应用代码与Android SDK类进行链接,这些SDK类通常被包含在`android.jar`中,而在运行时,它们会从其他`.jar`文件中获取。这种机制在多DEX格式的支持下变得更加复杂,因为多个DEX文件可以包含相同名称但不同实现的类。当这些类名称发生冲突时,静态分析工具可能会选择错误的版本进行分析,从而误导分析人员。
阴影攻击的核心在于利用类加载机制中的优先级问题。攻击者可以通过在应用中添加与系统类或SDK类同名的类,使其在静态分析过程中被误认为是实际运行时使用的类。然而,实际上在运行时,这些类会被系统类或SDK类覆盖。这种攻击可以应用于常规SDK类或隐藏类,隐藏类通常指那些未在官方文档中列出的内部类,它们的存在可能对开发者来说并不透明。
通过分析49,975个来自AndroZoo的Android应用,我们发现大部分阴影攻击并非有意为之,而是由于开发者在实现应用时,误将某些库或类嵌入到应用中,这些类在Android SDK中已经存在。然而,有3.11%的应用程序确实使用了隐藏类的阴影攻击,这表明攻击者在某些情况下可能有意利用这种机制来隐藏恶意行为。此外,有23.52%的应用程序对SDK类进行了阴影攻击,这可能与应用需要向后兼容旧版本Android有关。
在对静态分析工具的测试中,我们发现某些工具,如Jadx、Apktool、Androguard和Flowdroid,可能会被阴影攻击所误导。例如,Jadx虽然能够检测到类名冲突,但无法识别出正确的类版本,导致其输出可能不准确。而Flowdroid则由于其依赖于SDK类的字节码来进行数据流分析,因此在面对隐藏类的阴影攻击时可能无法正确识别。这说明静态分析工具在处理阴影攻击时存在一定的局限性。
为了有效防御阴影攻击,我们需要改进静态分析工具的算法,使其能够准确识别运行时加载的类,而不是仅仅依赖于应用文件中的内容。此外,工具应能够获取并整合最新的平台类信息,以便在分析过程中正确处理类的优先级。对于依赖于SDK类的工具,如Flowdroid,可以利用`android.jar`来辅助分析,而对于隐藏类,则需要从设备或模拟器中提取其字节码。
值得注意的是,阴影攻击与其他常见的反混淆技术,如打包器和原生代码,存在一定的交互作用。虽然这些技术会增加静态分析的难度,但阴影攻击因其隐蔽性而显得更为危险。攻击者可以将部分代码隐藏在阴影类中,使其在静态分析中被忽略,而实际运行时才被激活。这种策略可以有效避免静态分析工具的检测,从而增加恶意代码的隐蔽性。
尽管阴影攻击在某些恶意应用中被发现,但大部分情况下,它们并非恶意行为。例如,在我们分析的样本中,许多阴影攻击是由于开发者在应用中嵌入了与Android SDK已有的类同名的库所导致。这种情况下,攻击者并没有刻意隐藏恶意行为,而是无意中造成了类名冲突。然而,这也说明了阴影攻击在实际应用中具有一定的普遍性,需要进一步研究其影响。
此外,本文还讨论了阴影攻击在恶意软件中的具体应用。例如,一个在Google Play Store上仍存在的应用,其内部包含了一个名为`me.weishu.reflection.Reflection`的阴影类,该类用于绕过Android对隐藏API的限制。虽然这个阴影类似乎是为了混淆分析人员而设计的,但其内部的代码可能只是对真实执行代码的间接引用,而不是直接隐藏恶意行为。这表明阴影攻击可能被用作一种增强代码混淆的手段,而不是直接的恶意行为。
总体而言,阴影攻击是Android类加载机制中一个值得关注的问题。它不仅影响了静态分析工具的准确性,还可能被攻击者用来隐藏恶意代码。因此,对于安全研究人员和开发人员来说,理解并应对阴影攻击对于提高Android应用的安全性至关重要。未来的研究可以集中在改进静态分析工具的算法,使其能够更准确地识别运行时类的加载情况,同时探索如何在不依赖动态分析的情况下,有效检测阴影攻击。此外,随着Android系统的不断发展,新的隐藏类和SDK类可能会不断出现,因此需要持续更新和维护相关的平台类列表,以确保分析的准确性。
生物通微信公众号
生物通新浪微博
今日动态 |
人才市场 |
新技术专栏 |
中国科学人 |
云展台 |
BioHot |
云讲堂直播 |
会展中心 |
特价专栏 |
技术快讯 |
免费试用
版权所有 生物通
Copyright© eBiotrade.com, All Rights Reserved
联系信箱:
粤ICP备09063491号