2

我在 Play 商店中有一个 Android 应用程序,我想检测用户是使用从 Play 商店下载的应用程序的原始版本还是从其他来源下载的 mod apk。

4

2 回答 2

1

你的问题

我在 Play 商店中有一个 Android 应用程序,我想检测用户是使用从 Play 商店下载的应用程序的原始版本还是从其他来源下载的 mod apk。

一个非常简单的问题,包含很多需要完全回答的问题,但从高层次的角度来看,您可以从移动应用程序内部解决这个问题,也可以从外部解决。

从移动应用程序内部检测

从内部进行称为RASP

运行时应用程序自我保护 (RASP) 是一种安全技术,它使用运行时工具通过利用运行软件内部的信息来检测和阻止计算机攻击。

据说 RASP 技术通过监视其输入并阻止可能允许攻击的输入来提高软件的安全性,同时保护运行时环境免受不必要的更改和篡改。

我经常观察到的一件事是,许多开发人员不知道他们可能添加到移动应用程序代码中以试图保护它的任何保护都可以在运行时使用检测框架绕过,即使代码本身被强烈混淆。Frida是一个众所周知的用于在运行时操作代码的检测框架:

将您自己的脚本注入黑盒进程。挂钩任何功能、监视加密 API 或跟踪私有应用程序代码,无需源代码。编辑,点击保存,立即查看结果。所有这些都无需编译步骤或程序重新启动。

如果开发者在自己的代码中添加一个函数来检测应用程序是否是原始应用程序,攻击者最终会通过二进制的静态分析或运行时的动态分析找到它,然后使用 Frida 对其进行挂钩以进行更改结果,就像总是返回一个表明它是原始结果的结果。攻击者的另一种选择是在没有上述功能的情况下重新编译二进制文件,从而消除保护。

那么,我是在说您不要在您的移动应用程序上使用自我保护代码或 RASP 解决方案吗?

不,我建议你使用所有你能负担得起的机制来阻止坏人,但你也需要意识到他们可以绕过它们,并尽可能努力克服你的防御,直截了当这对他们来说会很耗时,他们只会更愿意去其他地方寻找更容易的目标。

从移动应用程序外部检测

一个更好的选择是在应用程序运行或不是原始版本的二进制文件时将检测委托给应用程序外部,如果它在未植根或越狱的设备中进行,这可以通过使用移动应用程序来完成证明概念,我在这个答案中解释了我对如何保护移动应用程序的 API REST 的问题的回答?在关于可能更好的解决方案的部分中。

简而言之,Mobile App Attestion 是一种解决方案,当完全实施时,它可以证明您的移动应用程序是否是您上传到 Play 商店的真实且未经篡改的版本,并且该应用程序在受信任的设备中运行,而不是越狱或植根。

Mobile App Attestation 解决方案与 RASP 解决方案的不同之处在于,决策是在移动设备之外做出的,因此无法被检测框架操纵,并且它们还发布了一个 JWT 令牌,允许移动应用程序的后端知道它何时可以对请求的信任正在从它那里接收。

概括

RASP 解决方案不足,因为通常它们不会让移动 api 后端知道请求是否来自在受信任环境中运行的移动设备的正版版本,即未植根或越狱的设备,但即使他们这样做,一旦这样做的逻辑在移动应用程序中运行,攻击者就可以使用 Frida 或类似工具对其进行操作。

另一方面,Mobile App Attestation 解决方案将在移动设备之外做出决策,并允许移动 api 后端知道它何时可以信任或不信任传入的请求。

你想加倍努力吗?

在回答安全问题时,我总是喜欢参考 OWASP 基金会的出色工作。

对于 APIS

OWASP API 安全前 10 名

OWASP API 安全项目旨在通过强调不安全 API 中的潜在风险并说明如何减轻这些风险,为软件开发人员和安全评估人员提供价值。为了促进实现这一目标,OWASP API 安全项目将创建和维护一个前 10 名 API 安全风险文档,以及一个文档门户,用于在创建或评估 API 时提供最佳实践。

对于移动应用

OWASP 移动安全项目 - 十大风险

OWASP 移动安全项目是一个集中资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类并提供开发控制以减少其影响或被利用的可能性。

OWASP - 移动安全测试指南

移动安全测试指南 (MSTG) 是移动应用安全开发、测试和逆向工程的综合手册。

于 2021-01-07T13:00:46.553 回答
0

如果您的应用程序使用您控制的外部服务器,提供一些重要功能以使应用程序有用,则这是可能的。这可能是一些云数据库或注册功能。对于离线或仅限设备的应用程序,以下方法将不起作用。

使用SafetyNet API时,SafetyNet 将作为响应的一部分apkCertificateDigestSha256从执行调用的应用程序返回到您控制下的服务器。可以检查它是否与您的应用程序匹配。请注意,evaluationType来自响应的也很重要。较新的设备和版本的 SafetyNet 在这里支持HARDWARE_BACKED使像MagiskHide这样的屏蔽框架无用。

于 2022-01-19T15:07:57.437 回答