点,但针对第三方库名称动态变化等场景不具备灵活性而且需要选取稳健性较
高的特征信息。
2.2 恶意应用程序检测
恶意应用程序是用户在无意识或无法辨别恶意软件的情况下安装的,安装
后可能会中断设备的功能或者在用户未能察觉的情况下执行恶意代码。针对恶
意应用程序的检测大体有 2 种解决思路:静态分析和动态检测。静态分析是在
不运行 App 的情况下对 App 的代码特征进行分析和判断;动态检测方案通过模
拟恶意应用程序运行,捕获恶意应用程序的行为特征,并对其进行识别和检测。
静态分析恶意软件的方法受到静态程序分析概念的启发。许多研究将应用
程序反编译后进行代码的静态解析
[26
]
提出 Kirin 模型,通过分析
应用程序申请使用系统权限的情况,研究恶意应用程序的行为特征。Seo 等
[25
]
首
先分析了已知恶意软件的异常行为相关的风险 API 和关键字,从解压缩的应用
程序文件中提取权限信息,并在应用程序中搜索这些有风险的 API 和关键字的
存在,从而判断恶意应用程序。
动态监测方案中,Tenenboim-Chekina 等
[26
]
关注了应用自更新过程中访问
恶意域名的问题,他们在特定时间间隔内收集了 App 的特征数据并且使用聚合
方法进行计算,基本思想就是找到特征之间的关系,分析恶意流量特征与正常
流 量 特 征 之 间 的 偏 差 , 从 而 找 出 恶 意 流 量 。 Zhou 等
[27
]
提 出 了 一 种 名 为
DroidRanger 的动态检测器,为了检测已知的恶意软件,首先进行了基于权限
的过滤方法,查找应用程序中的危险权限;针对未知恶意软件检测,使用了基
于启发式的过滤方法,查找 App 中的可疑行为。李梦玉等
[28
]
利用时间序列的分
析方法建立了一种基于 URL 的恶意访问检测模型,首先以一段时间内用户访问
某域名的 URL 日志为分析单位,衍生出识别恶意访问的特征,利用时间序列的
时域和频域的处理方法将其访问日志向量化,最后通过聚类的方法识别恶意
URL。李佳等
[29
]
基于原始数据与经验特征工程相结合的思想提出了一种混合结构
深度神经网络,标注了一套由 45 万余条恶意流量和 2 000 万余条非恶意流量组
成的数据集,此数据集上的准确率达到了 98.1%~99.99%。静态分析和动态检
测是目前最有效的 2 种检测方案。静态检测方案正确率高但是可操作性弱,不
能灵活地应对动态场景。动态检测方案有很高的正确性和可操作性。本文通过
App 的网络流量特征,提出基于 TF-IDF 模型和层次聚类方法的动态检测方案。
2.3 相关工作总结和对比
第三方库检测和恶意应用程序检测是移动端用户隐私泄露检测及评估的研
究热点,静态分析和动态检测成为了主要的技术手段。表 1 对比了有代表性的
相关工作,特征统计和关键字匹配是最常用的方案,也相对简单,但是存在覆
盖率低和准确率低的问题。机器学习的兴起使问题有了新的解决途径,聚类是
最常见的机器学习方案,Ma 等
[9
]
方案的粗粒度聚类
造成准确率不高的问题。李梦玉等
[28
]
的神经网络方案将问题聚焦在 URL 日志上,
并没有考虑到更细粒度的流量特征。