如何有效地检测 Android 上的 root 设备?

信息安全 安卓
2021-08-27 23:10:16

如今,为了检测有根设备,一些应用程序执行静态检查,例如 GoogleWallet 的情况https://www.joeyconway.com/blog/2014/03/29/android-detect-root-access-from-inside-一个应用程序/

问题是绕过这样的验证并不难。这样做的许多方法之一是获得一个临时的 root shell 来执行我们想要的任何命令。例如,Towelroot 嵌入了内核 root 漏洞利用来获取本地 root 权限。这使他能够通过安装必要的二进制文件来永久植根设备。同样,可以使用相同的技术,但只是返回一个临时 root shell,而不是永久 root 设备。这样就不会安装其他文件,静态检查将失败。

怎么可能检测到这种情况?

4个回答

这个问题没有一般的答案,因为这完全取决于所使用的生根程序的类型。这篇论文(USENIX security 2015 的 WOOT 研讨会)很好地概述了不同类型的生根程序。

因此,如果您想实现一个根检查器,如果您能检测到大多数流行的根方法,您的机会就最好了。

SafetyNet Attestation API 可以为您完成这项工作。它可以帮助您评估运行应用程序的 Android 环境的安全性和兼容性。您可以使用此 API 来分析已安装您的应用的设备。

还有另一种可靠的方法可以检查 Android 手机是否已植根。为此,您需要下载Android Debug Bridge (ADB)之后,您必须打开“cmd”并打开ADB的路径。现在,您必须运行以下命令:

  1. adb devices :此命令将列出附加的 Android 设备。
  2. shell 序列号:此命令将为特定的 android 设备打开 shell/终端。
  3. su :此命令用于获取任何终端的超级用户访问权限。现在,运行此命令后,如果您收到错误“Permission Denied” ,则表明您的设备未获得 root 权限,并且如果您没有收到任何错误,则表明您的设备已获得 root 权限。

参考:

  1. Android 调试桥下载
  2. 亚行命令

Google play 服务Safety Net Attestation API我们可以通过它评估设备并确定它是否被 root/篡改。

请通过我的回答来处理有根设备: https ://stackoverflow.com/a/58304556/3908895