《Journal of Information Security and Applications》:On the effectiveness of memory analysis in revealing maliciousness in android applications
编辑推荐:
当前,Android恶意软件因其能够感染广泛使用的移动设备而受到关注。通常,现有检测方法依赖静态(static)与动态(dynamic)技术提取多类特征,以学习并识别常见恶意模式。然而,现代Android恶意软件常采用反分析技术(例如混淆、环境检查与运行时加载
当前,Android恶意软件因其能够感染广泛使用的移动设备而受到关注。通常,现有检测方法依赖静态(static)与动态(dynamic)技术提取多类特征,以学习并识别常见恶意模式。然而,现代Android恶意软件常采用反分析技术(例如混淆、环境检查与运行时加载),阻碍其被完整识别。为解决该问题,研究人员提出RAMimgDroid,以在恶意软件刚被载入内存时对其进行分析与检测。此外,RAMimgDroid识别并向分析人员展示相关工件(例如带运行时内容的变量声明、加密密钥),有助于理解运行时行为。具体而言,研究人员提取目标进程在应用启动时分配的易失性内存,随后将所得内存转储编码为2D/1D RGB/灰度图像,并输入卷积神经网络(Convolutional Neural Network, CNN),用于快速检测并识别最具影响力的模式(即像素,进而为转储RAM中的字节)。研究人员使用2073个Android恶意软件和2279个良性样本测试RAMimgDroid,评估多种预训练与自定义CNN的有效性。结果表明,RAMimgDroid提升了对规避传统检测方法的隐蔽Android恶意软件的检测能力(例如经过混淆或具有反反编译与环境检查的样本)。在恶意软件执行后期获取内存转储的额外实验表明,即使恶意软件行为随时间演化(例如恶意例程在执行一段时间后而非应用启动时立即出现),RAMimgDroid仍保持有效。此外,研究人员开发RAMstrDroid,从内存转储中的有意义工件提取可读UTF-8字符,将其解释为妥协指标(Indicator of Compromise, IoC),并与流行最新工具VirusTotal和MobSF进行比较。当前实现需要已root的Android设备或模拟器,并限于离线分析,因为内存获取与图像转换对于持续在设备端监控仍过于资源密集。
研究背景与问题。Android是移动设备中广泛使用的操作系统,Android软件包(Android Package, APK)下载量巨大,恶意应用可窃取用户敏感数据。现有检测多依赖静态、动态或混合分析,提取应用程序接口(Application Programming Interface, API)调用等手工特征,再交由机器学习(Machine Learning, ML)或深度学习(Deep Learning, DL)算法分类。问题在于:对抗策略可规避基于API的检测;静态与动态方法依赖预定义特征及对特征相关性的真值假设;混淆可隐藏或扭曲特征;时间与空间漂移会削弱模型;现代恶意软件还使用高级混淆、环境检查、运行时加载、反反编译、反调试、反模拟器、延迟载荷与隐写恶意软件等反分析机制。内存取证被视为补充视角,因为RAM保存真实执行状态,可观察变量值、解密内容、动态生成对象、加密密钥等运行时工件。为此,研究人员提出RAMimgDroid与RAMstrDroid,分析APK启动时目标进程内存,将其编码为图像或提取UTF-8字符串,以检测隐蔽Android恶意软件并呈现取证相关工件。其意义在于降低对手工API特征与预定义特征的依赖,可检测反分析、对抗性与隐蔽样本,并通过像素到字节的反向映射识别重要内存区域与字节,提升可解释性与取证分析能力。
主要关键技术方法(≤250字):研究人员在已root的Genymotion模拟器中安装并启动APK,用uiautomator自动授予权限;应用刚载入内存后,使用Fridump(基于Frida)逐内存区域转储目标进程用户态RAM,并保存/proc/PID/maps以关联语义区域。随后将原始字节无损编码为2D/1D、RGB/灰度PNG,其中1D编码使像素位置与字节顺序一一对应。采用预训练与自定义CNN、传统ML与少样本学习(Few-Shot Learning, FSL)进行APK级聚合分类;用Grad-CAM、LIME与SHAP解释。RAMstrDroid提取UTF-8字符串并用自然语言处理(Natural Language Processing, NLP)分类,与VirusTotal、MobSF比较。样本来源:恶意APK来自VirusTotal(2022—2024),良性APK来自AndroZoo(2020—2022);按APK而非区域划分训练、验证与测试。
核心研究结果。5.1 内存区域分类(Memory region classification):研究人员以ResNet-18为固定模型,评估memory、stack、base、full apk、data等内存区域配置。各组合性能差异有限,多数组合真阳性率与真阴性率高于96%。base-apk & stack达到97.4% TP、2.6% FP、1.6% FN、98.4% TN;apk-full & memory达到最高TP 97.7%、FP 2.3%;data + stack作为主设置,为96.6% TP、3.4% FP、3.0% FN、97.0% TN。结论是核心APK工件已包含多数判别信号,运行时区域提供补充证据,针对性组合优于孤立使用。
5.2 图像表示(Image representation):通过比较1D与2D、RGB与灰度、多种CNN、手工特征与FSL、归因消融,研究人员发现1D表示在恶意检测率上持续优于2D;2D图像会引入非相邻内存字节之间的垂直相邻伪相关。RGB表示通常取得更高或更平衡的TPR,RGB结合1D编码具有最佳准确率与错误率权衡。ResNet-18在准确率与FPR/FNR之间平衡最佳;加载ImageNet预训练权重未显著影响性能。传统图像描述符加传统ML表现中等,明显弱于端到端CNN;FSL提高鲁棒性,但完整端到端CNN整体更优。归因消融显示,移除Grad-CAM识别的最重要区域或像素会使恶意TPR急剧下降,而良性TPR仍接近100%;仅分类最重要区域或像素不能完全恢复性能,说明非显著区域的上下文也参与稳健检测。结论为1D RGB配合ResNet-18最稳定有效。
5.3 鲁棒性分析(Robustness analysis):通过时间漂移、shuffle、转储时间敏感性、TargetSDK分析与ELSA对抗样本实验,研究人员评估鲁棒性。时间漂移中,以2017—2018恶意样本训练、2020验证、2022测试,训练准确率95.56%,验证准确率97.75%(恶意TPR 98.8%),测试准确率97%,恶意TPR 96.8%;仅用pre-2017样本训练不稳定,可能与Dalvik虚拟机(Dalvik Virtual Machine, DVM)向Android运行时(Android Runtime, ART)转变有关。Shuffle设置下验证准确率稳定在87%—89%,峰值89%,ROC-AUC与PR-AUC约0.92—0.93,恶意召回约93%—96%,良性召回约80%—84%。转储时间敏感性实验对误分类应用在启动约15 s后每10 s连续转储,多数恶意软件随时间推进变为可检测,说明早期转储可能漏掉延迟载荷;平均聚合稳定,最大聚合更敏感但增加假阳性。TargetSDK匹配实验中,297个良性加297个恶意APK在相同TargetSDK分布下,准确率95.11%—97.02%,ROC-AUC 0.9874—0.9931;跨TargetSDK实验中,SDK 32→30准确率91.25%—92.11%,ROC-AUC约0.986,SDK 30→32准确率66.17%—69.84%,ROC-AUC 0.9377—0.9642,表明存在跨SDK阈值校准漂移但仍保留排序能力。ELSA对抗APK中,RAM方法检测全部对抗样本,而Entroplyzer下传统分类器多数被绕过,仅SVM召回约80%。总体结论是内存检测对时间漂移、执行时间变化与对抗规避具有鲁棒性,但需正确处理采集时机与聚合策略。
讨论部分。6.1 误分类样本(Misclassified samples):研究人员将RAMimgDroid与Drebin、DiDroid、DexRay、Entroplyzer、RGB_Mem比较,约300个恶意应用因反逆向措施无法被静态工具分析,约60个因反动态机制失败;Entroplyzer仅用dumpsys统计而非RAM内容。重新训练排除360个测试样本后,2D RGB、data-stack与ResNet-18仅10个误分类;1D灰度自定义CNN仅9个误分类。Drebin仅2个误分类,但约200个APK无法分析。仅2个应用被所有文献方法和RAMimgDroid误分类。错误分布不均匀:Dnotua、FakeApp及部分PUA子族误分类率超过70%,Opfake或Pjapps等更异质家族仅部分误分类。标签与年份聚类常对应混淆策略或训练分布中稀缺家族。时序转储表明,早期转储漏报的9个样本在后续快照中均可检测,网络检测机制可能更易识别这些样本。
6.2 案例研究(Case study):研究人员通过与VirusTotal和MobSF比较,选择Chrome、WhatsApp、Avast、Klee Prank Adventure等恶意应用。RAMstrDroid揭示剪贴板内容、文件工件、API使用日志、文件路径、隐藏库、运行时加载模块、反射调用、运行时URL与邮箱、运行时解析域名、激活服务与接收器、可疑shared preferences、临时文件等;还暴露控制流混淆、运行时载荷、native库、运行时DEX加载、字符串隐藏、明文流量、硬编码密钥与自定义加密。Genymotion可执行部分在Android Studio模拟器中被阻止的样本。RAM字符串NLP分类F
1-score为87%,SHAP与LIME显示data内存区域字符串具较高影响力;RAM提取字符串恶意召回最高但精度与良性召回较低,apktool静态方法在成功处理子集上准确率最高但494个APK失败。RAMimgDroid适合低层鲁棒检测,RAMstrDroid更轻量、可读,两者互补,当前实现计算开销大,主要适合沙箱或离线分析。
6.3 研究问题回答(Answers to research questions):RQ1表明可从进程内存转储检测Android恶意行为,RAMimgDroid与最新方法可比,并能检测反分析、对抗与时间漂移样本。RQ2表明最重要内存区段与stack和data相关,内部重要组件包括code与stack,重要像素可映射回内存字节。RQ3表明最佳图像编码为1D,RGB与灰度均可,1D误分类仅9/500;2D RGB性能接近但存在伪相关。RQ4表明RAM可检测隐蔽、对抗、反分析、混淆及运行时模块恶意软件;早期转储可能漏报,连续采集可检测;RAMstrDroid从RAM转储中发现比VirusTotal和MobSF更多的IoC,例如加密密钥。讨论总结认为,最有效策略是静态与动态工具组合:静态快速初筛,动态提供行为,RAM检查互补暴露隐藏、解密与运行时生成工件;RAMimgDroid提供低层检测,RAMstrDroid提供轻量可读取证证据。
研究结论翻译:本文中,研究人员提出基于内存取证的恶意软件检测方法RAMimgDroid与RAMstrDroid。RAMimgDroid基于目标APK执行期间获取的内存转储进行1D和2D灰度与彩色图像转换;RAMstrDroid基于从同一内存转储中提取UTF-8字符串。根据所采用数据集,该方法即使面对采用反分析技术的恶意软件、对抗性应用和隐蔽样本也具前景。研究人员使用Genymotion模拟器执行应用,并用Fridump转储主内存内容;Fridump构建于Frida之上,可在运行时提取进程内存。内存转储发生在应用执行早期,即在接受权限后刚载入RAM时。在RAMimgDroid中,研究人员将内存转储转换为2D和1D RGB与灰度图像;从2D图像中提取若干常见特征组进行分类,并评估流行CNN。每幅图像对应RAM的特定区段,因此每个应用由一组内存区域图像表示。实验表明预训练CNN在该分析场景中有效,最重要的内存区域是与data和stack相关的区段。对于1D图像,研究人员提出图像转换算法并测试两类CNN,推断RGB编码略优于灰度。研究人员用常见文献方法和工具检查结果,发现RAMimgDroid和RAMstrDroid与当前技术可比,有时优于它们。RAM分析可检测反分析恶意软件和对抗样本,但研究人员认为这些工具的组合是最佳方法。研究人员提出的不仅是检测器,而是分析系统,因为通过内存转储图像转换可识别最具影响力的内存区段和像素,从而向人工分析人员提供最具代表性的字节及其可读内容(若有)。