我正在开发安卓应用程序来检测恶意应用程序。我们计划根据请求的权限来检测恶意应用程序.....单独的权限是否可以帮助我们检测恶意应用程序或者我们是否需要考虑使用动态代码等特征,静态http url的使用....任何帮助表示赞赏。...
1 回答
我将分解这个问题是几个较小的部分:
检测恶意应用
这可能是你想做的事情中最难的部分。大多数反病毒、反恶意软件等通常会在生成指令的二进制文件的源代码中搜索“足迹”。如果您发现超过阈值阈值的数字,您可以猜测该文件是恶意软件。
我们计划根据请求的权限检测恶意应用
我要明确地说:不...
据我所知,大多数“奇怪”的请求通常是由于程序员不完全理解权限授予的内容,甚至是为什么/什么是必要的。
这是一个非常普遍的问题,以至于谷歌本身改变了权限的工作方式(如果我没记错的话,从 K 到 L,或从 L 到 M 或这些更新中的其他内容)
再说一次,一个警报应用程序,它想要网络访问,想要读取系统中的所有文件,想要在任何地方读/写任何东西,想要使用你的 gps 等,然后它本身看起来像恶意软件(通常没有 READING用户会使用它)。
我们是否需要考虑使用动态代码等特性
是的。虽然 Java 本身不能“即时”解释其代码,但 DEX 允许我们这样做。最常见的劫持通常是应用程序什么都不做,然后创建一个入口点来呈现 javascript 内容,并执行一些意想不到的代码。
静态 http url 的使用
这本身并没有太大的风险,因为大多数浏览器都会请求一些安全凭证,并且至少会警告用户他在不受信任的网络上。通常会出现的第二个问题是“即时”生成 URL,然后要求一个空请求将其请求更改为该请求。
如果应用程序随后绕过系统请求任何基于 Web 的内容(不是安全问题,有时程序员只是在“完成客户端请求所需的工作量更少”,然后查看静态地址甚至 IPs 通常是没有显着的安全价值。