更准确地识别Mac OS上正在运行的应用程序

时间:2019-01-29 18:33:43

标签: macos security process bundle-identifier nsrunningapplication

通过使用NSWorkspace的runningApplications,可以获取Mac OS上正在运行的应用程序的列表作为NSRunningApplication对象,并由此获得更多信息,例如前台的应用程序。

可以使用它们的名称(localizedName)标识正在运行的应用程序,但是我敢肯定,流氓应用程序可能会欺骗该应用程序。诸如bundleIdentifier之类的其他内容似乎更好,但我认为也可能被欺骗。

我想几乎所有元数据都可能被公共应用商店外部的应用程序欺骗,但是对于从应用商店中获取的任何应用程序,bundleIdentifier之类的东西应该是识别应用程序的安全方法,对吗? >

如果我们包含有人从Internet下载的任意应用程序,那么还有什么更好的方法来识别应用程序以过滤掉恶意应用程序?我意识到可能没有没有缺点的解决方案,而是在寻找最大的努力。

1 个答案:

答案 0 :(得分:1)

正如您提到的,所有这些东西都可以很容易地被欺骗。编写出的产品完全可以满足您的专业描述,该解决方案相对简单:将每个流行应用程序的每个版本都指纹到海量数据库中,然后对您在计算机上发现的每个应用程序进行指纹识别,然后在数据库中查找它们。当您发现从未见过的应用程序时,请将其标记为添加到数据库中。

维护该数据库非常庞大,并且正在不断努力。那就是产品大部分价值所在。代理代码并不复杂。客户需要支付最新的数据库费用。这是一个很难进入的空间。

您正确的是,您可以验证签名以确保从MAS或操作系统的一部分下载的内容符合其要求。这将使您入门,但还远远不够。还有很多不是来自MAS的。

另一个令人头疼的是,您可以看到NSWorkspace中当前正在运行的“应用程序”,但这意味着很混乱。许多您不认为是“应用程序”的东西会出现在运行的应用程序中,例如MobileDeviceUpdater和nbagent。另一方面,诸如mysqld之类的东西却没有。正在运行的应用程序的指纹可能会丢失不在该列表中的内容,或者恶意应用程序可能会在其捆绑程序路径上撒谎以使其看起来合法。您可以使用lsof之类的工具来查看进程确实打开了哪些文件,但是变得越来越复杂。

祝你好运;这是一个深处的兔子洞,有数十个角盒,而且文件很少。