【问题标题】:Root detection methodology in android which cannot be bypassedandroid中无法绕过的根检测方法
【发布时间】:2015-02-02 04:39:15
【问题描述】:

我知道在有根设备上运行拥有敏感信息的应用程序根本不安全。因此,开发人员通常会在这种情况下进行 root 检测,如果发现设备已 root,则该应用程序将无法安装。一切正常。

开发人员在root检测中使用的主要技术是检查superuser.apk文件,检查chainfire,busybox,执行su命令等。但攻击者可以通过多种方式简单地绕过这些检查,例如将 superuser.apk 重命名为 superuser0.apk。

所以我正在寻找一个独特的解决方案来解决这个问题,即攻击者无法绕过根检测检查。即使不存在这样的解决方案,也请分享您的观点。因为你们的解决方案可能有助于至少加强根检测代码。

【问题讨论】:

    标签: android security root su


    【解决方案1】:

    有一个名为 rootbeera sample app 的开源库执行以下检查以检测 root。

    • CheckRootManagementApps
    • CheckPotentiallyDangerousAppss
    • CheckRootCloakingApps
    • CheckTestKeys
    • checkForDangerousProps
    • checkForBusyBoxBinary
    • checkForSubBinary
    • checkSuExists
    • checkForRWSystem

    【讨论】:

    • 请小心,因为 rootbeer 库会因为无根设备上存在一些应用程序而发出误报。我有两个应用程序特别告诉我我的无根设备已植根,仅仅是因为 CyanogenMod 的 ROM 管理器许可证在我的旧手机的备份/恢复过程中安装在手机上,它在启动器中没有显示为图标. (对 Transport for London 的 Oyster 应用程序进行拖网评论,以获取因误报“根深蒂固”而无法使用应用程序的恼怒用户的示例。)
    【解决方案2】:

    据我所知,没有“单一解决方案”,但您需要检查最常见的事情。以下文章也很有用: https://blog.netspi.com/android-root-detection-techniques/

    这里有一些提示......还有你不应该做的事情: Determine if running on a rooted device

    【讨论】:

    • 感谢您的链接。 :) 我正在等待更多答案来填充。如果没有比这更好的,那么我会接受这个作为答案。
    【解决方案3】:

    查看 Google 的 SafetyNet 服务: https://developer.android.com/google/play/safetynet/index.html

    它将进行一些检查以验证设备是否安全并产生您可以验证的结果。结果以 JSON Web 签名的形式返回,您可以在应用程序中读取该签名,但为了提供额外的保证,您还可以将此结果发送到您管理的服务器,让它直接通过 Google 验证结果。

    https://developer.android.com/google/play/safetynet/start.html

    我认为这不会在非 Google 版本的 Android(例如 Cyanogen)上运行,因此请记住一些事情。

    【讨论】:

    • @Bastet 有点正确,该服务验证操作系统是否受到谷歌的信任(兼容性是其中之一),它会检查它是否已被植根或篡改。如果通过 Google Play 部署,那么这应该是检测受信任操作系统的可靠方法。这比生根更能验证信任链,但根据用例可能就足够了。如果目标是非 Google-Android 设备,那么您将需要另一种机制。
    • 我总是建议使用 SafetyNet,但要结合其他已实施的检查,因为使用 Magisk root 可以绕过 SafteyNet 本身。但是结合其他检查,例如检查 Magisk 包是否存在,但可以重命名,因此对硬编码的 com.topjohnwu.magisk 字符串进行混淆。纵深防御。
    猜你喜欢
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多