安卓权限机制为APP提供了访问控制。当前,安卓系统已经提供了一百七十多种权限,包含了APP行为的各个方面。但是,部分权限可能会影响用户的隐私或设备的运行状态,这部分权限被Android标记为危险,需要开发者和用户谨慎对待。因为恶意APP经常垂涎用户的隐私或试图掌握对设备的全面控制,所以危险权限的出现频率通常比一般APP高。此外,还发现,一些恶意软件倾向于定义更多的定制权限。依据上述2种观察,从AndroidAPP列表中提取权限列表,并统计其中危险权限和定制权限的出现次数,作为应用权限的特征。选定的部分高风险权限如表1所示:
证书的特点选择和取得。在AndroidAPP的开发过程中,需要签名APP,签名后会产生证书文件。RSA通常用作后缀。当APP上传到应用市场进行审核时,证书将用于证明程序的合法性。然而,一些恶意软件无法在正规市场流通,他们使用的证书也存在各种问题。本文提取了应用中的证书文件,并以是否过期为特征。AndroidSDK提供了丰富的API供开发人员实现相应功能。类似于权限,一些API的滥用也可能导致用户隐私被盗或设备系统异常。这部分API被称为敏感API,开发人员在使用时需要特别注意。一般来说,恶意软件更频繁地使用敏感API。基于这种观察,选择敏感API的调用次数作为特征之一。此外,与普通软件相比,恶意软件对敏感API的调用方式通常比较单一,调用过程也比较容易触发。因此,选择敏感API调用路径的平均长度作为特征之二。敏感API调用路径平均长度的计算方法如下伪代码所示:代码混淆技术在正常应用和恶意应用中的使用差异很大。
基于此,选择以下特征表示程序的混淆信息:(1)APP中标识名称的平均长度。代码混淆技术在正常应用和恶意应用中的应用有很大的不同。基于此,选择以下特征来表示程序的混淆信息:应用中识别符名称的平均长度。由于安卓恶意软件倾向于复杂重命名识别符,识别符名称的分布将不同于普通应用。除了识别符的平均长度,还可以用信息熵来表示识别符名称的差异。(2)应用中字符串的信息熵。信息熵用于量化表示信息的不确定性。当一个信息被加密时,它的信息会增加。