我正在尝试构建一个基于权限的分析系统,以检测Android上的恶意应用程序。
我有一组恶意应用程序和正常应用程序的数据集
AppName | Permission--------+--------------xxx | INTERNETxxx | READ_PHONE_STATExxx | READ_SMSccc | INTERNETccc | ACCESS_NETWORK_STATE
同样,我需要识别可能导致恶意活动的模式。
例如:如果是 INTERNET 和 READ_SMS 组合,则被认为是恶意的,因为根据我的算法,在恶意应用程序中这种模式比在正常应用程序中更常见。
所以请提供你们关于使此项目成功的算法的建议。
回答:
最简单的选择是构建一个朴素贝叶斯分类器,因为它会构建条件概率的形式,如P(malicious|INERNET,READ_SMS)
,这样不仅能提供一个可用的算法,还能提供一些关于“内部”实际发生情况的见解。当然,还有数十种更复杂的模型,但这个问题太宽泛,无法正确回答。我会尝试一下NB,如果失败了,再寻找其他二元分类器,如神经网络、决策树、SVM等。